1<!DOCTYPE html> 2<html lang="en"> 3 4<head> 5 6 <meta charset="UTF-8"> 7 8 <meta name="viewport" 9 content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, viewport-fit=cover" /> 10 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 11 12 13 <title> Kuromi Street Pop Holographic Tote Bag (4PCS Baked Mooncake Package) - GOOD CHEN è°·ä¸é£å 14 </title> 15 16 <meta name="description" content="ä¿æè¢ææå | JustOrder.Today"> 17 <meta property="og:description" content="ä¿æè¢ææå | JustOrder.Today"> 18 19 20 <meta property="og:title" content="Kuromi Street Pop Holographic Tote Bag (4PCS Baked Mooncake Package) - GOOD CHEN è°·ä¸é£å | JustOrder.Today" /> 21 22 23 <meta property="og:url" content="https://shop.goodchen.my/v2/product/568924?merchant_domain_name=goodchen" /> 24 25 26 <meta property="og:type" content="website" /> 27 28 <link rel="icon" type="image/png" href="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/thumbnail/61f67ea701d15a5aa40c88c0f7ed1201c328482659ea43f852d6f7b71085ff2d-thumbnail_128.jpg" sizes="32x32"> 29 <link rel="apple-touch-icon" sizes="180x180" href="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/thumbnail/61f67ea701d15a5aa40c88c0f7ed1201c328482659ea43f852d6f7b71085ff2d-thumbnail_128.jpg"> 30 <meta property="og:image" content="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/61f67ea701d15a5aa40c88c0f7ed1201c328482659ea43f852d6f7b71085ff2d.jpg"> 31 32 <!-- Custom Stylesheet --> 33 <link rel="stylesheet" href="https://shop.goodchen.my/customer-v2/css/style.css?v=2"> 34 35 <link href="https://shop.goodchen.my/css/fontawesome-4-7-0/css/fontawesome-4-7-0.min.css" rel="stylesheet" type="text/css" /> 36 <link href="https://shop.goodchen.my/customer-v2/css/lightbox.css" rel="stylesheet" type="text/css" /> 37 <link href="https://shop.goodchen.my/plugins/intl-tel-input-master/build/css/intlTelInput.css" rel="stylesheet" type="text/css"> 38 <link href="https://shop.goodchen.my/css/fontawesome/css/all.css" rel="stylesheet" type="text/css"> 39 40 <style> 41 .header-shop-name { 42 overflow: hidden; 43 text-overflow: ellipsis; 44 display: -webkit-box; 45 -webkit-line-clamp: 2; 46 -webkit-box-orient: vertical; 47 } 48 49 .btnCart { 50 cursor: pointer !important; 51 } 52 53 .customBackground1 { 54 background-color: #F2F4F7; 55 } 56 57 .btn-primary-bootbox { 58 color: white !important; 59 } 60 61 .mobile-extra-padding { 62 padding-top: 0px !important; 63 } 64 65 @media only screen and (max-width: 991px) { 66 .mobile-extra-padding { 67 padding-top: 56px !important; 68 } 69 70 .sticky-add-top-margin { 71 margin-top: 193px !important; 72 } 73 } 74 75 @media only screen and (max-width: 520px) {
76 .modal-dialog-wide { 77 width: 90vw !important; 78 } 79 80 .modal-dialog-mobile { 81 width: 100% !important; 82 } 83 } 84 </style> 85 86 <style> 87 /*spinner*/ 88 .lds-ellipsis { 89 display: inline-block; 90 position: relative; 91 width: 80px; 92 height: 80px; 93 } 94 .lds-ellipsis div { 95 position: absolute; 96 top: 33px; 97 width: 13px; 98 height: 13px; 99 border-radius: 50%; 100 background: #fff; 101 animation-timing-function: cubic-bezier(0, 1, 1, 0); 102 } 103 .lds-ellipsis div:nth-child(1) { 104 left: 8px; 105 animation: lds-ellipsis1 0.6s infinite; 106 } 107 .lds-ellipsis div:nth-child(2) { 108 left: 8px; 109 animation: lds-ellipsis2 0.6s infinite; 110 } 111 .lds-ellipsis div:nth-child(3) { 112 left: 32px; 113 animation: lds-ellipsis2 0.6s infinite; 114 } 115 .lds-ellipsis div:nth-child(4) { 116 left: 56px; 117 animation: lds-ellipsis3 0.6s infinite; 118 } 119 @keyframes lds-ellipsis1 { 120 0% { 121 transform: scale(0); 122 } 123 100% { 124 transform: scale(1); 125 } 126 } 127 @keyframes lds-ellipsis3 { 128 0% { 129 transform: scale(1); 130 } 131 100% { 132 transform: scale(0); 133 } 134 } 135 @keyframes lds-ellipsis2 { 136 0% { 137 transform: translate(0, 0); 138 } 139 100% { 140 transform: translate(24px, 0); 141 } 142 } 143 </style> 144 145 <style> 146 /*blockUI*/ 147 .lds-ellipsis-blockui div { 148 background: #000; 149 } 150 </style> 151 152 <style> 153 .shop-detail-img { 154 width: 200px !important; 155 height: 200px !important; 156 } 157 158 #aboutmodal .content-header { 159 font-size: 11px; 160 color: #A1A1A2; 161 padding-left: 0; 162 padding-right: 0; 163 line-height: 1.4em 164 } 165
166 .modal-dialog-large { 167 width: 90vw !important; 168 max-width: 985px; 169 } 170 171 #profilemodal ul > li > a.py-2 { 172 padding-top: 0.5rem !important; 173 padding-bottom: 0.5rem !important; 174 } 175 176 #profilemodal ul > li > a i.btn-round-sm { 177 margin-left: 0; 178 margin-top: 0; 179 color: white !important; 180 } 181 182 #profilemodal ul > li > a i.ti-angle-right { 183 margin-left: auto; 184 } 185 186 #loginmodal .iti { 187 width: 100%; 188 margin-bottom: 10px; 189 } 190 191 #loginmodal input { 192 font-size: 16px; 193 } 194 195 .modal .btn-primary, 196 .modal .btn-success{ 197 color: #FFFFFF !important; 198 } 199 200 .bootbox.modal { 201 overflow: auto !important; 202 } 203 204 .modal-additional-bottom-spacing { 205 padding-bottom: 300px !important; 206 } 207 208 .modal-overflow-scroll { 209 overflow: scroll !important; 210 } 211 </style> 212 213 <style> 214 /*rating star (header)*/ 215 /* Rating Stars */ 216 .rating-star-fixture-header, .rating-star-fixture-side-menu { 217 font-size: 15px; 218 margin-bottom: 0px; 219 } 220 221 .stars-container-header, .stars-container-side-menu { 222 position: relative; 223 display: inline-block; 224 color: transparent; 225 word-wrap: normal !important; 226 } 227 228 .stars-container-header:before, .stars-container-side-menu:before { 229 position: absolute; 230 top: 0; 231 left: 0; 232 content: 'â â â â â '; 233 color: lightgray; 234 } 235 236 .stars-container-header:after, .stars-container-side-menu:after { 237 position: absolute; 238 top: 0; 239 left: 0; 240 content: 'â â â â â '; 241 color: #ff4500; 242 overflow: hidden; 243 height: 100%; 244 text-align: left; 245 } 246 247 .stars-container-product:before { 248 position: absolute; 249 content: 'â â â â â '; 250 color: lightgray; 251 } 252 253 .stars-container-product:after { 254 position: absolute; 255 content: 'â â â â â '; 256 color: #ff4500; 257 left: 0; 258 overflow: hidden; 259 text-wrap: nowrap; 260 } 261 </style> 262 263 <style> 264 /* WhatsApp Floating button */ 265 .whatsapp-float{ 266 position:fixed; 267 width:60px; 268 height:60px; 269 bottom:80px; 270 left:20px; 271 background-color:#25d366; 272 color:#FFF; 273 border-radius:50px; 274 text-align:center; 275 font-size:32px !important; 276 padding-top: 3px; 277 box-shadow: 2px 2px 3px #999; 278 z-index:100; 279 } 280 .my-whatsapp-float{ 281 margin-top:20px; 282 } 283 284 .social-media-float { 285 cursor: pointer; 286 position:fixed; 287 width:60px; 288 height:60px; 289 bottom:80px; 290 left:20px; 291 background-color:#25d366; 292 border-radius:50px; 293 text-align:center; 294 font-size:32px !important; 295 box-shadow: 2px 2px 3px #999; 296 z-index:100; 297 overflow: hidden; 298 } 299 300 .social-media-float:before { 301 content:""; 302 z-index:100; 303 position:absolute;height:100%;width:100%;top:-120%;left:-120%; 304 background: linear-gradient(transparent 0%, 305 rgba(255, 255, 255, 0.1) 45%, 306 rgba(255, 255, 255, 0.5) 50%, 307 rgba(255, 255, 255, 0.1) 55%, 308 transparent 100% 309 ); 310 transition:all 2s; 311 transform:rotate(-45deg); 312 animation: shine 5s infinite forwards; 313 } 314 @keyframes shine { 315 0%{top:-120%;left:-120%;} 316 10%{left:100%;top:100%;} 317 20%{left:100%;top:100%;} 318 100%{left:100%;top:100%;} 319 } 320 321 .social-media-icon { 322 width: 40px; 323 height: 40px; 324 } 325 326 .blink { 327 animation: blinker 1s linear infinite; 328 } 329 330 @keyframes blinker { 331 50% { 332 opacity: 0; 333 } 334 } 335 </style> 336 337 <style> 338 /* Customer Loyalty Module */ 339 /* Member Right Side Menu Last li item margin right issue */ 340 .list-inline-item:not(:last-child) { 341 margin-right: auto !important; 342 } 343 </style> 344 <link href="https://shop.goodchen.my/plugins/bootstrap-datepicker/css/bootstrap-datepicker.standalone.min.css" rel="stylesheet" type="text/css"> 345 <link href="https://shop.goodchen.my/plugins/intl-tel-input-master/build/css/intlTelInput.css" rel="stylesheet" type="text/css"> 346 347 <style> 348 /* Fixed horizontal scroll menu */ 349 .sticky { 350 position: fixed; 351 top: 0; 352 width: 100%; 353 } 354 355 .category-card.style-three.active .image-round { 356 border: none !important; 357 } 358 359 .line-clamp-1 { 360 overflow: hidden; 361 text-overflow: ellipsis; 362 display: -webkit-box; 363 -webkit-line-clamp: 1; 364 -webkit-box-orient: vertical; 365 } 366 367 .line-clamp-2 { 368 overflow: hidden; 369 text-overflow: ellipsis; 370 display: -webkit-box; 371 -webkit-line-clamp: 2; 372 -webkit-box-orient: vertical; 373 } 374 375 /* width */ 376 #product-category-scroll::-webkit-scrollbar {
377 /*width: 2px;*/ 378 height: 10px; 379 } 380 381 /* Track */ 382 #product-category-scroll::-webkit-scrollbar-track { 383 background: #ffffff; 384 } 385 386 /* Handle */ 387 #product-category-scroll::-webkit-scrollbar-thumb { 388 background: #888; 389 border-radius: 5px; 390 } 391 392 /* Handle on hover */ 393 #product-category-scroll::-webkit-scrollbar-thumb:hover { 394 background: #555; 395 } 396 397 .product-category-items { 398 cursor: pointer; 399 padding-left: 15px !important; 400 padding-right: 15px !important; 401 /*min-width: 100px !important;*/ 402 text-align: center !important; 403 width: auto !important; 404 } 405 406 .product-category-items.active { 407 border: 1px solid green !important; 408 background-color: green !important; 409 color: white !important; 410 border-radius: 5px; 411 margin-left: 1px; 412 } 413 414 .product-category-item-texts.active { 415 color: white !important; 416 } 417 418 .product-tags { 419 border-radius: 5px; 420 color: red; 421 border: 1px solid red; 422 padding: 0 5px; 423 white-space: nowrap; 424 overflow: hidden; 425 text-overflow: ellipsis; 426 } 427 428 .product-category-wrapper .owl-stage-outer { 429 height: 40px !important; 430 } 431 432 .product-detail-tags { 433 border-radius: 5px; 434 color: red; 435 /* background-color: #656565; */ 436 border: 1px solid red; 437 max-width: calc(100%) !important; 438 white-space: pre-wrap !important; 439 /*min-height: 22px !important;*/ 440 height: auto !important; 441 /*line-height: 1.2em !important;*/ 442 text-align: left !important; 443 padding: 0 5px !important; 444 margin-top: 5px !important; 445 min-width: 22px; 446 display: inline-flex; 447 align-items: center; 448 justify-content: center; 449 font-weight: 600; 450 font-size: 12px; 451 } 452 453 .search-product-input { 454 border: 0; 455 background-color: #ffffff; 456 border-radius: 7px; 457 width: 100%; 458 height: 45px; 459 } 460
461 .modal-dialog-wide { 462 width: 500px !important; 463 } 464 465 .modal-dialog-mobile { 466 width: 100% !important; 467 margin-left: 0 !important; 468 margin-right: 0 !important; 469 left: 0px !important; 470 bottom: 0px !important; 471 padding-top: 80px !important; 472 border-top-right-radius: 25px !important; 473 border-top-left-radius: 25px !important; 474 overflow: hidden; 475 } 476 477 /*Cart Item Customer Remarks*/ 478 .btnAddUpdateCartItemCustomerRemark { 479 font-size: 12px; 480 color: red; 481 cursor: pointer; 482 } 483 484 .cartItemCustomerRemarks { 485 font-size: 12px; 486 color: grey; 487 line-height: 1 !important; 488 } 489 490 .bootbox-input-textarea { 491 line-height: 1 !important; 492 height: 100px !important; 493 } 494 495 /*@media only screen and (max-width: 520px) {*/ 496 /* .modal-dialog-wide {*/ 497 /* width: 90vw !important;*/ 498 /* }*/ 499 500 /* .modal-dialog-mobile {*/ 501 /* width: 100% !important;*/ 502 /* }*/ 503 /*}*/ 504 505 .text-right { 506 text-align: right !important; 507 } 508 509 /* Main Banner Slider */ 510 #main-banner-slider .owl-stage { 511 display: flex !important; 512 align-items: stretch !important; 513 } 514 515 .scrolling-text { 516 position: relative; 517 width: -moz-fit-content; 518 width: fit-content; 519 min-width: 100%; 520 } 521 522 .anim-leftright { 523 animation: leftright 5s infinite alternate linear; 524 } 525 526 @keyframes leftright { 527 0%, 528 20% { 529 transform: translateX(0%); 530 left: 0%; 531 } 532 80%, 533 100% { 534 transform: translateX(-100%); 535 left: 100%; 536 } 537 } 538 539 @media only screen and (max-width: 991px) { 540 .sticky { 541 top: 56px; 542 } 543 544 .customer-agreement-link { 545 font-size: 12px; 546 } 547 } 548 549 .sticky-add-top-margin { 550 margin-top: 144px !important; 551 } 552 553 .bootbox-body { 554 max-height: 500px; 555 /* min-height: 500px; */ 556 overflow-y: auto; 557 } 558 559 /* Space between pagination buttons */ 560 .btnPagination { 561 margin: 5px; 562 padding: 10px 16px; 563 font-size: 16px; 564 min-width: 45px; 565 border-radius: 6px; 566 } 567 568 /* Fixed column widths */ 569 .bootbox-body table th:nth-child(1), 570 .bootbox-body table td:nth-child(1) { 571 width: 40%; 572 } 573 574 .bootbox-body table th:nth-child(2), 575 .bootbox-body table td:nth-child(2) { 576 width: 30%; 577 } 578 579 .bootbox-body table th:nth-child(3), 580 .bootbox-body table td:nth-child(3) { 581 width: 30%; 582 text-align: center; 583 } 584 585 </style> 586 587 </head> 588 589<body class="color-theme-green mont-font"> 590 591 592 593<div class="preloader"></div> 594<!-- main wrapper --> 595<div class="main-wrapper"> 596 597 <!-- HEADER WRAPPER --> 598 <div class="header-menu-mob pt-2 pb-2 position-fixed w-100 z-index-5 bg-white d-none d-block-md" 599 style="box-shadow: 0 3px 10px rgb(0 0 0 / 5%) !important;"> 600 <div class="container"> 601 <div class="row"> 602 <div class="col text-start"><button class="navbar-toggler border-0" type="button" data-bs-toggle="modal" data-bs-target="#menumodal"><span class="navbar-toggler-icon"></span></button></div> 603 <div class="col text-center"><a href="https://shop.goodchen.my/v2?merchant_domain_name=goodchen"><img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_shop_logo_photo/667ce254272373872943ad497b045efd1113d8543f74d3a897dd36b99f5377d7.png" alt="logo" class="logo pt-1" style="max-height: 40px;"></a></div> 604 <div class="col text-end" style="display: flex; align-items: center; flex-direction: row-reverse;"> 605 <button type="button" class="btn btn-sm btn-outline-warning login-as-member-buttons" 606 style="font-size: 12px; line-height: 15px;">Login/Register as Member</button> 607 </div> 608 </div> 609 </div> 610 </div> 611 <div class="upper-header pt-2 pb-2 d-none d-lg-block customBackgroun
611d1"> 612 <div class="container"> 613 <div class="row"> 614 <div class="col-lg-6"> 615 <button class="border-0" type="button" data-bs-toggle="modal" data-bs-target="#menumodal" 616 style="background-color: transparent;"> 617 <span class="navbar-toggler-icon"></span> 618 </button> 619 620 621 622 623 624 625 626 </div> 627 <div class="col-lg-6 text-end"> 628 <ul class="navbar-nav float-end"> 629 <li class="nav-item nav-item-toggle active dropdown"> 630 <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">English</a> 631 <ul class="dropdown-menu border-0 shadow-xss"> 632 <li><a class="dropdown-item" href="https://shop.goodchen.my/lang/en?merchant_domain_name=goodchen">English</a></li> 633 <li><a class="dropdown-item" href="https://shop.goodchen.my/lang/zh?merchant_domain_name=goodchen">䏿</a></li> 634 <li><a class="dropdown-item" href="https://shop.goodchen.my/lang/vi?merchant_domain_name=goodchen">Tiếng Viá»t</a></li> 635 <li><a class="dropdown-item" href="https://shop.goodchen.my/lang/ms?merchant_domain_name=goodchen">Bahasa Melayu</a></li> 636 </ul> 637 </li> 638 639 640 641 642 643 644 645 646 647 648 </ul> 649 </div> 650 </div> 651 </div> 652 </div> 653 <div class="header-wrapper pt-4 pb-4 z-index-5 ovh bg-white d-none d-lg-block"> 654 <div class="container"> 655 <div class="row"> 656 <div class="col-lg-12 d-flex"> 657 <!-- <a href="#" class="nav-icon ps-0 ms-0 ms-n1" data-bs-toggle="modal" data-bs-target="#categorymodal"><i class="feather-menu font-lg text-grey-500"></i></a> --> 658 <div style="flex-grow: 0; width: 700px; display: flex; align-items: center;"> 659 <a href="https://shop.goodchen.my/v2?merchant_domain_name=goodchen"> 660 <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_shop_logo_photo/667ce254272373872943ad497b045efd1113d8543f74d3a897dd36b99f5377d7.png" alt="logo" class="logo" style="max-height: 50px; width: auto;"> 661 </a> 662 <div style="display: flex; flex-direction: column;"> 663 <a href="https://shop.goodchen.my/v2?merchant_domain_name=goodchen"> 664 <span class="fw-700 text-grey-900 white-text font-sm header-shop-name" style="margin-left: 30px;">GOOD CHEN è°·ä¸é£å</span> 665 </a> 666 667 </div> 668 </div> 669 <div class="header-search me-2 d-flex" style="flex-grow: 1; justify-content: flex-end; align-items: center;"> 670 671 672 673 674 675 676 677 678 679 680 681 <a href="#" class="nav-icon btnShopInfo" data-bs-toggle="modal" data-bs-target="#aboutmodal"><i class="feather-info text-grey-500"></i></a> 682 <a href="#" class="nav-icon btnCart"><i class="feather-shopping-bag text-grey-500"></i></a> 683 684 <button type="button" class="login-as-member-buttons btn btn-sm btn-outline-warning ms-3">Login/Register as Member</button> 685 </div> 686 </div> 687 688 </div> 689 </div> 690 </div> 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 <div class="mobile-extra-padding"> 767 <div class="container pt-2 mb-2"> 768 <div class="d-flex" style="gap: 20px"> 769 </div> 770 </div> 771 <div id="product-category-and-search-wrapper" class="lower-header py-3 shadow-xss d-lg-block bg-white" 772 style="z-index: 3;"> 773 <div class="container"> 774 <div class="row product-category-wrapper"> 775 <div class="col-lg-12"> 776 <div id="product-category-scroll" class="d-flex" style="overflow: hidden; overflow-x: scroll; padding-bottom: 5px; position: relative;"> 777 <div class="item me-2 bg-white border-top border-bottom border-start border-end product-category-items active btnProductCategory" 778 data-product-category-id="0"> 779 <h4 class="font-xssss text-grey-600 mt-2 fw-700 d-block lh-18 product-category-item-texts active btnProductCategory" 780 data-product-category-id="0" style="white-space: nowrap;">All</h4> 781 </div> 782 <div class="item me-2 bg-white border-top border-bottom border-start border-end product-category-items btnProductCategory" 783 data-product-category-id="37848"> 784 <h4 class="font-xssss text-grey-600 mt-2 fw-700 d-block lh-18 product-category-item-texts btnProductCategory" 785 data-product-category-id="37848" 786 style="white-space: nowrap;">Good Chenè°·ä¸æé¥¼</h4> 787 </div> 788 <div class="item me-2 bg-white border-top border-bottom border-start border-end product-category-items btnProductCategory" 789 data-product-category-id="37849"> 790 <h4 class="font-xssss text-grey-600 mt-2 fw-700 d-block lh-18 product-category-item-texts btnProductCategory" 791 data-product-category-id="37849" 792 style="white-space: nowrap;">Sanrioç³»åæé¥¼</h4> 793 </div> 794 <div class="item me-2 bg-white border-top border-bottom border-start border-end product-category-items btnProductCategory" 795 data-product-category-id="37839"> 796 <h4 class="font-xssss text-grey-600 mt-2 fw-700 d-block lh-18 product-category-item-texts btnProductCategory" 797 data-product-category-id="37839" 798 style="white-space: nowrap;">General Pastry</h4> 799 </div> 800 <div class="item me-2 bg-white border-top border-bottom border-start border-end product-category-items btnProductCategory" 801 data-product-category-id="37842"> 802 <h4 class="font-xssss text-grey-600 mt-2 fw-700 d-block lh-18 product-category-item-texts btnProductCategory" 803 data-product-category-id="37842" 804 style="white-space: nowrap;">Beverage Sachet</h4> 805 </div> 806 </div> 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 </div> 828 </div> 829 830 <div class="row justify-content-center2 mt-3"> 831 <div class="col-lg-12"> 832 <div class="form-group mb-0 icon-input d-xl-block me-2"> 833 <i class="feather-search font-sm text-grey-400" style="top: 12px"></i> 834 <input type="text" placeholder="Search product..." id="search-product" 835 class="lh-38 pt-2 pb-2 ps-5 pe-3 font-xssss fw-
835500 rounded-xl search-product-input bg-grey"> 836 <i class="feather-x font-sm text-grey-600" id="btnClearSearch" 837 style="top: 12px; left: auto; right: 15px; display: none;"></i> 838 </div> 839 </div> 840 </div> 841 </div> 842 </div> 843 </div> 844 845 <div id="content-top-spacing"></div> 846 847 <!-- CONTENT WRAPPER --> 848 <div class="content-wrap customBackground1"> 849 <div class="container"> 850 851 <div class="row justify-content-center mt-3"> 852 <div class="col-lg-12" id="product-list-title"> 853 <h4 class="fw-700 font-xs mt-4">Items</h4> 854 </div> 855 <div class="col-lg-12 mb-3" id="product-list"> 856 <div class="row rounded-6 m-0 mt-3 products-wrapper"> 857 <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="585286"> 858 <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end"> 859 <div class="d-flex flex-wrap gap-2 posa"> 860 </div> 861 <div class="clearfix"></div> 862 <a href="https://shop.goodchen.my/v2/product/green-bean-biscuit?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;"> 863 <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/e81e0eb98947b0089ecf63bf25b85a39e9795249956c6dbcce7cd1bf654a4c4d.jpeg" 864 865 alt="Green Bean Biscuit" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail" 866 data-product-id="585286" 867 data-product-seo-url="green-bean-biscuit" 868 869 style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;"> 870 </a> 871 <div class="clearfix mt-3"></div> 872 <div style="height: 66px;"> 873 <h2 class="line-clamp-2 mb-0"> 874 <a href="https://shop.goodchen.my/v2/product/green-bean-biscuit?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail" 875 data-product-id="585286" 876 data-product-seo-url="green-bean-biscuit" 877 title="Green Bean Biscuit"> 878 Green Bean Biscuit 879 </a> 880 </h2> 881 <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0"> 882 <div class="scrolling-text"> 883 </div> 884 </div> 885 </div> 886 <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;"> 887 <span class="font-xsssss text-grey-500">RM</span> 888 16.10 889 890 <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">/Pack 891 </span> 892 </h6> 893 <div class="cart-count d-flex mt-4"> 894 <div class="number"> 895 <span class="minus btnReduceItemQuantity" 896 data-product-id="585286" 897 data-product-has-options="N" 898 >-</span> 899 <input type="text" class="open-font itemQuantityTextInput" value="0" 900 data-product-id="585286" 901 data-product-has-options="N">
902 <span class="plus btnIncreaseItemQuantity" 903 data-product-id="585286" 904 data-product-seo-url="green-bean-biscuit" 905 data-product-has-options="N" 906 >+</span> 907 </div> 908 </div> 909 </div> 910 911 </div> 912 <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="585289"> 913 <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end"> 914 <div class="d-flex flex-wrap gap-2 posa"> 915 </div> 916 <div class="clearfix"></div> 917 <a href="https://shop.goodchen.my/v2/product/musang-king-durian-egg-roll?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;"> 918 <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/a2b50be20b89d7d309215a7246e719c7392ea0269e081c5e55876b1cca5fdd6c.jpeg" 919 920 alt="Musang King Durian Egg Roll" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail" 921 data-product-id="585289" 922 data-product-seo-url="musang-king-durian-egg-roll" 923 924 style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;"> 925 </a> 926 <div class="clearfix mt-3"></div> 927 <div style="height: 66px;"> 928 <h2 class="line-clamp-2 mb-0"> 929 <a href="https://shop.goodchen.my/v2/product/musang-king-durian-egg-roll?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail" 930 data-product-id="585289" 931 data-product-seo-url="musang-king-durian-egg-roll" 932 title="Musang King Durian Egg Roll"> 933 Musang King Durian Egg Roll 934 </a> 935 </h2> 936 <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0"> 937 <div class="scrolling-text"> 938 </div> 939 </div> 940 </div> 941 <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;"> 942 <span class="font-xsssss text-grey-500">RM</span> 943 17.20 944 945 <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">/Pack 946 </span> 947 </h6> 948 <div class="cart-count d-flex mt-4"> 949 <div class="number"> 950 <span class="minus btnReduceItemQuantity" 951 data-product-id="585289" 952 data-product-has-options="N" 953 >-</span> 954 <input type="text" class="open-font itemQuantityTextInput" value="0" 955 data-product-id="585289" 956 data-product-has-options="N"> 957 <span class="plus btnIncreaseItemQuantity" 958 data-product-id="585289" 959 data-product-seo-url="musang-king-durian-egg-roll" 960 data-product-has-options="N" 961 >+</span> 962 </div> 963 </div> 964 </div> 965 966 </div> 967 <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="585288"> 968 <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end"> 969 <div class="d-flex flex-wrap gap-2 posa"> 970 </div> 971 <div class="clearfix"></div> 972 <a href="https://shop.goodchen.my/v2/product/musang-king-durian-pastry?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;"> 973 <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/9f9e757ddb2d08bf2a401b2b878a4eac06223125e243e6a127bb45e521a65eb9.jpeg" 974 975 alt="Musang King Durian Pastry" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail" 976 data-product-id="585288" 977 data-product-seo-url="musang-king-durian-pastry" 978 979 style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;"> 980 </a> 981 <div class="clearfix mt-3"></div> 982 <div style="height: 66px;"> 983 <h2 class="line-clamp-2 mb-0"> 984 <a href="https://shop.goodchen.my/v2/product/musang-king-durian-pastry?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail" 985 data-product-id="585288" 986 data-product-seo-url="musang-king-durian-pastry" 987 title="Musang King Durian Pastry"> 988 Musang King Durian Pastry 989 </a> 990 </h2> 991 <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0"> 992 <div class="scrolling-text"> 993 </div> 994 </div> 995 </div> 996 <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;">
997 <span class="font-xsssss text-grey-500">RM</span> 998 15.90 999 1000 <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">/Pack 1001 </span> 1002 </h6> 1003 <div class="cart-count d-flex mt-4"> 1004 <div class="number"> 1005 <span class="minus btnReduceItemQuantity" 1006 data-product-id="585288" 1007 data-product-has-options="N" 1008 >-</span> 1009 <input type="text" class="open-font itemQuantityTextInput" value="0" 1010 data-product-id="585288" 1011 data-product-has-options="N"> 1012 <span class="plus btnIncreaseItemQuantity" 1013 data-product-id="585288" 1014 data-product-seo-url="musang-king-durian-pastry" 1015 data-product-has-options="N" 1016 >+</span> 1017 </div> 1018 </div> 1019 </div> 1020 1021 </div> 1022 <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="585287"> 1023 <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end"> 1024 <div class="d-flex flex-wrap gap-2 posa"> 1025 </div> 1026 <div class="clearfix"></div> 1027 <a href="https://shop.goodchen.my/v2/product/original-tambun-biscuit?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;"> 1028 <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/bcbdbf69c3af9a629ab7cf17b2c804a26b8a16f96f79483a58e9c99737c8abe8.jpeg" 1029 1030 alt="Original Tambun Biscuit" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail" 1031 data-product-id="585287" 1032 data-product-seo-url="original-tambun-biscuit" 1033 1034 style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;"> 1035 </a> 1036 <div class="clearfix mt-3"></div> 1037 <div style="height: 66px;"> 1038 <h2 class="line-clamp-2 mb-0"> 1039 <a href="https://shop.goodchen.my/v2/product/original-tambun-biscuit?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail" 1040 data-product-id="585287" 1041 data-product-seo-url="original-tambun-biscuit" 1042 title="Original Tambun Biscuit"> 1043 Original Tambun Biscuit 1044 </a> 1045 </h2> 1046 <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0"> 1047 <div class="scrolling-text"> 1048 </div> 1049 </div> 1050 </div> 1051 <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;"> 1052 <span class="font-xsssss text-grey-500">RM</span> 1053 15.00 1054 1055 <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">/Pack 1056 </span> 1057 </h6> 1058 <div class="cart-count d-flex mt-4"> 1059 <div class="number">
1060 <span class="minus btnReduceItemQuantity" 1061 data-product-id="585287" 1062 data-product-has-options="N" 1063 >-</span> 1064 <input type="text" class="open-font itemQuantityTextInput" value="0" 1065 data-product-id="585287" 1066 data-product-has-options="N"> 1067 <span class="plus btnIncreaseItemQuantity" 1068 data-product-id="585287" 1069 data-product-seo-url="original-tambun-biscuit" 1070 data-product-has-options="N" 1071 >+</span> 1072 </div> 1073 </div> 1074 </div> 1075 1076 </div> 1077 <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="566770"> 1078 <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end"> 1079 <div class="d-flex flex-wrap gap-2 posa"> 1080 </div> 1081 <div class="clearfix"></div> 1082 <a href="https://shop.goodchen.my/v2/product/martihsu?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;"> 1083 <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/004d105d8a4383de278767e58cf6b9aceafa09b0aee7c05c6a6e4a8bce6dce29.jpg" 1084 1085 alt="Mar Tih Su" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail" 1086 data-product-id="566770" 1087 data-product-seo-url="martihsu" 1088 1089 style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;"> 1090 </a> 1091 <div class="clearfix mt-3"></div> 1092 <div style="height: 66px;"> 1093 <h2 class="line-clamp-2 mb-0"> 1094 <a href="https://shop.goodchen.my/v2/product/martihsu?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail" 1095 data-product-id="566770" 1096 data-product-seo-url="martihsu" 1097 title="Mar Tih Su"> 1098 Mar Tih Su 1099 </a> 1100 </h2> 1101 <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0"> 1102 <div class="scrolling-text"> 1103 </div> 1104 </div> 1105 </div> 1106 <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;"> 1107 <span class="font-xsssss text-grey-500">RM</span> 1108 12.80 1109 1110 <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">/Pack 1111 </span> 1112 </h6> 1113 <div class="cart-count d-flex mt-4"> 1114 <div class="number"> 1115 <span class="minus btnReduceItemQuantity" 1116 data-product-id="566770" 1117 data-product-has-options="N" 1118 >-</span> 1119 <input type="text" class="open-font itemQuantityTextInput" value="0" 1120 data-product-id="566770" 1121 data-product-has-options="N">
1122 <span class="plus btnIncreaseItemQuantity" 1123 data-product-id="566770" 1124 data-product-seo-url="martihsu" 1125 data-product-has-options="N" 1126 >+</span> 1127 </div> 1128 </div> 1129 </div> 1130 1131 </div> 1132 <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="585562"> 1133 <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end"> 1134 <div class="d-flex flex-wrap gap-2 posa"> 1135 </div> 1136 <div class="clearfix"></div> 1137 <a href="https://shop.goodchen.my/v2/product/honey-peanut-candy?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;"> 1138 <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/b60d01976131c0a52479025910507e5014446cb7601975fe15d1b03380706fd3.jpg" 1139 1140 alt="Honey Peanut Candy" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail" 1141 data-product-id="585562" 1142 data-product-seo-url="honey-peanut-candy" 1143 1144 style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;"> 1145 </a> 1146 <div class="clearfix mt-3"></div> 1147 <div style="height: 66px;"> 1148 <h2 class="line-clamp-2 mb-0"> 1149 <a href="https://shop.goodchen.my/v2/product/honey-peanut-candy?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail" 1150 data-product-id="585562" 1151 data-product-seo-url="honey-peanut-candy" 1152 title="Honey Peanut Candy"> 1153 Honey Peanut Candy 1154 </a> 1155 </h2> 1156 <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0"> 1157 <div class="scrolling-text"> 1158 </div> 1159 </div> 1160 </div> 1161 <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;"> 1162 <span class="font-xsssss text-grey-500">RM</span> 1163 16.80 1164 1165 <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss"> 1166 </span> 1167 </h6> 1168 <div class="cart-count d-flex mt-4"> 1169 <div class="number"> 1170 <span class="minus btnReduceItemQuantity" 1171 data-product-id="585562" 1172 data-product-has-options="N" 1173 >-</span> 1174 <input type="text" class="open-font itemQuantityTextInput" value="0" 1175 data-product-id="585562" 1176 data-product-has-options="N"> 1177 <span class="plus btnIncreaseItemQuantity" 1178 data-product-id="585562" 1179 data-product-seo-url="honey-peanut-candy" 1180 data-product-has-options="N" 1181 >+</span> 1182 </div> 1183 </div> 1184 </div> 1185 1186 </div> 1187 <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="774034"> 1188 <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end"> 1189 <div class="d-flex flex-wrap gap-2 posa"> 1190 </div> 1191 <div class="clearfix"></div> 1192 <a href="https://shop.goodchen.my/v2/product/nasi-lemak-peanut-stick-1?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;"> 1193 <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/7b43ba24abfcc8b314b60864404b4590936367ef64443e33d59223
119362a4c51861.jpg" 1194 1195 alt="Nasi Lemak Peanut Stick" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail" 1196 data-product-id="774034" 1197 data-product-seo-url="nasi-lemak-peanut-stick-1" 1198 1199 style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;"> 1200 </a> 1201 <div class="clearfix mt-3"></div> 1202 <div style="height: 66px;"> 1203 <h2 class="line-clamp-2 mb-0"> 1204 <a href="https://shop.goodchen.my/v2/product/nasi-lemak-peanut-stick-1?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail" 1205 data-product-id="774034" 1206 data-product-seo-url="nasi-lemak-peanut-stick-1" 1207 title="Nasi Lemak Peanut Stick"> 1208 Nasi Lemak Peanut Stick 1209 </a> 1210 </h2> 1211 <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0"> 1212 <div class="scrolling-text"> 1213 </div> 1214 </div> 1215 </div> 1216 <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;"> 1217 <span class="font-xsssss text-grey-500">RM</span> 1218 10.80 1219 1220 <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">/Pack 1221 </span> 1222 </h6> 1223 <div class="cart-count d-flex mt-4"> 1224 <div class="number"> 1225 <span class="minus btnReduceItemQuantity" 1226 data-product-id="774034" 1227 data-product-has-options="N" 1228 >-</span> 1229 <input type="text" class="open-font itemQuantityTextInput" value="0" 1230 data-product-id="774034" 1231 data-product-has-options="N"> 1232 <span class="plus btnIncreaseItemQuantity" 1233 data-product-id="774034" 1234 data-product-seo-url="nasi-lemak-peanut-stick-1" 1235 data-product-has-options="N" 1236 >+</span> 1237 </div> 1238 </div> 1239 </div> 1240 1241 </div> 1242 <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="774475"> 1243 <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end"> 1244 <div class="d-flex flex-wrap gap-2 posa"> 1245 </div> 1246 <div class="clearfix"></div> 1247 <a href="https://shop.goodchen.my/v2/product/president-butter-cake?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;"> 1248 <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/79a697d5a586f8d0ea405f0b7a737d1f680d1fb6cd3786f46c74c24e9a9a5a30.jpg" 1249 1250 alt="PRESIDENT BUTTER CAKE" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail" 1251 data-product-id="774475" 1252 data-product-seo-url="president-butter-cake" 1253 1254 style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;"> 1255 </a> 1256 <div class="clearfix mt-3"></div> 1257 <div style="height: 66px;"> 1258 <h2 class="line-clamp-2 mb-0"> 1259 <a href="https://shop.goodchen.my/v2/product/president-butter-cake?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail" 1260 data-product-id="774475" 1261 data-product-seo-url="president-butter-cake" 1262 title="PRESIDENT BUTTER CAKE"> 1263 PRESIDENT BUTTER CAKE 1264 </a> 1265 </h2> 1266 <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0"> 1267 <div class="scrolling-text"> 1268 </div> 1269 </div> 1270 </div> 1271 <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;">
1272 <span class="font-xsssss text-grey-500">RM</span> 1273 23.00 1274 1275 <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss"> 1276 </span> 1277 </h6> 1278 <div class="cart-count d-flex mt-4"> 1279 <div class="number"> 1280 <span class="minus btnReduceItemQuantity" 1281 data-product-id="774475" 1282 data-product-has-options="N" 1283 >-</span> 1284 <input type="text" class="open-font itemQuantityTextInput" value="0" 1285 data-product-id="774475" 1286 data-product-has-options="N"> 1287 <span class="plus btnIncreaseItemQuantity" 1288 data-product-id="774475" 1289 data-product-seo-url="president-butter-cake" 1290 data-product-has-options="N" 1291 >+</span> 1292 </div> 1293 </div> 1294 </div> 1295 1296 </div> 1297 <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="774478"> 1298 <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end"> 1299 <div class="d-flex flex-wrap gap-2 posa"> 1300 </div> 1301 <div class="clearfix"></div> 1302 <a href="https://shop.goodchen.my/v2/product/white-almond-cookies?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;"> 1303 <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/84c5beeb9f62b05c9c707b651794e0869cf94f7110c874adafa300def55ff3b1.jpg" 1304 1305 alt="WHITE ALMOND COOKIES" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail" 1306 data-product-id="774478" 1307 data-product-seo-url="white-almond-cookies" 1308 1309 style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;"> 1310 </a> 1311 <div class="clearfix mt-3"></div> 1312 <div style="height: 66px;"> 1313 <h2 class="line-clamp-2 mb-0"> 1314 <a href="https://shop.goodchen.my/v2/product/white-almond-cookies?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail" 1315 data-product-id="774478" 1316 data-product-seo-url="white-almond-cookies" 1317 title="WHITE ALMOND COOKIES"> 1318 WHITE ALMOND COOKIES 1319 </a> 1320 </h2> 1321 <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0"> 1322 <div class="scrolling-text"> 1323 </div> 1324 </div> 1325 </div> 1326 <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;"> 1327 <span class="font-xsssss text-grey-500">RM</span> 1328 31.00 1329 1330 <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss"> 1331 </span> 1332 </h6> 1333 <div class="cart-count d-flex mt-4"> 1334 <div class="number">
1335 <span class="minus btnReduceItemQuantity" 1336 data-product-id="774478" 1337 data-product-has-options="N" 1338 >-</span> 1339 <input type="text" class="open-font itemQuantityTextInput" value="0" 1340 data-product-id="774478" 1341 data-product-has-options="N"> 1342 <span class="plus btnIncreaseItemQuantity" 1343 data-product-id="774478" 1344 data-product-seo-url="white-almond-cookies" 1345 data-product-has-options="N" 1346 >+</span> 1347 </div> 1348 </div> 1349 </div> 1350 1351 </div> 1352 <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="774480"> 1353 <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end"> 1354 <div class="d-flex flex-wrap gap-2 posa"> 1355 </div> 1356 <div class="clearfix"></div> 1357 <a href="https://shop.goodchen.my/v2/product/durian-lava-pie?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;"> 1358 <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/03ce74ce6bf595323a900447843a02a00b5065dcc0536409470defb47e48a120.jpg" 1359 1360 alt="DURIAN LAVA PIE" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail" 1361 data-product-id="774480" 1362 data-product-seo-url="durian-lava-pie" 1363 1364 style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;"> 1365 </a> 1366 <div class="clearfix mt-3"></div> 1367 <div style="height: 66px;"> 1368 <h2 class="line-clamp-2 mb-0"> 1369 <a href="https://shop.goodchen.my/v2/product/durian-lava-pie?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail" 1370 data-product-id="774480" 1371 data-product-seo-url="durian-lava-pie" 1372 title="DURIAN LAVA PIE"> 1373 DURIAN LAVA PIE 1374 </a> 1375 </h2> 1376 <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0"> 1377 <div class="scrolling-text"> 1378 </div> 1379 </div> 1380 </div> 1381 <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;"> 1382 <span class="font-xsssss text-grey-500">RM</span> 1383 39.00 1384 1385 <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss"> 1386 </span> 1387 </h6> 1388 <div class="cart-count d-flex mt-4"> 1389 <div class="number"> 1390 <span class="minus btnReduceItemQuantity" 1391 data-product-id="774480" 1392 data-product-has-options="N" 1393 >-</span> 1394 <input type="text" class="open-font itemQuantityTextInput" value="0" 1395 data-product-id="774480" 1396 data-product-has-options="N">
1397 <span class="plus btnIncreaseItemQuantity" 1398 data-product-id="774480" 1399 data-product-seo-url="durian-lava-pie" 1400 data-product-has-options="N" 1401 >+</span> 1402 </div> 1403 </div> 1404 </div> 1405 1406 </div> 1407 <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="774481"> 1408 <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end"> 1409 <div class="d-flex flex-wrap gap-2 posa"> 1410 </div> 1411 <div class="clearfix"></div> 1412 <a href="https://shop.goodchen.my/v2/product/almond-crispy-flakes?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;"> 1413 <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/0b2f31a8ac4e8dbbe36952c1cbceeb427c0db477b849cfd58576130d69e51ffd.jpg" 1414 1415 alt="ALMOND CRISPY FLAKES" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail" 1416 data-product-id="774481" 1417 data-product-seo-url="almond-crispy-flakes" 1418 1419 style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;"> 1420 </a> 1421 <div class="clearfix mt-3"></div> 1422 <div style="height: 66px;"> 1423 <h2 class="line-clamp-2 mb-0"> 1424 <a href="https://shop.goodchen.my/v2/product/almond-crispy-flakes?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail" 1425 data-product-id="774481" 1426 data-product-seo-url="almond-crispy-flakes" 1427 title="ALMOND CRISPY FLAKES"> 1428 ALMOND CRISPY FLAKES 1429 </a> 1430 </h2> 1431 <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0"> 1432 <div class="scrolling-text"> 1433 </div> 1434 </div> 1435 </div> 1436 <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;"> 1437 <span class="font-xsssss text-grey-500">RM</span> 1438 34.00 1439 1440 <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss"> 1441 </span> 1442 </h6> 1443 <div class="cart-count d-flex mt-4"> 1444 <div class="number"> 1445 <span class="minus btnReduceItemQuantity" 1446 data-product-id="774481" 1447 data-product-has-options="N" 1448 >-</span> 1449 <input type="text" class="open-font itemQuantityTextInput" value="0" 1450 data-product-id="774481" 1451 data-product-has-options="N"> 1452 <span class="plus btnIncreaseItemQuantity" 1453 data-product-id="774481" 1454 data-product-seo-url="almond-crispy-flakes" 1455 data-product-has-options="N" 1456 >+</span> 1457 </div> 1458 </div> 1459 </div> 1460 1461 </div> 1462 <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="774493"> 1463 <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end"> 1464 <div class="d-flex flex-wrap gap-2 posa"> 1465 </div> 1466 <div class="clearfix"></div> 1467 <a href="https://shop.goodchen.my/v2/product/durian-shortcake?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;"> 1468 <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/9333d1add8dac20f30b347e300ddc307ce5e786060511018edc576066c36fa91.jpg" 1469 1470 alt="DURIAN SHORTCAKE 9PCS" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail" 1471 data-product-id="774493" 1472 data-product-seo-url="durian-shortcake" 1473 1474 style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;"> 1475 </a> 1476 <div class="clearfix mt-3"></div> 1477 <div style="height: 66px;"> 1478 <h2 class="line-clamp-2 mb-0"> 1479 <a href="https://shop.goodchen.my/v2/product/durian-shortcake?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail" 1480 data-product-id="774493" 1481 data-product-seo-url="durian-shortcake" 1482 title="DURIAN SHORTCAKE 9PCS"> 1483 DURIAN SHORTCAKE 9PCS 1484 </a> 1485 </h2> 1486 <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0"> 1487 <div class="scrolling-text"> 1488 </div> 1489 </div> 1490 </div> 1491 <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;">
1492 <span class="font-xsssss text-grey-500">RM</span> 1493 41.00 1494 1495 <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss"> 1496 </span> 1497 </h6> 1498 <div class="cart-count d-flex mt-4"> 1499 <div class="number"> 1500 <span class="minus btnReduceItemQuantity" 1501 data-product-id="774493" 1502 data-product-has-options="N" 1503 >-</span> 1504 <input type="text" class="open-font itemQuantityTextInput" value="0" 1505 data-product-id="774493" 1506 data-product-has-options="N"> 1507 <span class="plus btnIncreaseItemQuantity" 1508 data-product-id="774493" 1509 data-product-seo-url="durian-shortcake" 1510 data-product-has-options="N" 1511 >+</span> 1512 </div> 1513 </div> 1514 </div> 1515 1516 </div> 1517 <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="774511"> 1518 <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end"> 1519 <div class="d-flex flex-wrap gap-2 posa"> 1520 </div> 1521 <div class="clearfix"></div> 1522 <a href="https://shop.goodchen.my/v2/product/nanyang-biscuit?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;"> 1523 <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/cc1949a8c3abc428c1b3752c9fc1abdcc0d8476db481425f2c8f490881f7b5cd.jpg" 1524 1525 alt="Nanyang Biscuit" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail" 1526 data-product-id="774511" 1527 data-product-seo-url="nanyang-biscuit" 1528 1529 style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;"> 1530 </a> 1531 <div class="clearfix mt-3"></div> 1532 <div style="height: 66px;"> 1533 <h2 class="line-clamp-2 mb-0"> 1534 <a href="https://shop.goodchen.my/v2/product/nanyang-biscuit?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail" 1535 data-product-id="774511" 1536 data-product-seo-url="nanyang-biscuit" 1537 title="Nanyang Biscuit"> 1538 Nanyang Biscuit 1539 </a> 1540 </h2> 1541 <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0"> 1542 <div class="scrolling-text"> 1543 </div> 1544 </div> 1545 </div> 1546 <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;"> 1547 <span class="font-xsssss text-grey-500">RM</span> 1548 17.00 1549 1550 <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss"> 1551 </span> 1552 </h6> 1553 <div class="cart-count d-flex mt-4"> 1554 <div class="number">
1555 <span class="minus btnReduceItemQuantity" 1556 data-product-id="774511" 1557 data-product-has-options="N" 1558 >-</span> 1559 <input type="text" class="open-font itemQuantityTextInput" value="0" 1560 data-product-id="774511" 1561 data-product-has-options="N"> 1562 <span class="plus btnIncreaseItemQuantity" 1563 data-product-id="774511" 1564 data-product-seo-url="nanyang-biscuit" 1565 data-product-has-options="N" 1566 >+</span> 1567 </div> 1568 </div> 1569 </div> 1570 1571 </div> 1572 <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="585292"> 1573 <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end"> 1574 <div class="d-flex flex-wrap gap-2 posa"> 1575 </div> 1576 <div class="clearfix"></div> 1577 <a href="https://shop.goodchen.my/v2/product/authentic-ipoh-white-coffee?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;"> 1578 <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/050678acd9214b1f8969bae89520a37e3eb0c97b9269c36825d1f6e820b51be8.jpeg" 1579 1580 alt="Authentic Ipoh White Coffee" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail" 1581 data-product-id="585292" 1582 data-product-seo-url="authentic-ipoh-white-coffee" 1583 1584 style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;"> 1585 </a> 1586 <div class="clearfix mt-3"></div> 1587 <div style="height: 66px;"> 1588 <h2 class="line-clamp-2 mb-0"> 1589 <a href="https://shop.goodchen.my/v2/product/authentic-ipoh-white-coffee?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail" 1590 data-product-id="585292" 1591 data-product-seo-url="authentic-ipoh-white-coffee" 1592 title="Authentic Ipoh White Coffee"> 1593 Authentic Ipoh White Coffee 1594 </a> 1595 </h2> 1596 <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0"> 1597 <div class="scrolling-text"> 1598 </div> 1599 </div> 1600 </div> 1601 <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;"> 1602 <span class="font-xsssss text-grey-500">RM</span> 1603 23.90 1604 1605 <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">/Pack 1606 </span> 1607 </h6> 1608 <div class="cart-count d-flex mt-4"> 1609 <div class="number"> 1610 <span class="minus btnReduceItemQuantity" 1611 data-product-id="585292" 1612 data-product-has-options="N" 1613 >-</span> 1614 <input type="text" class="open-font itemQuantityTextInput" value="0" 1615 data-product-id="585292" 1616 data-product-has-options="N">
1617 <span class="plus btnIncreaseItemQuantity" 1618 data-product-id="585292" 1619 data-product-seo-url="authentic-ipoh-white-coffee" 1620 data-product-has-options="N" 1621 >+</span> 1622 </div> 1623 </div> 1624 </div> 1625 1626 </div> 1627 <div class="col-lg-3 col-sm-3 col-xs-6 p-1 product-items" data-product-id="585294"> 1628 <div class="rounded-10 posr bg-white h-100 p-3 border-top border-bottom border-start border-end"> 1629 <div class="d-flex flex-wrap gap-2 posa"> 1630 </div> 1631 <div class="clearfix"></div> 1632 <a href="https://shop.goodchen.my/v2/product/ipoh-white-coffee-no-sugar-added?merchant_domain_name=goodchen" class="d-block text-center" style="position: relative; padding-top: 100%; width: 100%;"> 1633 <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_product_default_photo/4a794fe73817e225018c83cca4aa527e847a176ecd2b2c240cdd998c70453951.jpeg" 1634 1635 alt="Ipoh White Coffee (No Sugar Added)" class="w-100 mt-3 mb-3 d-inline-block pt-0 btnViewProductDetail" 1636 data-product-id="585294" 1637 data-product-seo-url="ipoh-white-coffee-no-sugar-added" 1638 1639 style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; height: 100%; object-fit: cover;"> 1640 </a> 1641 <div class="clearfix mt-3"></div> 1642 <div style="height: 66px;"> 1643 <h2 class="line-clamp-2 mb-0"> 1644 <a href="https://shop.goodchen.my/v2/product/ipoh-white-coffee-no-sugar-added?merchant_domain_name=goodchen" class="text-grey-700 fw-600 font-xsss lh-22 d-block ls-0 btnViewProductDetail" 1645 data-product-id="585294" 1646 data-product-seo-url="ipoh-white-coffee-no-sugar-added" 1647 title="Ipoh White Coffee (No Sugar Added)"> 1648 Ipoh White Coffee (No Sugar Added) 1649 </a> 1650 </h2> 1651 <div class="text-nowrap overflow-hidden text-grey-700 fw-600 font-xsss lh-22 ls-0"> 1652 <div class="scrolling-text"> 1653 </div> 1654 </div> 1655 </div> 1656 <h6 class="font-xss ls-3 fw-700 text-current d-flex" style="flex-wrap: wrap;"> 1657 <span class="font-xsssss text-grey-500">RM</span> 1658 25.90 1659 1660 <span class="ms-auto text-grey-500 fw-500 mt-1 font-xsssss">/Pack 1661 </span> 1662 </h6> 1663 <div class="cart-count d-flex mt-4"> 1664 <div class="number"> 1665 <span class="minus btnReduceItemQuantity" 1666 data-product-id="585294" 1667 data-product-has-options="N" 1668 >-</span> 1669 <input type="text" class="open-font itemQuantityTextInput" value="0" 1670 data-product-id="585294" 1671 data-product-has-options="N"> 1672 <span class="plus btnIncreaseItemQuantity" 1673 data-product-id="585294" 1674 data-product-seo-url="ipoh-white-coffee-no-sugar-added" 1675 data-product-has-options="N" 1676 >+</span> 1677 </div> 1678 </div> 1679 </div> 1680 1681 </div> 1682 </div> 1683 1684<div class="pagination mt-2"> 1685 1686</div> 1687 </div> 1688 </div> 1689 1690 <div class="row justify-content-center mt-3" style="height: 100px;"> 1691 </div> 1692 </div> 1693 </div> 1694 1695 1696 <div class="lower-footer bg-white pb-2 pt-2 border-top shadow-md" 1697 style="position: fixed; bottom: 0; left: 0; right: 0; z-index: 3;"> 1698 <div class="container"> 1699 <div class="row"> 1700 <div class="col-md-6 col-sm-12"> 1701 1702 </div> 1703 <div class="col-md-6 col-sm-12 d-flex align-items-center justify-content-end"> 1704 <div class="btnCart"> 1705 <i class="feather-shopping-cart text-grey-800 me-2"></i>
1706 <span class="text-grey-800 fw-bolder" id="cartItemCount">0</span> 1707 <span class="text-grey-800 fw-bolder">Items</span> 1708 </div> 1709 <div style="margin-left: 20px;"> 1710 <button type="button" class="btn btn-warning btnCart fw-bold">Order Now</button> 1711 </div> 1712 </div> 1713 1714 1715 1716 1717 1718 1719 1720 1721 </div> 1722 </div> 1723 </div> 1724 <!-- FOOTER WRAPPER --> 1725 1726 1727</div> 1728 1729 1730 <div class="modal fade right modal-scrollable" id="product-detail-modal" tabindex="-1" aria-hidden="true"> 1731 <div class="modal-dialog modal-dialog-centered modal-dialog-wide"> 1732 <div class="modal-content theme-dark-bg border-0 rounded-0" style="overflow: hidden;"> 1733 <button type="button" class="btn-close z-index-5 font-xsss w-26 h-26 text-center rounded-circle posa right-20 top-0 mt-0 me-0" data-bs-dismiss="modal" aria-label="Close"></button> 1734 1735 1736 <div class="modal-body" id="modal-body-product" style="padding:0;"> 1737 </div> 1738 1739 </div> 1740 </div> 1741 </div> 1742 1743 <div class="modal" tabindex="-1" role="dialog" id="test-modal"> 1744 <div class="modal-dialog" role="document"> 1745 <div class="modal-content"> 1746 <div class="modal-header"> 1747 <h5 class="modal-title">Modal title</h5> 1748 <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close"> 1749 <span aria-hidden="true">×</span> 1750 </button> 1751 </div> 1752 <div class="modal-body"> 1753 <p>Modal body text goes here.</p> 1754 </div> 1755 <div class="modal-footer"> 1756 <button type="button" class="btn btn-primary">Save changes</button> 1757 <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button> 1758 </div> 1759 </div> 1760 </div> 1761 </div> 1762 1763 <div class="modal fade modal-scrollable" id="DialogFormSetDeliveryDestinationAddress" tabindex="-1" data-bs-backdrop="static" data-bs-keyboard="false"> 1764 <div class="modal-dialog modal-additional-bottom-spacing" role="document"> 1765 <div class="modal-content"> 1766 <div class="modal-header"> 1767 <h5 class="modal-title">Set/Change Delivery Destination Address</h5> 1768 </div> 1769 <form> 1770 <div class="modal-body text-left mb-2"> 1771 <div id="set-destination-address-fields"> 1772 <div class="form-group basic"> 1773 <div class="input-wrapper"> 1774 <label class="label" for="set_delivery_destination_unit_block_house_no">Unit / Block / House No. <span class="label-optional">(Optional)</span></label> 1775 <input type="text" class="form-control" id="set_delivery_destination_unit_block_house_no"> 1776 </div> 1777 </div> 1778 <div class="form-group basic"> 1779 <div class="input-wrapper"> 1780 <label class="label" for="set_delivery_destination_address">Delivery Address</label> 1781 <input type="text" class="form-control" id="set_delivery_destination_address" required> 1782 </div> 1783 </div> 1784 <div class="row"> 1785 <div class="col-6"> 1786 <div class="form-group basic"> 1787 <div class="input-wrapper"> 1788 <label class="label" for="set_delivery_destination_postcode">Postcode</label> 1789 <input type="text" class="form-control" id="set_delivery_destination_postcode"> 1790 </div> 1791 </div> 1792 </div> 1793 <div class="col-6"> 1794 <div class="form-group basic"> 1795 <div class="input-wrapper"> 1796 <label class="label" for="set_delivery_destination_city">City</label> 1797 <input type="text" class="form-control" id="set_delivery_destination_city"> 1798 </div> 1799 </div> 1800 </div> 1801 </div> 1802 <div class="form-group basic"> 1803 <div class=""> 1804 <label class="label" for="set_delivery_destination_state_id">State</label> 1805 <select class="form-control" id="set_delivery_destination_state_id" name="set_delivery_destination_state_id" style="width: 100%;"> 1806 <option value="1">Johor</option> 1807 <option value="2">Kedah</option> 1808 <option value="3">Kelantan</option> 1809 <option value="4">
1809Kuala Lumpur</option> 1810 <option value="5">Labuan</option> 1811 <option value="6">Melaka</option> 1812 <option value="7">Negeri Sembilan</option> 1813 <option value="8">Pahang</option> 1814 <option value="9">Penang</option> 1815 <option value="10">Perak</option> 1816 <option value="11">Perlis</option> 1817 <option value="12">Putrajaya</option> 1818 <option value="13">Sabah</option> 1819 <option value="14">Sarawak</option> 1820 <option value="15">Terengganu</option> 1821 <option value="16">Selangor</option> 1822 <option value="17">[OUTSIDE OF MALAYSIA]</option> 1823 </select> 1824 </div> 1825 </div> 1826 </div> 1827 1828 <div id="set-delivery-destination-address-spinner" style="width: 100%; text-align: center; display: none;"> 1829 <span class="spinner-border spinner-border-sm mr-05" role="status" aria-hidden="true"></span> 1830 </div> 1831 1832 <div id="delivery_destination_map_wrapper" style="display: none;"> 1833 <span style="">Drag the marker to accurately pinpoint your location.</span> 1834 <div id="delivery_destination_map" style="width: 100%; height: 200px;"></div> 1835 </div> 1836 <div style="margin-top: 20px;"> 1837 <button type="button" id="btnConfirmDeliveryDestinationAddress" class="btn btn-primary" style="width: 100%;">Confirm Address</button> 1838 <button type="button" id="btnReenterDeliveryDestinationAddress" class="btn btn-warning" style="width: 100%; margin-bottom: 5px;">Re-enter Address</button> 1839 <button type="button" id="btnConfirmDeliveryDestinationCoordinates" class="btn btn-primary" style="width: 100%; display: none;">Confirm Location</button> 1840 </div> 1841 </div> 1842 </form> 1843 </div> 1844 </div> 1845 </div> 1846 1847 1848 <div class="modal modal-scrollable" tabindex="-1" role="dialog" id="ModalBasicAnnouncement"> 1849 <div class="modal-dialog modal-additional-bottom-spacing" role="document"> 1850 <div class="modal-content"> 1851 <div class="modal-header"> 1852 <h5 class="modal-title">Announcement</h5> 1853 <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close"> 1854 <span aria-hidden="true">×</span> 1855 </button> 1856 </div> 1857 <div class="modal-body" style="min-height: auto;"> 1858 <a href="https://justordertoday.b-cdn.net/fs_shop/4561/fs_shop_announcement_photo/2a0bc511cfd994933bd4773eccc50d2677d5f350de3667eb1d70b8fc9ab02be4.jpg" data-lightbox="shop-announcement-photo"> 1859 <img src="https://justordertoday.b-cdn.net/fs_shop/4561/fs_shop_announcement_photo/2a0bc511cfd994933bd4773eccc50d2677d5f350de3667eb1d70b8fc9ab02be4.jpg" alt="Announcement photo" loading="lazy" class="imaged w-100 square shop-announcement-img mb-2"> 1860 </a> 1861 <sp
1861an class="card-text"> 1862 𥮠æé¥¼è´ä¹°å ¬å<br /> 1863<br /> 1864éè¦è´ä¹°æé¥¼ï¼<br /> 1865æ¬¢è¿ WhatsApp èç³»æä»¬ ð²<br /> 1866+60167447526<br /> 1867<br /> 1868è°¢è°¢å¤§å®¶çæ¯æ â¤ï¸<br /> 1869<br /> 1870𥮠Mooncake Purchase Announcement<br /> 1871<br /> 1872Looking to purchase mooncakes?<br /> 1873Feel free to WhatsApp us ð²<br /> 1874+60167447526<br /> 1875Thank you for your support! â¤ï¸ 1876 </span> 1877 </div> 1878 <div class="modal-footer"> 1879 <button type="button" class="btn btn-primary" data-bs-dismiss="modal" aria-label="Close" 1880 style="width: 100%;">Close</button> 1881 </div> 1882 </div> 1883 </div> 1884 </div> 1885 1886 <!-- Modal Promotion / Discount --> 1887<div class="modal fade modal-scrollable" id="promotionmodal" tabindex="-1" role="dialog"> 1888 <div class="modal-dialog modal-additional-bottom-spacing" role="document" style=""> 1889 <div class="modal-content" style=""> 1890 <div class="modal-body" style=""> 1891 <div style="width: 100%; text-align: center; "> 1892 <img src="https://shop.goodchen.my/images/flaticons/discount-gift-512.png" style="width: 50%; max-width: 150px;"/> 1893 </div> 1894 1895 <div class="accordion" id="accordionParentDiscountRule" style="margin-top: 30px; padding-bottom: 8px; border: none;"> 1896 </div> 1897 </div> 1898 <div class="modal-footer"> 1899 <button type="button" class="btn btn-primary text-white" data-bs-dismiss="modal" 1900 style="width: 100%;">OK</button> 1901 </div> 1902 </div> 1903 </div> 1904</div> 1905<!-- * Modal Promotion / Discount --> 1906 1907<!-- LOCATION MODAL --> 1908<div class="modal fade modal-scrollable" id="locationmodal" tabindex="-1" aria-hidden="true"> 1909 <div class="modal-dialog modal-dialog-centered" style="max-width: 320px;"> 1910 <div class="modal-content theme-dark-bg p-4"> 1911 <button type="button" class="btn-close z-index-5 posa right-0 top-0 mt-3 me-3" data-bs-dismiss="modal" aria-label="Close"></button> 1912 <div class="modal-body p-0 vw100 text-center pt-3 pb-0"> 1913 <i class="feather-map-pin bg-greylight text-grey-900 btn-round-xxxl font-xl text-center rounded-6"></i> 1914 <h2 class="font-xss fw-700 text-grey-700 mt-4">Select your location</h2> 1915 <p class="text-grey-500 font-xsssss mt-1">Implementation of technologies to store <br> unchange data based on specific</p> 1916 <div class="inner-addon left-addon"> 1917 <input type="text" class="form-control ps-5 font-xssss border-sizelg rounded-6 bg-color-none fw-600 border text-grey-500" value="675 Camac Street Down"> 1918 <i class="ti-location-arrow text-current ps-3 font-xss posa left-0 mt-3"></i> 1919 </div> 1920 <a href="#" class="btn rounded-6 w-100 lh-2 d-block p-3 mt-2 text-white bg-current font-xssss text-uppercase fw-600 ls-3" data-dismiss="modal" aria-label="Close">Current Location </a> 1921 </div> 1922 </div> 1923 </div> 1924</div> 1925 1926<!-- MENU MODAL --> 1927<div class="modal fade left modal-scrollable" id="menumodal" tabindex="-1" aria-hidden="true"> 1928 <div class="modal-dialog modal-dialog-centered"> 1929 <div class="modal-content theme-dark-bg p-0 border-0 rounded-0"> 1930 <button type="button" class="btn-close z-index-5 bg-grey font-xsssss w-26 h-26 text-center rounded-circle posa right-0 top-0 mt-4 me-3" data-bs-dismiss="modal" aria-label="Close"></button> 1931 <div class="modal-body vw100 text-start p-0 h-100"> 1932 <div class="card p-4 border-0 text-start h-100 "> 1933 <h4 class="fw-700 font-lg text-grey-900 text-start mb-3 d-block ls-0"> Menu</h4> 1934 1935 <ul class="navbar-nav"> 1936 <li><a class="nav-link" aria-expanded="false" data-bs-toggle="modal" data-bs-target="#aboutmodal" data-bs-dismiss="modal">About GOOD CHEN è°·ä¸é£å</a></li> 1937 <li><a class="nav-link btnShowPickupDeliveryInfo" aria-expanded="false" data-bs-dismiss="modal">Pickup / Delivery Info</a></li> 1938 <li class="nav-item active dropdown"> 1939 <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">English</a> 1940 <ul class="dropdown-menu border-0 shadow-xss"> 1941 <li><a class="dropdown-item" href="https://shop.goodchen.my/lang/en?merchant_domain_name=goodchen">English</a></li> 1942 <li><a class="dropdown-item" href="https://shop.goodchen.my/lang/zh?merchant_domain_name=goodchen">䏿</a></li> 1943 <li><a class="dropdown-item" href="https://shop.goodchen.my/lang/vi?merchant_domain_name=goodchen">Tiếng Viá»t</a></li> 1944 <li><a class="dropdown-item" href="https://shop.goodchen.my/lang/ms?merchant_domain_name=goodchen">Bahasa Melayu</a></li> 1945 </ul> 1946 </li> 1947 <li><a class="nav-link login-as-member-buttons">Login/Register as Member</a></li> 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 </ul> 1992 </div> 1993 </div> 1994 </div> 1995 </div> 1996</div> 1997<!-- CATEGORY MODAL --> 1998 1999 2000<!-- CART MODAL --> 2001<div class="modal fade right modal-scrollable" id="cartmodal" tabindex="-1" aria-hidden="true"> 2002 <div class="modal-dialog modal-dialog-centered" style="width: 350px;"> 2003 <div class="modal-content theme-dark-bg p-0 border-0 rounded-0"> 2004 <button type="button" class="btn-close z-index-5 bg-grey font-xsssss w-26 h-26 text-center rounded-circle posa right-0 top-0 mt-3 me-3" data-bs-dismiss="modal" aria-label="Close"></button> 2005 <div class="cart-box" style="height: 100%; display: none;"> 2006 <div class="modal-body p-0 h-100"> 2007 <div style="position: relative; height: 100%;"> 2008 <div class="w-100" id="cart-box-content" style="position: absolute; overflow: hidden;
2008 overflow-y: scroll; height: calc(100% - 250px);"> 2009 <div class="card w-100 p-4 pb-0 border-0 text-start" id="cart-box-content-inner"> 2010 <h4 class="fw-700 font-lg text-grey-900 text-start mb-3 mt-n2 d-block"> Cart</h4> 2011 <div id="cartItems"></div> 2012 </div> 2013 </div> 2014 <div class="bg-white w-100 border-top shadow-xss" style="position: absolute; bottom: 0; padding: 10px 10px;"> 2015 <div class="card w-100 p-4 pt-0 border-0 text-start mt-auto"> 2016 <!-- <hr /> --> 2017 <div class="row"> 2018 <div class="col-lg-12"> 2019 <button type="button" class="w-100 btn-outline-danger rounded-6 text-center btn mb-3" id="btnClearCart">Clear All</button> 2020 </div> 2021 </div> 2022 <div class="row"> 2023 <div class="col-lg-12" id="cartAmounts"> 2024 <h4 class="text-grey-900 font-xssss fw-600 mb-2 d-flex">Subtotal <span class="ms-auto text-grey-500">RM 0.00</span></h4> 2025 <h4 class="text-grey-900 font-xssss fw-600 mb-3 d-flex">Tax <span class="ms-auto text-grey-500">RM 0.00</span></h4> 2026 <h4 class="text-grey-900 font-xss fw-600 mb-3 d-flex">Total <span class="ms-auto">RM 0.00</span></h4> 2027 </div> 2028 </div> 2029 2030 <button type="button" class="w-100 bg-current text-white rounded-6 text-center btn" id="btnCheckout">CONFIRM ORDER</button> 2031 </div> 2032 </div> 2033 </div> 2034 </div> 2035 </div> 2036 2037 </div> 2038 </div> 2039</div> 2040<!-- CART MODAL --> 2041 2042<!-- CHECKOUT MODAL --> 2043<div class="modal fade right modal-scrollable" id="checkoutmodal" tabindex="-1" aria-hidden="true" data-bs-backdrop="static" data-bs-keyboard="false"> 2044 <div class="modal-dialog modal-dialog-centered" style="width: 350px;"> 2045 <div class="modal-content theme-dark-bg p-0 border-0 rounded-0"> 2046 <button type="button" class="btn-close z-index-5 bg-grey font-xsssss w-26 h-26 text-center rounded-circle posa right-0 top-0 mt-3 me-3" id="btnCloseCheckoutModal"></button> 2047 <div class="checkout-box vh-100"> 2048 <div class="modal-body text-start p-0 d-flex align-items-start flex-column" id="checkout-wrapper"> 2049 2050 </div> 2051 </div> 2052 </div> 2053 </div> 2054</div> 2055 2056<!-- SAVED MODAL --> 2057<div class="modal fade right modal-scrollable" id="savedmodal" tabindex="-1" aria-hidden="true"> 2058 <div class="modal-dialog modal-dialog-centered" style="width: 350px;"> 2059 <div class="modal-content theme-dark-bg p-0 border-0 rounded-0"> 2060 <button type="button" class="btn-close z-index-5 bg-grey font-xsssss w-26 h-26 text-center rounded-circle posa right-0 top-0 mt-3 me-3" data-bs-dismiss="modal" aria-label="Close"></button> 2061 <div class="cart-box vh-100" > 2062 <div class="modal-body vh-100 text-start p-0 d-flex align-items-start flex-column"> 2063 <div class="card w-100 p-4 pb-0 border-0 text-start"> 2064 <h4 class="fw-700 font-lg text-grey-900 text-start mb-3 mt-n2 d-block"> Saved</h4> 2065 <div class="row mb-3"> 2066 <div class="col-md-5 col-xs-5"><a href="#" class="d-block text-center" data-bs-toggle="modal" data-bs-target="#productmodal"><img src="https://shop.goodchen.my/customer-v2/images/g-15.png" alt="product-image" class="w-100 d-inline-block pt-3 pb-3 bg-greylight rounded-6"></a></div> 2067 <div class="col-md-7 col-xs-7 ps-0"> 2068 <span class="ms-auto text-grey-500 fw-500 lh-1 font-xsssss mt-0 w-100 mb-2">500gm</span> 2069 <a href="single-product-1.html" class="text-grey-900 fw-600 font-xssss lh-22 d-block ls-0 mb-2">Blue Diamond Almonds Lightly Salted</a> 2070 <h6 class="font-xs ls-3 fw-700 text-current float-start mt-1"><span class="font-xsssss text-grey-500">$</span>29 </h6> 2071 <a href="#" class="text-uppercase font-xsssss text-grey-900 fw-700 ls-1 bg-greylight float-end w-125 lh-20 rounded-6 btn">Add to cart</a> 2072 </div> 2073 </div> 2074 <div class="row mb-3"> 2075 <div class="col-md-5 col-xs-5"><a href="#" class="d-block text-center"><img src="https://shop.goodchen.my/customer-v2/images/g-16.png" alt="product-image" class="w-100 d-inline-block pt-3 pb-3 bg-greylight rounded-6"></a></div>
2076 <div class="col-md-7 col-xs-7 ps-0"> 2077 <span class="ms-auto text-grey-500 fw-500 lh-1 font-xsssss mt-0 w-100 mb-2">500gm</span> 2078 <a href="single-product-1.html" class="text-grey-900 fw-600 font-xssss lh-22 d-block ls-0 mb-2">Blue Diamond Almonds Lightly Salted</a> 2079 <h6 class="font-xs ls-3 fw-700 text-current float-start mt-1"><span class="font-xsssss text-grey-500">$</span>49 </h6> 2080 <a href="#" class="text-uppercase font-xsssss text-grey-900 fw-700 ls-1 bg-greylight float-end w-125 lh-20 rounded-6 btn">Add to cart</a> 2081 </div> 2082 </div> 2083 <div class="row mb-3"> 2084 <div class="col-md-5 col-xs-5"><a href="#" class="d-block text-center"><img src="https://shop.goodchen.my/customer-v2/images/g-17.png" alt="product-image" class="w-100 d-inline-block pt-3 pb-3 bg-greylight rounded-6"></a></div> 2085 <div class="col-md-7 col-xs-7 ps-0"> 2086 <span class="ms-auto text-grey-500 fw-500 lh-1 font-xsssss mt-0 w-100 mb-2">100gm</span> 2087 <a href="single-product-1.html" class="text-grey-900 fw-600 font-xssss lh-22 d-block ls-0 mb-2">Blue Diamond Almonds Lightly Salted</a> 2088 <h6 class="font-xs ls-3 fw-700 text-current float-start mt-1"><span class="font-xsssss text-grey-500">$</span>99 </h6> 2089 <a href="#" class="text-uppercase font-xsssss text-grey-900 fw-700 ls-1 bg-greylight float-end w-125 lh-20 rounded-6 btn">Add to cart</a> 2090 </div> 2091 </div> 2092 <div class="row mb-3"> 2093 <div class="col-md-5 col-xs-5"><a href="#" class="d-block text-center"><img src="https://shop.goodchen.my/customer-v2/images/g-18.png" alt="product-image" class="w-100 d-inline-block pt-3 pb-3 bg-greylight rounded-6"></a></div> 2094 <div class="col-md-7 col-xs-7 ps-0"> 2095 <span class="ms-auto text-grey-500 fw-500 lh-1 font-xsssss mt-0 w-100 mb-2">2Kg</span> 2096 <a href="single-product-1.html" class="text-grey-900 fw-600 font-xssss lh-22 d-block ls-0 mb-2">Blue Diamond Almonds Lightly Salted</a> 2097 <h6 class="font-xs ls-3 fw-700 text-current float-start mt-1"><span class="font-xsssss text-grey-500">$</span>39 </h6> 2098 <a href="#" class="text-uppercase font-xsssss text-grey-900 fw-700 ls-1 bg-greylight float-end w-125 lh-20 rounded-6 btn">Add to cart</a> 2099 </div> 2100 </div> 2101 <div class="row mb-3"> 2102 <div class="col-md-5 col-xs-5"><a href="#" class="d-block text-center"><img src="https://shop.goodchen.my/customer-v2/images/g-19.png" alt="product-image" class="w-100 d-inline-block pt-3 pb-3 bg-greylight rounded-6"></a></div> 2103 <div class="col-md-7 col-xs-7 ps-0"> 2104 <span class="ms-auto text-grey-500 fw-500 lh-1 font-xsssss mt-0 w-100 mb-2">2Kg</span> 2105 <a href="single-product-1.html" class="text-grey-900 fw-600 font-xssss lh-22 d-block ls-0 mb-2">Blue Diamond Almonds Lightly Salted</a> 2106 <h6 class="font-xs ls-3 fw-700 text-current float-start mt-1"><span class="font-xsssss text-grey-500">$</span>39 </h6> 2107 <a href="#" class="text-uppercase font-xsssss text-grey-900 fw-700 ls-1 bg-greylight float-end w-125 lh-20 rounded-6 btn">Add to cart</a> 2108 </div> 2109 </div> 2110 </div> 2111 <div class="card w-100 p-4 pt-0 border-0 text-start mt-auto"> 2112 <a href="#" class="w-100 bg-current text-white rounded-6 text-center btn">Cart</a> 2113 </div> 2114 </div> 2115 </div> 2116 2117 </div> 2118 </div> 2119</div> 2120<!-- SAVED MODAL --> 2121 2122<!-- ABOUT MODAL --> 2123<div class="modal fade right modal-scrollable" id="aboutmodal" tabindex="-1" aria-hidden="true"> 2124 <div class="modal-dialog modal-dialog-large modal-dialog-centered"> 2125 <div class="modal-content theme-dark-bg p-0 border-0 rounded-0"> 2126 <button type="button" class="btn-close z-index-5 bg-grey font-xsssss w-26 h-26 text-center rounded-circle posa right-0 top-0 mt-3 me-3" data-bs-dismiss="modal" aria-label="Close"></button> 2127 <div class="about-box" style="height: 100%;"> 2128 <div class="modal-body p-0 h-100"> 2129 <div style="position: relative; height: 100%;"> 2130 <div class="w-100" id="about-box-content" style="position: absolute; overflow: hidden;"> 2131 <div class="card w-100 p-4 pb-0 border-0 text-start" id="about-box-content-inner"> 2132 <h5 class="fw-700 font-lg text-grey-900 text-start mb-3 mt-n2 d-block">About GOOD CHEN è°·ä¸é£å</h5> 2133 <div class="" id="shop-photo-carousel" data-image-count="0"> 2134 </div> 2135 <hr/> 2136 <div class="pt-2 pb-1 linkify"> 2137 æä»¬æ¯ä¸å®¶äº«èªé©¬æ¥è¥¿äºçå产é£åç产åï¼ä»¥å ¶ä¸°å¯å¤æ ·çä½³èç¾é£èé»åãæä»¬çææäº§åå æ¬ä¸ç§æé¥¼ãé ¥é¥¼ãæ²å¥ãå·å»éº»è¯çï¼æ·±å顾客åç±ã<br /> 2138<br /> 2139å¨ä¸ç§ä½³èæé´ï¼æ¯æä»¬æç¹å¿çæ¶å»ãæä»¬æ¨åºäºå¤ç§å¤æ ·çæé¥¼ç³»åï¼å ¶ä¸å æ¬èªæåçâè°·ä¸æé¥¼âåå¤å欢è¿çâSanrio, Hello Kitty & Melodyæé¥¼ç³»åâãæ ¹æ®æé¥¼çç±»åï¼æä»¬å¤§è´å为以ä¸ä¸ç±»ï¼<br /> 2140<br /> 2141å·å»å°ç®ç³»åï¼ä»¥ç«å±±ç榴è²ä¸ºä¸»æå£å³ï¼è¿å æ¬çæ²¹æã绿è¶çº¢è±ãå·§å åçå¤ç§éæ©ã<br /> 2142-ä¼ ç»ç»å ¸ç¤ç®æé¥¼ï¼æ¶µçç»å ¸çè²èåé»ã黿¾é²è²èãç¿¡ç¿ è²èã绿è¶è²èç夿¬¾ç»å ¸å£å³ã<br /> 2143-ççªä¸æµå¿æé¥¼ç³»åï¼è¿æ¯æä»¬æå ·åæçç°ä»£æé¥¼ç³»åï¼å°å·§ç²¾è´ï¼å£æä¸°å¯ï¼å¸¦æ¥å«æ ·ç奢åä½éªã<br /> 2144-å¨ä¸ç§èä¹å¤çæ¶é´ï¼æä»¬ä¸æ³¨äºçäº§å ·æç¾å¹´ä¼ æ¿çé ¥é¥¼ç±»äº§åï¼å¦é©¬è¹é ¥ãç«å±±ç榴è²é ¥ãè±æ²é¥¼ã淡汶饼ã夿¢¨é ¥ãè¾ä¸æ²å¥ãæ ¸æ¡é ¥çãè¿äºä¼ ç»ç¾é£ä½ç°äºé©¬æ¥è¥¿äºå¤å å¢ç»ãåè°å¹¸ç¦çæ°æç²¾ç¥ã<br /> 2145<br /> 2146æä»¬å§ç»åæä½¿ç¨ä¼è´¨åæï¼ç²¾å¿å¶ä½æ¯ä¸æ¬¾ç¾é£ï¼ä»¥ç¡®ä¿ä¸ºé¡¾å®¢å¸¦æ¥å¹¸ç¦åç¾å³ãæä»¬çå·¥åé å¤äºä¸ç级ç设å¤ï¼ä¸¥æ ¼éµå¾ªæ¸ çå«çæ åï¼è®©æ¯ä¸ä½é¡¾å®¢é½è½å®å¿äº«ååå享âè°·ä¸âçç²¾è´ç¾å³ã<br /> 2147<br /> 2148We are a renowned producer of local speciality foods in Malaysia, famous for our diverse range of festive delicacies. Our signature products, including mooncakes, pastries, cookies, and frozen mochi, are beloved by customers.<br /> 2149<br /> 2150The Mid-Autumn Festival is our busiest time of the year. We offer a wide variety of mooncake series, including our own brand "GOOD CHEN Mooncakes" and the popular "Sanrio, Hello Kitty & Melody Mooncake Series." Our mooncakes are generally categorized
2150into three types:<br /> 2151<br /> 2152Frozen Snow Skin Series: Featuring the signature Musang King durian flavour, as well as options like avocado, green tea with red bean, chocolate, and more.<br /> 2153Traditional Baked Skin Mooncakes: Offering classic flavours such as double yolk lotus paste, black truffle lotus paste, jade lotus paste, green tea lotus paste, and other timeless favourites.<br /> 2154Bird's Nest and Lava Mooncake Series: Our most innovative modern mooncakes, small in size yet rich in flavour, provide a unique and luxurious experience.<br /> 2155Outside of the Mid-Autumn Festival, we focus on producing our century-old traditional pastries, such as horse hoof biscuits, Musang King durian pastries, red bean cakes, Tambun biscuits, pineapple tarts, lace cookies, walnut pastries, and more. These traditional treats embody the spirit of Malaysia's diverse and harmonious cultural unity.<br /> 2156<br /> 2157We are committed to using high-quality ingredients and meticulously crafting each delicacy to ensure our customers experience happiness and flavour in every bite. Our factory is equipped with world-class facilities and adheres to strict halal and hygiene standards, allowing everyone to enjoy and share the exquisite taste of "GOOD CHEN" with peace of mind.<br /> 2158<br /> 2159ð¢ 订åå°å¨ 7 ä¸ªå·¥ä½æ¥å éè¾¾ãæè°¢æ¨çèå¿çå¾ ï¼<br /> 2160ð¢Your delivery will arrive within 7 working days. Thank you for your patience! 2161 </div> 2162 <hr/> 2163 <div class="section full"> 2164 <div class="content-header mt-3 mb-1">Opening Hours</div> 2165 <table border="0"> 2166 <tr> 2167 <td style="vertical-align: top;">Monday:</td> 2168 <td> 2169 10:00am - 1:00pm 2170 2171 <br />2:00pm - 5:00pm 2172 </td> 2173 </tr> 2174 2175 <tr> 2176 <td style="vertical-align: top;">Tuesday:</td> 2177 <td> 2178 10:00am - 1:00pm 2179 2180 <br />2:00pm - 5:00pm 2181 </td> 2182 </tr> 2183 2184 <tr> 2185 <td style="vertical-align: top;">Wednesday:</td> 2186 <td> 2187 10:00am - 1:00pm 2188 2189 <br />2:00pm - 5:00pm 2190 </td> 2191 </tr> 2192 2193 <tr> 2194 <td style="vertical-align: top;">Thursday:</td> 2195 <td> 2196 10:00am - 1:00pm 2197 2198 <br />2:00pm - 5:00pm 2199 </td> 2200 </tr> 2201 2202 <tr> 2203 <td style="vertical-align: top;">Friday:</td> 2204 <td> 2205 10:00am - 1:00pm 2206 2207 <br />2:00pm - 5:00pm 2208 </td> 2209 </tr> 2210 2211 <tr> 2212 <td style="vertical-align: top;">Saturday:</td> 2213 <td>Closed</td> 2214 </tr> 2215 2216 <tr> 2217 <td style="vertical-align: top;">Sunday:</td> 2218 <td>Closed</td> 2219 </tr> 2220 </table> 2221 2222 <div class="content-header mt-3 mb-1">Business Type</div> 2223 <div class="badge badge-primary">Food and Beverage</div> 2224 2225 <div class="content-header mt-3 mb-1">Contact (WhatsApp)</div> 2226 +60167447526 <br /> 2227 <a class="mx-1 contact-link" href="tel:60167447526" target="_blank" data-contact-type="telep
2227hone"> 2228 <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="red" class="bi bi-telephone" viewBox="0 0 16 16"> 2229 <path d="M3.654 1.328a.678.678 0 0 0-1.015-.063L1.605 2.3c-.483.484-.661 1.169-.45 1.77a17.568 17.568 0 0 0 4.168 6.608 17.569 17.569 0 0 0 6.608 4.168c.601.211 1.286.033 1.77-.45l1.034-1.034a.678.678 0 0 0-.063-1.015l-2.307-1.794a.678.678 0 0 0-.58-.122l-2.19.547a1.745 1.745 0 0 1-1.657-.459L5.482 8.062a1.745 1.745 0 0 1-.46-1.657l.548-2.19a.678.678 0 0 0-.122-.58L3.654 1.328zM1.884.511a1.745 1.745 0 0 1 2.612.163L6.29 2.98c.329.423.445.974.315 1.494l-.547 2.19a.678.678 0 0 0 .178.643l2.457 2.457a.678.678 0 0 0 .644.178l2.189-.547a1.745 1.745 0 0 1 1.494.315l2.306 1.794c.829.645.905 1.87.163 2.611l-1.034 1.034c-.74.74-1.846 1.065-2.877.702a18.634 18.634 0 0 1-7.01-4.42 18.634 18.634 0 0 1-4.42-7.009c-.362-1.03-.037-2.137.703-2.877L1.885.511z"/> 2230 </svg> 2231 </a> 2232 <a class="mx-1 contact-link" id="shop-whatsapp-link" href="" target="_blank" data-contact-type="whatsapp"> 2233 <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="red" class="bi bi-whatsapp" viewBox="0 0 16 16"> 2234 <path d="M13.601 2.326A7.854 7.854 0 0 0 7.994 0C3.627 0 .068 3.558.064 7.926c0 1.399.366 2.76 1.057 3.965L0 16l4.204-1.102a7.933 7.933 0 0 0 3.79.965h.004c4.368 0 7.926-3.558 7.93-7.93A7.898 7.898 0 0 0 13.6 2.326zM7.994 14.521a6.573 6.573 0 0 1-3.356-.92l-.24-.144-2.494.654.666-2.433-.156-.251a6.56 6.56 0 0 1-1.007-3.505c0-3.626 2.957-6.584 6.591-6.584a6.56 6.56 0 0 1 4.66 1.931 6.557 6.557 0 0 1 1.928 4.66c-.004 3.639-2.961 6.592-6.592 6.592zm3.615-4.934c-.197-.099-1.17-.578-1.353-.646-.182-.065-.315-.099-.445.099-.133.197-.513.646-.627.775-.114.133-.232.148-.43.05-.197-.1-.836-.308-1.592-.985-.59-.525-.985-1.175-1.103-1.372-.114-.198-.011-.304.088-.403.087-.088.197-.232.296-.346.1-.114.133-.198.198-.33.065-.134.034-.248-.015-.347-.05-.099-.445-1.076-.612-1.47-.16-.389-.323-.335-.445-.34-.114-.007-.247-.007-.38-.007a.729.729 0 0 0-.529.247c-.182.198-.691.677-.691 1.654 0 .977.71 1.916.81 2.049.098.133 1.394 2.132 3.383 2.992.47.205.84.326 1.129.418.475.152.904.129 1.246.08.38-.058 1.171-.48 1.338-.943.164-.464.164-.86.114-.943-.049-.084-.182-.133-.38-.232z"/> 2235 </svg> 2236 </a> 2237 2238 <div class="content-header mt-3 mb-1">Address</div> 2239 29&31, Jalan Jinjang Aman 16, Jinjang Utara, Jinjang, Federal Territory of Kuala Lumpur, Malaysia 2240 2241 <br /> 2242 <a class="d-none d-lg-block mx-1" href="http://maps.google.com/maps?q=loc:3.21661370,101.65883630&z=17" target="_blank"> 2243 <img style="max-width: 50px;" src="https://shop.goodchen.my/images/flaticons/location.png"> 2244 </a> 2245 <!-- <a class="d-lg-none mx-1" id="shop-google-map" href="comgooglemaps://?center=3.21661370,101.65883630&q=3.21661370,101.65883630&zoom=14&views=traffic" target="_blank"> 2246 <img style="max-width: 50px;" src="https://shop.goodchen.my/images/flaticons/google-maps.png"> 2247 </a> --> 2248 <a class="d-lg-none mx-1" href="https://maps.google.com/?q=3.21661370,101.65883630¢er=3.21661370,101.65883630" target="_blank"> 2249 <img style="max-width: 50px;" src="https://shop.goodchen.my/images/flaticons/google-maps.png"> 2250 </a> 2251 <a class="d-lg-none mx-1" href="waze://?ll=3.21661370,101.65883630&navigate=yes" target="_blank"> 2252 <img style="max-width: 50px;" src="https://shop.goodchen.my/images/flaticons/waze.png"> 2253 </a> 2254 2255 2256 <div style="width: 100%; height: 200px;"> 2257 2258 </div> 2259 </div> 2260 </div> 2261 </div> 2262 </div> 2263 </div> 2264 </div> 2265 2266 </div> 2267 </div> 2268</div> 2269 2270 <!-- LOGIN/SIGNUP MODAL --> 2271 <div class="modal fade modal-scrollable" id="loginmodal" tabindex="-1" aria-hidden="true">
2272 <div class="modal-dialog modal-dialog-centered modal-additional-bottom-spacing" id="modal-dialog-auth" style="max-width: 400px;"> 2273 <div class="modal-content theme-dark-bg p-0 border-0 rounded-0"> 2274 <button type="button" class="btn-close z-index-5 bg-grey font-xsssss w-26 h-26 rounded-circle posa right-0 top-0 mt-3 me-3" data-bs-dismiss="modal" aria-label="Close"></button> 2275 <div class="modal-body p-0"> 2276 <div class="card p-5 border-0" id="auth-tab"> 2277 <ul class="nav nav-tabs nav-fill" role="tablist"> 2278 <li class="nav-item" role="presentation"> 2279 <button class="nav-link active" data-bs-toggle="tab" data-bs-target="#logintab" type="button" role="tab" aria-controls="home" aria-selected="true" id="btnTabLogin">Login</button> 2280 </li> 2281 <li class="nav-item" role="presentation"> 2282 <button class="nav-link" data-bs-toggle="tab" data-bs-target="#signuptab" type="button" role="tab" aria-controls="profile" aria-selected="false" id="btnTabRegister">Register</button> 2283 </li> 2284 </ul> 2285 <div class="tab-content"> 2286 <div class="tab-pane fade show active" id="logintab" role="tabpanel" aria-labelledby="home-tab"> 2287 <form id="formLogin" action="https://shop.goodchen.my/v2/login?merchant_domain_name=goodchen" method="post" class="needs-validation"> 2288 <input type="hidden" name="_token" value="GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM"> 2289 2290 <div class="form-group"> 2291 <label for="whatsapp_phone_no_display">WhatsApp Phone Number</label> 2292 <input type="tel" class="form-control" id="whatsapp_phone_no_display" name="whatsapp_phone_no_display" required> 2293 <input type="hidden" id="whatsapp_phone_no" name="whatsapp_phone_no" value=""/> 2294 <div id="whatsappPhoneNoError" class="invalid-feedback mt-n2">WhatsApp Phone Number required.</div> 2295 </div> 2296 2297 <div class="form-group"> 2298 <label for="password">Password</label> 2299 <input type="password" class="form-control" id="password" name="password" required> 2300 <div id="passwordError" class="invalid-feedback mt-n2">Password required.</div> 2301 2302 2303 <p class="font-xssss">Forget Password? <a href="#" id="member-reset-password-link">Reset Now</a></p> 2304 </div> 2305 2306 <div class="mt-1"> 2307 <input type="submit" class="d-none btn-form-submit" value="Login"> 2308 <button type="button" class="btn btn-success btn-block w-100 text-white mb-1 btn-form-submit" onclick="login();"> 2309 <span class="is-loading visually-hidden spinner-border spinner-border-sm align-middle" role="status" aria-hidden="true"></span> 2310 <span class="not-loading">Login</span> 2311 </button> 2312 <button type="button" class="btn-guest-continue btn btn-warning btn-block w-100 text-white mb-2" onclick="checkoutAsGuest();">Continue as guest</button> 2313 <p class="text-center m-0"> 2314 Don't have an account?<br /> 2315 <a href="#" onclick="showRegisterTab(event);">Register now!</a> 2316 </p> 2317 </div> 2318 </form> 2319 </div> 2320 <div class="tab-pane fade" id="signuptab" role="tabpanel" aria-labelledby="profile-tab"> 2321 <form id="formRegister" method="post"> 2322 2323 2324 <div class="row"> 2325 <div class="col-lg-6 col-md-12"> 2326 <div class="form-group"> 2327 <div class="input-wrapper"> 2328 <label for="member_name">Name:</label> 2329 <input type="text" class="form-control" id="member_name" name="member_name" value="" required> 2330 <div id="memberNameError" class="invalid-feedback mt-n2">WhatsApp Phone Number required.</div> 2331 </div> 2332 </div> 2333 </div> 2334 2335 <div class="col-lg-6 col-md-12"> 2336 <div class="form-group"> 2337 <label for="register_whatsapp_phone_no">WhatsApp Phone Number</label> 2338 <input type="tel" class="form-control" id="register_whatsapp_phone_no_display" name="register_whatsapp_phone_no_display" required> 2339 <input type="hidden" id="register_whatsapp_phone_no" name="register_whatsapp_phone_no" value=""/> 2340 <div id="registerWhatsappPhoneNoError" class="invalid-feedback mt-n2">WhatsApp Phone Number required.</div> 2341 </div> 2342 </div> 2343 2344 <div class="col-lg-6 col-md-12"> 2345 <div class="form-group"> 2346 <div class="input-wrapper"> 2347 <label for="email">Email Address</label> 2348 <input type="email" class="form-control" id="email" name="email" value="" required> 2349 <div id="emailError" class="invalid-feedback mt-n2">Please enter a valid e-mail.</div> 2350 </div> 2351 </div> 2352 </div> 2353 2354 <div class="col-lg-6 col-md-12"> 2355 <div class="form-group"> 2356 <div class="input-wrapper"> 2357 <label for="date_of_birth">Date of Birth</label> 2358 <input type="date" class="form-control" id="date_of_birth" name="date_of_birth" value="2026-10-10" required> 2359 <div id="dateOfBirthError" class="invalid-feedback mt-n2">Date of Birth required.</div> 2360 </div> 2361 </div> 2362 </div> 2363 2364 <div class="col-lg-6 col-md-12"> 2365 <div class="form-group"> 2366 <div class="input-wrapper"> 2367 <label for="register_password">Password</label> 2368 <input type="password" class="form-control" id="register_password" name="register_password" required> 2369 <div id="registerPasswordError" class="invalid-feedback mt-n2">Password required.</div> 2370 </div> 2371 </div> 2372 </div> 2373 2374 <div class="col-lg-6 col-md-12"> 2375 <div class="form-group"> 2376 <div class="input-wrapper"> 2377 <label for="password-confirm">Password (Confirm)</label> 2378 <input type="password" class="form-control" id="password_confirm" name="password_confirm" required> 2379 <div id="passwordConfirmError" class="invalid-feedback mt-n2">Password required.</div> 2380 </div> 2381 </div> 2382 </div> 2383 </div> 2384 2385 <div class="mt-1 text-left"> 2386 <div class="form-check"> 2387 <input type="checkbox" class="form-check-input font-xs" id="registerAcceptConditions"> 2388 <label class="form-check-label text-muted" for="registerAcceptConditions" style="padding-left: 0px!important;">By registering, I agree with the 2389 <a href="https://shop.goodchen.my/JustOrder.Today - Terms & Conditions v2.pdf" target="_blank">Terms & Conditions</a> and 2390 <a href="https://shop.goodchen.my/JustOrder.Today - Privacy Policy.pdf" target="_blank">Privacy Policy</a>. 2391 </label> 2392 </div> 2393 </div> 2394 2395 <div class="mt-1"> 2396 <input type="submit" class="d-none btn-form-submit" value="Login"> 2397 <button type="button" class="btn btn-success btn-block w-100 text-white mb-1 btn-form-submit" onclick="register();">
2398 <span class="is-loading visually-hidden spinner-border spinner-border-sm align-middle" role="status" aria-hidden="true"></span> 2399 <span class="not-loading">Register</span> 2400 </button> 2401 <button type="button" class="btn-guest-continue btn btn-warning btn-block w-100 text-white mb-3" onclick="checkoutAsGuest();">Continue as guest</button> 2402 <p class="text-center m-0">Already have an account?<br /><a href="#" onclick="showLoginTab(event);">Login now!</a></p> 2403 </div> 2404 </form> 2405 </div> 2406 </div> 2407 </div> 2408 </div> 2409 </div> 2410 </div> 2411</div> 2412 2413 <div class="modal fade modal-scrollable" id="resetPasswordModal" tabindex="-1" aria-hidden="true"> 2414 <div class="modal-dialog modal-dialog-centered modal-additional-bottom-spacing" style="max-width: 475px;"> 2415 <div class="modal-content theme-dark-bg p-0 border-0 rounded-0"> 2416 <button type="button" class="btn-close z-index-5 bg-grey font-xsssss w-26 h-26 rounded-circle posa right-0 top-0 mt-3 me-3" data-bs-dismiss="modal" aria-label="Close"></button> 2417 <div class="modal-body p-0"> 2418 <div class="card p-5 border-0"> 2419 <form id="formResetPassword" class="needs-validation" novalidate onsubmit="event.preventDefault(); resetPassword(); return false;"> 2420 <input type="hidden" name="_token" value="GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM"> 2421 <div class="form-group"> 2422 <h1>Reset Password</h1> 2423 <h4>Enter your login phone number to reset your password</h4> 2424 <label for="resetPhoneNoDisplay">WhatsApp Phone Number</label> 2425 <style>#resetPasswordModal .iti { width: 100%; }</style> 2426 <input type="tel" class="form-control" id="resetPhoneNoDisplay" name="resetPhoneNoDisplay" required> 2427 <input type="hidden" id="resetPhoneNo" name="resetPhoneNo" /> 2428 <div id="resetPhoneNoError" class="invalid-feedback">Phone number required.</div> 2429 </div> 2430 2431 <div class="mt-1"> 2432 <input type="submit" class="d-none" value="Continue"> 2433 <button type="submit" class="btn btn-success btn-block w-100 text-white mb-1" id="btnResetPassword"> 2434 <span class="is-loading visually-hidden spinner-border spinner-border-sm align-middle" role="status" aria-hidden="true"></span> 2435 <span class="not-loading">Continue</span> 2436 </button> 2437 </div> 2438 </form> 2439 </div> 2440 </div> 2441 </div> 2442 </div> 2443</div> 2444 2445 2446<!-- Social Media Modal --> 2447<div class="modal fade" id="socialMediaModal" tabindex="-1" role="dialog" aria-labelledby="socialMediaModal" aria-hidden="true"> 2448 <div class="modal-dialog modal-dialog-centered" role="document"> 2449 <div class="modal-content"> 2450 <div class="modal-header"> 2451 <h5 class="modal-title" id="exampleModalLabel">Social Media Links</h5> 2452 <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close"> 2453 <span aria-hidden="true">×</span> 2454 </button> 2455 </div> 2456 <div class="modal-body"> 2457 <div class="row row-cols-3 row-cols-lg-4 gx-0 gy-5 gy-lg-4"> 2458 </div> 2459 </div> 2460 <div class="modal-footer"> 2461 <button type="button" class="btn btn-success" data-bs-dismiss="modal">Close</button> 2462 </div> 2463 </div> 2464 </div> 2465</div> 2466 2467
2468<script src="https://shop.goodchen.my/customer-v2/js/plugin.js"></script>
vendor: 1 bytes, line 2468
2468
2469<script src="https://shop.goodchen.my/customer-v2/js/scripts.js"></script>
2469 2470 2471
2472<script src="https://shop.goodchen.my/customer-v2/js/lightbox.js"></script>
vendor: 1 bytes, line 2472
2472
2473<script src='https://shop.goodchen.my/customer-v2/js/panzoom.js'></script>
vendor: 1 bytes, line 2473
2473
2474<script src="https://shop.goodchen.my/plugins/bootbox-6.0.0-wip/dist/bootbox.min.js"></script>
vendor: 1 bytes, line 2474
2474
2475<script src="https://shop.goodchen.my/js/blockUI.js"></script>
vendor: 1 bytes, line 2475
2475
2476<script src="https://shop.goodchen.my/mobilekit/mobilekit.bragherstudio.com/view2/assets/js/plugins/owl-carousel/owl.carousel.min.js"></script>
vendor: 1 bytes, line 2476
2476
2477<script src="https://shop.goodchen.my/plugins/linkifyjs/linkify.min.js"></script>
vendor: 1 bytes, line 2477
2477
2478<script src="https://shop.goodchen.my/plugins/linkifyjs/linkify-jquery.min.js"></script>
vendor: 1 bytes, line 2478
2478
2479<script src="https://shop.goodchen.my/js/detect-mobile-browser.js"></script>
vendor: 1 bytes, line 2479
2479
2480<script src="https://shop.goodchen.my/plugins/intl-tel-input-master/build/js/intlTelInput.js"></script>
2480 2481
2482<script> 2483 let previousScrollY = 0; 2484 2485 // fix iOS page scroll issue when modal is opened 2486 if ($(window).width() < 960) { 2487 $(document).on('show.bs.modal', () => { 2488 lockIOSPageScrollOnModalOpened(); 2489 }).on('hidden.bs.modal', () => { 2490 releaseIOSPageScrollOnModalClosed(); 2491 }); 2492 } 2493 2494 function isABootstrapModalOpen() { 2495 return $('.modal.in').length > 0; 2496 } 2497 2498 function lockIOSPageScrollOnModalOpened() { 2499 console.log('Locking iOS page scroll'); 2500 if ($('html').hasClass('modal-open') == false) { 2501 previousScrollY = window.scrollY; 2502 } 2503 2504 $('html').addClass('modal-open').css({ 2505 marginTop: -previousScrollY, 2506 overflow: 'hidden', 2507 left: 0, 2508 right: 0, 2509 top: 0, 2510 bottom: 0, 2511 position: 'fixed', 2512 }); 2513 2514 $('#lightbox').css({ 2515 marginTop: previousScrollY 2516 }); 2517 } 2518 2519 function releaseIOSPageScrollOnModalClosed() { 2520 if (isABootstrapModalOpen() == true) { 2521 return; 2522 } 2523 2524 console.log('Releasing iOS page scroll'); 2525 $('html').removeClass('modal-open').css({ 2526 marginTop: 0, 2527 overflow: 'visible', 2528 left: 'auto', 2529 right: 'auto', 2530 top: 'auto', 2531 bottom: 'auto', 2532 position: 'static', 2533 }); 2534 window.scrollTo({ top:previousScrollY, left:0, behavior: "instant"}); 2535 $('#lightbox').css({ 2536 marginTop: 0 2537 }); 2538 } 2539</script>
2539 2540
2541<script> 2542 (function () { 2543 $(document).ready(function() { 2544 lightbox.option({ 2545 'alwaysShowNavOnTouchDevices': true, 2546 'resizeDuration': 200, 2547 'wrapAround': true, 2548 'showImageNumberLabel': false, 2549 // Custom added function 2550 resetPanzoom: function(e) { 2551 panzoomEl.zoomTo(0.5, 0.5, 1/panzoomEl.getTransform().scale); 2552 panzoomEl.moveTo(0, 0); 2553 } 2554 }); 2555 2556 // fix for Bootbox.js in Bootstrap 5 (https://github.com/makeusabrew/bootbox/issues/777) 2557 $.fn.modal = bootstrap.Modal.jQueryInterface 2558 $.fn.modal.Constructor = bootstrap.Modal 2559 2560 $('#shop-photo-carousel').addClass('carousel-single'); 2561 $('#shop-photo-carousel').addClass('owl-carousel'); 2562 $('#shop-photo-carousel').addClass('owl-theme'); 2563 $('#shop-photo-carousel').addClass('owl-loaded'); 2564 $('#shop-photo-carousel').addClass('owl-drag'); 2565 $('#shop-photo-carousel').owlCarousel({ 2566 'stagePadding': 10, 2567 'loop': false, 2568 'margin': 10, 2569 'dots': true, 2570 'responsiveClass': true, 2571 'responsive': { 2572 0: { 2573 'items': 1 2574 }, 2575 500: { 2576 'items': 2 2577 }, 2578 768: { 2579 'items': 3 2580 }, 2581 1024: { 2582 'items': 4 2583 }, 2584 1366: { 2585 'items': 5 2586 }, 2587 1920: { 2588 'items': 6 2589 } 2590 } 2591 }); 2592 2593 $('.linkify').linkify({ 2594 target: "_blank" 2595 }); 2596 2597 if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) == true) { 2598 $('#shop-whatsapp-link').attr('href', 'https://wa.me/60167447526'); 2599 } else { 2600 $('#shop-whatsapp-link').attr('href', 'https://web.whatsapp.com/send?phone=60167447526'); 2601 } 2602 2603 if (jQuery.browser.mobile == true) { 2604 $('.whatsapp-link').each(function(i, obj) { 2605 $(this).attr('href', 'https://wa.me/' + $(this).attr('data-whatsapp-phone-no') + '?text='); 2606 }); 2607 } else { 2608 $('.whatsapp-link').each(function(i, obj) { 2609 $(this).attr('href', 'https://web.whatsapp.com/send?phone=' + $(this).attr('data-whatsapp-phone-no') + '&text='); 2610 }); 2611 } 2612 2613 $('.btnShowPickupDeliveryInfo').click(function() { 2614 showDialog( 2615 null, 2616 `<div class="card border-0"> 2617 <div class="card-body mb-3 bg-lightgreen p-4 rounded-10"> 2618 <h4 class="fw-700 mt-2 font-xss text-grey-900 d-flex mb-0">Delivery</h4> 2619 <h6 class="fw-500 font-xssss text-grey-600 lh-22 mb-0 table-responsive"> 2620 <table class="table table-bordered"> 2621 <thead> 2622 <tr style="background-color: #d7d7d7;"> 2623 <th></th> 2624 <th class="text-center">0.00 to 3.00 KG</th> 2625 <th class="text-center">3.01 to 4.00 KG</th> 2626 <th class="text-center">4.01 to 5.00 KG</th> 2627 <th class="text-center">5.01 to 6.00 KG</th> 2628 <th class="text-center">6.01 to 7.00 KG</th> 2629 <th class="text-center">7.01 to 8.00 KG</th> 2630 <th class="text-center">8.01 to 9.00 KG</th> 2631 <th class="text-center">9.01 to 10.00 KG</th> 2632 <th class="text-center">10.01 to 11.00 KG</th> 2633 </tr> 2634 </thead> 2635 <tbody> 2636 <tr> 2637 <td class="text-center" style="font-weight: bold; background-color: #d7d7d7;"> 2638 Postcode from 01000 to 86999 2639 </td> 2640 <td class="text-center">RM 10.00</td> 2641 <td class="text-center">RM 12.00</td> 2642 <td class="text-center">RM 14.00</td> 2643 <td class="text-center">RM 16.00</td> 2644 <td class="text-center">RM 18.00</td> 2645 <td class="text-center">RM 20.00</td> 2646 <td class="text-center">RM 22.00</td> 2647 <td class="text-center">RM 24.00</td> 2648 <td class="text-center">RM 26.00</td> 2649 </tr> 2650 </tbody> 2651 </table> 2652 </h6> 2653 </div> 2654 </div> 2655`, 2656 'OK' 2657 ); 2658 }); 2659 2660 $('.btnShowDiscountRules').click(function() { 2661 $('#promotionmodal').modal('show'); 2662 }); 2663 2664 $('.login-as-member-buttons').click(function() { 2665 showLoginModal(); 2666 }); 2667 2668 $('#signupBonusBannerModal').on('hidden.bs.modal', function() { 2669 $('#loginmodal').modal('show'); 2670 }); 2671 2672 var el = document.querySelector('#lightbox .lb-container'); 2673 var panzoomEl = panzoom(el, { 2674 // beforeMouseDown: function(e) { 2675 // // allow mouse-down panning only if altKey is down. Otherwise - ignore 2676 // // var shouldIgnore = !e.altKey; 2677 // return true; 2678 // }, 2679 onTouch: function(e) { 2680 return false; // tells the library to not preventDefault. 2681 }, 2682 maxZoom: 2.5, 2683 minZoom: 0.5, 2684 pinchSpeed: 0.5, 2685 bounds: true, 2686 boundsPadding: 0.25, 2687 smoothScroll: false 2688 }); 2689 2690 $('#formLogin').on('submit', function(event) { 2691 event.preventDefault(); 2692 login(); 2693 }); 2694 2695 $('#formRegister').on('submit', function(event) { 2696 event.preventDefault(); 2697 register(); 2698 }); 2699 }); 2700 } ()); 2701</script>
2701 2702
2703<script> 2704 function showBasicAlert(title = null, message = '', size = 'small') { 2705 moveBackwardModal(); 2706 2707 bootbox.dialog({ 2708 message: `<p class="text-center mb-0">${message}</p>`, 2709 title: title, // leave null to hide header 2710 size: size, // small, medium, large 2711 centerVertical: true, 2712 closeButton: false, 2713 onShown: function(e) { 2714 lockIOSPageScrollOnModalOpened(); 2715 $('.bootbox.modal').scrollTop(0); 2716 }, 2717 onHidden: function(e) { 2718 releaseIOSPageScrollOnModalClosed(); 2719 }, 2720 buttons: { 2721 fee: { 2722 label: 'Close', 2723 className: 'btn-primary btn-primary-bootbox', 2724 callback: function () { 2725 bringForwardModal(); 2726 } 2727 }, 2728 }, 2729 }); 2730 } 2731 2732 function showSuccessAlert(title = null, message = '', size = 'small') { 2733 moveBackwardModal(); 2734 bootbox.dialog({ 2735 message: `<p class="text-center mb-0"><img src="https://shop.goodchen.my/images/flaticons/tick.png" alt="Success" class="imaged square mb-2" style="width: 20%;"></p>` + 2736 `<p class="text-center mb-0">${message}</p>`, 2737 title: title, // leave null to hide header 2738 size: size, // small, medium, large 2739 centerVertical: true, 2740 closeButton: false, 2741 onShown: function(e) { 2742 lockIOSPageScrollOnModalOpened(); 2743 $('.bootbox.modal').scrollTop(0); 2744 }, 2745 onHidden: function(e) { 2746 releaseIOSPageScrollOnModalClosed(); 2747 }, 2748 buttons: { 2749 fee: { 2750 label: 'Close', 2751 className: 'btn-primary btn-primary-bootbox', 2752 callback: function () { 2753 bringForwardModal(); 2754 } 2755 }, 2756 }, 2757 }); 2758 } 2759 2760 function showDangerAlert(title = null, message = '', size = 'small', callFunction = function() {}) { 2761 moveBackwardModal(); 2762 bootbox.dialog({ 2763 message: `<p class="text-center mb-0"><img src="https://shop.goodchen.my/images/flaticons/close.png" alt="Success" class="imaged square mb-2" style="width: 20%;"></p>` + 2764 `<p class="text-center mb-0">${message}</p>`, 2765 title: title, // leave null to hide header 2766 size: size, // small, medium, large 2767 centerVertical: true, 2768 closeButton: false, 2769 onShown: function(e) { 2770 lockIOSPageScrollOnModalOpened(); 2771 $('.bootbox.modal').scrollTop(0); 2772 }, 2773 onHidden: function(e) { 2774 releaseIOSPageScrollOnModalClosed(); 2775 }, 2776 buttons: { 2777 fee: { 2778 label: 'Close', 2779 className: 'btn-primary btn-primary-bootbox', 2780 callback: function () { 2781 console.log('closed danger dialog'); 2782 bringForwardModal(); 2783 callFunction(); 2784 } 2785 }, 2786 }, 2787 }); 2788 } 2789 2790 function showDialog(title = null, message = '', buttonText = '', buttonAction = function() {}) { 2791 moveBackwardModal(); 2792 bootbox.dialog({ 2793 title: title, 2794 message: message, 2795 centerVertical: true, 2796 closeButton: false, 2797 onShown: function(e) { 2798 lockIOSPageScrollOnModalOpened(); 2799 $('.bootbox.modal').scrollTop(0); 2800 }, 2801 onHidden: function(e) { 2802 releaseIOSPageScrollOnModalClosed(); 2803 }, 2804 buttons: { 2805 ok: { 2806 label: buttonText, 2807 className: 'btn-info', 2808 callback: function(){ 2809 bringForwardModal(); 2810 buttonAction(); 2811 } 2812 } 2813 } 2814 }); 2815 } 2816 2817 function showConfirmation(title = null, message = '', okButtonText = '', okButtonAction = function() {}, 2818 cancelButtonText = '', cancelButtonAction = function() {}) { 2819 moveBackwardModal(); 2820 bootbox.dialog({ 2821 title: title, 2822 message: message, 2823 centerVertical: true,
2824 closeButton: false, 2825 onShown: function(e) { 2826 lockIOSPageScrollOnModalOpened(); 2827 $('.bootbox.modal').scrollTop(0); 2828 }, 2829 onHidden: function(e) { 2830 releaseIOSPageScrollOnModalClosed(); 2831 }, 2832 buttons: { 2833 cancel: { 2834 label: cancelButtonText, 2835 className: 'btn-danger', 2836 callback: function(){ 2837 bringForwardModal(); 2838 cancelButtonAction(); 2839 } 2840 }, 2841 ok: { 2842 label: okButtonText, 2843 className: 'btn-success', 2844 callback: function(){ 2845 bringForwardModal(); 2846 okButtonAction(); 2847 } 2848 } 2849 } 2850 }); 2851 } 2852 2853 function blockUI(message = '', element = null, isPositionFixed = false) { 2854 var options = { 2855 message: `<div style="display: flex; align-items: center; justify-content: center;"><div class="lds-ellipsis lds-ellipsis-blockui"><div></div><div></div><div></div><div></div></div> ${message}</div>`, 2856 overlayCSS: { 2857 backgroundColor: '#FFF', 2858 opacity: 0.8, 2859 cursor: 'wait' 2860 }, 2861 css: { 2862 border: 0, 2863 padding: 0, 2864 backgroundColor: 'transparent' 2865 } 2866 }; 2867 2868 if (element == null) { 2869 $.blockUI(options); 2870 } else { 2871 $(element).block(options); 2872 } 2873 2874 if (isPositionFixed) { 2875 $('.blockUI.blockOverlay').css('position', 'fixed'); 2876 $('.blockUI.blockMsg.blockElement').css('position', 'fixed'); 2877 } 2878 } 2879 2880 function unblockUI(element = null) { 2881 if (element == null) { 2882 $.unblockUI(); 2883 } else { 2884 $(element).unblock(); 2885 } 2886 } 2887 2888 function moveBackwardModal() { 2889 $('.modal').css('z-index', 1030); 2890 } 2891 2892 function bringForwardModal() { 2893 $('.modal').css('z-index', 1060); 2894 } 2895</script>
2895 2896
2897<script> 2898 // Rating Stars 2899 $(function() { 2900 function addScore(score, $domElement, $containerClass) { 2901 var starWidth = "<style>."+$containerClass+":after { width: " + score + "%} </style>"; 2902 $("<span class='"+$containerClass+"'>") 2903 .text("â â â â â ") 2904 .append($(starWidth)) 2905 .appendTo($domElement); 2906 // $('.stars-container-header:after').css('width', score+'%'); 2907 } 2908 addScore(0, $(".rating-star-fixture-header"), 'stars-container-header'); 2909 addScore(0, $(".rating-star-fixture-side-menu"), 'stars-container-side-menu'); 2910 }); 2911</script>
2911 2912
2913<script> 2914 $(document).ready(function() { 2915 2916 2917 }); 2918</script>
2918 2919
2920<script> 2921 $(document).ready(function() { 2922 }); 2923</script>
2923 2924 2925
2925<script src="https://shop.goodchen.my/plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js"></script>
2925 2926
2926<script src="https://shop.goodchen.my/plugins/intl-tel-input-master/build/js/intlTelInput.js"></script>
2926 2927 2928
2928<script src="https://shop.goodchen.my/js/infinite-ajax-scroll.min.js"></script>
2928 2929 2930
2930<script src="https://shop.goodchen.my/plugins/jQuery-Plugin-Drag-To-Scroll-dragScroll/dragScroll.js"></script>
2930 2931
2931<script src="https://shop.goodchen.my/js/detect-mobile-os.js"></script>
2931 2932
2932<script src='https://shop.goodchen.my/plugins/mapbox-2.6.1/mapbox-gl.js'></script>
2932 2933
2933<script src="https://shop.goodchen.my/js/moment.js" type="text/javascript"></script>
2933 2934
2934<script src="https://shop.goodchen.my/js/jquery.numeric.js"></script>
2934 2935 2936
2936<script> 2937 // Modal in Mobile 2938 $(function() { 2939 $(document).ready(function() { 2940 // $( window ).on( "orientationchange", function( event ) { 2941 // console.log('Orientation changed to ' + event.orientation); 2942 // readjustModals(); 2943 // }); 2944 2945 $( window ).resize(function() { 2946 readjustModals(); 2947 }); 2948 2949 readjustModals(); 2950 }); 2951 2952 function readjustModals() { 2953 // if (getMobileOperatingSystem() == 'Android' || getMobileOperatingSystem() == 'iOS') { 2954 const vw = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0); 2955 2956 if (vw < 576) { 2957 $('.modal-dialog').addClass('modal-dialog-mobile'); 2958 } else { 2959 $('.modal-dialog').removeClass('modal-dialog-mobile'); 2960 } 2961 // } 2962 } 2963 }); 2964 </script>
2964 2965 2966
2966<script> 2967 // Sticky header 2968 $(function() { 2969 $(document).ready(function() { 2970 var stickyHeader = document.getElementById("product-category-and-search-wrapper"); 2971 var stickyOffsetTop = stickyHeader.offsetTop; 2972 2973 window.onscroll = function() { 2974 var finalStickyOffsetTop = stickyOffsetTop; 2975 if (window.innerWidth <= 991) { 2976 finalStickyOffsetTop -= 56; 2977 } 2978 2979 if (window.pageYOffset > finalStickyOffsetTop) { 2980 stickyHeader.classList.add("sticky"); 2981 $('#content-top-spacing').addClass('sticky-add-top-margin'); 2982 } else { 2983 stickyHeader.classList.remove("sticky"); 2984 $('#content-top-spacing').removeClass('sticky-add-top-margin'); 2985 } 2986 }; 2987 }); 2988 }); 2989 </script>
2989 2990 2991
2991<script> 2992 // Maps 2993 (function() { 2994 var deliveryDestinationMap = null; 2995 2996 $(document).ready(function() { 2997 window.onmessage = function(e) { 2998 console.log(e); 2999 if (e.data.action == 'MapboxPageReady') { 3000 var mapboxIframe = document.getElementById("mapbox-iframe"); 3001 mapboxIframe.contentWindow.postMessage({ 3002 action: 'SetCoordinates', 3003 latitude: $('#customer_address_latitude').val(), 3004 longitude: $('#customer_address_longitude').val() 3005 }, '*'); 3006 $('#set-delivery-destination-address-spinner').hide(); 3007 } else if (e.data.action == 'MapboxMarkerDragend') { 3008 $('#customer_address_latitude').val(e.data.latitude); 3009 $('#customer_address_longitude').val(e.data.longitude); 3010 } 3011 }; 3012 }); 3013 } ()); 3014 </script>
3014 3015 3016
3016<script> 3017 var productId = 568924; 3018 var landingPageUrl = 'https://shop.goodchen.my/v2?merchant_domain_name=goodchen'; 3019 3020 $(document).ready(function() { 3021 // $('.category-slider').owlCarousel({ 3022 // loop:false, 3023 // margin:4, 3024 // nav:false, 3025 // autoplay:false, 3026 // autoplayTimeout: 1500, 3027 // autoplayHoverPause:true, 3028 // dots:false, 3029 // navText:['<i class="feather-arrow-left-circle"></i>','<i class="feather-arrow-right-circle"></i>'], 3030 // autoWidth:true 3031 // }); 3032 3033 $('body').on('click', '.btnViewProductDetail', function(event) { 3034 var productId = $(this).attr('data-product-id'); 3035 var productSeoUrl = $(this).attr('data-product-seo-url'); 3036 3037 if (productSeoUrl != '') { 3038 loadProduct(productSeoUrl); 3039 } else { 3040 loadProduct(productId); 3041 } 3042 3043 event.preventDefault(); 3044 }); 3045 3046 // $('.product-category-items').dragScroll({ 3047 // direction:'scrollLeft' 3048 // }); 3049 3050 var $container = $(".product-category-wrapper"); 3051 var $scroller = $("#product-category-scroll"); 3052 bindDragScroll($container, $scroller); 3053 3054 $('#product-category-scroll').on('mousewheel DOMMouseScroll', function(event){ 3055 var delta = Math.max(-1, Math.min(1, (event.originalEvent.wheelDelta || -event.originalEvent.detail))); 3056 $(this).scrollLeft( $(this).scrollLeft() - ( delta * 80 ) ); 3057 // $(this).animate({scrollLeft: $(this).scrollLeft() - ( delta * 40 )}, 100) 3058 event.preventDefault(); 3059 }); 3060 3061 $('#featured-items-carousel').owlCarousel({ 3062 loop:true, 3063 margin:0, 3064 nav:true, 3065 autoplay:true, 3066 autoplayTimeout: 5000, 3067 dots:true, 3068 navText:['<i class="feather-arrow-left-circle"></i>','<i class="feather-arrow-right-circle"></i>'], 3069 items:4, 3070 responsive:{ 3071 0:{ 3072 items:2, 3073 nav:true 3074 }, 3075 749:{ 3076 items:4, 3077 nav:true 3078 } 3079 } 3080 }); 3081 3082 $('#main-banner-slider').owlCarousel({ 3083 loop:true, 3084 margin:10, 3085 nav:true, 3086 autoplay:true, 3087 autoplayTimeout: 7000, 3088 dots:true, 3089 navText:['<i class="feather-chevron-left"></i>','<i class="feather-chevron-right"></i>'], 3090 items:1, 3091 }) 3092 3093 $('#btnClearSearch').click(function() { 3094 $('#search-product').val('').trigger("change"); 3095 $('#btnClearSearch').hide(); 3096 var value = $('#search-product').val().toLowerCase(); 3097 searchFilterProduct(value); 3098 }); 3099 3100 $('.btnProductCategory').click(function() { 3101 var productCategoryId = $(this).attr('data-product-category-id'); 3102 var url = 'https://shop.goodchen.my/v2/menu/by-category/paginate?merchant_domain_name=goodchen&product_category_id=productCategoryId'; 3103 url = url.replace('productCategoryId', productCategoryId); 3104 window.location.href = url; 3105 }); 3106 3107 $('#product-detail-modal').on('hidden.bs.modal', function () { 3108 window.history.replaceState({}, '', landingPageUrl); 3109 }); 3110 3111 $('.modal').on('shown.bs.modal', function () { 3112 $('html').css({"overflow-y": "hidden"}); 3113 }); 3114 3115 $('.modal').on('hidden.bs.modal', function () { 3116 $('html').css({"overflow-y": "scroll"}); 3117 }); 3118 3119 $('#cartmodal').on('shown.bs.modal', function () { 3120 $('.cart-box').show();
3121 $('#cart-box-content').scrollTop($('#cart-box-content').height()); 3122 $('#cart-box-content').animate({scrollTop: 0}, 500); 3123 }); 3124 3125 $('#cartmodal').on('hidden.bs.modal', function () { 3126 $('.cart-box').hide(); 3127 }); 3128 3129 $('#ModalBasicAnnouncement').on('hidden.bs.modal', function () { 3130 loadDiscountPromotions(); 3131 }); 3132 3133 // $('#checkoutmodal').on('shown.bs.modal', function () { 3134 // console.log('checkout modal shown'); 3135 // $('.checkout-box').show(); 3136 // // $('#checkout-wrapper-inner').scrollTop($('#checkout-wrapper-inner').height()); 3137 // setTimeout(function() { 3138 // $('#checkout-wrapper').animate({scrollTop: 1000}, 500); 3139 // }, 1000); 3140 // 3141 // }); 3142 // 3143 // $('#checkoutmodal').on('hidden.bs.modal', function () { 3144 // $('.checkout-box').hide(); 3145 // }); 3146 3147 $(window).on("popstate", function(e) { 3148 $('.modal').modal('hide'); 3149 }); 3150 3151 $('.btnCart').on('click', function () { 3152 showCart(); 3153 }); 3154 3155 // $('#checkout').on('click', function () { 3156 // $('#cartmodal .cart-box').fadeOut(0); 3157 // $('.checkout-box').fadeIn(); 3158 // }); 3159 3160 // $('#payment').on('click', function () { 3161 // $('.checkout-box').fadeOut(0); 3162 // $('.payment-box').fadeIn(); 3163 // }); 3164 3165 $('body').on('click', '#btnBackToCart, #btnCloseCheckoutModal', function(event) { 3166 $('#checkoutmodal').modal('hide'); 3167 showCart(); 3168 isRetainCheckoutState = true; 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 }); 3179 3180 $('#search-product').keyup(delay(function (e) { 3181 var value = $('#search-product').val().toLowerCase(); 3182 if (value == '') { 3183 $('#btnClearSearch').hide(); 3184 } else { 3185 $('#btnClearSearch').show(); 3186 } 3187 searchFilterProduct(value); 3188 }, 500)); 3189 3190 initiateInfiniteAjaxScroll(); 3191 3192 if (productId != 0) { 3193 loadProduct(productId); 3194 } else { 3195 loadAnnouncement(); 3196 } 3197 3198 $('#product-category-scroll').scrollLeft(500); 3199 $('#product-category-scroll').animate({scrollLeft: 0}, 1500); 3200 }); 3201 3202 function initiateInfiniteAjaxScroll() { 3203 if ($('.products-wrapper').length == 0) return; 3204 3205 let ias = new InfiniteAjaxScroll('.products-wrapper', { 3206 item: '.product-items', 3207 next: '.page-link[rel="next"]', 3208 pagination: '.pagination', 3209 prefill: true, 3210 logger: false 3211 }); 3212 3213 function iasAppendedHandler(event) { 3214 // cartInstance.refreshMenuUI(); 3215 refreshCartDetail(); 3216 animateLeftRightMovementForProductTags(); 3217 } 3218 3219 function iasLastHandler(event) { 3220 $('#infinite-scroll-menu-spinner').hide(); 3221 } 3222 3223 function iasHitHandler(event) { 3224 $('#infinite-scroll-menu-spinner').show(); 3225 } 3226 3227 ias.on('appended', iasAppendedHandler); 3228 ias.on('last', iasLastHandler); 3229 ias.on('hit', iasHitHandler); 3230 } 3231 3232 function showCart() { 3233 $('.payment-box').hide(); 3234 $('#cartmodal').modal('show'); 3235 } 3236 3237 function loadProduct(productId) { 3238 var productUrl = 'https://shop.goodchen.my/v2/product/:productId?merchant_domain_name=goodchen'; 3239 productUrl = productUrl.replace(':productId', productId); 3240 window.history.pushState({}, '', productUrl); 3241 showProductDetailModal(productId); 3242 } 3243 3244 function loadAnnouncement() { 3245 $('#ModalBasicAnnouncement').modal('show'); 3246 } 3247 3248 function loadDiscountPromotions() { 3249 } 3250 3251 function showProductDetailModal(productId) { 3252 3253 3254 $.ajax({ 3255 url : 'https://shop.goodchen.my/v2/menu/ajax/product-detail?merchant_domain_name=goodchen', 3256 dataType: 'json', 3257 data : { 3258 product_id: productId 3259 } 3260 }).done(function (data) {
3261 $('#modal-body-product').html(data.html); 3262 // unblockUI(); 3263 $('#product-detail-modal').modal('show'); 3264 // cartInstance.refreshMenuUI(); 3265 }).fail(function (err) { 3266 // unblockUI(); 3267 alert(err.responseJSON.message); 3268 }); 3269 } 3270 3271 function delay(callback, ms) { 3272 var timer = 0; 3273 return function() { 3274 var context = this, args = arguments; 3275 clearTimeout(timer); 3276 timer = setTimeout(function () { 3277 callback.apply(context, args); 3278 }, ms || 0); 3279 }; 3280 } 3281 3282 function searchFilterProduct(keyword) { 3283 $.ajax({ 3284 url : 'https://shop.goodchen.my/v2/menu/by-category/paginate?merchant_domain_name=goodchen', 3285 dataType: 'json', 3286 data : { 3287 search_keyword: keyword, 3288 product_category_id: 0, 3289 is_searching: 'true' 3290 } 3291 }).done(function (data) { 3292 $('#product-list').html(data); 3293 initiateInfiniteAjaxScroll(); 3294 // cartInstance.refreshMenuUI(); 3295 refreshCartDetail(); 3296 }).fail(function (err) { 3297 alert(err.responseJSON.message); 3298 }); 3299 } 3300 3301 var oldWidth = 0; 3302 3303 $(document).ready(function() { 3304 $(window).on('resize', function() { 3305 animateLeftRightMovementForProductTags(true); 3306 }).trigger('resize'); 3307 }); 3308 3309 function animateLeftRightMovementForProductTags(checkWidth = false) { 3310 if (checkWidth == false) { 3311 // Do nothing 3312 } else if ($(window).width() == oldWidth) { 3313 return; 3314 } else { 3315 oldWidth = $(window).width(); 3316 } 3317 3318 $('.scrolling-text').each(function(i, obj) { 3319 if (obj.parentNode.clientWidth < obj.clientWidth) 3320 $(this).addClass('anim-leftright'); 3321 else 3322 $(this).removeClass('anim-leftright'); 3323 }); 3324 } 3325 </script>
3325 3326 3327
3327<script> 3328 // Cart 3329 3330 const bundleProductIds = [755655,755656,756032,756043,756894,757187,757188,757194,757308,757190,758950,757313,757724,757736,757767,758037,759309,764945,757182,756904,757186,757181,757185,757184,757192,757425,757193,766806,766807,766809,766805,767362,767285,766822,767299,767224,767390,767181,767250,767400,767247,767186,767373,767371,767365,767294,767214,767200,767231,766816,767343,767315,767251,766819,767292,767222,767206,767184,767275,767361,766837,767339,767239,767313,767330,767393,767259,766838,767233,767301,766832,767242,767389,767322,767336,767355,767256,766835,767397,767391,767327,767229,767351,766815,767318,767175,767182,767353,767284,767253,766833,767173,767204,767369,767309,766813,767270,766826,767211,767375,767178,767347,767215,767350,766814,767380,767317,767282,767218,767303,767352,767320,767180,767273,766829,767342,767268,766823,767370,767210,767312,767240,767345,767271,767376,767245,766812,767280,766831,767216,767212,767265,766811,766828,767201,766830,767383,767177,767385,767237,767307,767296,767332,767179,767367,767234,767305,767208,767263,767368,767392,767257,767221,767388,767252,767357,767329,767398,767290,767341,767325,767205,766834,767255,767197,767364,767401,767395,767544,767529,767504,767581,767557,767606,767575,767599,767616,767582,767592,767540,767597,767562,767486,767509,767899,767551,767861,767838,767835,767901,767826,767848,767774,767893,767878,767843,767827,767846,767884,767870,767924,767897,767887,767908,767860,767821,767522,767815,767598,767889,767852,767503,767822,767561,767496,767487,767834,767905,767868,767541,767832,767515,767596,767568,767859,767820,767922,767602,767588,767876,767910,767584,767872,767615,767777,767837,767907,767600,767891,767565,767854,767526,767916,767478,767613,767902,767909,767569,767894,767532,767589,767914,767877,767880,767591,767556,767844,767875,767607,767611,767900,767513,767811,767867,767542,767514,767812,767913,767560,767850,767586,767917,767578,767866,767539,767538,767929,767566,767892,767855,767547,767500,767785,767915,767890,767564,767550,767497,767927,767817,767260,767585,767853,767873,767819,767528,767587,767874,767552,767840,767603,767590,767555,767505,767802,767864,767534,767881,767845,767508,767804,767787,767926,767805,767501,767517,767548,767567,767601,767563,767595,767577,767863,767828,767536,767608,767498,767580,767553,767533,767923,767605,767896,767491,767862,767559,767579,767833,767803,767506,767814,767888,767851,767775,767494,767869,767543,767825,767604,767895,767574,767841,767786,767594,767883,767847,767918,767612,767810,767830,767925,767188,767920,767554,767512,767593,767829,767871,767921,767906,767583,767842,767524,767816,766817,767576,767903,767614,767535,767485,767507,767558,767882,767499,772017,772027,772022,772011,772018,775901,775933,775854,775236,771883,769019,771882,769026,775843,775912,771902,771898,771906,772009,772023,772021,772005,772035,771916,772002,771999,772032,772031,772015,772029,771907,772012,772010,771911,771919,772007,771908,771884,772006,771910,771881,771915,772019,769029,771901,771914,769038,771917,772016,772030,772
3330013,772028,771913,771905,772026,769032,771880,771900,772034,772033,771885,771903,771894,771878,769030,775235,773544,774629,773412,775245,773405,775239,772571,774868,772560,774861,772552,774632,774628,773553,775253,773543,773408,775242,775234,772568,774864,772557,774858,774624,775256,773549,775250,773551,772550,775927,775255,775853,773542,775894,775923,775247,775842,775879,773407,775870,775921,775241,775946,775868,775919,775233,775942,775866,772556,775895,774863,775940,775860,775913,775877,774857,775904,775936,775858,775911,775875,775847,774627,775900,775930,775856,775846,772130,775898,775928,775840,775934,775845,773547,775897,775925,775252,775851,775844,773411,775893,775922,775244,772566,773403,775869,775920,775852,775238,775943,775867,775916,775896,774867,775941,775865,775914,775878,774860,775905,775938,775859,775876,774631,775903,775857,775874,775855,774623,775899,775929,775850,772562,774862,772555,774856,774625,773546,775251,773406,775243,772569,775240,775232,772558,774859,772549,774630,774622,773550,775254,773410,775246,773402,775237,772565,772004,772024,775873,775937,779258,779257,778042,778037,780704,780691,779262,779256,778040,780696,779370,779366,778041,780695,779364,779255,778036,780702,780690,779369,779261,778039,776886,778035,780693,779367,778038,780699,780689,779363,781146,781145,781144,804000,803999,805320,803997,782667,803540,781151,800192,783630,783621,782683,782674,782671,803993,782664,803537,781148,783636,783633,783627,782687,782680,800191,782673,783635,782663,783629,783617,806273,782682,805319,803996,803539,800194,782677,800188,782670,783632,781150,783620,782686,805789,782679,803992,803536,782672,781149,803991,803535,800190,800187,783622,782676,782669,805318,781147,803994,803538,803532,783631,782678,808484,808485,808483,808482,808213,806640,808217,808522,808518,806634,808519,808210,806637,806635,808521,808212,806964,806636,808517,808216,806638,808520,808211,806639,808516,808214,808208,808914,808920,808917,808916,808919,808913,808918,808915,808912,810894,810893,810892,810900,811336,811333,810897,811335,810899,811332,810896,811334,810898,811331,810895,813826,813825,813827,812946,812945,813836,812950,813830,812297,813824,813833,812944,813832,812948,812943,813835,813829,813823,812296,813831,813821,813834,813828,812947,818135,818134,818129,818130,817860,817859,817856,817863,818132,818131,817861,817865,818133,819309,819781,819781,820430,820429,822926,820428,822923,822922,820426,820422,822925,820420,822927,822921,820425,819809,822924,826882,825854,826879,825847,826881,825846,825853,826878,825849,822928,826880,825852,825845,826877,825848,827394,827393,827392,827383,827381,827382,828346,828343,828345,828371,828359,828349,827397,827391,828364,828354,827387,828362,828352,827390,827385,827380,828370,828358,828347,827396,827389,827384,827379,828361,828351,827386,828369,828356,827395,828990,828987,828989,828983,828982,828988,830223,830222,830219,830226,830230,828985,830224,830228,830227,831767,831754,831765,831752,831743,831763,831750,831746,831742,831760,831759,831757,835560,835558,835559,833254,833246,833240,835563,835556,835547,833252,833236,835553,833238,833245,833251,833243,833235,835562,835555,833234,835552,833253,833244,833237,835561,835554,835549,835546,833249,833242,837014,837021,837016,837020,837013,837015,837018,837012,837017,841909,841914,841913,841908,841911,841910,841912,841907,841917,841916,841915,841920,841921,841919,766687,774245,769732,799756,772211,781524,781526,781523,781525,795001,795006,795007,767836,795010,774244,773248,773142,768200,779349,826851,826854,826853,826852,779350,773943,795003,795002,769438,767049,772413,772404,772177,767078,772179,772178,782201,795014,766409,766716,766734,766736,767032,774243,795004,795005,795011,795012,795013,826859,826855,826860,766802,773953,779351,779354,773956,773948,773950,769661,799757,769736,769469,769646,769664,773952,819157,769739,769741,800509,773141,800079,778368,808447,808476,808469,808629,808630,808648,808665,808698,808702,811367,811366,811369,812504,818667,826575,829026,830492,833627,812098,812101,812104,812099,812103,812100,812873,813850,813848,813844,813849,813846,813847,813840,813805,813789,813793,813800,813843,813851,813795,840379,840382,840380,819153,819155,821660,812669,819572,819695,820916,820914,820915,820919,820801,820917,820795,694812,590027,616875,590010,616874,589951,589973,589907,590050,613951,589994,590053,589932,830034,829421,829419,826673,826258,826674,826675,826676,826677,826678,827574,828403,828442,828487,828489,828493,828495,828498,828501,828504,828574,828575,840449,828581,828583,828586,828587,828589,837591,837594,808754,808755,808759,808931,808930,808926,808925,808924,808923,808921,808922,808909,808762,808765,808766,826525,808767,826547,826552,808768,808769,808770,808786,808787,808788,832710,808789,808903,808905,832718,808907,808799,8
333008798,808797,808796,808794,808792,808791,808790,799731,800577,689310,689415,689414,689385,689391,689392,689389,689809,689341,689967,689968,690311,690323,689984,690322,689980,690325,689972,689979,689978,691512,690584,690856,691513,773478,691514,691519,691518,732580,732575,773471,773470,690326,703571,840389,840395,840397,840396,840434,840433,840439,840427,840458,840616,840615,840626,841542,841514,841513,841578,841581,841579,841586,841189,841188,841593,841592,841585,841665,841666,841673,841664,841784,841676,840376,840378,840387,840383,840385,840384,839417,840386,840404,840403,840405,840499,840497,840493,841885,841890,842269,842273,842272,842271,842274,842278,842281]; 3331 const addonProductIds = [757917,757917]; 3332 3333 $(function() { 3334 $(document).ready(function() { 3335 $('body').on('click', '.btnIncreaseItemQuantity', function(event) { 3336 var cartItemId = $(this).attr('data-cart-detail-id'); 3337 var productId = $(this).attr('data-product-id'); 3338 var productSeoUrl = $(this).attr('data-product-seo-url'); 3339 3340 if ($(this).attr('data-product-has-options') == 'Y') { 3341 if (productSeoUrl != '') { 3342 loadProduct(productSeoUrl); 3343 } else { 3344 loadProduct(productId); 3345 } 3346 } else { 3347 var currentQuantity = parseInt($('.itemQuantityTextInput[data-product-id="'+productId+'"]').val()); 3348 if(bundleProductIds.includes(Number(productId))){ 3349 $.ajax({ 3350 url: 'https://shop.goodchen.my/v2/checkProductBundle?merchant_domain_name=goodchen', 3351 method: 'POST', 3352 data: { 3353 product_id: productId, 3354 _token: 'GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM' 3355 }, 3356 success: function(response){ 3357 let bundleId = ''; 3358 if(response.hasBundle){ 3359 bundleId = response.bundleId; 3360 } 3361 3362 updateCartItem(productId, 1, '', '', '', false, '', '', '', '', bundleId); 3363 }, 3364 error: function(xhr){ 3365 alert(xhr.responseText); 3366 } 3367 }); 3368 }else{ 3369 // Not a bundle product - just update directly 3370 updateCartItem(productId, 1); 3371 } 3372 } 3373 }); 3374 3375 $('body').on('click', '.btnReduceItemQuantity', function(event) { 3376 if ($(this).attr('data-product-has-options') == 'Y') { 3377 showCart(); 3378 } else { 3379 var productId = $(this).attr('data-product-id'); 3380 var currentQuantity = parseInt($('.itemQuantityTextInput[data-product-id="'+productId+'"]').val()); 3381 if (currentQuantity <= 0) { 3382 $('.itemQuantityTextInput[data-product-id="'+productId+'"]').val(0); 3383 } else { 3384 updateCartItem(productId, -1); 3385 } 3386 } 3387 }); 3388 3389 $('body').on('click', '.btnIncreaseCartItemQuantity', function(event) { 3390 // var cartDetail = $(this).attr('data-cart-detail-id'); 3391 // updateCartDetail(cartDetail, 1); 3392 var cartItemId = $(this).attr('data-cart-detail-id'); 3393 var productId = $(this).attr('data-product-id'); 3394 var selectedChoiceKey = $(this).attr('data-selected-choice-key'); 3395 var isRewardPointsPurchase = $(this).attr('data-is-reward-points-purchase'); 3396 var isAddon = $(this).attr('data-is-addon'); 3397 var variantOptionsJson = $(this).attr('data-variant-options-json'); 3398 var productAddonId = $(this).attr('data-product-add-on-id'); 3399 updateCartItem(productId, 1, '', '', selectedChoiceKey, isRew
3399ardPointsPurchase, variantOptionsJson, isAddon, cartItemId, '', '', productAddonId); 3400 }); 3401 3402 $('body').on('click', '.btnReduceCartItemQuantity', function(event) { 3403 // var cartDetail = $(this).attr('data-cart-detail-id'); 3404 // updateCartDetail(cartDetail, -1); 3405 var cartItemId = $(this).attr('data-cart-detail-id'); 3406 var productId = $(this).attr('data-product-id'); 3407 var selectedChoiceKey = $(this).attr('data-selected-choice-key'); 3408 var isRewardPointsPurchase = $(this).attr('data-is-reward-points-purchase'); 3409 var isAddon = $(this).attr('data-is-addon'); 3410 var variantOptionsJson = $(this).attr('data-variant-options-json'); 3411 var productAddonId = $(this).attr('data-product-add-on-id'); 3412 updateCartItem(productId, -1, '', '', selectedChoiceKey, isRewardPointsPurchase, variantOptionsJson, isAddon, cartItemId, '', '', productAddonId); 3413 }); 3414 3415 $('body').on('click', '#btnClearCart', function(event) { 3416 clearCart(); 3417 }); 3418 3419 $('body').on('focus', '.itemQuantityTextInput', function() { 3420 var hasOptions = $(this).attr('data-product-has-options'); 3421 if (hasOptions == 'Y') { 3422 showCart(); 3423 return; 3424 } 3425 3426 var cartItemId = $(this).attr('data-cart-detail-id'); 3427 var currentQuantity = $(this).val(); 3428 var productId = $(this).attr('data-product-id'); 3429 bootbox.prompt({ 3430 title: "Please enter a quantity.", 3431 inputType: 'number', 3432 value: currentQuantity, 3433 centerVertical: true, 3434 callback: function (result) { 3435 if (result != null) { 3436 console.log(result); 3437 var value = parseInt(result); 3438 3439 if (value < 1) { 3440 alert('Quantity must be at least 1 and above without decimals.'); 3441 } else if(value > 99999) { 3442 alert('Max allowed quantity is 99999.'); 3443 } else { 3444 var quantityChanges = value - currentQuantity; 3445 if(bundleProductIds.includes(Number(productId))){ 3446 $.ajax({ 3447 url: 'https://shop.goodchen.my/v2/checkProductBundle?merchant_domain_name=goodchen', 3448 method: 'POST', 3449 data: { 3450 product_id: productId, 3451 _token: 'GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM' 3452 }, 3453 success: function(response){ 3454 let bundleId = ''; 3455 if(response.hasBundle){ 3456 bundleId = response.bundleId; 3457 } 3458 3459 updateCartItem(productId, quantityChanges, '', '', '', '', '', cartItemId, '', '', bundleId); 3460 }, 3461 error: function(xhr){ 3462 alert(xhr.responseText); 3463 } 3464 }); 3465 }else{ 3466 // Not a bundle product - just update directly 3467 updateCartItem(productId, quantityChanges, '', '', '', '', '', cartItemId) 3468 } 3469 } 3470 } 3471 } 3472 }); 3473 }); 3474 3475 $('body').on('focus', '.cartItemQuantityTextInput', function() { 3476 var cartItemId = $(this).attr('data-cart-detail-id'); 3477 var currentQuantity = $(this).val(); 3478 var productId = $(this).attr('data-product-id'); 3479 var selectedChoiceKey = $(this).attr('data-selected-choice-key'); 3480 var isRewardPointsPurchase = $(this).attr('data-is-reward-points-purchase'); 3481 var isAddon = $(this).attr('data-is-addon'); 3482 var variantOptionsJson = $(this).attr('data-variant-options-json'); 3483 var productAddonId = $(this).attr('data-product-add-on-id'); 3484 bootbox.prompt({ 3485 title: "Please enter a quantity.", 3486 inputType: 'number', 3487 value: currentQuantity, 3488 centerVertical: true, 3489 callback: function (result) { 3490 if (result != null) { 3491 console.log(result); 3492 var value = parseInt(result); 3493 3494 if (value < 1) { 3495 alert('Quantity must be at least 1 and above without decimals.'); 3496 } else if(value > 99999) { 3497 alert('Max allowed quantity is 99999.'); 3498 } else { 3499 var quantityChanges = value - currentQuantity; 3500 updateCartItem(productId, quantityChanges, '', '', selectedChoiceKey, isRew
3500ardPointsPurchase, variantOptionsJson, isAddon, cartItemId, '', '', productAddonId); 3501 } 3502 } 3503 } 3504 }); 3505 }); 3506 3507 $('body').on('click', '.btnAddUpdateCartItemCustomerRemark', function() { 3508 var cartItemId = $(this).attr('data-cart-detail-id'); 3509 var productName = $(this).attr('data-product-name'); 3510 var customerRemarks = $('.cartItemCustomerRemarks[data-cart-detail-id="'+cartItemId+'"]').text(); 3511 var dialog = bootbox.prompt({ 3512 title: "Add/Edit Remarks ("+productName+")", 3513 inputType: 'textarea', 3514 centerVertical: true, 3515 // value: htmlspecialchars_decode(customerRemarks), 3516 value: customerRemarks, 3517 maxlength: 500, 3518 className: 'bootbox-customer-remark-modal', 3519 buttons: { 3520 confirm: { 3521 label: 'OK', 3522 }, 3523 cancel: { 3524 label: 'Cancel', 3525 } 3526 }, 3527 callback: function (result) { 3528 console.log(result); 3529 if (result != null) { 3530 updateCartItemCustomerRemark(cartItemId, result); 3531 } 3532 } 3533 }); 3534 }); 3535 3536 $('body').on('click', '.btnRemoveCartItem', function() { 3537 var cartItemId = $(this).attr('data-cart-detail-id'); 3538 var productId = $(this).attr('data-product-id'); 3539 var selectedChoiceKey = $(this).attr('data-selected-choice-key'); 3540 var currentQuantity = $('.cartItemQuantityTextInput[data-cart-detail-id="'+cartItemId+'"]').val(); 3541 var isRewardPointsPurchase = $(this).attr('data-is-reward-points-purchase'); 3542 var isAddon = $(this).attr('data-is-addon'); 3543 var variantOptionsJson = $(this).attr('data-variant-options-json'); 3544 var productAddonId = $(this).attr('data-product-add-on-id'); 3545 3546 showConfirmation('Delete Cart Item', 'Confirm delete cart item?', 3547 'Yes', 3548 function() { 3549 updateCartItem(productId, currentQuantity * -1, '', '', selectedChoiceKey, isRewardPointsPurchase, variantOptionsJson, isAddon, cartItemId, '', '', productAddonId); 3550 }, 3551 'No' 3552 ); 3553 }); 3554 3555 refreshCartDetail(); 3556 }); 3557 }); 3558 3559 function refreshCartDetail() { 3560 $.ajax({ 3561 url : 'https://shop.goodchen.my/v2/cart?merchant_domain_name=goodchen', 3562 dataType: 'json', 3563 type: 'GET', 3564 data : { 3565 _token: 'GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM' 3566 } 3567 }).done(function (data) { 3568 $('.itemQuantityTextInput').val(0); 3569 3570 if (data.cartInfo == null) { 3571 return; 3572 } 3573 3574 for (var i = 0; i < data.cartInfo.cart.items.length; i++) { 3575 var itemQuantityElement = $('.itemQuantityTextInput[data-product-id="'+data.cartInfo.cart.items[i].product_id+'"]'); 3576 var itemQuantity = parseInt(itemQuantityElement.val()); 3577 itemQuantity += data.cartInfo.cart.items[i].quantity; 3578 itemQuantityElement.val(itemQuantity); 3579 } 3580 3581 $('#cartItems').html(data.cartInfo.cart.itemHtml); 3582 $('#cartAmounts').html(data.cartInfo.cart.amountHtml); 3583 $('#cartItemCount').html(data.cartInfo.cart.itemCount); 3584 3585 cartTotal = data.cartInfo.cart.totalAmount; 3586 cartItems = data.cartInfo.cart.items.map(e => ({ 3587 'product_id': e.product_id, 3588 'product_name': e.product_name, 3589 'price': e.orderDetail.sd_total_item_unit_price, 3590 'discount': e.orderDetail.sd_total_discount_amount, 3591 'quantity': e.orderDetail.sd_item_quantity, 3592 'variant': e.selected_choice_key 3593 })); 3594 }).fail(function (err) { 3595 alert(err.responseJSON.message); 3596 }); 3597 } 3598 3599 function updateCartItem(productId, quantityChanges, productSingleOptionJson = '', productMultiOptionJson = '', 3600 selectedChoiceKey = '', isRewardPointsPurchase = false, variantOptionsJson = '', isAddon = false, cartDetailId, addonPrice, bundleId, productAddonId) { 3601 console.log("typeof variantOptionsJson:", typeof variantOptionsJson); 3602 console.log("variantOptionsJson:", variantOptionsJson); 3603 blockUI('', '.product-items[data-product-id="'+productId+'"]'); 3604 blockUI('', '.cart-box'); 3605 $.ajax({ 3606 url : 'https://shop.goodchen.my/v2/cart/update-item?merchant_domain_name=goodchen', 3607 dataType: 'json', 3608 type: 'POST', 3609 data : { 3610 product_id: productId, 3611 quantity_changes: quantityChanges, 3612 product_single_option_json: productSingleOptionJson, 3613 product_multi_option_json: productMultiOptionJson, 3614 selected_choices_key: selectedChoiceKey, 3615 is_reward_points_purchase: isRewardPointsPurchase, 3616 variant_options_json: variantOptionsJson, 3617 is_addon: isAddon, 3618 cart_detail_id: cartDetailId, 3619 addon_price: addonPrice, 3620 product_bundle_id: bundleId,
3621 product_add_on_id: productAddonId, 3622 _token: 'GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM' 3623 } 3624 }).done(function (data) { 3625 $('.itemQuantityTextInput[data-product-id="'+productId+'"]').val(data.updatedItem.totalQuantity); 3626 $('#cartItems').html(data.cart.itemHtml); 3627 $('#cartAmounts').html(data.cart.amountHtml); 3628 $('#cartItemCount').html(data.cart.itemCount); 3629 unblockUI('.product-items[data-product-id="'+productId+'"]'); 3630 unblockUI('.cart-box'); 3631 3632 }).fail(function (err) { 3633 unblockUI('.product-items[data-product-id="'+productId+'"]'); 3634 unblockUI('.cart-box'); 3635 3636 var callFunctionAfterCloseDialog = function() {}; 3637 3638 if (err.responseJSON.hasOwnProperty('refreshOrderingPage') && 3639 err.responseJSON.refreshOrderingPage == true) { 3640 callFunctionAfterCloseDialog = function() { 3641 window.location.reload(true); 3642 } 3643 } 3644 3645 showDangerAlert(null, err.responseJSON.message, 'small', callFunctionAfterCloseDialog); 3646 }); 3647 } 3648 3649 function updateCartDetail(cartDetailId, quantityChanges) { 3650 $.ajax({ 3651 url : 'https://shop.goodchen.my/v2/cart/update-cart-detail?merchant_domain_name=goodchen', 3652 dataType: 'json', 3653 type: 'POST', 3654 data : { 3655 cart_detail_id: cartDetailId, 3656 quantity_changes: quantityChanges, 3657 _token: 'GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM' 3658 } 3659 }).done(function (data) { 3660 $('.itemQuantityTextInput[data-product-id="'+data.updatedItem.productId+'"]').val(data.updatedItem.totalQuantity); 3661 $('#cartItems').html(data.cart.itemHtml); 3662 $('#cartAmounts').html(data.cart.amountHtml); 3663 $('#cartItemCount').html(data.cart.itemCount); 3664 }).fail(function (err) { 3665 showDangerAlert(null, err.responseJSON.message); 3666 }); 3667 } 3668 3669 function updateCartItemCustomerRemark(cartItemId, customerRemarks) { 3670 $.ajax({ 3671 url : 'https://shop.goodchen.my/v2/cart/update-item-customer-remark?merchant_domain_name=goodchen', 3672 dataType: 'json', 3673 type: 'POST', 3674 data : { 3675 cart_item_id: cartItemId, 3676 customer_remarks: customerRemarks, 3677 _token: 'GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM' 3678 } 3679 }).done(function (data) { 3680 $('.cartItemCustomerRemarks[data-cart-detail-id="'+cartItemId+'"]').text(customerRemarks); 3681 }).fail(function (err) { 3682 showDangerAlert(null, err.responseJSON.message); 3683 }); 3684 } 3685 3686 function clearCart() { 3687 3688 3689 3690 3691 3692 blockUI('', '.cart-box'); 3693 $.ajax({ 3694 url : 'https://shop.goodchen.my/v2/cart/clear?merchant_domain_name=goodchen', 3695 dataType: 'json', 3696 type: 'POST', 3697 data : { 3698 _token: 'GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM' 3699 } 3700 }).done(function (data) { 3701 $('.itemQuantityTextInput').val(0); 3702 $('#cartItems').html(data.cartInfo.cart.itemHtml); 3703 $('#cartAmounts').html(data.cartInfo.cart.amountHtml); 3704 $('#cartItemCount').html(data.cartInfo.cart.itemCount); 3705 console.log('Cart Cleared!'); 3706 showSuccessAlert(null, 'Cart is empty'); 3707 unblockUI('.cart-box'); 3708 }).fail(function (err) { 3709 unblockUI('.cart-box'); 3710 showDangerAlert(null, err.responseJSON.message); 3711 }); 3712 } 3713 </script>
3713 3714 3715
3715<script> 3716 // Checkout 3717 var isRetainCheckoutState = false; 3718 var cartItems = []; 3719 var cartTotal = 0; 3720 3721 $(function() { 3722 $(document).ready(function() { 3723 $('body').on('click', '#btnCheckout', function(event) { 3724 if ($('#cartItems .cart-items').length == 0) { 3725 showDangerAlert(null, 'Please add at least one item.') 3726 return; 3727 } 3728 3729 showLoginModal(true); 3730 // showConfirmation( 3731 // 'Please Wait!', 3732 // 'Login or Sign Up to enjoy lots of benefits!', 3733 // 'Okay', 3734 // function() { 3735 // $('.modal').modal('hide'); 3736 // $('#loginmodal').modal('show'); 3737 // }, 3738 // 'Skip', 3739 // function() { 3740 // popupPickupDeliveryModal(); 3741 // } 3742 // ); 3743 }); 3744 }); 3745 }); 3746 3747 function popupPickupDeliveryModal() { 3748 showConfirmation( 3749 null, 3750 `<div class="card border-0"> 3751 <div class="card-body mb-3 bg-lightgreen p-4 rounded-10"> 3752 <h4 class="fw-700 mt-2 font-xss text-grey-900 d-flex mb-0">Delivery</h4> 3753 <h6 class="fw-500 font-xssss text-grey-600 lh-22 mb-0 table-responsive"> 3754 <table class="table table-bordered"> 3755 <thead> 3756 <tr style="background-color: #d7d7d7;"> 3757 <th></th> 3758 <th class="text-center">0.00 to 3.00 KG</th> 3759 <th class="text-center">3.01 to 4.00 KG</th> 3760 <th class="text-center">4.01 to 5.00 KG</th> 3761 <th class="text-center">5.01 to 6.00 KG</th> 3762 <th class="text-center">6.01 to 7.00 KG</th> 3763 <th class="text-center">7.01 to 8.00 KG</th> 3764 <th class="text-center">8.01 to 9.00 KG</th> 3765 <th class="text-center">9.01 to 10.00 KG</th> 3766 <th class="text-center">10.01 to 11.00 KG</th> 3767 </tr> 3768 </thead> 3769 <tbody> 3770 <tr> 3771 <td class="text-center" style="font-weight: bold; background-color: #d7d7d7;"> 3772 Postcode from 01000 to 86999 3773 </td> 3774 <td class="text-center">RM 10.00</td> 3775 <td class="text-center">RM 12.00</td> 3776 <td class="text-center">RM 14.00</td> 3777 <td class="text-center">RM 16.00</td> 3778 <td class="text-center">RM 18.00</td> 3779 <td class="text-center">RM 20.00</td> 3780 <td class="text-center">RM 22.00</td> 3781 <td class="text-center">RM 24.00</td> 3782 <td class="text-center">RM 26.00</td> 3783 </tr> 3784 </tbody> 3785 </table> 3786 </h6> 3787 </div> 3788 </div> 3789`, 3790 'OK', 3791 function() { 3792 // goToCheckout(); 3793 }, 3794 'Cancel', 3795 ); 3796 } 3797 3798 function goToCheckout() { 3799 if (isRetainCheckoutState == true) { 3800 $('#cartmodal').modal('hide'); 3801 3802 $('#checkoutmodal').modal({ 3803 backdrop: 'static', 3804 keyboard: false 3805 }); 3806 3807 $('#checkoutmodal').modal('show');
3808 calculateAmounts('NONE'); 3809 isRetainCheckoutState = false; 3810 } else { 3811 blockUI('', '.cart-box'); 3812 $.ajax({ 3813 url : 'https://shop.goodchen.my/v2/checkout?merchant_domain_name=goodchen', 3814 dataType: 'json', 3815 type: 'GET', 3816 data : { 3817 _token: 'GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM' 3818 } 3819 }).done(function (data) { 3820 unblockUI('.cart-box'); 3821 3822 // $('.cart-box').fadeOut(0); 3823 // $('.checkout-box').fadeIn(); 3824 $('#checkout-wrapper').html(data.checkoutHtml); 3825 $('#cartmodal').modal('hide'); 3826 3827 $('#checkoutmodal').modal({ 3828 backdrop: 'static', 3829 keyboard: false 3830 }); 3831 3832 $('#checkoutmodal').modal('show'); 3833 3834 // In case got issue with WhatsApp Phone Number default country code, uncomment this 3835 3836 3837 3838 3839 3840 3841 }).fail(function (err) { 3842 unblockUI('.cart-box'); 3843 showDangerAlert(null, err.responseJSON.message); 3844 }); 3845 } 3846 3847 } 3848 3849 // function saveFormState() { 3850 // $(".form-control, :input:hidden").each(function () { 3851 // checkoutFormState[this.id] = $(this).val(); 3852 // }); 3853 // } 3854 // 3855 // function setFormState() { 3856 // $.each(checkoutFormState, function (key, value) { 3857 // var $target = $("#" + key); 3858 // if ( $target.is(".ui-datepicker") ) { 3859 // // set datepicker value... 3860 // } else if ( $target.is(":text") ) { 3861 // $target.val(value); 3862 // } else { 3863 // $target.val(value); 3864 // } 3865 // 3866 // // etc for other field types 3867 // }); 3868 // } 3869 3870 3871 $('body').on('click', '.btnShowAddOnModal', function(e) { 3872 e.preventDefault(); 3873 3874 const cartDetailId = $(this).data('cart-detail-id'); 3875 const productName = $(this).data('product-name') || 'Product'; 3876 const productDefaultPrice = $(this).data('product-default-price') || 0; 3877 const addOns = JSON.parse($(this).attr('data-addons') || '[]'); 3878 3879 const itemsPerPage = 4; 3880 let currentPage = 1; 3881 3882 function renderTable(page) { 3883 const allRows = []; 3884 3885 addOns.forEach(addOn => { 3886 if (addOn && addOn.product_name) { 3887 if (addOn.variant_add_ons && addOn.variant_add_ons.length > 0) { 3888 addOn.variant_add_ons.forEach(variant => { 3889 const label = Object.values(JSON.parse(variant.option_values_json || '{}')).join(' / '); 3890 allRows.push(` 3891 <tr> 3892 <td>${addOn.product_name} - <small>${label}</small></td> 3893 <td> 3894 <del>${variant.product_default_price || 0}</del> 3895 ${variant.addon_price || 0} 3896 </td> 3897 <td style="text-align: center;"> 3898 <button 3899 class="btn btn-success btnSelectAddon" 3900 data-product-id="${variant.product_id}" 3901 data-product-name="${addOn.product_name}" 3902 data-addon-price="${variant.addon_price || 0}" 3903 data-variant-id="${variant.product_variant_matrix_id}" 3904 data-cart-detail-id="${cartDetailId}" 3905 data-variant-options-json='${variant.option_values_json || "{}"}' 3906 data-product-add-on-id="${addOn.product_add_on_i
3906d}"> 3907 Select 3908 </button> 3909 </td> 3910 </tr> 3911 `); 3912 }); 3913 }else { 3914 allRows.push(` 3915 <tr> 3916 <td>${addOn.product_name}</td> 3917 <td> 3918 <del>${addOn.product_default_price}</del> 3919 ${addOn.addon_price || 0} 3920 </td> 3921 <td style="text-align: center;"> 3922 <button 3923 class="btn btn-success btnSelectAddon" 3924 data-product-id="${addOn.product_add_on_detail_product_id}" 3925 data-product-name="${addOn.product_name}" 3926 data-addon-price="${addOn.addon_price || 0}" 3927 data-cart-detail-id="${cartDetailId}" 3928 data-product-add-on-id="${addOn.product_add_on_id}"> 3929 Select 3930 </button> 3931 </td> 3932 </tr> 3933 `); 3934 } 3935 } 3936 }); 3937 3938 const totalPages = Math.ceil(allRows.length / itemsPerPage); 3939 const start = (page - 1) * itemsPerPage; 3940 const paginatedRows = allRows.slice(start, start + itemsPerPage).join(''); 3941 3942 const paginationButtons = Array.from({ length: totalPages }, (_, i) => { 3943 const pageNum = i + 1; 3944 return `<button class="btn btn-sm ${pageNum === page ? 'btn-primary' : 'btn-light'} btnPagination" data-page="${pageNum}">${pageNum}</button>`; 3945 }).join(' '); 3946 3947 const content = ` 3948 <div> 3949 <h3 style="font-weight: bold;">Main Product: ${productName}</h3> 3950 <br> 3951 <table class="table table-bordered"> 3952 <thead> 3953 <tr> 3954 <th>Product Name</th> 3955 <th>Add-on Price</th> 3956 <th style="text-align: center;">Action</th> 3957 </tr> 3958 </thead> 3959 <tbody> 3960 ${paginatedRows || '<tr><td colspan="3">No add-ons available</td></tr>'} 3961 </tbody> 3962 </table> 3963 <div class="d-flex justify-content-center">${paginationButtons}</div> 3964 </div> 3965 `; 3966 3967 $('.bootbox-body').html(content); 3968 } 3969 3970 bootbox.dialog({ 3971 title: '<strong>Add on more items to enjoy add-on savings</strong>', // Please select the Add-on Products 3972 message: '<div>Loading...</div>', // Temporary message 3973 buttons: { 3974 cancel: { 3975 label: "Close", 3976 className: 'btn-secondary' 3977 } 3978 }, 3979 callback: function() { 3980 // Optional: cleanup after modal closed 3981 } 3982 }); 3983 3984 // Initial load 3985 renderTable(currentPage); 3986 3987 // Handle pagination click inside modal 3988 $('body').on('click', '.btnPagination', function() { 3989 const selectedPage = parseInt($(this).data('page')); 3990 if (selectedPage !== currentPage) { 3991 currentPage = selectedPage; 3992 renderTable(currentPage); 3993 } 3994 }); 3995 }); 3996 3997 3998 $('body').on('click', '.btnSelectAddon', function() { 3999 const cartDetailId = $(this).data('cart-detail-id'); 4000 const productId = $(this).data('product-id'); 4001 const addonPrice = parseFloat($(this).data('addon-price')) || 0; 4002 const variantOptionsJson = $(this).data('variant-options-json'); 4003 const productAddonId = $(this).data('product-add-on-id'); 4004 console.log('This is variant option: ', variantOptionsJson); 4005 4006 $.ajax({ 4007 url: 'https://shop.goodchen.my/v2/checkProductAddon?merchant_domain_name=goodchen', 4008 type: 'POST', 4009 data: { 4010 product_id: productId, 4011 parent_detail_id: cartDetailId, 4012 _token: 'GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM', 4013 }, 4014 success: function(response){ 4015 4016 let productAddonId = ''; 4017 if(response.isAddon){ 4018 productAddonId = response.productAddonId; 4019 } 4020 4021 updateCartItem(productId, 1, '', '', '', false, JSON.stringify(variantOptionsJson), true, cartDetailId, addonPrice, '', productAddonId); // Quantity as 1 4022 }, 4023 error: function(xhr){ 4024 alert(xhr.responseText); 4025 } 4026 }); 4027 }); 4028 4029 $('body').on('click', '.btnShowBundleModal', function(e) { 4030 e.preventDefault(); 4031 4032 const productId = $(this).attr('data-product-id'); 4033 const productName = $(this).attr('data-product-name') || 'Product'; 4034 const productDefaultPrice = $(this).attr('data-product-default-price') || 0; 4035 const bundles = JSON.parse($(this).attr('data-bundles') || '[]'); 4036 const cartDetailId = $(this).data('cart-detail-id'); 4037 4038 const itemsPerPage = 4; 4039 let currentPage = 1; 4040 4041 function renderTable(page) { 4042 const allRows = []; 4043
4044 bundles.forEach(bundle => { 4045 if (bundle && bundle.product_name) { 4046 if (bundle.variant_bundles && bundle.variant_bundles.length > 0) { 4047 bundle.variant_bundles.forEach(variant => { 4048 const label = Object.values(JSON.parse(variant.option_values_json || '{}')).join(' / '); 4049 allRows.push(` 4050 <tr> 4051 <td>${bundle.product_name} - <small>${label}</small></td> 4052 <td>${variant.price || 0}</td> 4053 <td style="text-align: center;"> 4054 <button 4055 class="btn btn-success btnSelectBundle" 4056 data-product-id="${variant.product_id}" 4057 data-product-name="${bundle.product_name}" 4058 data-variant-id="${variant.id}" 4059 data-cart-detail-id="${cartDetailId}" 4060 data-variant-options-json='${variant.option_values_json || "{}"}'> 4061 Select 4062 </button> 4063 </td> 4064 </tr> 4065 `); 4066 }); 4067 } else { 4068 // Fallback row 4069 allRows.push(` 4070 <tr> 4071 <td>${bundle.product_name}</td> 4072 <td>${bundle.product_bundle_detail_product_default_price}</td> 4073 <td style="text-align: center;"> 4074 <button class="btn btn-success btnSelectBundle" 4075 data-product-id="${bundle.id}" 4076 data-product-name="${bundle.product_name}" 4077 data-bundle-product-detail-default-price="${bundle.product_bundle_detail_product_default_price}"> 4078 Select 4079 </button> 4080 </td> 4081 </tr> 4082 `); 4083 } 4084 } 4085 }); 4086 4087 const totalPages = Math.ceil(allRows.length / itemsPerPage); 4088 const start = (page - 1) * itemsPerPage; 4089 const paginatedRows = allRows.slice(start, start + itemsPerPage); 4090 const rows = paginatedRows.join(''); 4091 4092 let paginationButtons = ''; 4093 for (let i = 1; i <= totalPages; i++) { 4094 paginationButtons += `<button class="btn btn-sm ${i === page ? 'btn-primary' : 'btn-light'} btnPagination" data-page="${i}">${i}</button> `; 4095 } 4096 4097 const content = ` 4098 <div> 4099 <h3 style="font-weight: bold;">Main Product: ${productName}</h3> 4100 <br> 4101 <table class="table table-bordered"> 4102 <thead> 4103 <tr> 4104 <th>Product Name</th> 4105 <th>Product Price</th> 4106 <th style="text-align: center;">Action</th> 4107 </tr> 4108 </thead> 4109 <tbody>${rows || '<tr><td colspan="3">No bundles available</td></tr>'}</tbody> 4110 </table> 4111 <div class="d-flex justify-content-center">${paginationButtons}</div> 4112 </div> 4113 `; 4114 4115 $('.bootbox-body').html(content); 4116 } 4117 4118 4119 bootbox.dialog({ 4120 title: `<strong>Bundle more items to enjoy more savings</strong>`, // Please select the Bundle Products 4121 message: '<div>Loading...</div>', 4122 buttons: { 4123 cancel: { 4124 label: "Close", 4125 className: 'btn-secondary' 4126 } 4127 } 4128 }); 4129 4130 // Initial render 4131 renderTable(currentPage); 4132 4133 // Handle pagination click inside modal (delegated) 4134 $('body').on('click', '.btnPagination', function() { 4135 const selectedPage = parseInt($(this).data('page')); 4136 if (selectedPage !== currentPage) { 4137 currentPage = selectedPage; 4138 renderTable(currentPage); 4139 } 4140 }); 4141 }); 4142 4143 4144 $('body').on('click', '.btnSelectBundle', function() { 4145 const cartDetailId = $(this).data('cart-detail-id'); 4146 const id = $(this).data('product-id'); 4147 const name = $(this).data('product-name'); 4148 const price = parseFloat($(this).data('bundle-product-detail-default-price')) || 0; 4149 const variantOptionsJson = $(this).data('variant-options-json'); 4150 4151 $.ajax({ 4152 url: 'https://shop.goodchen.my/v2/checkProductBundle?merchant_domain_name=goodchen', 4153 method: 'POST', 4154 data:{ 4155 product_id: id, 4156 _token: 'GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM', 4157 }, 4158 success: function(response){ 4159 let bundleId = ''; 4160 if(response.hasBundle){ 4161 bundleId = response.bundleId; 4162 } 4163 updateCartItem(id, 1, '', '', '', false, JSON.stringify(variantOptionsJson), false, cartDetailId, '', bundleId); 4164 }, 4165 error: function(xhr){ 4166 alert(xhr.responseText); 4167 } 4168 }); 4169 4170 }); 4171 4172 </script>
vendor: 1 bytes, line 4172
4172
4173<script> 4174 var gblWhatsappPhoneNoTel = null; 4175 (function () { 4176 var input = document.querySelector("#whatsapp_phone_no_display"); 4177 var input2 = document.querySelector("#register_whatsapp_phone_no_display"); 4178 4179 gblWhatsappPhoneNoTel = window.intlTelInput(input, { 4180 preferredCountries: ["my"], 4181 autoPlaceholder:"", 4182 separateDialCode: true, 4183 utilsScript:"https://shop.goodchen.my/plugins/intl-tel-input-master/build/js/utils.js" 4184 }); 4185 gblWhatsappPhoneNoTel2 = window.intlTelInput(input2, { 4186 preferredCountries: ["my"], 4187 autoPlaceholder:"", 4188 separateDialCode: true, 4189 utilsScript:"https://shop.goodchen.my/plugins/intl-tel-input-master/build/js/utils.js" 4190 }); 4191 4192 var whatsappPhoneNo = ''; 4193 if (whatsappPhoneNo != '') { 4194 gblWhatsappPhoneNoTel.setNumber(whatsappPhoneNo); 4195 } 4196 var whatsappPhoneNo2 = ''; 4197 if (whatsappPhoneNo2 != '') { 4198 gblWhatsappPhoneNoTel2.setNumber(whatsappPhoneNo2); 4199 } 4200 } ()); 4201 4202 // [Old WhatsApp-based reset password JS] 4203 // // if (jQuery.browser.mobile == true) { 4204 // $('#member-reset-password-link').attr('href', 'https://wa.me/' + $('#member-reset-password-link').attr('data-whatsapp-phone-no') + '?text=Reset my member password'); 4205 // } else { 4206 // $('#member-reset-password-link').attr('href', 'https://web.whatsapp.com/send?phone=' + $('#member-reset-password-link').attr('data-whatsapp-phone-no') + '&text=Reset my member password'); 4207 // } 4208 // 4209 $('#member-reset-password-link').on('click', function(event) { 4210 event.preventDefault(); 4211 $('.modal').modal('hide'); 4212 $('#resetPasswordModal').modal('show'); 4213 }); 4214 4215 $('#loginmodal').on('show.bs.modal', function () { 4216 console.log('Showing login modal...'); 4217 $('#btnTabLogin').tab('show'); 4218 $('#modal-dialog-auth').css('max-width', '400px'); 4219 $('#whatsapp_phone_no').val(''); 4220 gblWhatsappPhoneNoTel.setNumber(''); 4221 $('#password').val(''); 4222 $('#passwordError').text(''); 4223 $('#passwordError').removeClass('d-block'); 4224 }); 4225 4226 function login() { 4227 $('#formLogin .is-loading').removeClass('visually-hidden'); 4228 $('#formLogin .not-loading').addClass('visually-hidden'); 4229 $('.btn-form-submit').attr('disabled', true); 4230 $('#whatsapp_phone_no').val(gblWhatsappPhoneNoTel.getNumber()); 4231 4232 $.ajax({ 4233 url: "https://shop.goodchen.my/v2/login?merchant_domain_name=goodchen", 4234 type:"POST", 4235 dataType: "json", 4236 data:{ 4237 _token: "GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM", 4238 whatsapp_phone_no: $('#whatsapp_phone_no').val(), 4239 password: $('#password').val(), 4240 }, 4241 complete:function(response) { 4242 // $('#formLogin').addClass('was-validated'); 4243 $('#formLogin .is-loading').addClass('visually-hidden'); 4244 $('#formLogin .not-loading').removeClass('visually-hidden'); 4245 $('.btn-form-submit').attr('disabled', false); 4246 }, 4247 success:function(response) { 4248 window.location.href = response.redirectUrl; 4249 }, 4250 error:function (response) { 4251 if (response.status == 419) { 4252 showDangerAlert(null, response.responseJSON.message, 'small'); 4253 return; 4254 } 4255 4256 if (response.responseJSON.hasOwnProperty('errors')) { 4257 if (response.responseJSON.errors.hasOwnProperty('whatsapp_phone_no')) { 4258 $('#whatsappPhoneNoError').text(response.responseJSON.errors.whatsapp_phone_no[0]); 4259 $('#whatsapp_phone_no_display').addClass('is-invalid'); 4260 $('#whatsapp_phone_no_display').removeClass('is-valid'); 4261 $('#whatsapp_phone_no').addClass('is-invalid'); 4262 $('#whatsapp_phone_no').removeClass('is-valid'); 4263 } else { 4264 $('#whatsapp_phone_no_display').removeClass('is-invalid'); 4265 $('#whatsapp_phone_no_display').addClass('is-valid'); 4266 $('#whatsapp_phone_no').removeClass('is-invalid'); 4267 $('#whatsapp_phone_no').addClass('is-valid'); 4268 } 4269 4270 if (response.responseJSON.errors.hasOwnProperty('password')) { 4271 $('#passwordError').text(response.responseJSON.errors.password[0]); 4272 $('#password').addClass('is-invalid'); 4273 $('#password').removeClass('is-valid'); 4274 } else { 4275 $('#password').removeClass('is-invalid'); 4276 $('#password').addClass('is-valid'); 4277 } 4278 } 4279 } 4280 }); 4281 } 4282 4283 function register() { 4284 $('#register_whatsapp_phone_no').val(gblWhatsappPhoneNoTel2.getNumber()); 4285 4286 if (!$('#registerAcceptConditions').prop('checked')) { 4287 showDangerAlert('Stop', 'Please accept T&C and Privacy Policy.'); 4288 return; 4289 } 4290 4291 $('#formRegister .is-loading').removeClass('visually-hidden'); 4292 $('#formRegister .not-loading').addClass('visually-hidden'); 4293 $('.btn-form-submit').attr('disabled', true); 4294 4295 $.ajax({ 4296 url: "https://shop.goodchen.my/v2/register?merchant_domain_name=goodchen", 4297 type:"POST", 4298 dataType: "json", 4299 data:{ 4300 _token: "GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM", 4301 member_name: $('#member_name').val(), 4302 register_whatsapp_phone_no: $('#register_whatsapp_phone_no').val(), 4303 email: $('#email').val(), 4304 register_password: $('#register_password').val(), 4305 password_confirm: $('#password_confirm').val(), 4306 date_of_birth: $('#date_of_birth').val(), 4307 }, 4308 complete:function(response) { 4309 // $('#formRegister').addClass('was-validated'); 4310 $('#formRegister .is-loading').addClass('visually-hidden'); 4311 $('#formRegister .not-loading').removeClass('visually-hidden'); 4312 $('.btn-form-submit').attr('disabled', false); 4313 }, 4314 success:function(response) { 4315 window.location.href = response.redirectUrl; 4316 }, 4317 error:function (response) { 4318 if (response.responseJSON.hasOwnProperty('errors')) { 4319 if ('member_name' in response.responseJSON.errors) { 4320 $('#memberNameError').text(response.responseJSON.errors.member_name[0]); 4321 $('#member_name').addClass('is-invalid'); 4322 $('#member_name').removeClass('is-valid'); 4323 } else { 4324 $('#member_name').removeClass('is-invalid'); 4325 $('#member_name').addClass('is-valid'); 4326 } 4327 4328 if ('register_whatsapp_phone_no' in response.responseJSON.errors) { 4329 $('#registerWhatsappPhoneNoError').text(response.responseJSON.errors.register_whatsapp_phone_no[0]); 4330 $('#register_whatsapp_phone_no_display').addClass('is-invalid'); 4331 $('#register_whatsapp_phone_no_display').removeClass('is-valid'); 4332 $('#register_whatsapp_phone_no').addClass('is-invalid'); 4333 $('#register_whatsapp_phone_no').removeClass('is-valid'); 4334 } else { 4335 $('#register_whatsapp_phone_no_display').removeClass('is-invalid'); 4336 $('#register_whatsapp_phone_no_display').addClass('is-valid'); 4337 $('#register_whatsapp_phone_no').removeClass('is-invalid'); 4338 $('#register_whatsapp_phone_no').addClass('is-valid'); 4339 } 4340 4341 if ('email' in response.responseJSON.errors) { 4342 $('#emailError').text(response.responseJSON.errors.email[0]); 4343 $('#email').addClass('is-invalid'); 4344 $('#email').removeClass('is-valid'); 4345 } else { 4346 $('#email').removeClass('is-invalid'); 4347 $('#email').addClass('is-valid'); 4348 } 4349 4350 if ('register_password' in response.responseJSON.errors) { 4351 $('#registerPasswordError').text(response.responseJSON.errors.register_password[0]); 4352 $('#register_password').addClass('is-invalid'); 4353 $('#register_password').removeClass('is-valid'); 4354 } else { 4355 $('#register_password').removeClass('is-invalid'); 4356 $('#register_password').addClass('is-valid'); 4357 } 4358 4359 if ('password_confirm' in response.responseJSON.errors) { 4360 $('#passwordConfirmError').text(response.responseJSON.errors.password_confirm[0]); 4361 $('#password_confirm').addClass('is-invalid'); 4362 $('#password_confirm').removeClass('is-valid'); 4363 } else { 4364 $('#password_confirm').removeClass('is-invalid'); 4365 $('#password_confirm').addClass('is-valid'); 4366 } 4367 4368 if ('date_of_birth' in response.responseJSON.errors) { 4369 $('#dateOfBirthError').text(response.responseJSON.errors.date_of_birth[0]); 4370 $('#date_of_birth').addClass('is-invalid'); 4371 $('#date_of_birth').removeClass('is-valid'); 4372 } else { 4373 $('#date_of_birth').removeClass('is-invalid'); 4374 $('#date_of_birth').addClass('is-valid'); 4375 } 4376 } 4377 } 4378 }); 4379 } 4380 4381 function checkoutAsGuest() { 4382 $('#loginmodal').modal('hide'); 4383 // popupPickupDeliveryModal(); 4384 goToCheckout(); 4385 } 4386 4387 function showLoginModal(checkout = false) { 4388 if (checkout) 4389 $('.btn-guest-continue').attr('onclick', 'checkoutAsGuest()'); 4390 else 4391 $('.btn-guest-continue').attr('onclick', "$('#loginmodal').modal('hide')"); 4392 4393 $('.modal').modal('hide'); 4394 4395 $('#loginmodal').modal('show'); 4396 } 4397 4398 function showRegisterTab() { 4399 event.preventDefault(); 4400 $('#btnTabRegister').tab('show');
4401 $('#modal-dialog-auth').css('max-width', '800px'); 4402 } 4403 4404 function showLoginTab() { 4405 event.preventDefault(); 4406 $('#btnTabLogin').tab('show'); 4407 $('#modal-dialog-auth').css('max-width', '400px'); 4408 } 4409 4410 $("#btnTabLogin").click(function () { 4411 $('#modal-dialog-auth').css('max-width', '400px'); 4412 }); 4413 4414 $("#btnTabRegister").click(function () { 4415 $('#modal-dialog-auth').css('max-width', '800px'); 4416 }); 4417</script>
4417 4418
4418<script> 4419 var resetPhoneNoTel = null; 4420 4421 $('#resetPasswordModal').on('show.bs.modal', function () { 4422 if (resetPhoneNoTel == null) { 4423 var input = document.querySelector("#resetPhoneNoDisplay"); 4424 resetPhoneNoTel = window.intlTelInput(input, { 4425 preferredCountries: ["my"], 4426 autoPlaceholder: "", 4427 separateDialCode: true, 4428 utilsScript: "https://shop.goodchen.my/plugins/intl-tel-input-master/build/js/utils.js" 4429 }); 4430 } 4431 $('#resetPhoneNo').val(''); 4432 resetPhoneNoTel.setNumber(''); 4433 $('#resetPhoneNoError').removeClass('d-block'); 4434 $('#resetPhoneNoDisplay').removeClass('is-invalid'); 4435 }); 4436 4437 function resetPassword() { 4438 $('#resetPhoneNo').val(resetPhoneNoTel.getNumber()); 4439 4440 $('#formResetPassword .is-loading').removeClass('visually-hidden'); 4441 $('#formResetPassword .not-loading').addClass('visually-hidden'); 4442 $('#btnResetPassword').attr('disabled', true); 4443 4444 $.ajax({ 4445 url: "https://shop.goodchen.my/v2/reset-password?merchant_domain_name=goodchen", 4446 type: "POST", 4447 dataType: "json", 4448 data: { 4449 _token: "GAqV1Kmd8wd0y9YPEyeLPwnPi1DWc2Wg4imVt1WM", 4450 whatsapp_phone_no: $('#resetPhoneNo').val() 4451 }, 4452 complete: function () { 4453 $('#formResetPassword .is-loading').addClass('visually-hidden'); 4454 $('#formResetPassword .not-loading').removeClass('visually-hidden'); 4455 $('#btnResetPassword').attr('disabled', false); 4456 }, 4457 success: function (response) { 4458 $('.modal').modal('hide'); 4459 showSuccessAlert('Success', response.message); 4460 }, 4461 error: function (response) { 4462 if (typeof response.responseJSON !== 'undefined' && typeof response.responseJSON.errors !== 'undefined' && 'whatsapp_phone_no' in response.responseJSON.errors) { 4463 $('#resetPhoneNoError').text(response.responseJSON.errors.whatsapp_phone_no[0]); 4464 $('#resetPhoneNoError').addClass('d-block'); 4465 $('#resetPhoneNoDisplay').addClass('is-invalid'); 4466 } else { 4467 $('.modal').modal('hide'); 4468 $('#resetPhoneNoError').removeClass('d-block'); 4469 showDangerAlert('Error', response.responseJSON ? response.responseJSON.message : 'Failed to reset password, please try again.'); 4470 } 4471 } 4472 }); 4473 } 4474 </script>
4474 4475 4476</body> 4477 4478 4479</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.