1<!DOCTYPE html> 2 3<html class="no-js css-scroll eds-theme-light" lang="en"> 4 <head> 5 <meta charset="utf-8" /> 6 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> 7 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 8 <meta name="apple-mobile-web-app-status-bar-style" content="black"> 9 <meta name="mobile-web-app-capable" content="yes"> 10 11 12 <title>Hunan Cafe - Falls Church in VA | Delivery Info | Chinese</title> 13 <meta name="keywords" content="hunan cafe, hunan cafe falls church, hunan cafe menu, falls church chinese delivery, falls church chinese food, falls church chinese restaurants, chinese delivery, best chinese food in falls church, chinese restaurants in falls church, chinese restaurants near me, chinese food near me, falls church chinese takeout" /> 14 15 <meta property="og:type" content="website"> 16 <meta property="og:title" content="Hunan Cafe - Falls Church in VA | Delivery Info | Chinese"> 17 <meta property="og:image" content="https://imagedelivery.net/9lr8zq_Jvl7h6OFWqEi9IA/a4c7938a-acd0-4ad0-19b2-b9b7e1845b00/public" /> 18 19 <meta name="twitter:card" content="summary_large_image"> 20 <meta name="twitter:title" content="Hunan Cafe - Falls Church in VA | Delivery Info | Chinese"> 21 <meta name="twitter:image" content="https://imagedelivery.net/9lr8zq_Jvl7h6OFWqEi9IA/a4c7938a-acd0-4ad0-19b2-b9b7e1845b00/public" /> 22 23 <link rel="shortcut icon" href="https://imagedelivery.net/9lr8zq_Jvl7h6OFWqEi9IA/e447e32e-c741-4ddb-5738-13c2a8126b00/public" type="image/x-icon" /> 24 25 <link rel="canonical" href="https://www.hunancafefallschurchva.com/page/delivery-info"/> 26 27 <link type="text/css" rel="stylesheet" href="/min/g=eds_css&1788377785" /> 28 <link type="text/css" rel="stylesheet" href="/min/g=css4.0&1788377785" /> 29 <link href="https://fonts.googleapis.com/css?family=Nunito:400,700|Open+Sans:400,600,700" rel="stylesheet" /> 30 <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/themes/base/minified/jquery-ui.min.css" /> 31
31<script src="https://kit.fontawesome.com/0208faa9a2.js" crossorigin="anonymous"></script>
31 32 33 <style> 34 .home_hero, .menu_hero{ background-image: url(https://imagedelivery.net/9lr8zq_Jvl7h6OFWqEi9IA/b2432901-6956-469e-fd9b-4cb19e93db00/public); } 35 @media 36 (-webkit-min-device-pixel-ratio: 1.25), 37 (min-resolution: 120dpi){ 38 /* Retina header*/ 39 .home_hero, .menu_hero{ background-image: url(https://imagedelivery.net/9lr8zq_Jvl7h6OFWqEi9IA/688121bc-14cf-4b8c-4aab-6eb3bc188c00/public); } 40 } 41 /*body{ } */ 42 43 44 </style> 45 46 47
47<script type="text/javascript"> 48 var UrlTag = "hunancafefallschurch"; 49 var template = 'defaultv4'; 50 var formname = 'page'; 51 var menulink = 'https://www.hunancafefallschurchva.com/order'; 52 var checkoutlink = 'https://www.hunancafefallschurchva.com/checkout'; 53 </script>
53 54
54<script> 55 /* http://writing.colin-gourlay.com/safely-using-ready-before-including-jquery/ */ 56 (function(w,d,u){w.readyQ=[];w.bindReadyQ=[];function p(x,y){if(x=="ready"){w.bindReadyQ.push(y);}else{w.readyQ.push(x);}};var a={ready:p,bind:p};w.$=w.jQuery=function(f){if(f===d||f===u){return a}else{p(f)}}})(window,document) 57 </script>
57 58 59 60<!-- Google Tag Manager -->
61<script> 62 window.dataLayer = window.dataLayer || []; 63 window.gtag = window.gtag || function gtag() { dataLayer.push(arguments); }; 64 gtag('js', new Date()); 65 66 let data = { 67 account: 'hunancafefallschurch', 68 context: 'direct', 69 templateVersion: 4, 70 rid: 66, 71 } 72 dataLayer.push({ ...data, event: 'app_data_ready' });
vendor: 337 bytes, lines 72-78
72 73 74 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 75 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 76 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 77 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 78 })(window,document,'script','dataLayer','
78GTM-K9P93M
vendor: 4 bytes, line 78
78');
79</script>
vendor: 67 bytes, lines 79-81
79 80 81 <script async src="https://www.googletagmanager.com/gtag/js?id=
81G-0X1FYFX232
vendor: 15 bytes, lines 81-83
81"></script> 82 83
83<script> 84 85 gtag('config', "G-0X1FYFX232"); 86 </script>
86 87 88 89 90 <meta name="smartbanner:title" content="Hunan Cafe Falls Church Order"> 91 <meta name="smartbanner:author" content="Online Ordering"> 92 <meta name="smartbanner:price" content="FREE"> 93 <meta name="smartbanner:price-suffix-google" content=" "> 94 <meta name="smartbanner:button" content="VIEW"> 95 <meta name="smartbanner:button-url-google" content="https://play.google.com/store/apps/details?id=com.chinesemenuonline.hunancafefallschurch"> 96 <meta name="smartbanner:enabled-platforms" content="android"> 97 <meta name="smartbanner:icon-google" content="https://ehc-west-0-bucket.s3.us-west-2.amazonaws.com/web/documents/hunancafefallschurch/"> 98 </head> 99 100 <body 101 data-event-on:customer_registered="window.location.reload()" 102 data-event-on:customer_logged_in="window.location.reload()" 103 data-event-on:customer_logged_out="window.location.reload()" 104 > 105 <a class="skip-to-content-link" href="#main">Skip to content</a> 106 <!-- Google Tag Manager (noscript) -->
vendor: 70 bytes, lines 106-107
106 107 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
107GTM-K9P93M
vendor: 85 bytes, lines 107-108
107" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 108
108<!-- End Google Tag Manager (noscript) --> 109 <!-- wrapper starts --> 110 <div class="wrapper"> 111 <section style="grid-area: header-announcements" aria-label="Announcement"> 112 <div id="upgradeBrowserBanner" class="alert alert-warning mb-0 rounded-0 py-4" style="display:none;"> 113 <div class="alert-icon"><i class="fas fa-warning" aria-hidden="true"></i></div> 114 <div> 115 <strong>We're sorry, but the Web browser you are using is not supported.</strong> <br/> Please upgrade your browser or try a different one to use this Website. Supported browsers include:<br/> 116 <ul class="list-unstyled"> 117 <li class="mt-2"><a href="https://www.google.com/chrome" target="_blank" rel="noopener noreferrer" class="simple-link"><i class="fab fa-chrome"></i> Chrome</a></li> 118 <li class="mt-2"><a href="https://www.mozilla.com/firefox/upgrade.html" target="_blank" rel="noopener noreferrer" class="simple-link"><i class="fab fa-firefox"></i> Firefox</a></li> 119 <li class="mt-2"><a href="https://www.microsoft.com/en-us/windows/microsoft-edge" target="_blank" rel="noopener noreferrer" class="simple-link"><i class="fab fa-edge"></i> Edge</a></li> 120 <li class="mt-2"><a href="http://www.apple.com/safari/" target="_blank" rel="noopener noreferrer" class="simple-link"><i class="fab fa-safari"></i> Safari</a></li> 121 </ul> 122 </div> 123</div>
124<script> 125 var ua = navigator.userAgent; 126 var match = ua.match(/Firefox\/([0-9]+)\./); 127 var firefoxVersion = match ? parseInt(match[1]) : 1000; 128 var match = ua.match(/Chrome\/([0-9]+)\./); 129 var chromeVersion = match ? parseInt(match[1]) : 1000; 130 var isIE = ua.indexOf('MSIE') > -1 || ua.indexOf('Trident') > -1; 131 var upgradeBrowserBanner = document.getElementById('upgradeBrowserBanner'); 132 var isMatchesSupported = typeof(upgradeBrowserBanner.matches)!="undefined"; 133 var isEntriesSupported = typeof(Object.entries)!="undefined"; 134 //Safari version is verified with isEntriesSupported 135 if (isIE || !isMatchesSupported || !isEntriesSupported || firefoxVersion <= 46 || chromeVersion <= 53) { 136 upgradeBrowserBanner.style.display = 'flex'; 137 } 138</script>
138 139 <!-- get closed sign if applicable. --> 140 141 142 </section> 143 144 <!-- Header Starts --> 145 <div class="headerAndWtype" style="grid-area: header"> 146 <header class="header" > 147 <div class="d-flex flex-column align-items-start flex-md-row align-items-md-center"> 148 <div class="logo_name_alt flex-shrink-0 d-flex align-items-center align-self-stretch pe-6 pe-md-0"> 149 <button class="eds_button btn btn-outline eds_menu_button" style="color: inherit" aria-label="Main menu" aria-expanded="false" data-bs-toggle="offcanvas" data-bs-target="#side-menu" aria-controls="side-menu" type="button"><span aria-hidden="true"></span><span aria-hidden="true"></span><span aria-hidden="true"></span></button> 150 <div class="d-flex flex-column align-items-center mx-auto align-items-md-start mx-md-0"> 151 <a 152 class="eds-display-text-title-xs text-truncate title-container" 153 href="https://www.hunancafefallschurchva.com" 154 aria-current="false" 155 > 156 Hunan Cafe - Falls Church </a> 157 158 <span class="eds-copy-text-s-regular text-center text-md-start address-container" title="126 W Broad St Falls Church, VA 22046"> 159 126 W Broad St Falls Church, VA 22046 </span> 160 </div> 161 </div> 162 163 164 <div class="position-absolute top-0 end-0 p-2"> 165 166 <div id="login-status" > 167 <button class="eds_button btn btn-outline px-2 text-nowrap" aria-label="Log in" style="color: currentColor" data-bs-toggle="modal" data-bs-target="#login-modal" type="button"><i class="eds_icon fa fa-lg fa-user-circle d-block d-lg-none" style="" aria-hidden="true"></i> <div class="d-none d-lg-flex align-items-baseline gap-2"><i class="eds_icon fa fa-user-circle" style="" aria-hidden="true"></i><div class="profile-container text-truncate">Log in</div></div></button> </div> 168 169 </div> 170 </div> 171 172 173 <div data-eds-id="6abeffdd7deed" 174 class="eds_side_menu offcanvas offcanvas-start " 175 tabindex="-1" 176 aria-label="Side navigation" 177 id="side-menu" data-event-on:menu_selected="this.dispatchEvent(new CustomEvent('eds.hide'))" data-event-on:category_selected="this.dispatchEvent(new CustomEvent('eds.hide'))" > 178 179 <div class="eds_side_menu-body offcanvas-body d-flex flex-column pt-0 px-0 css-scroll" style="padding-bottom: 115px; scroll-padding-bottom: 115px;"> 180 <div 181 class="eds_side_menu-close position-absolute top-0 end-0 pt-3 pe-3 " 182 style="z-index: 1" 183 > 184 <button data-bs-dismiss="offcanvas" data-bs-target="[data-eds-id="6abeffdd7deed"]" aria-label="Close" class="eds_button btn btn-outline-secondary eds_button--shape-circle" type="button"><i class="eds_icon fa fa-close" style="" aria-hidden="true"></i></button> </div> 185 186 <nav aria-labelledby="header-navigation-title"> 187 <h2 id="header-navigation-title" class="eds-display-text-title-m m-0 p-3">Pages</h2> 188<ul class="eds_list eds_list--border-none border-bottom"> 189 <li class="eds_list-item"> 190 <a class="d-block p-3 " href="https://www.hunancafefallschurchva.com" aria-current="false"> 191 Home </a> 192 </li> 193 194 <li class="eds_list-item"> 195 <a 196 class="d-block p-3 " 197 href="https://www.hunancafefallschurchva.com/order" 198 aria-current="false" 199 > 200 Menu </a> 201 </li> 202 203 204 <li class="eds_list-item"> 205 <a class="d-block p-3 active" href="https://www.hunancafefallschurchva.com/page/delivery-info" aria-current="page"> 206 Delivery Info </a> 207 </li> 208 209 <li class="eds_list-item"> 210 <a class="d-block p-3 " href="https://www.hunancafefallschurchva.com/locationinfo" aria-current="false"> 211 Location & Hours </a> 212 </li> 213 214 <li class="eds_list-item"> 215 <a class="d-block p-3 " href="https://www.hunancafefallschurchva.com/contact" aria-current="false"> 216 Contact 217 </a> 218 </li> 219</ul> 220 </nav> 221 222 223 <div class="border-bottom border-light p-3"> 224 <h2 class="eds-display-text-title-m m-0 pb-3"> 225 Restaurant Menus <span class="sr-only">2 menus.</span> 226 </h2> 227 228 229 <details 230 class="eds_list eds_list--border-none" open data-menu-id="10543" 231 data-event-on:document_ready="this.open = localStorage.getItem('menu-open-10543') !== 'false'" 232 onclick="localStorage.setItem('menu-open-10543', !this.open)" 233 > 234 <summary 235 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 " 236 data-event-on:category_pinned="(category) => $(this).toggleClass('active', category.menuId === '10543')" 237 tabindex="0" 238 > 239 <i class="eds_icon fas fa-chevron-right" style="" aria-hidden="true"></i> Main Menu<span class="sr-only"> menu, 14 categories</span> 240 </summary> 241 242 243 <a 244 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 ps-5 ps-lg-5 d-flex " 245 data-event-on:category_pinned="(category) => { 246 const isCurrent = category.id === '128672'; 247 $(this).toggleClass('active', isCurrent); 248 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 249 }" 250 href="https://www.hunancafefallschurchva.com/order/main-menu/hot-appetizers" 251 aria-current="false" 252 onclick="if (!event.ctrlKey) { 253 const currentMenuIsActive = false || $(this).closest('details').find('summary').hasClass('active'); 254 if (currentMenuIsActive) { 255 app.event.emit('category_selected', { id: '128672' }); 256 } else { 257 app.event.emit('menu_selected', { menu_id: '10543', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '128672' }); 258 } 259 }" 260 > 261 Hot Appetizers<span class="sr-only"> menu category</span> 262 <span class="ms-auto">11<span class="sr-only"> items available</span></span> 263 </a> 264 <a 265 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 ps-5 ps-lg-5 d-flex " 266 data-event-on:category_pinned="(category) => { 267 const isCurrent = category.id === '128673'; 268 $(this).toggleClass('active', isCurrent); 269 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 270 }" 271 href="https://www.hunancafefallschurchva.com/order/main-menu/soups" 272 aria-current="false" 273 onclick="if (!event.ctrlKey) { 274 const currentMenuIsActive = false || $(this).closest('details').find('summary').hasClass('active'); 275 if (currentMenuIsActive) { 276 app.event.emit('category_selected', { id: '128673' }); 277 } else { 278 app.event.emit('menu_selected', { menu_id: '10543', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '128673' }); 279 } 280 }" 281 > 282 Soups<span class="sr-only"> menu category</span> 283 <span class="ms-auto">8<span class="sr-only"> items available</span></span> 284 </a> 285 <a 286 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 ps-5 ps-lg-5 d-flex " 287 data-event-on:category_pinned="(category) => { 288 const isCurrent = category.id === '128674';
289 $(this).toggleClass('active', isCurrent); 290 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 291 }" 292 href="https://www.hunancafefallschurchva.com/order/main-menu/rice-noodle" 293 aria-current="false" 294 onclick="if (!event.ctrlKey) { 295 const currentMenuIsActive = false || $(this).closest('details').find('summary').hasClass('active'); 296 if (currentMenuIsActive) { 297 app.event.emit('category_selected', { id: '128674' }); 298 } else { 299 app.event.emit('menu_selected', { menu_id: '10543', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '128674' }); 300 } 301 }" 302 > 303 Rice & Noodle<span class="sr-only"> menu category</span> 304 <span class="ms-auto">8<span class="sr-only"> items available</span></span> 305 </a> 306 <a 307 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 ps-5 ps-lg-5 d-flex " 308 data-event-on:category_pinned="(category) => { 309 const isCurrent = category.id === '128675'; 310 $(this).toggleClass('active', isCurrent); 311 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 312 }" 313 href="https://www.hunancafefallschurchva.com/order/main-menu/mei-fun-or-chow-fun" 314 aria-current="false" 315 onclick="if (!event.ctrlKey) { 316 const currentMenuIsActive = false || $(this).closest('details').find('summary').hasClass('active'); 317 if (currentMenuIsActive) { 318 app.event.emit('category_selected', { id: '128675' }); 319 } else { 320 app.event.emit('menu_selected', { menu_id: '10543', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '128675' }); 321 } 322 }" 323 > 324 Mei Fun or Chow Fun<span class="sr-only"> menu category</span> 325 <span class="ms-auto">5<span class="sr-only"> items available</span></span> 326 </a> 327 <a 328 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 ps-5 ps-lg-5 d-flex " 329 data-event-on:category_pinned="(category) => { 330 const isCurrent = category.id === '128676'; 331 $(this).toggleClass('active', isCurrent); 332 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 333 }" 334 href="https://www.hunancafefallschurchva.com/order/main-menu/egg-foo-young" 335 aria-current="false" 336 onclick="if (!event.ctrlKey) { 337 const currentMenuIsActive = false || $(this).closest('details').find('summary').hasClass('active'); 338 if (currentMenuIsActive) { 339 app.event.emit('category_selected', { id: '128676' }); 340 } else { 341 app.event.emit('menu_selected', { menu_id: '10543', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '128676' }); 342 } 343 }" 344 > 345 Egg Foo Young<span class="sr-only"> menu category</span> 346 <span class="ms-auto">6<span class="sr-only"> items available</span></span> 347 </a> 348 <a 349 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 ps-5 ps-lg-5 d-flex " 350 data-event-on:category_pinned="(category) => { 351 const isCurrent = category.id === '128677'; 352 $(this).toggleClass('active', isCurrent); 353 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 354 }" 355 href="https://www.hunancafefallschurchva.com/order/main-menu/pork" 356 aria-current="false" 357 onclick="if (!event.ctrlKey) { 358 const currentMenuIsActive = false || $(this).closest('details').find('summary').hasClass('active'); 359 if (currentMenuIsActive) { 360 app.event.emit('category_selected', { id: '128677' }); 361 } else { 362 app.event.emit('menu_selected', { menu_id: '10543', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '128677' }); 363 } 364 }" 365 > 366 Pork<span class="sr-only"> menu category</span> 367 <span class="ms-auto">6<span class="sr-only"> items available</span></span> 368 </a> 369 <a 370 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 ps-5 ps-lg-5 d-flex " 371 data-event-on:category_pinned="(category) => { 372 const isCurrent = category.id === '128678'; 373 $(this).toggleClass('active', isCurrent); 374 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 375 }" 376 href="https://www.hunancafefallschurchva.com/order/main-menu/poultry" 377 aria-current="false" 378 onclick="if (!event.ctrlKey) { 379 const currentMenuIsActive = false || $(this).closest('details').find('summary').hasClass('active'); 380 if (currentMenuIsActive) { 381 app.event.emit('category_selected', { id: '128678' }); 382 } else { 383 app.event.emit('menu_selected', { menu_id: '10543', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '128678' }); 384 } 385 }" 386 > 387 Poultry<span class="sr-only"> menu category</span> 388 <span class="ms-auto">13<span class="sr-only"> items available</span></span> 389 </a> 390 <a 391 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 ps-5 ps-lg-5 d-flex " 392 data-event-on:category_pinned="(category) => { 393 const isCurrent = category.id === '128679'; 394 $(this).toggleClass('active', isCurrent); 395 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 396 }" 397 href="https://www.hunancafefallschurchva.com/order/main-menu/beef" 398 aria-current="false" 399 onclick="if (!event.ctrlKey) { 400 const currentMenuIsActive = false || $(this).closest('details').find('summary').hasClass('active'); 401 if (currentMenuIsActive) { 402 app.event.emit('category_selected', { id: '128679' }); 403 } else { 404 app.event.emit('menu_selected', { menu_id: '10543', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '128679' }); 405 } 406 }" 407 > 408 Beef<span class="sr-only"> menu category</span> 409 <span class="ms-auto">10<span class="sr-only"> items available</span></span> 410 </a> 411 <a 412 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 ps-5 ps-lg-5 d-flex " 413 data-event-on:category_pinned="(category) => { 414 const isCurrent = category.id === '128680'; 415 $(this).toggleClass('active', isCurrent); 416 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 417 }" 418 href="https://www.hunancafefallschurchva.com/order/main-menu/seafood" 419 aria-current="false" 420 onclick="if (!event.ctrlKey) { 421 const currentMenuIsActive = false || $(this).closest('details').find('summary').hasClass('active'); 422 if (currentMenuIsActive) { 423 app.event.emit('category_selected', { id: '128680' }); 424 } else { 425 app.event.emit('menu_selected', { menu_id: '10543', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '128680' }); 426 } 427 }" 428 > 429 Seafood<span class="sr-only"> menu category</span> 430 <span class="ms-auto">13<span class="sr-only"> items available</span></span> 431 </a> 432 <a 433 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 ps-5 ps-lg-5 d-flex " 434 data-event-on:category_pinned="(category) => { 435 const isCurrent = category.id === '128681'; 436 $(this).toggleClass('active', isCurrent); 437 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 438 }" 439 href="https://www.hunancafefallschurchva.com/order/main-menu/vegetables" 440 aria-current="false" 441 onclick="if (!event.ctrlKey) { 442 const currentMenuIsActive = false || $(this).closest('details').find('summary').hasClass('active'); 443 if (currentMenuIsActive) { 444 app.event.emit('category_selected', { id: '128681' }); 445 } else { 446 app.event.emit('menu_selected', { menu_id: '10543', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '128681' }); 447 } 448 }" 449 > 450 Vegetables<span class="sr-only"> menu category</span> 451 <span class="ms-auto">9<span class="sr-only"> items available</span></span> 452 </a> 453 <a 454 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 ps-5 ps-lg-5 d-flex " 455 data-event-on:category_pinned="(category) => { 456 const isCurrent = category.id === '128682'; 457 $(this).toggleClass('active', isCurrent); 458 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 459 }" 460 href="https://www.hunancafefallschurchva.com/order/main-menu/health-food-section" 461 aria-current="false" 462 onclick="if (!event.ctrlKey) { 463 const currentMenuIsActive = false || $(this).closest('details').find('summary').hasClass('active'); 464 if (currentMenuIsActive) { 465 app.event.emit('category_selected', { id: '128682' }); 466 } else { 467 app.event.emit('menu_selected', { menu_id: '10543', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '128682' }); 468 } 469 }" 470 > 471 Health Food Section<span class="sr-only"> menu category</span> 472 <span class="ms-auto">4<span class="sr-only"> items available</span></span> 473 </a> 474 <a 475 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 ps-5 ps-lg-5 d-flex " 476 data-event-on:category_pinned="(category) => { 477 const isCurrent = category.id === '128683'; 478 $(this).toggleClass('active', isCurrent); 479 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 480 }" 481 href="https://www.hunancafefallschurchva.com/order/main-menu/chefs-specialties" 482 aria-current="false" 483 onclick="if (!event.ctrlKey) { 484 const currentMenuIsActive = false || $(this).closest('details').find('summary').hasClass('active'); 485 if (currentMenuIsActive) { 486 app.event.emit('category_selected', { id: '128683' }); 487 } else { 488 app.event.emit('menu_selected', { menu_id: '10543', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '128683' }); 489 } 490 }" 491 > 492 Chef's Specialties<span class="sr-only"> menu category</span> 493 <span class="ms-auto">15<span class="sr-only"> items available</span></span> 494 </a> 495 <a 496 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 ps-5 ps-lg-5 d-flex " 497 data-event-on:category_pinned="(category) => { 498 const isCurrent = category.id === '168938'; 499 $(this).toggleClass('active', isCurrent); 500 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 501 }" 502 href="https://www.hunancafefallschurchva.com/order/main-menu/side-order" 503 aria-current="false" 504 onclick="if (!event.ctrlKey) { 505 const currentMenuIsActive = false || $(this).closest('details').find('summary').hasClass('active'); 506 if (currentMenuIsActive) { 507 app.event.emit('category_selected', { id: '168938' }); 508 } else { 509 app.event.emit('menu_selected', { menu_id: '10543', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '168938' }); 510 } 511 }" 512 > 513 Side Order<span class="sr-only"> menu category</span> 514 <span class="ms-auto">3<span class="sr-only"> items available</span></span> 515 </a> 516 <a 517 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 ps-5 ps-lg-5 d-flex " 518 data-event-on:category_pinned="(category) => { 519 const isCurrent = category.id === '189250'; 520 $(this).toggleClass('active', isCurrent); 521 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 522 }" 523 href="https://www.hunancafefallschurchva.com/order/main-menu/beverage" 524 aria-current="false" 525 onclick="if (!event.ctrlKey) { 526 const currentMenuIsActive = false || $(this).closest('details').find('summary').hasClass('active'); 527 if (currentMenuIsActive) { 528 app.event.emit('category_selected', { id: '189250' }); 529 } else { 530 app.event.emit('menu_selected', { menu_id: '10543', menu_description: "Please note: requests for additional items or special preparation may incur an <b>extra charge<\/b> not calculated on your online order.", category_id: '189250' }); 531 } 532 }" 533 > 534 Beverage<span class="sr-only"> menu category</span> 535 <span class="ms-auto">9<span class="sr-only"> items available</span></span> 536 </a> 537 </details> 538 539 <details 540 class="eds_list eds_list--border-none" open data-menu-id="22080" 541 data-event-on:document_ready="this.open = localStorage.getItem('menu-open-22080') !== 'false'" 542 onclick="localStorage.setItem('menu-open-22080', !this.open)" 543 > 544 <summary 545 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 " 546 data-event-on:category_pinned="(category) => $(this).toggleClass('active', category.menuId === '22080')" 547 tabindex="0" 548 > 549 <i class="eds_icon fas fa-chevron-right" style="" aria-hidden="true"></i> Lunch Menu<span class="sr-only"> menu, 6 categories</span> 550 </summary> 551 552 553 <a 554 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 ps-5 ps-lg-5 d-flex " 555 data-event-on:category_pinned="(category) => { 556 const isCurrent = category.id === '287067'; 557 $(this).toggleClass('active', isCurrent); 558 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 559 }" 560 href="https://www.hunancafefallschurchva.com/order/lunch-menu/pork-1" 561 aria-current="false" 562 onclick="if (!event.ctrlKey) { 563 const currentMenuIsActive = false || $(this).closest('details').find('summary').hasClass('active'); 564 if (currentMenuIsActive) { 565 app.event.emit('category_selected', { id: '287067' }); 566 } else { 567 app.event.emit('menu_selected', { menu_id: '22080', menu_description: "Tuesday - Saturday 11:00 am - 3:00 pm", category_id: '287067' }); 568 } 569 }" 570 > 571 Pork<span class="sr-only"> menu category</span> 572 <span class="ms-auto">6<span class="sr-only"> items available</span></span> 573 </a> 574 <a 575 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 ps-5 ps-lg-5 d-flex " 576 data-event-on:category_pinned="(category) => { 577 const isCurrent = category.id === '287068'; 578 $(this).toggleClass('active', isCurrent); 579 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 580 }" 581 href="https://www.hunancafefallschurchva.com/order/lunch-menu/poultry-1" 582 aria-current="fa
582lse" 583 onclick="if (!event.ctrlKey) { 584 const currentMenuIsActive = false || $(this).closest('details').find('summary').hasClass('active'); 585 if (currentMenuIsActive) { 586 app.event.emit('category_selected', { id: '287068' }); 587 } else { 588 app.event.emit('menu_selected', { menu_id: '22080', menu_description: "Tuesday - Saturday 11:00 am - 3:00 pm", category_id: '287068' }); 589 } 590 }" 591 > 592 Poultry<span class="sr-only"> menu category</span> 593 <span class="ms-auto">13<span class="sr-only"> items available</span></span> 594 </a> 595 <a 596 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 ps-5 ps-lg-5 d-flex " 597 data-event-on:category_pinned="(category) => { 598 const isCurrent = category.id === '287064'; 599 $(this).toggleClass('active', isCurrent); 600 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 601 }" 602 href="https://www.hunancafefallschurchva.com/order/lunch-menu/beef-1" 603 aria-current="false" 604 onclick="if (!event.ctrlKey) { 605 const currentMenuIsActive = false || $(this).closest('details').find('summary').hasClass('active'); 606 if (currentMenuIsActive) { 607 app.event.emit('category_selected', { id: '287064' }); 608 } else { 609 app.event.emit('menu_selected', { menu_id: '22080', menu_description: "Tuesday - Saturday 11:00 am - 3:00 pm", category_id: '287064' }); 610 } 611 }" 612 > 613 Beef<span class="sr-only"> menu category</span> 614 <span class="ms-auto">10<span class="sr-only"> items available</span></span> 615 </a> 616 <a 617 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 ps-5 ps-lg-5 d-flex " 618 data-event-on:category_pinned="(category) => { 619 const isCurrent = category.id === '287065'; 620 $(this).toggleClass('active', isCurrent); 621 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 622 }" 623 href="https://www.hunancafefallschurchva.com/order/lunch-menu/seafood-1" 624 aria-current="false" 625 onclick="if (!event.ctrlKey) { 626 const currentMenuIsActive = false || $(this).closest('details').find('summary').hasClass('active'); 627 if (currentMenuIsActive) { 628 app.event.emit('category_selected', { id: '287065' }); 629 } else { 630 app.event.emit('menu_selected', { menu_id: '22080', menu_description: "Tuesday - Saturday 11:00 am - 3:00 pm", category_id: '287065' }); 631 } 632 }" 633 > 634 Seafood<span class="sr-only"> menu category</span> 635 <span class="ms-auto">11<span class="sr-only"> items available</span></span> 636 </a> 637 <a 638 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 ps-5 ps-lg-5 d-flex " 639 data-event-on:category_pinned="(category) => { 640 const isCurrent = category.id === '287066'; 641 $(this).toggleClass('active', isCurrent); 642 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 643 }" 644 href="https://www.hunancafefallschurchva.com/order/lunch-menu/vegetables-1" 645 aria-current="false" 646 onclick="if (!event.ctrlKey) { 647 const currentMenuIsActive = false || $(this).closest('details').find('summary').hasClass('active'); 648 if (currentMenuIsActive) { 649 app.event.emit('category_selected', { id: '287066' }); 650 } else { 651 app.event.emit('menu_selected', { menu_id: '22080', menu_description: "Tuesday - Saturday 11:00 am - 3:00 pm", category_id: '287066' }); 652 } 653 }" 654 > 655 Vegetables<span class="sr-only"> menu category</span> 656 <span class="ms-auto">7<span class="sr-only"> items available</span></span> 657 </a> 658 <a 659 class="eds_list-item eds-copy-text-l-regular list-unstyled rounded-3 mb-1 px-3 px-lg-4 py-2p5 ps-5 ps-lg-5 d-flex " 660 data-event-on:category_pinned="(category) => { 661 const isCurrent = category.id === '304002'; 662 $(this).toggleClass('active', isCurrent); 663 this.setAttribute('aria-current', isCurrent ? 'page' : 'false'); 664 }" 665 href="https://www.hunancafefallschurchva.com/order/lunch-menu/luncheon-special" 666 aria-current="false" 667 onclick="if (!event.ctrlKey) { 668 const currentMenuIsActive = false || $(this).closest('details').find('summary').hasClass('active'); 669 if (currentMenuIsActive) { 670 app.event.emit('category_selected', { id: '304002' }); 671 } else { 672 app.event.emit('menu_selected', { menu_id: '22080', menu_description: "Tuesday - Saturday 11:00 am - 3:00 pm", category_id: '304002' }); 673 } 674 }" 675 > 676 Luncheon Special<span class="sr-only"> menu category</span> 677 <span class="ms-auto">20<span class="sr-only"> items available</span></span> 678 </a> 679 </details> 680 681 </div> 682 683 684 <div class="restaurant-info border-top border-light p-3 position-absolute bottom-0 left-0 w-100"> 685 <h2 class="eds-display-text-title-xs mb-0 me-2 pe-4"><span class="sr-only">Location: You're currently ordering from </span>Hunan Cafe - Falls Church</h2> 686 687 <address class="eds-copy-text-s-regular mb-0"> 688 126 W Broad St Falls Church, VA 22046 </address> 689 </div> 690 691 <div class="eds-copy-text-s-regular p-3 d-lg-none"> 692 <h2 class="eds-display-text-title-m m-0 pb-3">Additional info</h2> 693 <ul class="list-unstyled" aria-label="App store links"> 694 <li><a href="https://play.google.com/store/apps/details?id=com.chinesemenuonline.hunancafefallschurch"><span class="sr-only">Download from the Google Play Store</span><img src="/web/default4.0/images/google-play-badge.svg" alt="" aria-hidden="true"></a></li> 695 </ul> 696 697 <ul class="list-unstyled d-flex gap-2" aria-label="Social network links"> 698 <li><a href="https://www.yelp.com/biz/hunan-cafe-falls-church?start=80" target="new" title="Opens in new tab" class="icon" title="Yelp"><i class="fab fa-yelp"></i><span class="sr-only">Yelp</span></a></li> 699 <li><a href="https://www.tripadvisor.com/Restaurant_Review-g57722-d5049599-Reviews-Hunan_Cafe-Falls_Church_Virginia.html" target="new" title="Opens in new tab" class="icon" title="TripAdvisor"><i class="fak fa-tripadvisor"></i><span class="sr-only">TripAdvisor</span></a></li> 700 </ul> 701 702<div>© 2026 Online Ordering by <a href="http://chinesemenuonline.com">Chinese Menu Online</a></div> 703 <div>Discover the best Chinese restaurants with <a href="https://www.springroll.com" target="_blank" title="Opens in new tab" >Springroll</a></div> 704 705<ul class="list-unstyled mb-0 pt-3" aria-label="Legal and support"> 706 <li><a href="https://www.hunancafefallschurchva.com/reportbug">Technical Support</a></li> 707 <li><a href="https://www.hunancafefallschurchva.com/privacy">Privacy Policy</a></li> 708 <li><a href="https://www.hunancafefallschurchva.com/tos">Terms of Service</a></li> 709 <li><a href="https://www.hunancafefallschurchva.com/accessibility">Accessibility</a></li> 710</ul> 711
712This site is protected by reCAPTCHA and <a href="https://policies.google.com/privacy">Google's Privacy Policy</a> and <a href="https://policies.google.com/terms">Google's Terms of Service</a> apply. 713 </div> </div> 714 715
715<script> 716 { 717 const container = document.querySelector('[data-eds-id="6abeffdd7deed"]'); 718 719 ['show', 'hide', 'toggle', 'dispose'].forEach((eventName) => { 720 container.addEventListener(`eds.${eventName}`, (e) => { 721 bootstrap.Offcanvas.getOrCreateInstance(container)[eventName]( 722 ...(Array.isArray(e.detail) ? e.detail : [e.detail]) 723 ); 724 }); 725 }); 726 } 727 </script>
727 728 </div> 729 730 </header> 731 </div> 732 733 <aside class="container p-0" style="grid-area: hero" aria-labelledby="hero-section-title"> 734 <section class="hero"> 735 <div class="menu_hero backbgbox position-relative"> 736 <div class="logo"> 737 <a class="logo-image" href="https://www.hunancafefallschurchva.com" aria-current="false" > 738 <img 739 src="https://imagedelivery.net/9lr8zq_Jvl7h6OFWqEi9IA/a4c7938a-acd0-4ad0-19b2-b9b7e1845b00/public" 740 srcset="https://imagedelivery.net/9lr8zq_Jvl7h6OFWqEi9IA/a4c7938a-acd0-4ad0-19b2-b9b7e1845b00/public 1x, https://imagedelivery.net/9lr8zq_Jvl7h6OFWqEi9IA/a4c7938a-acd0-4ad0-19b2-b9b7e1845b00/public 2x" alt="Go to Home" 741 onerror="this.closest('.logo').style.setProperty('display', 'none', 'important')" 742 /> 743 </a> 744 </div> 745 </div> 746 747 <div class="p-3"> 748 <div class="pb-1"> 749 <h1 id="hero-section-title" class="eds-display-text-title-s m-0 p-0">Hunan Cafe - Falls Church</h1> 750 </div> 751 752 <div class="d-sm-flex align-items-baseline"> 753 <div class="mt-2"> 754 755 <span 756 class="eds_label eds_label--variant-success eds-interface-text-m-bold me-1 text-nowrap" 757 > 758 Open </span> 759 760 11:00AM - 9:30PM </div> 761 762 <div class="d-flex gap-2 ms-sm-auto mt-2"> 763 764 <a 765 class="eds_button btn btn-outline-secondary btn-sm col text-nowrap" 766 href="https://www.hunancafefallschurchva.com/locationinfo?lid=8285" 767 > 768 <i class="eds_icon fa fa-info-circle" style="" aria-hidden="true"></i> Store info </a> 769 770 771 772 <a 773 class="eds_button btn btn-outline-secondary btn-sm col d-lg-none text-nowrap" 774 href="tel:(703) 533-8704" 775 > 776 <i class="eds_icon fa fa-phone" style="" aria-hidden="true"></i> Call us </a> 777 778 779 </div> 780 </div> 781 </div> 782 </section> 783 </aside> 784 785 786 787 <div class="container" style="grid-area: messages"> 788 </div> 789 <!-- Header ends --> 790<main class="main_content" id="main"> 791 <div class="container locationinfo mt10"> 792 <div class="custom-content"> 793 <p>We deliver within a 3 mile radius of our restaurant.</p> 794 795<p>Minimum delivery order: $20</p> 796 797<p>Delivery fee: $2</p> 798 799<p> </p> 800 801<p><em><span style="font-size:12px;"><span style="color:#B22222;">Delivery due time quoted at the time of ordering is approximate only and may vary. The restaurant will make every effort to deliver within the time stated. If the food is not delivered within the estimated delivery time quoted, please contact the restaurant by phone. You must notify the restaurant immediately if you decide to cancel your order. If the restaurant refuses cancellation because preparation of food delivery has been completed and/or delivery personnel has already been dispatched, it may not be cancelled and refunded.</span></span></em></p></div> </div> 802</main> 803 804<footer class="footer bg-white" style="grid-area: footer"> 805 <div class="container"> 806 <div class="social_wrapper"> 807 <div class="social_links"> 808 <ul class="d-flex align-items-start"> 809 <li> 810 <a class="icon" href="https://www.yelp.com/biz/hunan-cafe-falls-church?start=80" target="_blank" title="Yelp (opens in new tab)"> 811 <span class="sr-only">Yelp</span> 812 <i class="eds_icon fab fa-yelp" style="" aria-hidden="true"></i> </a> 813 </li> 814 <li> 815 <a class="icon" href="https://www.tripadvisor.com/Restaurant_Review-g57722-d5049599-Reviews-Hunan_Cafe-Falls_Church_Virginia.html" target="_blank" title="TripAdvisor (opens in new tab)"> 816 <span class="sr-only">TripAdvisor</span> 817 <img class="eds_icon fab fa-tripadvisor" style="" aria-hidden="true" src="/web/website/assets/svg/icons/social/tripadvisor.svg" alt="Tripadvisor" /> </a> 818 </li> 819 </ul> 820 </div> 821 <div class="d_app"> 822 <ul> 823 <li><a href="https://play.google.com/store/apps/details?id=com.chinesemenuonline.hunancafefallschurch"><span class="sr-only">Download from the Google Play Store</span><img src="/web/default4.0/images/google-play-badge.svg" alt="Get it on Google Play" aria-hidden="true"></a></li> 824 </ul> 825 </div> 826 </div> 827 828 <div class="d-flex flex-wrap justify-content-between gap-2 mt-2" style="--bs-link-color: var(--bs-body-color); --bs-link-hover-color: var(--bs-gray-dark)"> 829 <ul class="list-unstyled d-flex gap-3 mb-0 eds-interface-text-l-regular"> 830 <li><a class="text-decoration-none" href="https://www.hunancafefallschurchva.com" aria-current="false">Home</a></li> 831 <li><a class="text-decoration-none" href="https://www.hunancafefallschurchva.com/order" aria-current="false">Menu</a></li> 832 <li> 833 <a class="text-decoration-none" href="https://www.hunancafefallschurchva.com/page/delivery-info" aria-current="page">Delivery Info</a> 834 </li> 835 <li><a class="text-decoration-none" href="https://www.hunancafefallschurchva.com/locationinfo" aria-current="false">Location & Hours</a></li> 836 <li><a class="text-decoration-none" href="https://www.hunancafefallschurchva.com/contact" aria-current="false">Contact</a></li> 837 </ul> 838 839 <ul class="list-unstyled d-flex mb-0 eds-interface-text-m-regular"> 840 <li class="bullet-separated"><a href="https://www.hunancafefallschurchva.com/reportbug" class="errorLink">Technical Support</a></li> 841 <li class="bullet-separated"><a href="https://www.hunancafefallschurchva.com/privacy">Privacy Policy</a></li> 842 <li class="bullet-separated"><a href="https://www.hunancafefallschurchva.com/tos">Terms of Service</a></li> 843 <li class="bullet-separated"><a href="https://www.hunancafefallschurchva.com/accessibility">Accessibility</a></li> 844 </ul> 845 </div> 846 847 <div class="d-flex justify-content-between gap-3 border-top mt-3 pt-3" style="--bs-link-color: var(--bs-body-color); --bs-link-hover-color: var(--bs-gray-dark)"> 848 <p class="eds-copy-text-m-regular"> 849 This site is protected by reCAPTCHA and <a href="https://policies.google.com/privacy">Google's Privacy Policy</a> and <a href="https://policies.google.com/terms">Google's Terms of Service</a> apply. 850 </p> 851 852 <p class="eds-copy-text-m-regular text-end"> 853 © 2026 Online Ordering by <a href="http://chinesemenuonline.com">Chinese Menu Online</a> <br>Discover the best Chinese restaurants with <a href="https://www.springroll.com" target="_blank" title="Opens in new tab" >Springroll</a> </p> 854 </div> 855 </div> 856</footer> 857<!-- footer ends --> 858 859 860</div> 861<!-- wrapper ends --> 862 863 864 865 <div 866 data-eds-id="6abeffdd7fb60" 867 class="eds_dialog modal fade " 868 tabindex="-1" 869 aria-labelledby="eds-dialog-title-6abeffdd7fb60" 870 aria-hidden="true" 871 id="forgot-password-modal" >
872 <div class="modal-dialog modal-dialog-centered modal-fullscreen-sm-down modal-md"> 873 <div class="modal-content "> 874 875 <div class="modal-header d-flex justify-content-between gap-3 eds-display-text-title-m "> 876 <h2 id="eds-dialog-title-6abeffdd7fb60" class="eds_dialog-title modal-title eds-display-text-title-m pe-5" style="max-width: 100%"> 877 Forgot Password </h2> 878 879 <button class="eds_button btn btn-outline-secondary btn-lg eds_button--shape-circle position-absolute top-0 end-0 border d-sm-none" style="width: 3rem; height: 3rem; margin-top: 6px; margin-right: 6px" data-bs-dismiss="modal" aria-label="Close" type="button"><i class="eds_icon fa fa-close" style="" aria-hidden="true"></i></button> </div> 880 881 <div class="eds_dialog-body modal-body css-scroll eds-copy-text-l-regular "> 882 <form 883 id="forgot-password-form" 884 name="forgot-password" 885 data-async-on-submit 886 method="post" 887 action="https://www.hunancafefallschurchva.com/auth/forgotpassword" 888 data-async-block="#forgot-password-modal .modal-content" 889 data-async-target="#forgot-password-modal .eds_dialog-body" 890 data-async-recaptcha 891 novalidate 892 > 893 894 895 <label 896 data-eds-id="6abeffdd7fb10" 897 class="eds_formfield eds_formfield--size-medium eds_formfield--variant-primary eds-copy-text-m-regular w-100 mb-3" 898 > 899 <div class="eds_formfield-label"> 900 Your email <span aria-hidden="true">*</span> </div> 901 902 <div class="position-relative d-flex flex-column"> 903 <div class="eds_formfield-error eds-interface-text-m-bold" style="order: 1000"></div> 904 905 <input 906 type="email" 907 class="eds-copy-text-l-regular " 908 placeholder=" " name="email" autocomplete="email" required value="" /> 909 910 911 912 <i class="eds_icon fa eds_formfield-validation" style="" aria-hidden="true"></i> 913 </div> 914 915 916
916<script> 917 { 918 const container = document.querySelector('[data-eds-id="6abeffdd7fb10"]'); 919 const input = container.querySelector('input, textarea, select'); 920 const error = container.querySelector('.eds_formfield-error'); 921 922 923 input.addEventListener('eds.validation.reset', () => { 924 input.removeAttribute('data-validation'); 925 input.setCustomValidity(''); 926 error.innerHTML = ''; 927 }); 928 929 input.addEventListener('eds.validation.hide', () => { 930 input.removeAttribute('data-validation'); 931 }); 932 933 input.addEventListener('eds.validation.success', (e) => { 934 input.setCustomValidity(''); 935 input.setAttribute('data-validation', ''); 936 error.innerHTML = ''; 937 }); 938 939 input.addEventListener('eds.validation.warning', (e) => { 940 input.setCustomValidity(''); 941 input.setAttribute('data-validation', ''); 942 error.innerHTML = e.detail; 943 }); 944 945 input.addEventListener('eds.validation.error', (e) => { 946 input.setCustomValidity(e.detail); 947 input.checkValidity(); input.setAttribute('data-validation', ''); 948 }); 949 950 input.addEventListener('invalid', (e) => { 951 error.innerHTML = input.validationMessage; 952 }); 953 954 } 955 </script>
955 956 </label> 957 958 959 <button class="eds_button btn btn-primary w-100 mb-3" type="submit" form="forgot-password-form">Reset password</button> 960 <div class="text-center"> 961 <button data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#login-modal" class="eds_button btn btn-link btn-text-link border-0 p-0 text-inherit text-decoration-none" type="button">< Back</button> </div> 962 </form> </div> 963 964 965 </div> 966 </div> 967 968
968<script> 969 { 970 const container = document.querySelector('[data-eds-id="6abeffdd7fb60"]'); 971 let edsMethodsDisabled = false; 972 973 ['show', 'hide', 'toggle', 'dispose'].forEach((eventName) => { 974 container.addEventListener(`eds.${eventName}`, (e) => { 975 if (edsMethodsDisabled) return; 976 977 bootstrap.Modal.getOrCreateInstance(container)[eventName]( 978 ...(Array.isArray(e.detail) ? e.detail : [e.detail]) 979 ); 980 }); 981 }); 982 983 ['show', 'shown', 'hide', 'hidden'].forEach((eventName) => { 984 container.addEventListener(`${eventName}.bs.modal`, (e) => { 985 if (edsMethodsDisabled) return; 986 987 edsMethodsDisabled = true; // Prevent infinite loop of triggering events 988 container.dispatchEvent(new CustomEvent(`eds.${eventName}`)); 989 edsMethodsDisabled = false; 990 }); 991 }); 992 993 994 ['show.bs.modal', 'shown.bs.modal'].forEach((eventName) => { 995 container.addEventListener(eventName, () => { 996 const autofocusInput = container.querySelector('[autofocus]'); 997 if (autofocusInput) { 998 container.style.display = 'block'; 999 autofocusInput.focus(); 1000 } 1001 }); 1002 }); 1003 1004 } 1005 </script>
1005 1006 </div> 1007 1008 1009 <div 1010 data-eds-id="6abeffdd7fedb" 1011 class="eds_dialog modal fade " 1012 tabindex="-1" 1013 aria-labelledby="eds-dialog-title-6abeffdd7fedb" 1014 aria-hidden="true" 1015 id="login-modal" > 1016 <div class="modal-dialog modal-dialog-centered modal-fullscreen-sm-down modal-md"> 1017 <div class="modal-content "> 1018 1019 <div class="modal-header d-flex justify-content-between gap-3 eds-display-text-title-m "> 1020 <h2 id="eds-dialog-title-6abeffdd7fedb" class="eds_dialog-title modal-title eds-display-text-title-m pe-5" style="max-width: 100%"> 1021 Log in </h2> 1022 1023 <button class="eds_button btn btn-outline-secondary btn-lg eds_button--shape-circle position-absolute top-0 end-0 border d-sm-none" style="width: 3rem; height: 3rem; margin-top: 6px; margin-right: 6px" data-bs-dismiss="modal" aria-label="Close" type="button"><i class="eds_icon fa fa-close" style="" aria-hidden="true"></i></button> </div> 1024 1025 <div class="eds_dialog-body modal-body css-scroll eds-copy-text-l-regular "> 1026 <form 1027 id="login-form" 1028 name="login" 1029 data-async-on-submit 1030 method="post" 1031 action="https://www.hunancafefallschurchva.com/auth" 1032 data-async-block="#login-modal .modal-content" 1033 data-async-target="#login-modal .eds_dialog-body" 1034 data-async-then="document.querySelector('#login-modal').dispatchEvent(new CustomEvent('eds.hide'))" 1035 data-async-recaptcha 1036 novalidate 1037 > 1038 1039 1040 <label 1041 data-eds-id="6abeffdd7fd9b" 1042 class="eds_formfield eds_formfield--size-medium eds_formfield--variant-primary eds-copy-text-m-regular w-100 mb-3" 1043 > 1044 <div class="eds_formfield-label"> 1045 Your email <span aria-hidden="true">*</span> </div> 1046 1047 <div class="position-relative d-flex flex-column"> 1048 <div class="eds_formfield-error eds-interface-text-m-bold" style="order: 1000"></div> 1049 1050 <input 1051 type="email" 1052 class="eds-copy-text-l-regular " 1053 placeholder=" " name="email" autocomplete="username" required value="" /> 1054 1055 1056 1057 <i class="eds_icon fa eds_formfield-validation" style="" aria-hidden="true"></i> 1058 </div> 1059 1060 1061
1061<script> 1062 { 1063 const container = document.querySelector('[data-eds-id="6abeffdd7fd9b"]'); 1064 const input = container.querySelector('input, textarea, select'); 1065 const error = container.querySelector('.eds_formfield-error'); 1066 1067 1068 input.addEventListener('eds.validation.reset', () => { 1069 input.removeAttribute('data-validation'); 1070 input.setCustomValidity(''); 1071 error.innerHTML = ''; 1072 }); 1073 1074 input.addEventListener('eds.validation.hide', () => { 1075 input.removeAttribute('data-validation'); 1076 }); 1077 1078 input.addEventListener('eds.validation.success', (e) => { 1079 input.setCustomValidity(''); 1080 input.setAttribute('data-validation', ''); 1081 error.innerHTML = ''; 1082 }); 1083 1084 input.addEventListener('eds.validation.warning', (e) => { 1085 input.setCustomValidity(''); 1086 input.setAttribute('data-validation', ''); 1087 error.innerHTML = e.detail; 1088 }); 1089 1090 input.addEventListener('eds.validation.error', (e) => { 1091 input.setCustomValidity(e.detail); 1092 input.checkValidity(); input.setAttribute('data-validation', ''); 1093 }); 1094 1095 input.addEventListener('invalid', (e) => { 1096 error.innerHTML = input.validationMessage; 1097 }); 1098 1099 } 1100 </script>
1100 1101 </label> 1102 1103 1104 1105 <label 1106 data-eds-id="6abeffdd7fdbd" 1107 class="eds_formfield eds_formfield--size-medium eds_formfield--variant-primary eds-copy-text-m-regular w-100 mb-2" 1108 > 1109 <div class="eds_formfield-label"> 1110 Your password <span aria-hidden="true">*</span> </div> 1111 1112 <div class="position-relative d-flex flex-column"> 1113 <div class="eds_formfield-error eds-interface-text-m-bold" style="order: 1000"></div> 1114 1115 <input 1116 type="password" 1117 class="eds-copy-text-l-regular pe-6" 1118 data-event-on:toggle_password_6abeffdd7fdbd="(shown) => $(this).attr('type', shown ? 'text' : 'password')" placeholder=" " name="password" autocomplete="current-password" required value="" /> 1119 1120 1121 <button class="eds_button btn btn-outline eds_formfield-toggle_password position-absolute end-0 px-2" style="--bs-btn-bg: transparent" title="Show password" aria-label="Show password" onclick="app.event.emit('toggle_password_6abeffdd7fdbd', !$(this).data('password-shown'))" data-event-on:toggle_password_6abeffdd7fdbd="(shown) => $(this).data('password-shown', shown).attr('title', shown ? 'Hide password' : 'Show password').attr('aria-label', shown ? 'Hide password' : 'Show password')" type="button"><i class="eds_icon fas fa-sm fa-eye" style="" aria-hidden="true" data-event-on:toggle_password_6abeffdd7fdbd="(shown) => this.hidden = shown"></i> <i class="eds_icon fas fa-sm fa-eye-slash" style="" aria-hidden="true" data-event-on:toggle_password_6abeffdd7fdbd="(shown) => this.hidden = !shown" hidden></i></button> 1122 <i class="eds_icon fa eds_formfield-validation" style="" aria-hidden="true"></i> 1123 </div> 1124 1125 1126
1126<script> 1127 { 1128 const container = document.querySelector('[data-eds-id="6abeffdd7fdbd"]'); 1129 const input = container.querySelector('input, textarea, select'); 1130 const error = container.querySelector('.eds_formfield-error'); 1131 1132 1133 input.addEventListener('eds.validation.reset', () => { 1134 input.removeAttribute('data-validation'); 1135 input.setCustomValidity(''); 1136 error.innerHTML = ''; 1137 }); 1138 1139 input.addEventListener('eds.validation.hide', () => { 1140 input.removeAttribute('data-validation'); 1141 }); 1142 1143 input.addEventListener('eds.validation.success', (e) => { 1144 input.setCustomValidity(''); 1145 input.setAttribute('data-validation', ''); 1146 error.innerHTML = ''; 1147 }); 1148 1149 input.addEventListener('eds.validation.warning', (e) => { 1150 input.setCustomValidity(''); 1151 input.setAttribute('data-validation', ''); 1152 error.innerHTML = e.detail; 1153 }); 1154 1155 input.addEventListener('eds.validation.error', (e) => { 1156 input.setCustomValidity(e.detail); 1157 input.checkValidity(); input.setAttribute('data-validation', ''); 1158 }); 1159 1160 input.addEventListener('invalid', (e) => { 1161 error.innerHTML = input.validationMessage; 1162 }); 1163 1164 } 1165 </script>
1165 1166 </label> 1167 1168 1169 <div class="text-end mb-3"> 1170 <button data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#forgot-password-modal" class="eds_button btn btn-link btn-text-link border-0 p-0 text-inherit text-decoration-none" type="button">Forgot your password?</button> </div> 1171 1172 1173 <button class="eds_button btn btn-primary w-100 mb-3" type="submit">Log in</button> 1174 <div class="d-flex align-items-center mb-3"><hr class="flex-grow-1"><span class="mx-3 text-muted eds-interface-text-s-regular">OR</span><hr class="flex-grow-1"></div> <div class="google-signin-container text-center mb-2"> 1175 <a href="https://sso.onlineorderingsecure.com/auth/google/redirect?return_to=https%3A%2F%2Fwww.hunancafefallschurchva.com%2Fauth%2Fgoogle&redirect=%2Fpage%2Fdelivery-info" class="btn btn-outline-secondary w-100 eds_button eds_button--shape-default d-flex align-items-center justify-content-center gap-2" onclick="var url = new URL(this.href); url.searchParams.set('redirect', window.location.pathname + window.location.search); this.href = url.toString();"> 1176 <svg width="18" height="18" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg"><path d="M17.64 9.2c0-.637-.057-1.251-.164-1.84H9v3.481h4.844a4.14 4.14 0 0 1-1.796 2.716v2.259h2.908c1.702-1.567 2.684-3.875 2.684-6.615Z" fill="#4285F4"/><path d="M9 18c2.43 0 4.467-.806 5.956-2.18l-2.908-2.259c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H.957v2.332A8.997 8.997 0 0 0 9 18Z" fill="#34A853"/><path d="M3.964 10.71A5.41 5.41 0 0 1 3.682 9c0-.593.102-1.17.282-1.71V4.958H.957A8.997 8.997 0 0 0 0 9c0 1.452.348 2.827.957 4.042l3.007-2.332Z" fill="#FBBC05"/><path d="M9 3.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C13.463.891 11.426 0 9 0A8.997 8.997 0 0 0 .957 4.958L3.964 6.29C4.672 4.163 6.656 2.58 9 2.58Z" fill="#EA4335"/></svg> 1177 Continue with Google 1178 </a> 1179 </div> 1180 <div class="apple-signin-container text-center mb-2"> 1181 <a href="https://sso.onlineorderingsecure.com/auth/apple/redirect?return_to=https%3A%2F%2Fwww.hunancafefallschurchva.com%2Fauth%2Fapple&redirect=%2Fpage%2Fdelivery-info" class="btn btn-outline-secondary w-100 eds_button eds_button--shape-default d-flex align-items-center justify-content-center gap-2" onclick="var url = new URL(this.href); url.searchParams.set('redirect', window.location.pathname + window.location.search); this.href = url.toString();"> 1182 <svg width="18" height="18" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg"><path d="M15.1 6.2c-.1.1-2.1 1.2-2.1 3.7 0 2.9 2.5 3.9 2.6 3.9 0 0 0 .1-.4 1.3-.6 1.5-1.7 3-2.9 3-1.3 0-1.6-.7-3.1-.7s-2 .8-3.1.8c-1.2 0-2.2-1.3-3-2.8C2 13.3 1.4 10.9 1.4 8.6c0-3.7 2.4-5.6 4.7-5.6 1.2 0 2.3.8 3 .8.7 0 1.9-.9 3.3-.9.5 0 2.4.1 3.7 1.3zM11.7 1.5c.6-.7 1-1.7 1-2.7 0-.1 0-.3 0-.4-1 0-2.1.6-2.8 1.4-.6.6-1.1 1.6-1.1 2.6 0 .2 0 .3 0 .4.1 0 .2 0 .3 0 .9 0 1.9-.6 2.6-1.3z" fill="currentColor"/></svg> 1183 Continue with Apple 1184 </a> 1185 </div> 1186 <small class="d-block mt-2 eds-interface-text-s-regular"> 1187 By continuing, you agree to our <a href="https://www.hunancafefallschurchva.com/tos" target="_blank" rel="noopener" title="Opens in new tab">Terms of Service</a> & <a href="https://www.hunancafefallschurchva.com/privacy" target="_blank" rel="noopener" title="Opens in new tab">Privacy Policy</a> and consent to receive automated promotional emails. See our <a href="https://www.hunancafefallschurchva.com/privacy#section-7-7" target="_blank" rel="noopener" title="Opens in new tab">Notice of Financial Incentive</a> regarding how we use your data for rewards and offers. 1188 </small> 1189 1190 <div class="text-center mt-3"> 1191 Don't have an account? 1192 <button data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#register-modal" class="eds_button btn btn-link btn-text-link border-0 p-0 text-inherit text-decoration-none" type="button">Sign up</button> </div> 1193 </form> </div> 1194 1195 1196 </div> 1197 </div> 1198 1199
1199<script> 1200 { 1201 const container = document.querySelector('[data-eds-id="6abeffdd7fedb"]'); 1202 let edsMethodsDisabled = false; 1203 1204 ['show', 'hide', 'toggle', 'dispose'].forEach((eventName) => { 1205 container.addEventListener(`eds.${eventName}`, (e) => { 1206 if (edsMethodsDisabled) return; 1207 1208 bootstrap.Modal.getOrCreateInstance(container)[eventName]( 1209 ...(Array.isArray(e.detail) ? e.detail : [e.detail]) 1210 ); 1211 }); 1212 }); 1213 1214 ['show', 'shown', 'hide', 'hidden'].forEach((eventName) => { 1215 container.addEventListener(`${eventName}.bs.modal`, (e) => { 1216 if (edsMethodsDisabled) return; 1217 1218 edsMethodsDisabled = true; // Prevent infinite loop of triggering events 1219 container.dispatchEvent(new CustomEvent(`eds.${eventName}`)); 1220 edsMethodsDisabled = false; 1221 }); 1222 }); 1223 1224 1225 ['show.bs.modal', 'shown.bs.modal'].forEach((eventName) => { 1226 container.addEventListener(eventName, () => { 1227 const autofocusInput = container.querySelector('[autofocus]'); 1228 if (autofocusInput) { 1229 container.style.display = 'block'; 1230 autofocusInput.focus(); 1231 } 1232 }); 1233 }); 1234 1235 } 1236 </script>
1236 1237 </div> 1238 1239 1240 <div 1241 data-eds-id="6abeffdd801de" 1242 class="eds_dialog modal fade " 1243 tabindex="-1" 1244 aria-labelledby="eds-dialog-title-6abeffdd801de" 1245 aria-hidden="true" 1246 id="register-modal" > 1247 <div class="modal-dialog modal-dialog-centered modal-fullscreen-sm-down modal-md"> 1248 <div class="modal-content "> 1249 1250 <div class="modal-header d-flex justify-content-between gap-3 eds-display-text-title-m "> 1251 <h2 id="eds-dialog-title-6abeffdd801de" class="eds_dialog-title modal-title eds-display-text-title-m pe-5" style="max-width: 100%"> 1252 Sign up </h2> 1253 1254 <button class="eds_button btn btn-outline-secondary btn-lg eds_button--shape-circle position-absolute top-0 end-0 border d-sm-none" style="width: 3rem; height: 3rem; margin-top: 6px; margin-right: 6px" data-bs-dismiss="modal" aria-label="Close" type="button"><i class="eds_icon fa fa-close" style="" aria-hidden="true"></i></button> </div> 1255 1256 <div class="eds_dialog-body modal-body css-scroll eds-copy-text-l-regular p-0"> 1257 <form 1258 id="register-form" 1259 name="register" 1260 data-async-on-submit 1261 method="post" 1262 action="https://www.hunancafefallschurchva.com/auth/register" 1263 data-async-block="#register-modal .modal-content" 1264 data-async-target="#register-modal .eds_dialog-body" 1265 data-async-then="document.querySelector('#register-modal').dispatchEvent(new CustomEvent('eds.hide'))" 1266 data-async-recaptcha 1267 novalidate 1268 > 1269 1270 <div class="p-3 pt-0"> 1271 1272 <label 1273 data-eds-id="6abeffdd8003c" 1274 class="eds_formfield eds_formfield--size-medium eds_formfield--variant-primary eds-copy-text-m-regular w-100 mb-2p5" 1275 > 1276 <div class="eds_formfield-label"> 1277 First name <span aria-hidden="true">*</span> </div> 1278 1279 <div class="position-relative d-flex flex-column"> 1280 <div class="eds_formfield-error eds-interface-text-m-bold" style="order: 1000"></div> 1281 1282 <input 1283 type="text" 1284 class="eds-copy-text-l-regular " 1285 placeholder=" " name="firstname" autocomplete="given-name" required value="" /> 1286 1287 1288 1289 <i class="eds_icon fa eds_formfield-validation" style="" aria-hidden="true"></i> 1290 </div> 1291 1292 1293
1293<script> 1294 { 1295 const container = document.querySelector('[data-eds-id="6abeffdd8003c"]'); 1296 const input = container.querySelector('input, textarea, select'); 1297 const error = container.querySelector('.eds_formfield-error'); 1298 1299 1300 input.addEventListener('eds.validation.reset', () => { 1301 input.removeAttribute('data-validation'); 1302 input.setCustomValidity(''); 1303 error.innerHTML = ''; 1304 }); 1305 1306 input.addEventListener('eds.validation.hide', () => { 1307 input.removeAttribute('data-validation'); 1308 }); 1309 1310 input.addEventListener('eds.validation.success', (e) => { 1311 input.setCustomValidity(''); 1312 input.setAttribute('data-validation', ''); 1313 error.innerHTML = ''; 1314 }); 1315 1316 input.addEventListener('eds.validation.warning', (e) => { 1317 input.setCustomValidity(''); 1318 input.setAttribute('data-validation', ''); 1319 error.innerHTML = e.detail; 1320 }); 1321 1322 input.addEventListener('eds.validation.error', (e) => { 1323 input.setCustomValidity(e.detail); 1324 input.checkValidity(); input.setAttribute('data-validation', ''); 1325 }); 1326 1327 input.addEventListener('invalid', (e) => { 1328 error.innerHTML = input.validationMessage; 1329 }); 1330 1331 } 1332 </script>
1332 1333 </label> 1334 1335 1336 1337 <label 1338 data-eds-id="6abeffdd8005d" 1339 class="eds_formfield eds_formfield--size-medium eds_formfield--variant-primary eds-copy-text-m-regular w-100 mb-2p5" 1340 > 1341 <div class="eds_formfield-label"> 1342 Last name <span aria-hidden="true">*</span> </div> 1343 1344 <div class="position-relative d-flex flex-column"> 1345 <div class="eds_formfield-error eds-interface-text-m-bold" style="order: 1000"></div> 1346 1347 <input 1348 type="text" 1349 class="eds-copy-text-l-regular " 1350 placeholder=" " name="lastname" autocomplete="family-name" required value="" /> 1351 1352 1353 1354 <i class="eds_icon fa eds_formfield-validation" style="" aria-hidden="true"></i> 1355 </div> 1356 1357 1358
1358<script> 1359 { 1360 const container = document.querySelector('[data-eds-id="6abeffdd8005d"]'); 1361 const input = container.querySelector('input, textarea, select'); 1362 const error = container.querySelector('.eds_formfield-error'); 1363 1364 1365 input.addEventListener('eds.validation.reset', () => { 1366 input.removeAttribute('data-validation'); 1367 input.setCustomValidity(''); 1368 error.innerHTML = ''; 1369 }); 1370 1371 input.addEventListener('eds.validation.hide', () => { 1372 input.removeAttribute('data-validation'); 1373 }); 1374 1375 input.addEventListener('eds.validation.success', (e) => { 1376 input.setCustomValidity(''); 1377 input.setAttribute('data-validation', ''); 1378 error.innerHTML = ''; 1379 }); 1380 1381 input.addEventListener('eds.validation.warning', (e) => { 1382 input.setCustomValidity(''); 1383 input.setAttribute('data-validation', ''); 1384 error.innerHTML = e.detail; 1385 }); 1386 1387 input.addEventListener('eds.validation.error', (e) => { 1388 input.setCustomValidity(e.detail); 1389 input.checkValidity(); input.setAttribute('data-validation', ''); 1390 }); 1391 1392 input.addEventListener('invalid', (e) => { 1393 error.innerHTML = input.validationMessage; 1394 }); 1395 1396 } 1397 </script>
1397 1398 </label> 1399 1400 1401 1402 <label 1403 data-eds-id="6abeffdd80076" 1404 class="eds_formfield eds_formfield--size-medium eds_formfield--variant-primary eds-copy-text-m-regular w-100 mb-2p5" 1405 > 1406 <div class="eds_formfield-label"> 1407 Email <span aria-hidden="true">*</span> </div> 1408 1409 <div class="position-relative d-flex flex-column"> 1410 <div class="eds_formfield-error eds-interface-text-m-bold" style="order: 1000"></div> 1411 1412 <input 1413 type="email" 1414 class="eds-copy-text-l-regular " 1415 placeholder=" " name="email" autocomplete="username" required value="" /> 1416 1417 1418 1419 <i class="eds_icon fa eds_formfield-validation" style="" aria-hidden="true"></i> 1420 </div> 1421 1422 1423
1423<script> 1424 { 1425 const container = document.querySelector('[data-eds-id="6abeffdd80076"]'); 1426 const input = container.querySelector('input, textarea, select'); 1427 const error = container.querySelector('.eds_formfield-error'); 1428 1429 1430 input.addEventListener('eds.validation.reset', () => { 1431 input.removeAttribute('data-validation'); 1432 input.setCustomValidity(''); 1433 error.innerHTML = ''; 1434 }); 1435 1436 input.addEventListener('eds.validation.hide', () => { 1437 input.removeAttribute('data-validation'); 1438 }); 1439 1440 input.addEventListener('eds.validation.success', (e) => { 1441 input.setCustomValidity(''); 1442 input.setAttribute('data-validation', ''); 1443 error.innerHTML = ''; 1444 }); 1445 1446 input.addEventListener('eds.validation.warning', (e) => { 1447 input.setCustomValidity(''); 1448 input.setAttribute('data-validation', ''); 1449 error.innerHTML = e.detail; 1450 }); 1451 1452 input.addEventListener('eds.validation.error', (e) => { 1453 input.setCustomValidity(e.detail); 1454 input.checkValidity(); input.setAttribute('data-validation', ''); 1455 }); 1456 1457 input.addEventListener('invalid', (e) => { 1458 error.innerHTML = input.validationMessage; 1459 }); 1460 1461 } 1462 </script>
1462 1463 </label> 1464 1465 1466 1467 <label 1468 data-eds-id="6abeffdd8009e" 1469 class="eds_formfield eds_formfield--size-medium eds_formfield--variant-primary eds-copy-text-m-regular w-100 mb-2p5" 1470 > 1471 <div class="eds_formfield-label"> 1472 Password <span aria-hidden="true">*</span> </div> 1473 1474 <div class="position-relative d-flex flex-column"> 1475 <div class="eds_formfield-error eds-interface-text-m-bold" style="order: 1000"></div> 1476 1477 <input 1478 type="password" 1479 class="eds-copy-text-l-regular pe-6" 1480 data-event-on:toggle_password_6abeffdd8009e="(shown) => $(this).attr('type', shown ? 'text' : 'password')" placeholder=" " name="password" autocomplete="current-password" required value="" /> 1481 1482 1483 <button class="eds_button btn btn-outline eds_formfield-toggle_password position-absolute end-0 px-2" style="--bs-btn-bg: transparent" title="Show password" aria-label="Show password" onclick="app.event.emit('toggle_password_6abeffdd8009e', !$(this).data('password-shown'))" data-event-on:toggle_password_6abeffdd8009e="(shown) => $(this).data('password-shown', shown).attr('title', shown ? 'Hide password' : 'Show password').attr('aria-label', shown ? 'Hide password' : 'Show password')" type="button"><i class="eds_icon fas fa-sm fa-eye" style="" aria-hidden="true" data-event-on:toggle_password_6abeffdd8009e="(shown) => this.hidden = shown"></i> <i class="eds_icon fas fa-sm fa-eye-slash" style="" aria-hidden="true" data-event-on:toggle_password_6abeffdd8009e="(shown) => this.hidden = !shown" hidden></i></button> 1484 <i class="eds_icon fa eds_formfield-validation" style="" aria-hidden="true"></i> 1485 </div> 1486 1487 1488
1488<script> 1489 { 1490 const container = document.querySelector('[data-eds-id="6abeffdd8009e"]'); 1491 const input = container.querySelector('input, textarea, select'); 1492 const error = container.querySelector('.eds_formfield-error'); 1493 1494 1495 input.addEventListener('eds.validation.reset', () => { 1496 input.removeAttribute('data-validation'); 1497 input.setCustomValidity(''); 1498 error.innerHTML = ''; 1499 }); 1500 1501 input.addEventListener('eds.validation.hide', () => { 1502 input.removeAttribute('data-validation'); 1503 }); 1504 1505 input.addEventListener('eds.validation.success', (e) => { 1506 input.setCustomValidity(''); 1507 input.setAttribute('data-validation', ''); 1508 error.innerHTML = ''; 1509 }); 1510 1511 input.addEventListener('eds.validation.warning', (e) => { 1512 input.setCustomValidity(''); 1513 input.setAttribute('data-validation', ''); 1514 error.innerHTML = e.detail; 1515 }); 1516 1517 input.addEventListener('eds.validation.error', (e) => { 1518 input.setCustomValidity(e.detail); 1519 input.checkValidity(); input.setAttribute('data-validation', ''); 1520 }); 1521 1522 input.addEventListener('invalid', (e) => { 1523 error.innerHTML = input.validationMessage; 1524 }); 1525 1526 } 1527 </script>
1527 1528 </label> 1529 1530 1531 1532 <label 1533 data-eds-id="6abeffdd800e3" 1534 class="eds_formfield eds_formfield--size-medium eds_formfield--variant-primary eds-copy-text-m-regular w-100 mb-3" 1535 > 1536 <div class="eds_formfield-label"> 1537 Phone number <span aria-hidden="true">*</span> </div> 1538 1539 <div class="position-relative d-flex flex-column"> 1540 <div class="eds_formfield-error eds-interface-text-m-bold" style="order: 1000"></div> 1541 1542 <input 1543 type="text" 1544 class="eds-copy-text-l-regular " 1545 placeholder=" " name="primary_phone" autocomplete="tel-national" required value="" /> 1546 1547 1548 1549 <i class="eds_icon fa eds_formfield-validation" style="" aria-hidden="true"></i> 1550 </div> 1551 1552 <div class="eds-interface-text-s-regular mt-2"> 1553 <i class="eds_icon fa fa-info-circle text-muted" style="" aria-hidden="true"></i> We require a phone number in case we need to contact you about your order. </div> 1554 1555
1555<script> 1556 { 1557 const container = document.querySelector('[data-eds-id="6abeffdd800e3"]'); 1558 const input = container.querySelector('input, textarea, select'); 1559 const error = container.querySelector('.eds_formfield-error'); 1560 1561 1562 input.addEventListener('eds.validation.reset', () => { 1563 input.removeAttribute('data-validation'); 1564 input.setCustomValidity(''); 1565 error.innerHTML = ''; 1566 }); 1567 1568 input.addEventListener('eds.validation.hide', () => { 1569 input.removeAttribute('data-validation'); 1570 }); 1571 1572 input.addEventListener('eds.validation.success', (e) => { 1573 input.setCustomValidity(''); 1574 input.setAttribute('data-validation', ''); 1575 error.innerHTML = ''; 1576 }); 1577 1578 input.addEventListener('eds.validation.warning', (e) => { 1579 input.setCustomValidity(''); 1580 input.setAttribute('data-validation', ''); 1581 error.innerHTML = e.detail; 1582 }); 1583 1584 input.addEventListener('eds.validation.error', (e) => { 1585 input.setCustomValidity(e.detail); 1586 input.checkValidity(); input.setAttribute('data-validation', ''); 1587 }); 1588 1589 input.addEventListener('invalid', (e) => { 1590 error.innerHTML = input.validationMessage; 1591 }); 1592 1593 } 1594 </script>
1594 1595 </label> 1596 1597 1598 1599 <div class="eds_checkable d-inline-block mb-2" > 1600 <input id="eds-checkable-6abeffdd800fe" name="receive_promotions" value="1" checked type="checkbox" /> 1601 <label for="eds-checkable-6abeffdd800fe" class="eds_checkable-text eds-interface-text-l-regular "> 1602 Receive Promotional Offers & Updates </label> 1603 </div> 1604 1605 1606 <button class="eds_button btn btn-primary w-100 mt-1 mb-3" type="submit">Sign up</button> 1607 <div class="d-flex align-items-center mb-3"><hr class="flex-grow-1"><span class="mx-3 text-muted eds-interface-text-s-regular">OR</span><hr class="flex-grow-1"></div> <div class="google-signin-container text-center mb-2"> 1608 <a href="https://sso.onlineorderingsecure.com/auth/google/redirect?return_to=https%3A%2F%2Fwww.hunancafefallschurchva.com%2Fauth%2Fgoogle&redirect=%2Fpage%2Fdelivery-info" class="btn btn-outline-secondary w-100 eds_button eds_button--shape-default d-flex align-items-center justify-content-center gap-2" onclick="var url = new URL(this.href); url.searchParams.set('redirect', window.location.pathname + window.location.search); this.href = url.toString();"> 1609 <svg width="18" height="18" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg"><path d="M17.64 9.2c0-.637-.057-1.251-.164-1.84H9v3.481h4.844a4.14 4.14 0 0 1-1.796 2.716v2.259h2.908c1.702-1.567 2.684-3.875 2.684-6.615Z" fill="#4285F4"/><path d="M9 18c2.43 0 4.467-.806 5.956-2.18l-2.908-2.259c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H.957v2.332A8.997 8.997 0 0 0 9 18Z" fill="#34A853"/><path d="M3.964 10.71A5.41 5.41 0 0 1 3.682 9c0-.593.102-1.17.282-1.71V4.958H.957A8.997 8.997 0 0 0 0 9c0 1.452.348 2.827.957 4.042l3.007-2.332Z" fill="#FBBC05"/><path d="M9 3.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C13.463.891 11.426 0 9 0A8.997 8.997 0 0 0 .957 4.958L3.964 6.29C4.672 4.163 6.656 2.58 9 2.58Z" fill="#EA4335"/></svg> 1610 Continue with Google 1611 </a> 1612 </div> 1613 <div class="apple-signin-container text-center mb-2"> 1614 <a href="https://sso.onlineorderingsecure.com/auth/apple/redirect?return_to=https%3A%2F%2Fwww.hunancafefallschurchva.com%2Fauth%2Fapple&redirect=%2Fpage%2Fdelivery-info" class="btn btn-outline-secondary w-100 eds_button eds_button--shape-default d-flex align-items-center justify-content-center gap-2" onclick="var url = new URL(this.href); url.searchParams.set('redirect', window.location.pathname + window.location.search); this.href = url.toString();"> 1615 <svg width="18" height="18" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg"><path d="M15.1 6.2c-.1.1-2.1 1.2-2.1 3.7 0 2.9 2.5 3.9 2.6 3.9 0 0 0 .1-.4 1.3-.6 1.5-1.7 3-2.9 3-1.3 0-1.6-.7-3.1-.7s-2 .8-3.1.8c-1.2 0-2.2-1.3-3-2.8C2 13.3 1.4 10.9 1.4 8.6c0-3.7 2.4-5.6 4.7-5.6 1.2 0 2.3.8 3 .8.7 0 1.9-.9 3.3-.9.5 0 2.4.1 3.7 1.3zM11.7 1.5c.6-.7 1-1.7 1-2.7 0-.1 0-.3 0-.4-1 0-2.1.6-2.8 1.4-.6.6-1.1 1.6-1.1 2.6 0 .2 0 .3 0 .4.1 0 .2 0 .3 0 .9 0 1.9-.6 2.6-1.3z" fill="currentColor"/></svg> 1616 Continue with Apple 1617 </a> 1618 </div> 1619 <small class="d-block mt-2 eds-interface-text-s-regular"> 1620 By continuing, you agree to our <a href="https://www.hunancafefallschurchva.com/tos" target="_blank" rel="noopener" title="Opens in new tab">Terms of Service</a> & <a href="https://www.hunancafefallschurchva.com/privacy" target="_blank" rel="noopener" title="Opens in new tab">Privacy Policy</a> and consent to receive automated promotional emails. See our <a href="https://www.hunancafefallschurchva.com/privacy#section-7-7" target="_blank" rel="noopener" title="Opens in new tab">Notice of Financial Incentive</a> regarding how we use your data for rewards and offers. 1621 </small> 1622 1623 <div class="text-center mt-3"> 1624 Already have an account? 1625 <button data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#login-modal" class="eds_button btn btn-link btn-text-link border-0 p-0 text-inherit text-decoration-none" type="button">Log in</button> </div> 1626 </div> 1627 </form> </div> 1628 1629 1630 </div> 1631 </div> 1632 1633
1633<script> 1634 { 1635 const container = document.querySelector('[data-eds-id="6abeffdd801de"]'); 1636 let edsMethodsDisabled = false; 1637 1638 ['show', 'hide', 'toggle', 'dispose'].forEach((eventName) => { 1639 container.addEventListener(`eds.${eventName}`, (e) => { 1640 if (edsMethodsDisabled) return; 1641 1642 bootstrap.Modal.getOrCreateInstance(container)[eventName]( 1643 ...(Array.isArray(e.detail) ? e.detail : [e.detail]) 1644 ); 1645 }); 1646 }); 1647 1648 ['show', 'shown', 'hide', 'hidden'].forEach((eventName) => { 1649 container.addEventListener(`${eventName}.bs.modal`, (e) => { 1650 if (edsMethodsDisabled) return; 1651 1652 edsMethodsDisabled = true; // Prevent infinite loop of triggering events 1653 container.dispatchEvent(new CustomEvent(`eds.${eventName}`)); 1654 edsMethodsDisabled = false; 1655 }); 1656 }); 1657 1658 1659 ['show.bs.modal', 'shown.bs.modal'].forEach((eventName) => { 1660 container.addEventListener(eventName, () => { 1661 const autofocusInput = container.querySelector('[autofocus]'); 1662 if (autofocusInput) { 1663 container.style.display = 'block'; 1664 autofocusInput.focus(); 1665 } 1666 }); 1667 }); 1668 1669 } 1670 </script>
1670 1671 </div> 1672 1673 1674
1674<script> 1675 window.__ssoConfig = { 1676 google: { 1677 pendingUrl: "https:\/\/www.hunancafefallschurchva.com\/auth\/google\/pending", 1678 registerModalId: "register-modal", 1679 loginModalId: "login-modal" }, 1680 apple: { 1681 pendingUrl: "https:\/\/www.hunancafefallschurchva.com\/auth\/apple\/pending", 1682 registerModalId: "register-modal", 1683 loginModalId: "login-modal" } 1684 }; 1685 </script>
1685 1686 1687 1688<div class="modal fade" id="modal-order-time" tabindex="-1" role="dialog" 1689 aria-hidden="true"> 1690 <div class="modal-dialog modal-fullscreen-md-down mt-md-6" role="document"> 1691 <div class="modal-content"> 1692 <button class="d-md-none close" type="button" data-bs-dismiss="modal" aria-label="Close"></button> 1693 <div class="modal-header"> 1694 <h2 class="modal-title eds-display-text-title-m">Order time</h2> 1695 </div> 1696 <div class="modal-body"> 1697 <div class="btn-group w-100 btn-group-order-time-type mb-3" > 1698 <input type="radio" name="param_order~time~type_i_n_1" id="order_time_type_0-" value="0" class="btn-check beforetimeswitch orderTimeTypeOption" 1699 checked> 1700 <label for="order_time_type_0-" class="d-flex align-items-center justify-content-center btn btn-outline-secondary w-50">ASAP</label> 1701 1702 <input type="radio" name="param_order~time~type_i_n_1" id="order_time_type_1-" value="1" class="btn-check timeswitch orderTimeTypeOption" 1703 /> 1704 <label for="order_time_type_1-" class="d-flex align-items-center justify-content-center btn btn-outline-secondary w-50"> 1705 <span> 1706 Later 1707 <span class="d-block small fw-normal">Later</span> 1708 </span> 1709 </label> 1710 </div> 1711 <div id="asapContent" class=""> 1712 <p class="mt-3 mb-0">Your order will be ready as soon as possible.</p> 1713 </div> 1714 <div id="laterContent" class="d-none"> 1715 <div class="select-time-container"> 1716 <div class="selecttime showcheck_parent "> 1717 <div class="select-time-header clearfix"> 1718 <h3 class="bold fl fs-5">Pick a day and time</h3> 1719 </div> 1720 <div class="select-time-content clearfix"> 1721 <div class="row select-time-row"> 1722 <div class="datepicker col-md-8" style="min-height: 248px;"> 1723 <div class="datepicker-days" style="display: block;"> 1724 <div data-datetimepicker data-datepicker-min-date="2026-10-01" class="errorable"></div> 1725 </div> 1726 </div> 1727 <div class="timepicker col-md-4"> 1728 <div class="timepicker-picker"> 1729 <ul class="ready-at-time css-scroll"> 1730 <li class="time-button "> 1731 <input id="timeValue0" type="radio" value="11:15 AM" name="param_ready~at~time_s_n_15" 1732 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1733 data-required-field data-ready-attime/> 1734 <label for="timeValue0" class="btn btn-outline-secondary btn-sm" for="">11:15 AM</label> 1735 </li> 1736 <li class="time-button "> 1737 <input id="timeValue1" type="radio" value="11:30 AM" name="param_ready~at~time_s_n_15" 1738 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1739 data-required-field data-ready-attime/> 1740 <label for="timeValue1" class="btn btn-outline-secondary btn-sm" for="">11:30 AM</label> 1741 </li> 1742 <li class="time-button "> 1743 <input id="timeValue2" type="radio" value="11:45 AM" name="param_ready~at~time_s_n_15" 1744 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1745 data-required-field data-ready-attime/> 1746 <label for="timeValue2" class="btn btn-outline-secondary btn-sm" for="">11:45 AM</label> 1747 </li> 1748 <li class="time-button "> 1749 <input id="timeValue3" type="radio" value="12:00 PM" name="param_ready~at~time_s_n_15" 1750 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1751 data-required-field data-ready-attime/> 1752 <label for="timeValue3" class="btn btn-outline-secondary btn-sm" for="">12:00 PM</label> 1753 </li> 1754 <li class="time-button "> 1755 <input id="timeValue4" type="radio" value="12:15 PM" name="param_ready~at~time_s_n_15" 1756 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1757 data-required-field data-ready-attime/> 1758 <label for="timeValue4" class="btn btn-outline-secondary btn-sm" for="">12:15 PM</label> 1759 </li> 1760 <li class="time-button "> 1761 <input id="timeValue5" type="radio" value="12:30 PM" name="param_ready~at~time_s_n_15" 1762 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1763 data-required-field data-ready-attime/> 1764 <label for="timeValue5" class="btn btn-outline-secondary btn-sm" for="">12:30 PM</label> 1765 </li> 1766 <li class="time-button "> 1767 <input id="timeValue6" type="radio" value="12:45 PM" name="param_ready~at~time_s_n_15" 1768 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1769 data-required-field data-ready-attime/> 1770 <label for="timeValue6" class="btn btn-outline-secondary btn-sm" for="">12:45 PM</label> 1771 </li> 1772 <li class="time-button "> 1773 <input id="timeValue7" type="radio" value="1:00 PM" name="param_ready~at~time_s_n_15" 1774 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1775 data-required-field data-ready-attime/> 1776 <label for="timeValue7" class="btn btn-outline-secondary btn-sm" for="">1:00 PM</label> 1777 </li> 1778 <li class="time-button "> 1779 <input id="timeValue8" type="radio" value="1:15 PM" name="param_ready~at~time_s_n_15" 1780 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1781 data-required-field data-ready-attime/> 1782 <label for="timeValue8" class="btn btn-outline-secondary btn-sm" for="">1:15 PM</label> 1783 </li> 1784 <li class="time-button "> 1785 <input id="timeValue9" type="radio" value="1:30 PM" name="param_ready~at~time_s_n_15" 1786 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1787 data-required-field data-ready-attime/> 1788 <label for="timeValue9" class="btn btn-outline-secondary btn-sm" for="">1:30 PM</label> 1789 </li> 1790 <li class="time-button "> 1791 <input id="timeValue10" type="radio" value="1:45 PM" name="param_ready~at~time_s_n_15" 1792 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1793 data-required-field data-ready-attime/> 1794 <label for="timeValue10" class="btn btn-outline-secondary btn-sm" for="">1:45 PM</label> 1795 </li> 1796 <li class="time-button "> 1797 <input id="timeValue11" type="radio" value="2:00 PM" name="param_ready~at~time_s_n_15" 1798 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1799 data-required-field data-ready-attime/> 1800 <label for="timeValue11" class="btn btn-outline-secondary btn-sm" for="">2:00 PM</label> 1801 </li> 1802 <li class="time-button "> 1803 <input id="timeValue12" type="radio" value="2:15 PM" name="param_ready~at~time_s_n_15" 1804 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1805 data-required-field data-ready-attime/> 1806 <label for="timeValue12" class="btn btn-outline-secondary btn-sm" for="">2:15 PM</label> 1807 </li> 1808 <li class="time-button "> 1809 <input id="timeValue13" type="radio" value="2:30 PM" name="param_ready~at~time_s_n_15" 1810 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1811 data-required-field data-ready-attime/> 1812 <label for="timeValue13" class="btn btn-outline-secondary btn-sm" for="">2:30 PM</label> 1813 </li> 1814 <li class="time-button "> 1815 <input id="timeValue14" type="radio" value="2:45 PM" name="param_ready~at~time_s_n_15" 1816 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1817 data-required-field data-ready-attime/> 1818 <label for="timeValue14" class="btn btn-outline-secondary btn-sm" for="">2:45 PM</label> 1819 </li> 1820 <li class="time-button "> 1821 <input id="timeValue15" type="radio" value="3:00 PM" name="param_ready~at~time_s_n_15" 1822 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1823 data-required-field data-ready-attime/> 1824 <label for="timeValue15" class="btn btn-outline-secondary btn-sm" for="">3:00 PM</label> 1825 </li> 1826 <li class="time-button "> 1827 <input id="timeValue16" type="radio" value="3:15 PM" name="param_ready~at~time_s_n_15" 1828 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1829 data-required-field data-ready-attime/> 1830 <label for="timeValue16" class="btn btn-outline-secondary btn-sm" for="">3:15 PM</label> 1831 </li> 1832 <li class="time-button "> 1833 <input id="timeValue17" type="radio" value="3:30 PM" name="param_ready~at~time_s_n_15" 1834 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1835 data-required-field data-ready-attime/> 1836 <label for="timeValue17" class="btn btn-outline-secondary btn-sm" for="">3:30 PM</label> 1837 </li> 1838 <li class="time-button "> 1839 <input id="timeValue18" type="radio" value="3:45 PM" name="param_ready~at~time_s_n_15" 1840 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1841 data-required-field data-ready-attime/> 1842 <label for="timeValue18" class="btn btn-outline-secondary btn-sm" for="">3:45 PM</label> 1843 </li> 1844 <li class="time-button "> 1845 <input id="timeValue19" type="radio" value="4:00 PM" name="param_ready~at~time_s_n_15" 1846 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1847 data-required-field data-ready-attime/> 1848 <label for="timeValue19" class="btn btn-outline-secondary btn-sm" for="">4:00 PM</label> 1849 </li> 1850 <li class="time-button "> 1851 <input id="timeValue20" type="radio" value="4:15 PM" name="param_ready~at~time_s_n_15" 1852 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1853 data-required-field data-ready-attime/> 1854 <label for="timeValue20" class="btn btn-outline-secondary btn-sm" for="">4:15 PM</label> 1855 </li> 1856 <li class="time-button "> 1857 <input id="timeValue21" type="radio" value="4:30 PM" name="param_ready~at~time_s_n_15" 1858 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1859 data-required-field data-ready-attime/> 1860 <label for="timeValue21" class="btn btn-outline-secondary btn-sm" for="">4:30 PM</label> 1861 </li> 1862 <li class="time-button "> 1863 <input id="timeValue22" type="radio" value="4:45 PM" name="param_ready~at~time_s_n_15" 1864 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1865 data-required-field data-ready-attime/> 1866 <label for="timeValue22" class="btn btn-outline-secondary btn-sm" for="">4:45 PM</label> 1867 </li> 1868 <li class="time-button "> 1869 <input id="timeValue23" type="radio" value="5:00 PM" name="param_ready~at~time_s_n_15" 1870 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1871 data-required-field data-ready-attime/> 1872 <label for="timeValue23" class="btn btn-outline-secondary btn-sm" for="">5:00 PM</label> 1873 </li> 1874 <li class="time-button "> 1875 <input id="timeValue24" type="radio" value="5:15 PM" name="param_ready~at~time_s_n_15" 1876 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1877 data-required-field data-ready-attime/> 1878 <label for="timeValue24" class="btn btn-outline-secondary btn-sm" for="">5:15 PM</label> 1879 </li> 1880 <li class="time-button "> 1881 <input id="timeValue25" type="radio" value="5:30 PM" name="param_ready~at~time_s_n_15" 1882 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1883 data-required-field data-ready-attime/> 1884 <label for="timeValue25" class="btn btn-outline-secondary btn-sm" for="">5:30 PM</label> 1885 </li> 1886 <li class="time-button "> 1887 <input id="timeValue26" type="radio" value="5:45 PM" name="param_ready~at~time_s_n_15" 1888 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1889 data-required-field data-ready-attime/> 1890 <label for="timeValue26" class="btn btn-outline-secondary btn-sm" for="">5:45 PM</label> 1891 </li> 1892 <li class="time-button "> 1893 <input id="timeValue27" type="radio" value="6:00 PM" name="param_ready~at~time_s_n_15" 1894 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1895 data-required-field data-ready-attime/> 1896 <label for="timeValue27" class="btn btn-outline-secondary btn-sm" for="">6:00 PM</label> 1897 </li> 1898 <li class="time-button "> 1899 <input id="timeValue28" type="radio" value="6:15 PM" name="param_ready~at~time_s_n_15" 1900 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1901 data-required-field data-ready-attime/> 1902 <label for="timeValue28" class="btn btn-outline-secondary btn-sm" for="">6:15 PM</label> 1903 </li> 1904 <li class="time-button "> 1905 <input id="timeValue29" type="radio" value="6:30 PM" name="param_ready~at~time_s_n_15" 1906 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1907 data-required-field data-ready-attime/> 1908 <label for="timeValue29" class="btn btn-outline-secondary btn-sm" for="">6:30 PM</label> 1909 </li> 1910 <li class="time-button "> 1911 <input id="timeValue30" type="radio" value="6:45 PM" name="param_ready~at~time_s_n_15" 1912 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1913 data-required-field data-ready-attime/> 1914 <label for="timeValue30" class="btn btn-outline-secondary btn-sm" for="">6:45 PM</label> 1915 </li> 1916 <li class="time-button "> 1917 <input id="timeValue31" type="radio" value="7:00 PM" name="param_ready~at~time_s_n_15" 1918 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1919 data-required-field data-ready-attime/> 1920 <label for="timeValue31" class="btn btn-outline-secondary btn-sm" for="">7:00 PM</label> 1921 </li> 1922 <li class="time-button "> 1923 <input id="timeValue32" type="radio" value="7:15 PM" name="param_ready~at~time_s_n_15" 1924 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1925 data-required-field data-ready-attime/> 1926 <label for="timeValue32" class="btn btn-outline-secondary btn-sm" for="">7:15 PM</label> 1927 </li> 1928 <li class="time-button "> 1929 <input id="timeValue33" type="radio" value="7:30 PM" name="param_ready~at~time_s_n_15" 1930 class="btn-check rad-ready_at_time" onchange="saveFormState('param
1930_ready~at~time_s_n_15', this.value, true);" 1931 data-required-field data-ready-attime/> 1932 <label for="timeValue33" class="btn btn-outline-secondary btn-sm" for="">7:30 PM</label> 1933 </li> 1934 <li class="time-button "> 1935 <input id="timeValue34" type="radio" value="7:45 PM" name="param_ready~at~time_s_n_15" 1936 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1937 data-required-field data-ready-attime/> 1938 <label for="timeValue34" class="btn btn-outline-secondary btn-sm" for="">7:45 PM</label> 1939 </li> 1940 <li class="time-button "> 1941 <input id="timeValue35" type="radio" value="8:00 PM" name="param_ready~at~time_s_n_15" 1942 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1943 data-required-field data-ready-attime/> 1944 <label for="timeValue35" class="btn btn-outline-secondary btn-sm" for="">8:00 PM</label> 1945 </li> 1946 <li class="time-button "> 1947 <input id="timeValue36" type="radio" value="8:15 PM" name="param_ready~at~time_s_n_15" 1948 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1949 data-required-field data-ready-attime/> 1950 <label for="timeValue36" class="btn btn-outline-secondary btn-sm" for="">8:15 PM</label> 1951 </li> 1952 <li class="time-button "> 1953 <input id="timeValue37" type="radio" value="8:30 PM" name="param_ready~at~time_s_n_15" 1954 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1955 data-required-field data-ready-attime/> 1956 <label for="timeValue37" class="btn btn-outline-secondary btn-sm" for="">8:30 PM</label> 1957 </li> 1958 <li class="time-button "> 1959 <input id="timeValue38" type="radio" value="8:45 PM" name="param_ready~at~time_s_n_15" 1960 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1961 data-required-field data-ready-attime/> 1962 <label for="timeValue38" class="btn btn-outline-secondary btn-sm" for="">8:45 PM</label> 1963 </li> 1964 <li class="time-button "> 1965 <input id="timeValue39" type="radio" value="9:00 PM" name="param_ready~at~time_s_n_15" 1966 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1967 data-required-field data-ready-attime/> 1968 <label for="timeValue39" class="btn btn-outline-secondary btn-sm" for="">9:00 PM</label> 1969 </li> 1970 <li class="time-button "> 1971 <input id="timeValue40" type="radio" value="9:15 PM" name="param_ready~at~time_s_n_15" 1972 class="btn-check rad-ready_at_time" onchange="saveFormState('param_ready~at~time_s_n_15', this.value, true);" 1973 data-required-field data-ready-attime/> 1974 <label for="timeValue40" class="btn btn-outline-secondary btn-sm" for="">9:15 PM</label> 1975 </li> 1976 </ul> 1977 </div> 1978 </div> 1979 </div> 1980 </div> 1981</div> 1982</div> 1983<input type="hidden" name="param_ready~at_s_n_100" class="hid-ready-at" value="" /> 1984<input type="hidden" class="hid-ready-at-date" value="2026-10-01" /> 1985<input type="hidden" class="hid-eot" value="1969-12-31 16:00:00" /> </div> 1986 </div> 1987 <div class="modal-footer"> 1988 <input type="hidden" id="hid-order-time-type" value="0" /> 1989 <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Cancel</button> 1990 <button type="button" class="btn btn-primary" data-save-time-modal>Save</button> 1991 </div> 1992 </div> 1993 </div> 1994</div> 1995 1996<!-- www modal start --> 1997<div class="modal fade mob_full_modal www_modal order-options" id="modal-order-options" tabindex="-1" role="dialog" 1998 aria-hidden="true" data-update-otype-on-modal-close> 1999 <div class="modal-dialog modal-fullscreen-sm-down mt-sm-6" role="document"> 2000 <div class="modal-content"> 2001 <button class="d-md-none close" type="button" data-bs-dismiss="modal" aria-label="Close"></button> 2002 <div class="modal-header"> 2003 <h2 class="modal-title eds-display-text-title-m">Order details</h2> 2004 </div> 2005 <div class="modal-body"> 2006 <div class="www_moda_content"> 2007 <div class="cs_box order_type" onchange="app.event.emit('order_type_changed', { order_type: event.target.value })"> 2008 <div class="h5">What:</div> 2009 <div class="position-relative"> 2010 <div class="mdropbtn" data-toggle-mdrop role="button"> 2011 <span class="visually-hidden">Order type:</span> 2012 <span data-order-type-label> 2013 Select </span> 2014 </div> 2015 <ul data-mdrop-ul> 2016 <li class=" "> 2017 <input data-order-type-on-change type="radio" name="param_order~type_s_n_10" id="order-type-pickup-1" 2018 class="orderTypeOption css-checkbox " data-name="Pick up" value="PICKUP" 2019 data-constant="1" data-base="PICKUP" > 2020 <label for="order-type-pickup-1" class="css-label" data-update-mdrop-on-click> 2021 Pick up </label> 2022 </li> 2023 <li class=" "> 2024 <input data-order-type-on-change type="radio" name="param_order~type_s_n_10" id="order-type-
2024delivery-1" 2025 class="orderTypeOption css-checkbox deliveryswitch" data-name="Delivery" value="DELIVERY" 2026 data-constant="2" data-base="DELIVERY" > 2027 <label for="order-type-delivery-1" class="css-label" data-update-mdrop-on-click> 2028 Delivery </label> 2029 </li> 2030 </ul> 2031</div> 2032 </div> 2033 <form class=""> 2034 <div class="cs_box guest_checkout_address checkout_address deliveryAddressContainer" style="display:none;"> 2035 <label for="street-address-bar" class="h5">Enter your address:</label> 2036 <div class="form-group street-address-container"> 2037 <input name="param_full~address_s_n_255" id="street-address-bar" placeholder="Enter your address" 2038 data-autocomplete-address data-autocomplete-success="autoCompleteSuccess" 2039 onkeyup="scheduleFormStateSave(this.name, this.value)" onchange="validateAddress($('#modal-order-options .deliveryAddressContainer'))" 2040 type="search" class="form-control input-search input-validate-address input-street-address user-address-field" 2041 value="" data-required-field /> 2042 </div> 2043 <input type="hidden" name="param_street~address_s_n_255" data-autocompleted-street-address /> 2044 <input type="hidden" name="param_city_s_n_90" data-autocompleted-city /> 2045 <input type="hidden" name="param_state_s_n_2" data-autocompleted-state /> 2046 <input type="hidden" name="param_zip~code_z_n_10" data-autocompleted-zip /> 2047 </div> 2048 </form> 2049 <!-- <div class="form-submit-wrapper"> 2050 <input type="submit" class="form-submit btn btn-primary" value="Save" data-close-modal data-select-later-date data-saveotype-modal> 2051 </div> --> 2052 </div> 2053 </div> 2054 <div 2055 data-async-on-event="order_type_changed" 2056 data-async-action="https://www.hunancafefallschurchva.com/ajax/?form=minimum_order_value_warning&component=order_type" 2057 data-async-method="get" 2058 > 2059 </div> 2060 <div class="modal-footer"> 2061 <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Close</button> 2062 <button type="button" class="btn btn-primary" data-close-modal data-saveotype-modal>Save</button> 2063 </div> 2064 </div> 2065 </div> 2066</div> 2067<!-- www modal end --> 2068 2069<!-- menu item modal --> 2070<div class="modal fade add_menu" id="add_menu_item" tabindex="-1" role="dialog" aria-hidden="true" aria-labelledby="item_name"> 2071 <div class="modal-dialog modal-dialog-centered modal-fullscreen-md-down" role="document"> 2072 <div class="modal-content menu-item-container-wrapper"> 2073 <div class="modal-body menu-item-container "> 2074 <p id="item_name">Menu item dialog</p> 2075 </div> 2076 </div> 2077 </div> 2078</div> 2079<!-- menu item modal end --> 2080 2081 2082 <div 2083 data-eds-id="6abeffdd8c387" 2084 class="eds_dialog modal fade " 2085 tabindex="-1" 2086 aria-labelledby="eds-dialog-title-6abeffdd8c387" 2087 aria-hidden="true" 2088 data-event-on:coupon_modal_shown="(shown) => $(this).data(`coupon_modal_shown`, shown)" data-event-on:show_coupon_restrictions="({ coupon, errors }) => { 2089 if ($(this).data(`coupon_modal_shown`)) return; 2090 2091 $(this).find(`.eds_dialog-title`).html(`<div class="text-truncate">${coupon}</div>`); 2092 $(this).find(`.eds_dialog-body`).html(errors); 2093 this.dispatchEvent(new CustomEvent(`eds.show`)); 2094 }" data-event-on:restore_coupon_modal="this.dispatchEvent(new CustomEvent(`eds.hide`))" > 2095 <div class="modal-dialog modal-dialog-scrollable modal-dialog-centered modal-fullscreen-sm-down modal-md"> 2096 <div class="modal-content "> 2097 2098 <div class="modal-header d-flex justify-content-between gap-3 eds-display-text-title-m "> 2099 <h2 id="eds-dialog-title-6abeffdd8c387" class="eds_dialog-title modal-title eds-display-text-title-m pe-5" style="max-width: 100%"> 2100 Coupon restrictions </h2> 2101 2102 <button class="eds_button btn btn-outline-secondary btn-lg eds_button--shape-circle position-absolute top-0 end-0 border" style="width: 3rem; height: 3rem; margin-top: 6px; margin-right: 6px" data-bs-dismiss="modal" aria-label="Close" type="button"><i class="eds_icon fa fa-close" style="" aria-hidden="true"></i></button> </div> 2103
2104 <div class="eds_dialog-body modal-body css-scroll eds-copy-text-l-regular vh-100"> 2105 </div> 2106 2107 2108 </div> 2109 </div> 2110 2111
2111<script> 2112 { 2113 const container = document.querySelector('[data-eds-id="6abeffdd8c387"]'); 2114 let edsMethodsDisabled = false; 2115 2116 ['show', 'hide', 'toggle', 'dispose'].forEach((eventName) => { 2117 container.addEventListener(`eds.${eventName}`, (e) => { 2118 if (edsMethodsDisabled) return; 2119 2120 bootstrap.Modal.getOrCreateInstance(container)[eventName]( 2121 ...(Array.isArray(e.detail) ? e.detail : [e.detail]) 2122 ); 2123 }); 2124 }); 2125 2126 ['show', 'shown', 'hide', 'hidden'].forEach((eventName) => { 2127 container.addEventListener(`${eventName}.bs.modal`, (e) => { 2128 if (edsMethodsDisabled) return; 2129 2130 edsMethodsDisabled = true; // Prevent infinite loop of triggering events 2131 container.dispatchEvent(new CustomEvent(`eds.${eventName}`)); 2132 edsMethodsDisabled = false; 2133 }); 2134 }); 2135 2136 2137 ['show.bs.modal', 'shown.bs.modal'].forEach((eventName) => { 2138 container.addEventListener(eventName, () => { 2139 const autofocusInput = container.querySelector('[autofocus]'); 2140 if (autofocusInput) { 2141 container.style.display = 'block'; 2142 autofocusInput.focus(); 2143 } 2144 }); 2145 }); 2146 2147 } 2148 </script>
2148 2149 </div> 2150 2151 2152<!-- location modal mobile start--> 2153<div class="modal fade location-picker" id="locationModal" tabindex="-1" role="dialog" aria-hidden="true"> 2154 <div class="backdrop" data-bs-dismiss="modal"></div> 2155 <div class="modal-dialog modal-sm modal-dialog-centered" role="document"> 2156 <div class="modal-content"> 2157 <div class="modal-header"> 2158 <h2 class="modal-title eds-display-text-title-m">Change Location</h2> 2159 </div> 2160 2161 <div class="modal-body"> 2162 2163<div class="change_location-locations"> 2164 <input 2165 type="radio" 2166 class="css-checkbox" 2167 id="locations-1-location-8285" 2168 name="locations-1" 2169 value="https://www.hunancafefallschurchva.com/order" 2170 checked /> 2171 <label class="css-label" for="locations-1-location-8285"> 2172 <div style="line-height: normal"> 2173 <strong>Hunan Cafe - Falls Church</strong> 2174 <br /> 2175 126 W Broad St Falls Church, VA 22046 </div> 2176 </label> 2177 </div> 2178 2179 </div> 2180 2181 <div class="modal-footer"> 2182 <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Close</button> 2183 <button type="button" class="btn btn-warning" data-go-to-url-on-click="[name='locations-1']:checked"> 2184 Change location </button> 2185 </div> 2186 </div> 2187 </div> 2188</div> 2189<!-- location modal mobile end --> 2190 2191<div class="modal fade add_new_card_modal" id="modal-add-new-card" tabindex="-1" role="dialog" aria-modal="true"> 2192 <div class="modal-dialog modal-dialog-centered modal-fullscreen-sm-down" role="document"> 2193 <div class="modal-content"> 2194 <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close"></button> 2195 <div class="modal-header"> 2196 <h2 class="modal-title eds-display-text-title-m">Add new card</h2> 2197 </div> 2198 <div class="modal-body pb-6"> 2199 <div class="ajax-creditcards"> 2200 <div class="fa fa-spinner fa-spin fa-4x"> 2201 </div> 2202 </div> 2203 </div> 2204 </div> 2205 </div> 2206</div> 2207 2208<div class="modal fade" id="modal-payment-change" tabindex="-1" role="dialog" aria-modal="true"> 2209 <div class="modal-dialog modal-dialog-centered" role="document"> 2210 <div class="modal-content"> 2211 <div class="modal-header"> 2212 <h2 class="modal-title modal-title-accent eds-display-text-title-m">Confirm <span data-confirm-payment-name>Pay with cash</span></h2> 2213 </div> 2214 <div class="modal-body"> 2215 <p>You've just changed your payment type to <strong data-confirm-payment-name>Pay with cash</strong>. Please confirm that to proceed.</p> 2216 <button class="btn btn-primary w-100" data-bs-dismiss="modal" data-confirm-payment-switch>Confirm and proceed</button> 2217 <button class="btn eh-btn-silent w-100 mt-2" data-bs-dismiss="modal" data-cancel-payment-switch>Cancel</button> 2218 </div> 2219 </div> 2220 </div> 2221</div> 2222 2223<div class="modal fade modal_over_modal" id="modal-confirm-no-number-address" tabindex="-1" role="dialog" aria-modal="true" style="z-index: 2000;"> 2224 <div class="modal-dialog modal-dialog-centered" role="document"> 2225 <div class="modal-content"> 2226 <div class="modal-header"> 2227 <h2 class="modal-title modal-title-accent eds-display-text-title-m">Confirm Address</h2> 2228 </div> 2229 <div class="modal-body"> 2230 <p>This address doesn't start with a street number. Please confirm the address is correct.</p> 2231 <button class="btn btn-warning w-100" data-bs-dismiss="modal" data-confirm-no-number-address>Yes, it's correct</button> 2232 <button class="btn btn-secondary w-100 mt-2" data-bs-dismiss="modal" data-cancel-no-number-address>No, let me edit it</button> 2233 </div> 2234 </div> 2235 </div> 2236</div> 2237 2238<div class="modal fade mob_full_modal" id="modal-invalid-address" tabindex="-1" role="dialog" aria-modal="true"> 2239 <div class="modal-dialog modal-dialog-centered" role="document"> 2240 <div class="modal-content"> 2241 <button class="close" type="button" data-bs-dismiss="modal" aria-label="Close"></button> 2242 <div class="modal-header"> 2243 <h2 class="modal-title eds-display-text-title-m">Sorry we do not deliver to your address!</h2> 2244 </div> 2245 <div class="modal-body"> 2246 <div class="www_moda_content"> 2247 <div class="cs_box pickup_when showcheck_parent"> 2248 <div>You can Pick up your order at this location</div> 2249 <div class="pickup_locbox"> 2250 <div class="rest_loc"> 2251 <p> 2252 Hunan Cafe - Falls Church<br/> 2253 126 W Broad St<br/>Falls Church, VA 22046 </p> 2254 </div> 2255</div> </div> 2256 <div class="form-submit-wrapper"> 2257 <input type="submit" class="form-submit" value="Switch to pickup" data-bs-dismiss="modal" data-switch-to-pickup> 2258 </div> 2259 </div> 2260 </div> 2261 </div> 2262 </div> 2263</div> 2264 2265<div class="modal fade mob_full_modal" id="modal-view-delivery-zone" tabindex="-1" role="dialog" aria-modal="true"> 2266 <div class="modal-dialog modal-dialog-centered" role="document"> 2267 <div class="modal-content">
2268 <div class="modal-body modal-body-view-delivery-zone" style="min-height: 75px;"> 2269 <div id="loading-view-delivery-area" class="loading-ajax-spinner"><i class="fa fa-spin fa-spinner fa-3x "></i></div> 2270 <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close"></button> 2271 <div id="modal-view-delivery-zone-content" style="display:none;"> 2272 <div class="h4 mt15">View our delivery area</div> 2273 <div class="mb15"></div> 2274 <style> 2275 #iframe-view-delivery-area { 2276 width:100%; 2277 height:100%; 2278 min-height:556px; 2279 } 2280 @media screen and (max-width: 768px) { 2281 #iframe-view-delivery-area { 2282 height: calc(100vh - 90px); 2283 } 2284 } 2285 </style> 2286 <iframe id="iframe-view-delivery-area" name="iframe-deliveryzone" frameborder="0" hspace="0" scrolling="auto" 2287 data-src="https://www.hunancafefallschurchva.com/viewdeliveryzone/altdoc/1/vdz/1" title="Map of delivery areas"></iframe> 2288 </div> 2289 </div> 2290 </div> 2291 </div> 2292</div> 2293 2294<!-- Alert modal --> 2295<div class="modal fade" id="modal-alert" tabindex="-1" aria-labelledby="modal-alert" aria-hidden="true"> 2296 <div class="modal-dialog"> 2297 <div class="modal-content"> 2298 <div class="modal-header"> 2299 <h2 class="modal-title fs-5 eds-display-text-title-m">Error</h2> 2300 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> 2301 </div> 2302 <div class="modal-body"> 2303 Description 2304 </div> 2305 <div class="modal-footer"> 2306 <button type="button" class="btn btn-primary btn-close-modal" data-bs-dismiss="modal">Close</button> 2307 <button type="button" class="btn btn-primary hidden">Save changes</button> 2308 </div> 2309 </div> 2310 </div> 2311</div> 2312 2313 2314 2315 2316 2317 <div 2318 id="toasts" 2319 class="toast-container position-fixed start-50 translate-middle-x" 2320 style="bottom: calc(var(--eds-fixed-cta-height, 0) * 1px); max-width: calc(100% - 2rem)" 2321 > 2322 </div> 2323 2324
2324<script> 2325 $(() => { 2326 const ctas = document.querySelectorAll('[data-fixed-cta]'); 2327 if (!ctas.length) { 2328 return; 2329 } 2330 2331 function updateFixedCTAHeight() { 2332 document.documentElement.style.setProperty( 2333 '--eds-fixed-cta-height', 2334 Math.max(0, ...Array.from(ctas, (element) => { 2335 const rect = element.getBoundingClientRect(); 2336 return rect.height > 0 && getComputedStyle(element).position === 'fixed' 2337 ? Math.max(0, window.innerHeight - rect.top) 2338 : 0; 2339 })) 2340 ); 2341 } 2342 2343 if ('ResizeObserver' in window) { 2344 ctas.forEach((cta) => new ResizeObserver(updateFixedCTAHeight).observe(cta)); 2345 } else { 2346 updateFixedCTAHeight(); 2347 } 2348 2349 window.addEventListener('resize', app.throttle(updateFixedCTAHeight)); 2350 }); 2351 </script>
2351 2352 2353 <div class="visually-hidden"> 2354 <div id="announcements-polite" aria-live="polite" aria-atomic="true"> 2355 <div id="announcement-polite"></div> 2356 </div> 2357 2358 <div id="announcements-assertive" aria-live="assertive" aria-atomic="true"> 2359 <div id="announcement-assertive"></div> 2360 </div> 2361 </div> 2362 2363
2364<script type="text/javascript" src="/share42/share42.js"></script>
2364 2365 2366<!-- SET: SCRIPTS -->
2367<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
vendor: 1 bytes, line 2367
2367
2368<script>window.jQuery || document.write('
2368<script src="/web/default3.0/js/vendor/jquery-3.6.0.min.js"><\/script>')</script>
vendor: 1 bytes, line 2368
2368
2369<script src="https://code.jquery.com/jquery-migrate-3.3.2.js" integrity="sha384-KwAndHbPSueZ9+pG1mDjru/Q6KT6cliBs+/SCGpcOO6XvhrkbF0cBzkSs3+Pl2Zz" crossorigin="anonymous"></script>
2369 2370<!--
2370<script src="https://code.jquery.com/jquery-migrate-3.3.2.min.js" integrity="sha256-Ap4KLoCf1rXb52q+i3p0k2vjBsmownyBTE1EqlRiMwA=" crossorigin="anonymous"></script>
2370-->
2371<script> 2372 /* http://writing.colin-gourlay.com/safely-using-ready-before-including-jquery/ */ 2373 (function($,d){$.each(readyQ,function(i,f){$(f)});$.each(bindReadyQ,function(i,f){$(d).bind("ready",f)})})(jQuery,document) 2374</script>
vendor: 1 bytes, line 2374
2374
2375<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.min.js" integrity="sha256-lSjKY0/srUM9BE3dPm+c4fBo1dky2v27Gdjm2uoZaL0=" crossorigin="anonymous"></script>
vendor: 1 bytes, line 2375
2375
2376<script type="text/javascript" src="/min/g=js4.0&1788675044"></script>
2376 2377<!-- END: SCRIPTS --> 2378 2379
2380<script> 2381 function closeAnnouncementModal(){ 2382 $("#announcementBox").hide(); 2383 setAnnouncementSession(""); 2384 } 2385 2386 $('body').on('click', '#closeAnnouncement', function(e) { 2387 e.preventDefault(); 2388 setAnnouncementSession(""); 2389 }); 2390</script>
vendor: 1 bytes, line 2390
2390
2391<script> 2392$(() => { 2393 const stickyHeader = document.querySelector('.headerAndWtype'); 2394 if (!stickyHeader) { 2395 return; 2396 } 2397 2398 function updateHeaderHeight() { 2399 const gap = parseFloat(getComputedStyle(document.documentElement).fontSize) || 16; 2400 const offset = stickyHeader.offsetHeight + gap; 2401 document.documentElement.style.scrollPaddingTop = offset + 'px'; 2402 2403 document.documentElement.style.setProperty('--sticky-header-offset', offset + 'px'); 2404 } 2405 2406 updateHeaderHeight(); 2407 if ('ResizeObserver' in window) { 2408 new ResizeObserver(updateHeaderHeight).observe(stickyHeader); 2409 } else { 2410 window.addEventListener('resize', app.throttle(updateHeaderHeight)); 2411 } 2412}); 2413</script>
2413 2414 2415 <div id="recaptcha" class="g-recaptcha" data-callback="submitAjaxForm" data-size="invisible"></div> 2416 <div id="async-recaptcha" class="g-recaptcha" data-callback="recaptchaAsyncCallback" data-size="invisible"></div> 2417 2418
2418<script> 2419 var ajaxRecaptcha; 2420 var asyncRecaptcha; 2421 var checkoutRecaptcha; 2422 2423 function initRecaptchas() { 2424 const options = { 2425 sitekey: "6LeS6lMUAAAAADOPnBKluMb49PS1NyzPT1kR87Re", 2426 size: 'invisible', 2427 }; 2428 2429 $('[data-recaptcha]').not('[data-ajax-form]').each(function (k, v) { 2430 const submit = $(v).find('[type="submit"]'); 2431 grecaptcha.render(submit[0], { 2432 ...options, 2433 callback(token) { 2434 $(v).submit(); 2435 }, 2436 }); 2437 }); 2438 2439 ajaxRecaptcha = grecaptcha.render('recaptcha', options); 2440 asyncRecaptcha = grecaptcha.render('async-recaptcha', options); 2441 } 2442 </script>
vendor: 119 bytes, lines 2442-2444
2442 2443 <script src="https://www.google.com/recaptcha/api.js?render=explicit&onload=initRecaptchas" async defer></script> 2444
2445</body> 2446</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.