1(self["webpackChunkgastro"] = self["webpackChunkgastro"] || []).push([["main"],{ 2 3/***/ 98255: 4/*!*******************************************************!*\ 5 !*** ./$_lazy_route_resources/ lazy namespace object ***! 6 \*******************************************************/ 7/***/ (function(module) { 8 9function webpackEmptyAsyncContext(req) { 10 // Here Promise.resolve().then() is used instead of new Promise() to prevent 11 // uncaught exception popping up in devtools 12 return Promise.resolve().then(function() { 13 var e = new Error("Cannot find module '" + req + "'"); 14 e.code = 'MODULE_NOT_FOUND'; 15 throw e; 16 }); 17} 18webpackEmptyAsyncContext.keys = function() { return []; }; 19webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext; 20webpackEmptyAsyncContext.id = 98255; 21module.exports = webpackEmptyAsyncContext; 22 23/***/ }), 24 25/***/ 95670: 26/*!********************************************!*\ 27 !*** ./src/app/api/app-service.service.ts ***! 28 \********************************************/ 29/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 30 31"use strict"; 32__webpack_require__.r(__webpack_exports__); 33/* harmony export */ __webpack_require__.d(__webpack_exports__, { 34/* harmony export */ "AppServiceService": function() { return /* binding */ AppServiceService; } 35/* harmony export */ }); 36/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! tslib */ 64762); 37/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @angular/core */ 37716); 38/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @angular/router */ 39895); 39/* harmony import */ var _ngx_translate_core__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @ngx-translate/core */ 29790); 40/* harmony import */ var _core_storage_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/storage.service */ 66498); 41/* harmony import */ var _ionic_native_geolocation_ngx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @ionic-native/geolocation/ngx */ 87152); 42/* harmony import */ var _core_request_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/request.service */ 25094); 43/* harmony import */ var _ionic_native_onesignal_ngx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @ionic-native/onesignal/ngx */ 61779); 44/* harmony import */ var _ionic_angular__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @ionic/angular */ 80476); 45/* harmony import */ var _ionic_native_globalization_ngx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @ionic-native/globalization/ngx */ 25145); 46/* harmony import */ var _views_modals_popup_popup_page__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../views/modals/popup/popup.page */ 79979); 47/* harmony import */ var src_environments_environment__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! src/environments/environment */ 92340); 48/* harmony import */ var _ionic_native_in_app_browser_ngx__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @ionic-native/in-app-browser/ngx */ 53760); 49/* harmony import */ var _views_modals_toppings_toppings_page__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../views/modals/toppings/toppings.page */ 85300); 50/* harmony import */ var _views_modals_cart_cart_page__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../views/modals/cart/cart.page */ 728); 51/* harmony import */ var _views_modals_cross_selling_cross_selling_page__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../views/modals/cross-selling/cross-selling.page */ 45577); 52/* harmony import */ var _views_modals_alert_alert_page__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../views/modals/alert/alert.page */ 60307); 53/* harmony import */ var _views_web_views_shared_modal_popover_modal_popover_page__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../views/web-views/shared/modal-popover/modal-popover.page */ 65524); 54/* harmony import */ var _views_web_views_shared_constatnts_json__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../views/web-views/shared/constatnts.json */ 20991); 55/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! rxjs */ 79765); 56/* harmony import */ var _views_modals_select_order_type_select_order_type_page__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../views/modals/select-order-type/select-order-type.page */ 84640); 57/* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @angular/platform-browser */ 39075); 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80let AppServiceService = class AppServiceService { 81 constructor(storage, translate, router, geolocation, requestService, oneSignal, platform, globalization, modalController, iab, menu, navController, toastController, zone, titleService, route) { 82 this.storage = storage; 83 this.translate = translate; 84 this.router = router; 85 this.geolocation = geolocation; 86 this.requestService = requestService; 87 this.oneSignal = oneSignal; 88 this.platform = platform; 89 this.globalization = globalization; 90 this.modalController = modalController; 91 this.iab = iab; 92 this.menu = menu; 93 this.navController = navController; 94 this.toastController = toastController; 95 this.zone = zone; 96 this.titleService = titleService; 97 this.route = route; 98 this.POPOVER_TYPES = _views_web_views_shared_constatnts_json__WEBPACK_IMPORTED_MODULE_13__.POPOVER_TYPES; 99 //App Object 100 this.animationDrop = false;
101 this.className = ''; 102 this.className2 = ''; 103 this.AddNsUB = []; 104 this.alagic_list = []; 105 this.STORAGE_KEYS = { 106 PAGES_KEY: "APP_PAGES" 107 }; 108 this.currentLang = 'en'; 109 this.cartIsOpen = false; 110 this.editing_cart_item = null; 111 this.routeToRestaurantList = false; 112 this.activeMenu = null; 113 this.menuList = []; 114 this.dishList = []; 115 this.hideCartButton = true; 116 this.selectedDish = { 117 total: 0, 118 toping_total: 0, 119 size_index: null, 120 size_id: null, 121 selectedTopings: [], 122 fullDishInfo: [] 123 }; 124 this.isSideMenu = false; 125 this.isFooterMenu = false; 126 this.closenotice = false; 127 this.isPreOrderAccept = false; 128 this.close_note_toggle = true; 129 this.appObject = { 130 appVersion: '0.1', 131 isFirstTime: true, 132 isAuthed: false, 133 platformIsReady: false, 134 viewPlatform: '', 135 isLoading: true, 136 currentLang: '', 137 isAddressHave: false, 138 isOrderProcess: false, 139 sideMenuPages: [], 140 FooterCouponLink: null, 141 myAddress: { 142 name: '', 143 lat: '', 144 lng: '' 145 }, 146 oneSignalConfig: { 147 key: '', 148 fireid: '' 149 }, 150 deviceUUID: '', 151 userId: '', 152 user: { 153 type: 'guest', 154 fname: '', 155 lname: '', 156 email: '', 157 telephone: '', 158 backyard: '', 159 instructions: '' 160 }, 161 baseUrl: '', 162 promotions: [], 163 new_promotions: [], 164 settings: [], 165 errors: [], 166 restaurants: [], 167 langList: [], 168 selectedRestaurant: null, 169 selectedRestaurantDetails: [], 170 isPointsEnable: false, 171 selectedRestaurantId: null, 172 selectedDeliveryMethod: 'pickup', 173 selectedCoupon: [], 174 orderObjectDup: { 175 cart: [] 176 }, 177 orderObject: { 178 cart: [], 179 discounts: [], 180 order_tax: [], 181 delivery_tax: [], 182 cart_summery: { 183 total_tax_inclusive: 0, 184 total_tax_exclusive: 0, 185 net_total_without_tax: 0, 186 net_total: 0, 187 total_discount: 0, 188 total_with_discount_price: 0, 189 delivery_cost: 0, 190 gross_total: 0, 191 min_reached: false, 192 min_amount: 0, 193 remarks: '', 194 total_dish_count: 0 195 }, 196 order_details: { 197 delivery_type: '', 198 delivery_date: 'asap', 199 delivery_time: 'asap', 200 delivery_address: { 201 name: '', 202 lat: '', 203 lng: '' 204 }, 205 payment_type: '', 206 name: '', 207 email: '', 208 mobile_number: '', 209 backyard: '', 210 special_note: '' 211 }, 212 resturent_id: "", 213 device_id: "", 214 device_type: "", 215 lang: "" 216 }, 217 theme: this.getDefaultThemeColors(), 218 couponWeb: '', 219 couponWebAdded: false 220 }; 221 this.email_content = true; 222 this.code_content = false; 223 this.repeatpass_content = false; 224 this.isWebVersion = false; 225 this.addToCartSuccessfulyCallBack = new rxjs__WEBPACK_IMPORTED_MODULE_15__.Subject(); 226 this.settingsLoadedCallBack = new rxjs__WEBPACK_IMPORTED_MODULE_15__.Subject(); 227 this.isSettingsLoaded = false; 228 this.availableDeliveryMethods = []; 229 this.selectedNotification = null; 230 this.dishFetchTimeoutList = []; 231 this.doNotFetchMain = false;
232 this.discountListWeb = []; 233 this.registrationServerError = false; 234 this.themeConfigFor = 'app'; 235 this.isThemeObjectLoaded = false; 236 this.themeOb = this.getDefaultThemeColors(); 237 /** 238 * in mobile app display location to change favourite restaurant 239 */ 240 this.tourModeOn = false; 241 /** 242 * keep selected restaurant categories for calculate category taxes later 243 */ 244 this.selectedRestaurantCategories = { 245 restaurantId: null, 246 categories: [] 247 }; 248 /** 249 * New validation added before placing order 250 * will check wether selected menu categories are available 251 * for the selected time slots by user 252 * so if there are any unavailable categories they will be on below array object 253 */ 254 this.menusNotAvailable = []; 255 this.tempDeliveryDate = ''; 256 this.tempDeliveryTime = ''; 257 // This will use to highlight cart items that arn't available for 258 // customer selected date and time in checkout page 259 this.unavailableDishes = []; 260 this.tourModeOnDeliveryPriceWeb = false; 261 // this implemented with vacation mode 262 this.isSelectedRestaurantOnVacation = false; 263 // vacation mode text to display on app 264 this.vacationModeText = ''; 265 // vacation mode is on msg in mobile view close btn action 266 this.vacationModeMsgToggle = true; 267 } 268 //START INIT 269 appInit() { 270 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 271 this.appObject.isLoading = true; 272 //get App Object from storage if available else set object 273 let appObject = yield this.storage.get('appObject'); 274 if (appObject && appObject.theme) { 275 this.themeOb = appObject.theme; 276 } 277 //if app version is different force init 278 this.appObject.deviceUUID = config.did; 279 this.appObject.currentLang = src_environments_environment__WEBPACK_IMPORTED_MODULE_6__.environment.DEFAULT_LANG; 280 if (appObject && appObject.appVersion == src_environments_environment__WEBPACK_IMPORTED_MODULE_6__.environment.APP_VERSION) { 281 this.appObject = appObject; 282 this.appObject.platformIsReady = false; 283 this.appObject.isLoading = true; 284 this.appObject.errors = []; 285 } 286 else { 287 this.appObject.appVersion = src_environments_environment__WEBPACK_IMPORTED_MODULE_6__.environment.APP_VERSION; 288 this.appObject.baseUrl = src_environments_environment__WEBPACK_IMPORTED_MODULE_6__.environment.BASE_URL; 289 } 290 if (!this.appObject.theme.app || !this.appObject.theme.web) 291 this.appObject.theme = this.getDefaultThemeColors(); 292 this.isWebVersion ? this.themeConfigFor = 'web' : ''; 293 this.isThemeObjectLoaded = true; 294 //register device in server 295 yield this.deviceRegister(); 296 //set language 297 yield this.getLanguages(); 298 yield this.setDefaultLanguage(); 299 //get google key 300 yield this.getGoogleKey(); 301 //get one signal key 302 //await this.getOneSignalKey(); 303 //init one signal 304 //await this.initOneSignal(); 305 //settigns 306 yield this.getSettings(); 307 this.appObject.platformIsReady = true; 308 this.appObject.isLoading = false; 309 //set global to ready 310 config.platformReady = true; 311 //clear cart for now 312 //this.appObject.orderObject.cart = []; 313 //this.appObject.orderObjectDup.cart = []; 314 if (!appObject) { 315 yield this.updateAppObject(); 316 //should route to getting started 317 //this.navController.navigateRoot(['/getting-started'], { replaceUrl: true }); 318 } 319 }); 320 } 321 /** 322 * This function for set default language as device language, function will map default language with 323 * our avaiable language if user doesn't set manually in first time 324 */ 325 setDefaultLanguage() { 326 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 327 if (this.appObject.currentLang != '') { 328 this.translate.setDefaultLang(this.appObject.currentLang); 329 this.translate.use(this.appObject.currentLang); 330 } 331 else { 332 if ((this.platform.is('android') || this.platform.is('ios')) && !this.isMobileWeb()) { 333 this.appObject.currentLang = src_environments_environment__WEBPACK_IMPORTED_MODULE_6__.environment.DEFAULT_LANG; 334 let DeviceLang = yield this.globalization.getPreferredLanguage(); 335 var patde = new RegExp("de"); 336 var patsi = new RegExp("si"); 337 if (this.appObject.langList.length > 0) { 338 for (let i = 0; i < this.appObject.langList.length; i++) { 339 let pat = new RegExp(this.appObject.langList[i]['code']); 340 if (pat.test(DeviceLang.value)) { 341 this.appObject.currentLang = this.appObject.langList[i]['code']; 342 } 343 } 344 } 345 this.translate.setDefaultLang(this.appObject.currentLang); 346 this.translate.use(this.appObject.currentLang); 347 } 348 else { 349 this.translate.setDefaultLang(src_environments_environment__WEBPACK_IMPORTED_MODULE_6__.environment.DEFAULT_LANG); 350 this.translate.use(src_environments_environment__WEBPACK_IMPORTED_MODULE_6__.environment.DEFAULT_LANG); 351 this.appObject.currentLang = src_environments_environment__WEBPACK_IMPORTED_MODULE_6__.environment.DEFAULT_LANG; 352 } 353 } 354 }); 355 } 356 /*** 357 * Device register in server, this device id required for every api calls in future 358 */ 359 deviceRegister(force = false) { 360 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 361 let currentid = yield this.storage.get('DEVICEUUID'); 362 // this.showAlert('error','DEVICEUUID' ,(currentid + ' | ' + this.appObject.deviceUUID),false) 363 if (force) { 364 if (currentid == this.appObject.deviceUUID) { 365 return false;
366 } 367 else { 368 yield this.storage.set('DEVICEUUID', this.appObject.deviceUUID); 369 } 370 } 371 if (!this.appObject.userId || force) 372 // this.showAlert('error','old user id | ' + force + ' | ' ,this.appObject.userId,false) 373 return yield this.requestService.post('register', { 374 'device_id': this.appObject.deviceUUID, 375 'lang': this.appObject.currentLang, 376 'type': this.appObject.user.type 377 }).then(data => { 378 if (data.status) { 379 this.appObject.userId = data.data.id; 380 this.gettingStarted(); 381 } 382 }, error => { 383 this.appObject.isLoading = false; 384 }); 385 }); 386 } 387 /** 388 * Get google key from server side 389 */ 390 getGoogleKey() { 391 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 392 return yield this.requestService.post('google/map-key?device_type=' + config.plf, []).then(data => { 393 if (data.status) { 394 config.gkey = data.key; 395 } 396 }, error => { 397 this.appObject.isLoading = false; 398 }); 399 }); 400 } 401 /** 402 * Get one signal key from server before initialize push notifications 403 */ 404 getOneSignalKey() { 405 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 406 return yield this.requestService.post('onesignal/key?device_type=' + config.plf, []).then(data => { 407 if (data.status) { 408 //set one signal id for web to init 409 config.osid = data.onesignal_key; 410 this.appObject.oneSignalConfig.key = data.onesignal_key; 411 this.appObject.oneSignalConfig.fireid = data.firebase_id; 412 } 413 }, error => { 414 this.appObject.isLoading = false; 415 }); 416 }); 417 } 418 /** 419 *Initialize one signal push notifications 420 */ 421 initOneSignal() { 422 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 423 if (this.platform.is('android') || this.platform.is('ios')) { 424 window["plugins"].oneSignal.startInit(this.appObject.oneSignalConfig.key, this.appObject.oneSignalConfig.fireid); 425 window["plugins"].oneSignal.inFocusDisplaying(window["plugins"].oneSignal.OSInFocusDisplayOption.InAppAlert); 426 window["plugins"].oneSignal.handleNotificationReceived().subscribe(() => { 427 // do something when notification is received 428 }); 429 window["plugins"].oneSignal.handleNotificationOpened().subscribe(() => { 430 // do something when a notification is opened 431 }); 432 window["plugins"].oneSignal.endInit(); 433 window["plugins"].oneSignal.getIds().then(identity => { 434 this.appObject.deviceUUID = identity.userId; 435 //call device registration again to store device id which from one signal 436 this.deviceRegister(); 437 this.updateAppObject(); 438 }); 439 } 440 }); 441 } 442 /** 443 * Update app object to store appObject 444 */ 445 updateAppObject() { 446 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 447 return yield this.storage.set('appObject', this.appObject); 448 }); 449 } 450 //END INIT 451 /** 452 * Getting started update 453 */ 454 gettingStarted() { 455 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 456 this.appObject.isFirstTime = false; 457 yield this.updateAppObject(); 458 this.router.navigateByUrl('home'); 459 }); 460 } 461 /** 462 * Init google map 463 */ 464 initGoogle(googleaddress) { 465 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 466 try { 467 var options = { 468 componentRestrictions: { country: src_environments_environment__WEBPACK_IMPORTED_MODULE_6__.environment.GOOGLE_COUNTRIES } 469 }; 470 this.googleAutocomplete = new google.maps.places.Autocomplete(yield googleaddress.getInputElement(), options); 471 this.googleAutocomplete.addListener('place_changed', () => { 472 var place = this.googleAutocomplete.getPlace(); 473 let addressIsValid = []; 474 let address = ''; 475 //for testing only 476 //addressIsValid['street_number'] = true; 477 //addressIsValid['route'] = true; 478 //addressIsValid['postal_code'] = true; 479 //addressIsValid['postal_code'] = true; 480 //should remove in production 481 if (place.address_components) { 482 addressIsValid = this.validateAddressComponents(place.address_components);
483 // place.address_components.forEach(part => { 484 // // console.log(part); 485 // if (part.types[0]) { 486 // if (part.types[0] === "street_number") { 487 // addressIsValid['street_number'] = true; 488 // } 489 // if (part.types[0] === "route") { 490 // addressIsValid['route'] = true; 491 // } 492 // if (part.types[0] === "postal_code") { 493 // addressIsValid['postal_code'] = true; 494 // } 495 // if (part.types[0] === "locality" || (part.types[1] && part.types[1] === "political")) { 496 // addressIsValid['locality'] = true; 497 // } 498 // } 499 // }); 500 } 501 // console.log(place, addressIsValid); 502 this.zone.run(() => { 503 if (this.isAddressComponentValid(addressIsValid)) { 504 this.appObject.isAddressHave = true; 505 // let address_splited = place.formatted_address.split(','); 506 // address = place.formatted_address; 507 // let country = address_splited[address_splited.length - 1]; 508 var changed = false; 509 // if (country.trim() === 'Germany') { 510 // address = address.replace(", Germany", ""); 511 // } 512 let streetNumber = ''; 513 if (addressIsValid['street_number'] === true) { 514 let streetNumberComponent = place.address_components.find((component) => component.types[0] && component.types[0] === 'street_number'); 515 if (streetNumberComponent) 516 streetNumber = streetNumberComponent.short_name ? streetNumberComponent.short_name.trim() : ''; 517 } 518 this.appObject.myAddress.streetNo = streetNumber; 519 // this.appObject.myAddress.name = address; 520 let generatedAddress = this.genarateAddressFromAddressComponents(place.address_components); 521 this.appObject.myAddress.name = generatedAddress; 522 // console.log(this.appObject.myAddress.name); 523 this.appObject.myAddress.lat = place.geometry.location.lat(); 524 this.appObject.myAddress.lng = place.geometry.location.lng(); 525 this.updateAppObject(); 526 this.appObject.errors = []; 527 } 528 else { 529 //address not valid 530 this.appObject.isAddressHave = false; 531 this.appObject.myAddress.name = ''; 532 this.appObject.myAddress.lat = ''; 533 this.appObject.myAddress.lng = ''; 534 this.appObject.myAddress.streetNo = ''; 535 this.updateAppObject(); 536 this.appObject.errors['address'] = ['address_is_not_valid']; 537 // console.log(this.appObject); 538 } 539 }); 540 }); 541 } 542 catch (error) { 543 setTimeout(() => { 544 this.initGoogle(googleaddress); 545 }, 1000); 546 } 547 }); 548 } 549 /** 550 * Generate address from google address component list 551 * @param addressComponents google address component list 552 * @returns 553 */ 554 genarateAddressFromAddressComponents(addressComponents) { 555 let address = ''; 556 let routeComponent = addressComponents.find((component) => component.types.length && component.types.includes('route')); 557 if (routeComponent) 558 address += routeComponent.short_name + ', '; 559 let streetNumberComponent = addressComponents.find((component) => component.types.length && component.types.includes('street_number')); 560 if (streetNumberComponent) 561 address += streetNumberComponent.short_name + ', '; 562 let postalCodeComponent = addressComponents.find((component) => component.types.length && component.types.includes('postal_code')); 563 if (postalCodeComponent) 564 address += postalCodeComponent.short_name + ', '; 565 // added another check for sublocality due to an issue with a specific address 566 // "Kölner Str. 21, 50226 Frechen" selected but return "Kölner Str. 21, 50226 Lindenthal" 567 // so sublocallity is excluded from the result set 568 let localityComponent = addressComponents.find((component) => component.types.length && ((component.types.includes('locality') || component.types.includes('political')) && !component.types.includes("sublocality"))); 569 if (!localityComponent) { 570 // if cannot find such a value, use condition as it was before 571 localityComponent = addressComponents.find((component) => component.types.length && (component.types.includes('locality') || component.types.includes('political'))); 572 } 573 if (localityComponent) 574 address += localityComponent.short_name; 575 return address; 576 } 577 /** 578 * 579 * @param addressIsValid validated Address component array 580 * @returns valid or not (boolean) 581 */ 582 isAddressComponentValid(addressIsValid) { 583 // addressIsValid['street_number'] === true && 584 return addressIsValid['route'] === true && addressIsValid['postal_code'] === true && addressIsValid['locality'] === true; 585 } 586 /**
587 * Will validate address component object of google response from google autocomplete 588 * @param addressComponents address component object returned from google api 589 * @returns validated address array 590 */ 591 validateAddressComponents(addressComponents) { 592 let addressIsValid = []; 593 addressComponents.forEach(part => { 594 // console.log(part); 595 if (part.types[0]) { 596 if (part.types[0] === "street_number") { 597 addressIsValid['street_number'] = true; 598 } 599 if (part.types[0] === "route") { 600 addressIsValid['route'] = true; 601 } 602 if (part.types[0] === "postal_code") { 603 addressIsValid['postal_code'] = true; 604 } 605 if (part.types[0] === "locality" || (part.types[1] && part.types[1] === "political")) { 606 addressIsValid['locality'] = true; 607 } 608 } 609 }); 610 return addressIsValid; 611 } 612 /** 613 * Find restaurant near by address 614 */ 615 findNearByRestaurants(pageToGo = 'restaurant-list', getAllRestaurants = false) { 616 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 617 this.appObject.isLoading = true; 618 var sending; 619 if (this.appObject.myAddress.lat == '' || this.appObject.myAddress.lng == '' || getAllRestaurants) { 620 sending = { 621 'device_id': this.appObject.deviceUUID, 622 'lang': this.appObject.currentLang, 623 'delivery_method': this.appObject.selectedDeliveryMethod 624 }; 625 } 626 else { 627 if (this.appObject.selectedDeliveryMethod == 'delivery' || (this.appObject.settings.is_franchise === 'true' && this.appObject.settings.app_configuration && this.appObject.settings.app_configuration.has_multiple_restaurants)) { 628 sending = { 629 'device_id': this.appObject.deviceUUID, 630 'lang': this.appObject.currentLang, 631 'latitude': this.appObject.myAddress.lat, 632 'longitude': this.appObject.myAddress.lng, 633 'delivery_method': this.appObject.selectedDeliveryMethod 634 }; 635 } 636 else { 637 sending = { 638 'device_id': this.appObject.deviceUUID, 639 'lang': this.appObject.currentLang, 640 'delivery_method': this.appObject.selectedDeliveryMethod 641 }; 642 } 643 } 644 return yield this.requestService.post('restaurant/list', sending).then(data => { 645 if (data.status) { 646 let restaurants = data.data; 647 this.routeToRestaurantList = false; 648 // get only selected ordering type is available restaurants 649 let filteredRestaurants = restaurants; 650 // .filter((restaurant) => { 651 // return restaurant.openDetails && restaurant.openDetails['is_' + this.appObject.selectedDeliveryMethod] 652 // }); 653 // .filter((restaurant) => { 654 // return restaurant.openDetails && restaurant.openDetails['is_' + this.appObject.selectedDeliveryMethod] 655 // }); 656 this.appObject.restaurants = filteredRestaurants; 657 !this.isWebVersion && pageToGo && pageToGo !== 'branch-selected' && pageToGo !== 'do-not-redirect' ? this.router.navigate([pageToGo], { replaceUrl: true }) : ''; 658 } 659 else { 660 this.appObject.restaurants = []; 661 this.updateAppObject(); 662 if (!this.isWebVersion && pageToGo !== 'branch-selected' && pageToGo !== 'do-not-redirect') 663 this.router.navigate(['restaurant-list'], { replaceUrl: true }); 664 } 665 this.appObject.isLoading = false;
666 }, error => { 667 this.appObject.isLoading = false; 668 }); 669 }); 670 } 671 /** 672 * This function will return all the actiuve restaurants 673 * Specially made for postal code feature, So it can get all the delivery enabled restaurants 674 * and filter by selected postal code 675 */ 676 getAllRestaurants() { 677 return new Promise((resolve, reject) => { 678 let sending = { 679 'device_id': this.appObject.deviceUUID, 680 'lang': this.appObject.currentLang, 681 'delivery_method': 'delivery' 682 }; 683 this.requestService.post('restaurant/list', sending).then(data => { 684 this.appObject.isLoading = false; 685 return resolve(data); 686 }, error => { 687 return reject(error); 688 this.appObject.isLoading = false; 689 }); 690 }); 691 } 692 /** 693 * Find restaurants nearby user 694 * @returns Promise 695 */ 696 getRestaurantListForFavourite() { 697 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 698 let params = { 699 'device_id': this.appObject.deviceUUID, 700 'lang': this.appObject.currentLang, 701 'latitude': this.appObject.myAddress.lat, 702 'longitude': this.appObject.myAddress.lng, 703 }; 704 setTimeout(() => { 705 this.appObject.isLoading = true; 706 }, 10); 707 this.appObject.restaurants = []; 708 return yield this.requestService.post('restaurant/list', params).then(data => { 709 if (data.status) { 710 let restaurants = data.data; 711 this.routeToRestaurantList = false; 712 let filteredRestaurants = restaurants; 713 this.appObject.restaurants = filteredRestaurants; 714 } 715 this.appObject.isLoading = false; 716 }, error => { 717 this.appObject.isLoading = false; 718 }); 719 }); 720 } 721 /** 722 * Get current location of user 723 */ 724 getCurrentLocation() { 725 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 726 this.appObject.isLoading = true; 727 let options = { maximumAge: 60000, timeout: 30000, enableHighAccuracy: true }; 728 var cpos = ""; 729 try { 730 let Glocation = yield this.geolocation.getCurrentPosition(options).catch((error) => { 731 if (error && error.code === error.PERMISSION_DENIED) { 732 this.translate.get(['key.location_access_denied', 'key.please_allow_location_permission_to_get_your_current_location']).toPromise().then((response) => { 733 this.showAlert('error', response['key.location_access_denied'], response['key.please_allow_location_permission_to_get_your_current_location'], false); 734 }); 735 this.appObject.isLoading = false; 736 console.log('please allow location'); 737 // this.showAlert('error','Location access denied','Please allow location access permission'); 738 } 739 }); 740 this.appObject.myAddress.lat = Glocation['coords']['latitude']; 741 this.appObject.myAddress.lng = Glocation['coords']['longitude']; 742 var postal = ""; 743 var city = ""; 744 var road = ""; 745 var homeno = ""; 746 var geocoder = new google.maps.Geocoder(); 747 var latlng = { lat: this.appObject.myAddress.lat, lng: this.appObject.myAddress.lng }; 748 geocoder.geocode({ 'location': latlng }, function (results, status) { 749 if (status == google.maps.GeocoderStatus.OK) { 750 for (let i = 0; i < results[0]['address_components'].length; i++) { 751 if (results[0]['address_components'][i]['types'][0] == "postal_code") { 752 postal = results[0]['address_components'][i]['short_name']; 753 } 754 if (results[0]['address_components'][i]['types'][0] == "locality") { 755 city = results[0]['address_components'][i]['short_name']; 756 } 757 if (results[0]['address_components'][i]['types'][0] == "route") { 758 road = results[0]['address_components'][i]['short_name']; 759 } 760 // if (results[0]['address_components'][i]['types'][0] == "street_number") { 761 // homeno = results[0]['address_components'][i]['short_name']; 762 // } 763 } 764 cpos = cpos + (road != "" ? road + ", " : ""); 765 // cpos = cpos + (homeno != "" ? homeno + ", " : ""); 766 cpos = cpos + (postal != "" ? postal + ", " : ""); 767 cpos = cpos + (city != "" ? city : ""); 768 } 769 }); 770 } 771 catch (error) { 772 } 773 setInterval(() => { 774 if (cpos != "") { 775 this.appObject.myAddress.name = cpos;
776 this.appObject.isAddressHave = true; 777 this.updateAppObject(); 778 cpos = ""; 779 this.appObject.isLoading = false; 780 this.appObject.errors = []; 781 } 782 }, 1000); 783 }); 784 } 785 /** 786 * Get promotions 787 */ 788 getPromo() { 789 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 790 return yield this.requestService.post('promotion/list', { 791 'device_id': this.appObject.deviceUUID, 792 'lang': this.appObject.currentLang 793 }).then(data => { 794 var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m; 795 if (data.status) { 796 this.appObject.promotions = data.data; 797 this.appObject.FooterCouponLink = '/my-products/' + ((_d = (_c = (_b = (_a = this.appObject) === null || _a === void 0 ? void 0 : _a.promotions) === null || _b === void 0 ? void 0 : _b.resturent) === null || _c === void 0 ? void 0 : _c.show_on_list[0]) === null || _d === void 0 ? void 0 : _d.slug) + '/category/' + ((_h = (_g = (_f = (_e = this.appObject) === null || _e === void 0 ? void 0 : _e.promotions) === null || _f === void 0 ? void 0 : _f.category) === null || _g === void 0 ? void 0 : _g.show_on_list[0]) === null || _h === void 0 ? void 0 : _h.id) + '/' + ((_m = (_l = (_k = (_j = this.appObject) === null || _j === void 0 ? void 0 : _j.promotions) === null || _k === void 0 ? void 0 : _k.category) === null || _l === void 0 ? void 0 : _l.show_on_list[0]) === null || _m === void 0 ? void 0 : _m.name); 798 } 799 }, error => { 800 this.appObject.isLoading = false; 801 }); 802 }); 803 } 804 /** 805 * Show languages 806 */ 807 showLanguage() { 808 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 809 const modal = yield this.modalController.create({ 810 component: _views_modals_popup_popup_page__WEBPACK_IMPORTED_MODULE_5__.PopupPage, 811 cssClass: 'custom-popup', 812 componentProps: { 813 'currentUI': 'lang' 814 } 815 }); 816 yield modal.present(); 817 }); 818 } 819 /** 820 * Login 821 */ 822 login(login_details) { 823 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 824 this.appObject.errors = []; 825 login_details['lang'] = this.appObject.currentLang; 826 login_details['device_id'] = this.appObject.deviceUUID; 827 login_details['device_type'] = config.plf; 828 return new Promise((resolve, reject) => { 829 this.requestService.post('login', login_details).then(response => { 830 if (response.status) { 831 this.appObject.userId = response.data.id; 832 this.appObject.isAuthed = true; 833 this.appObject.deviceUUID = response.data.device_id; 834 this.appObject.user.type = 'registered'; 835 // this.navigateToRegisterd(); 836 } 837 else { 838 this.appObject.errors = this.getErrorArray(response.msg); 839 } 840 return resolve(response); 841 }, error => { 842 this.appObject.isLoading = false; 843 return reject(error); 844 }); 845 }); 846 }); 847 } 848 /** 849 * Logout 850 * @param isWebVersion send a boolean to check web or app version 851 */ 852 logOut(isWebVersion = false) { 853 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 854 return new Promise((resolve, reject) => (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 855 yield this.requestService.post('logout', { 856 'device_id': this.appObject.deviceUUID, 857 'language': this.appObject.currentLang, 858 'device_type': config.plf 859 }).then((response) => (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 860 // console.log('logout response : ', response); 861 if (response.status) { 862 this.appObject.isAuthed = false;
863 // reset user object to guest 864 this.appObject.user.type = 'guest'; 865 this.appObject.user.backyard = ""; 866 this.appObject.user.email = ""; 867 this.appObject.user.fname = ""; 868 this.appObject.user.instructions = ""; 869 this.appObject.user.lname = ""; 870 this.appObject.user.telephone = ""; 871 this.appObject.userId = ''; 872 yield this.deviceRegister(); 873 yield this.updateAppObject(); 874 // only redirect in mobile app 875 if (!isWebVersion) 876 this.router.navigate(['/home'], { replaceUrl: true }); 877 return resolve(response); 878 } 879 })).catch((error) => { 880 // console.log('error : ', error); 881 return reject(error); 882 }); 883 })); 884 }); 885 } 886 /** 887 * Register 888 */ 889 register(registration_details) { 890 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 891 return new Promise((resolve, reject) => { 892 this.appObject.errors = []; 893 registration_details['lang'] = this.appObject.currentLang; 894 registration_details['device_id'] = this.appObject.deviceUUID; 895 this.requestService.post("register", registration_details).then(data => { 896 if (data.status) { 897 this.appObject.isAuthed = true; 898 this.appObject.userId = data.data.id; 899 this.appObject.deviceUUID = data.data.device_id; 900 this.appObject.user.type = 'registered'; 901 if (!this.isWebVersion) 902 this.navigateToRegisterd(); 903 } 904 else { 905 this.appObject.errors = this.getErrorArray(data.msg); 906 } 907 // console.log('registration_details : ', registration_details); 908 if (registration_details.type === 'facebook' || registration_details.type === 'google' || registration_details.type === 'apple') { 909 // console.log('Triggered'); 910 return resolve(data); 911 } 912 // console.log(this.appObject.errors); 913 }, error => { 914 this.appObject.isLoading = false; 915 return reject(error); 916 }); 917 }); 918 }); 919 } 920 register_from_email(registration_details, isWebVersion = false) { 921 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 922 this.registrationServerError = false; 923 this.appObject.isLoading = true; 924 this.appObject.errors = []; 925 registration_details['lang'] = this.appObject.currentLang; 926 registration_details['device_id'] = this.appObject.deviceUUID; 927 return yield this.requestService.post("register", registration_details).then(data => { 928 // console.log('response : ', data) 929 if (data.status) { 930 this.appObject.isAuthed = true; 931 this.appObject.userId = data.data.id; 932 this.appObject.deviceUUID = data.data.device_id; 933 this.appObject.user.type = 'registered'; 934 if (!isWebVersion) 935 this.navigateToRegisterd(); 936 } 937 else { 938 this.appObject.errors = this.getErrorArray(data.msg); 939 if (data.already_exists_mobile) { 940 console.log('mobile number already exists'); 941 } 942 // console.log('am called') 943 } 944 this.appObject.isLoading = false; 945 }, error => { 946 this.registrationServerError = true; 947 this.appObject.isLoading = false;
948 }); 949 }); 950 } 951 navigateToRegisterd() { 952 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 953 yield this.updateAppObject(); 954 if (this.appObject.isOrderProcess) { 955 this.router.navigate(['checkout']); 956 } 957 else { 958 this.router.navigate(['profile']); 959 } 960 }); 961 } 962 getErrorArray(data) { 963 let err = new Object(); 964 Object.keys(data).map(function (k) { 965 if (typeof data[k][0] === 'object') { 966 let e = new Object(); 967 let i = 0; 968 Object.keys(data[k][0]).map(function (ke) { 969 e[i] = data[k][0][ke]; 970 i++; 971 }); 972 err[k] = e; 973 } 974 else { 975 err[k] = { 0: data[k][0] }; 976 } 977 }); 978 return err; 979 } 980 /** 981 * Clear address 982 */ 983 clearAddress(clearByForce = '') { 984 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 985 this.appObject.isAddressHave = false; 986 this.appObject.myAddress.name = ""; 987 this.appObject.myAddress.lat = ""; 988 this.appObject.myAddress.lng = ""; 989 this.appObject.myAddress.streetNo = ""; 990 yield this.updateAppObject(); 991 this.appObject.errors = { 992 address: { 993 0: clearByForce ? clearByForce : 'address_is_required' 994 } 995 }; 996 }); 997 } 998 clearCart() { 999 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 1000 // console.log('clear cart called'); 1001 this.appObject.orderObjectDup.cart = []; 1002 this.appObject.orderObject.cart = []; 1003 this.appObject.orderObject.cart_summery = { 1004 // cart_summery: { 1005 total_tax_inclusive: 0, 1006 total_tax_exclusive: 0, 1007 net_total_without_tax: 0, 1008 net_total: 0, 1009 total_discount: 0, 1010 total_with_discount_price: 0, 1011 delivery_cost: 0, 1012 gross_total: 0, 1013 min_reached: false, 1014 min_amount: 0, 1015 remarks: '', 1016 total_dish_count: 0, 1017 dish_net_total_with_discount: 0 1018 // } 1019 }; 1020 this.appObject.orderObject.selectedTable = null; 1021 this.appObject.orderObject.save_items = null; 1022 this.appObject.orderObject.table_order_id = null; 1023 this.appObject.selectedCoupon = []; 1024 this.appObject.couponWeb = ''; 1025 this.appObject.couponWebAdded = false; 1026 // console.log('cart cleared'); 1027 this.updateAppObject(); 1028 }); 1029 } 1030 /** 1031 * Get restaurant by slug 1032 */ 1033 getRestaurantBySlug(slug, cat = null) { 1034 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 1035 this.appObject.isLoading = true; 1036 // reset selected restaurant data and close notice data 1037 this.closenotice = false; 1038 this.isPreOrderAccept = false; 1039 this.isSelectedRestaurantOnVacation = false; 1040 this.vacationModeText = ''; 1041 this.appObject.selectedRestaurantDetails = null; 1042 this.menuList = []; 1043 if (this.appObject.deviceUUID == "") { 1044 setTimeout(() => { 1045 this.getRestaurantBySlug(slug); 1046 }, 100); 1047 } 1048 else { 1049 // console.log('called multiple times'); 1050 yield this.requestService.post('restaurant/' + slug, { 1051 'device_id': this.appObject.deviceUUID, 1052 'language': this.appObject.currentLang, 1053 'device_type': config.plf, 1054 'delivery_type': this.appObject.selectedDeliveryMethod, 1055 'lat': this.appObject.myAddress.lat, 1056 'lng': this.appObject.myAddress.lng 1057 }).then(data => { 1058 this.appObject.isLoading = false;
1059 if (data.status) { 1060 // console.log('this.appObject.selectedRestaurantId | ', this.appObject.selectedRestaurantId, ' | data.data.id : ', data.data.id); 1061 if (this.appObject.selectedRestaurantId != data.data.id) { 1062 this.clearCart(); 1063 // console.log('restaurant not equal'); 1064 // console.log('Cleared Babe'); 1065 } 1066 this.appObject.selectedRestaurant = slug; 1067 let payment_methods = JSON.parse(data.data['payment_methods']); 1068 this.appObject.selectedRestaurantDetails = data.data; 1069 this.appObject.selectedRestaurantId = this.appObject.selectedRestaurantDetails.id; 1070 this.appObject.selectedRestaurantDetails['payment_methods'] = []; 1071 // make points system turned off by default, if its enabled it will turn on below 1072 this.appObject.isPointsEnable = false; 1073 payment_methods.forEach(element => { 1074 if (element.isActive == "true") { 1075 let paymentMethodObj = { 1076 displayName: element.displayName, 1077 id: element.id, 1078 isActive: element.isActive, 1079 is_dine_in: element.is_dine_in, 1080 is_delivery: element.is_delivery, 1081 is_pickup: element.is_pickup, 1082 }; 1083 // // get points payment method configurations 1084 // if (element.id === 'points' && element.pointsConfigurations) { 1085 // paymentMethodObj['config'] = element.pointsConfigurations; 1086 // } 1087 // // get paypal payment method configurations 1088 // if (element.id === 'paypal' && element.paypalConfigurations) { 1089 // paymentMethodObj['config'] = element.paypalConfigurations; 1090 // } 1091 if (element[element.id + 'Configurations']) { 1092 paymentMethodObj['config'] = element[element.id + 'Configurations']; 1093 } 1094 this.appObject.selectedRestaurantDetails['payment_methods'].push(paymentMethodObj); 1095 } 1096 // find whether selected restaurant is support for point system 1097 if (element.id === 'points' && element.isActive === 'true') 1098 this.appObject.isPointsEnable = true; 1099 }); 1100 if (this.appObject.selectedRestaurantDetails.openDetails.current_status == "closed" && !this.appObject.selectedRestaurantDetails.openDetails.is_pre_order) { 1101 this.closenotice = true; 1102 } 1103 else if (this.appObject.selectedRestaurantDetails.openDetails.current_status == "closed" && this.appObject.selectedRestaurantDetails.openDetails.is_pre_order) { 1104 this.isPreOrderAccept = true; 1105 this.closenotice = true; 1106 } 1107 else { 1108 this.closenotice = false; 1109 } 1110 if (this.appObject.selectedRestaurantDetails.vacation_mode === 'true') { 1111 this.isSelectedRestaurantOnVacation = true; 1112 this.vacationModeText = this.appObject.selectedRestaurantDetails.vacation_mode_text; 1113 } 1114 this.appObject.selectedRestaurantId = data.data.id; 1115 this.selectedRestaurantCategories.restaurantId = this.appObject.selectedRestaurantId; 1116 // update if there is selected postal code detail with new pricing 1117 if (this.appObject.postalCodeDetails && this.appObject.postalCodeDetails.price) { 1118 let postalChargesOfSelectedRestaurant = this.appObject.postalCodeDetails.price.find((postalCharges) => postalCharges.restaurantId === this.appObject.selectedRestaurantDetails.id); 1119 let selectedPostalCodeNewDetails = this.appObject.selectedRestaurantDetails.postal_code_details_v2.find((postal) => postal.code === this.appObject.postalCodeDetails.code && postal.name === this.appObject.postalCodeDetails.name); 1120 if (postalChargesOfSelectedRestaurant && selectedPostalCodeNewDetails) 1121 postalChargesOfSelectedRestaurant.time_slots = selectedPostalCodeNewDetails.time_slots; 1122 } 1123 this.updateAppObject(); 1124 this.getMenuDetails(cat); 1125 } 1126 }, error => { 1127 this.appObject.isLoading = false;
1128 }); 1129 } 1130 }); 1131 } 1132 getCouponPormo(slug) { 1133 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 1134 return yield this.requestService.post('restaurant/coupon-list/' + slug, { 1135 'device_id': this.appObject.deviceUUID, 1136 'language': this.appObject.currentLang, 1137 'device_type': config.plf, 1138 }); 1139 }); 1140 } 1141 /** 1142 * Get menu details by restaurant_id 1143 */ 1144 getMenuDetails(cat = null) { 1145 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 1146 this.appObject.isLoading = true; 1147 this.requestService.post('menu-category/list', { 1148 'device_id': this.appObject.deviceUUID, 1149 'language': this.appObject.currentLang, 1150 'device_type': config.plf, 1151 'restaurant_id': this.appObject.selectedRestaurantId, 1152 'is_dish': 'true' 1153 }).then(data => { 1154 if (data.status) { 1155 this.menuList = data.data; 1156 this.selectedRestaurantCategories.categories = [...this.menuList]; 1157 // get dishes 1158 for (let i = 0; i < this.menuList.length; i++) { 1159 if (!this.menuList[i].dishes || !this.menuList[i].dishes.length) { 1160 this.get_dishes(i); 1161 } 1162 } 1163 // if (this.menuList.length > 0) { 1164 // if (cat == null) { 1165 // this.getDishDetails(this.menuList[0].id, this.menuList[0].restaurants_id); 1166 // } else { 1167 // this.getDishDetails(cat, cat.restaurants_id); 1168 // } 1169 // } else { 1170 // this.appObject.isLoading = false; 1171 // } 1172 this.appObject.isLoading = false; 1173 } 1174 }, error => { 1175 this.appObject.isLoading = false; 1176 }); 1177 }); 1178 } 1179 getDishDetails(cat_id, res_id) { 1180 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 1181 //this.appObject.isLoading = true; 1182 this.activeMenu = cat_id; 1183 this.requestService.post('dish/list', { 1184 'device_id': this.appObject.deviceUUID, 1185 'language': this.appObject.currentLang, 1186 'device_type': config.plf, 1187 'menu_categorie_id': cat_id, 1188 'restaurant_id': 2 1189 }).then(data => { 1190 if (data.status) { 1191 this.dishList = data.data; 1192 } 1193 this.appObject.isLoading = false; 1194 }, error => { 1195 this.appObject.isLoading = false; 1196 }); 1197 }); 1198 } 1199 getPriceLabel(price) { 1200 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 1201 let p = ''; 1202 if (this.appObject.settings.currency_position == 'after') { 1203 p = price + ' ' + this.appObject.settings.currency_symbol; 1204 } 1205 else { 1206 p = this.appObject.settings.currency_symbol + ' ' + price; 1207 } 1208 // console.log(p); 1209 return p; 1210 }); 1211 } 1212 goToOrder() { 1213 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 1214 if (this.appObject.isAddressHave) { 1215 this.router.navigate(['/restaurant-list'], { replaceUrl: false }); 1216 } 1217 else { 1218 this.routeToRestaurantList = true; 1219 this.router.navigate(['/find-near-by-me'], { replaceUrl: true }); 1220 } 1221 }); 1222 } 1223 calcSelectedDishTotal() { 1224 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 1225 if (this.selectedDish.fullDishInfo.is_size == 'true') { 1226 this.selectedDish.total = this.selectedDish.fullDishInfo.sizes[this.selectedDish.size_index][this.appObject.selectedDeliveryMethod]; 1227 } 1228 else { 1229 this.selectedDish.total = this.selectedDish.fullDishInfo[this.appObject.selectedDeliveryMethod]; 1230 } 1231 this.selectedDish.toping_total = 0; 1232 if (this.selectedDish.selectedTopings.length > 0) { 1233 var topingTotal = 0; 1234 var dIshTotal = 0; 1235 dIshTotal += this.selectedDish.total; 1236 // console.log("this.selectedDish.selectedTopings :",this.selectedDish.selectedTopings) 1237 for (let index = 0; index < this.selectedDish.selectedTopings.length; index++) { 1238 // to avoid expression change exception 1239 dIshTotal += this.selectedDish.selectedTopings[index].total; 1240 topingTotal += this.selectedDish.selectedTopings[index].total; 1241 } 1242 setTimeout(() => { 1243 this.selectedDish.toping_total = topingTotal; 1244 this.selectedDish.total = dIshTotal; 1245 }, 0.1); 1246 } 1247 // // console.log(this.selectedDish); 1248 }); 1249 } 1250 check_is_selected(t_id, is_mand, type) { 1251 let available = 0;
1252 this.selectedDish.selectedTopings.forEach(element => { 1253 if (t_id == element.topping_id) { 1254 available = element.count; 1255 } 1256 }); 1257 if (available == 0 && is_mand == 'true' && type == "add-on") { 1258 this.appObject.errors['shoud_select_toping_' + t_id] = true; 1259 this.appObject.errors['mandatory_toping_should_be_selected'] = true; 1260 } 1261 return available; 1262 } 1263 addSizeToCart(fromCrossSelling = false) { 1264 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 1265 this.appObject.errors = []; 1266 // show alert when store is closed and preorder not accept 1267 if ((this.closenotice && !this.isPreOrderAccept) || this.isSelectedRestaurantOnVacation) { 1268 if (!this.isWebVersion) 1269 this.showAlert('error', this.isSelectedRestaurantOnVacation ? 'key.we_are_on_a_vacation' : 'key.restaurant_closed', this.appObject.selectedRestaurantDetails.openDetails.text ? this.appObject.selectedRestaurantDetails.openDetails.text : 'closeNote', false); 1270 else { 1271 this.translate.get(this.isSelectedRestaurantOnVacation ? 'key.we_are_on_a_vacation' : 'key.we_are_closed_at_the_moment_and_wouldnt_accept_any_orders').toPromise().then((data) => { 1272 this.showToast(data, 'danger', 'bottom', 5000); 1273 }).catch((err) => { 1274 console.log('error while fetching close notice : ', err); 1275 }); 1276 } 1277 return; 1278 } 1279 // check the selected ordering method is available in selected restaurant 1280 // if (this.appObject.selectedRestaurantDetails) { 1281 // let availbaleDeliveryMethodsInRest: string[] = this.findSelectedRestaurantOrderTypes(this.appObject.selectedRestaurantDetails.openDetails, true); 1282 // if (!availbaleDeliveryMethodsInRest.includes(this.appObject.selectedDeliveryMethod)) { 1283 // this.translate.get('key.selected_ordering_method_not_available_at_the_moment').toPromise().then((data) => { 1284 // this.showToast(data, 'danger', 'bottom', 5000); 1285 // }).catch((err) => { 1286 // console.log('error while fetching close notice : ', err); 1287 // }) 1288 // return; 1289 // } 1290 // } 1291 // console.log(this.selectedDish.fullDishInfo); 1292 //check total toping count if is_mandatory 1293 let error_on_dish = false; 1294 let selected_size_or_scenario = []; 1295 if (this.selectedDish.fullDishInfo.is_size == 'true') { 1296 if (this.selectedDish.size_index === null) { 1297 this.appObject.errors['size_select'] = 'please_select_a_size'; 1298 return; 1299 } 1300 selected_size_or_scenario = this.selectedDish.fullDishInfo.sizes[this.selectedDish.size_index].scenarios; 1301 } 1302 else { 1303 selected_size_or_scenario = this.selectedDish.fullDishInfo.scenarios; 1304 } 1305 //check mandatory toping is selected 1306 /*for (let index = 0; index < selected_size_or_scenario.length; index++) { 1307 if(selected_size_or_scenario[index].is_mandatory == 'true'){ 1308 this.check_is_selected(selected_size_or_scenario[index].id); 1309 } 1310 }*/ 1311 if (selected_size_or_scenario) { 1312 try { 1313 //scenario 1314 selected_size_or_scenario.forEach(element => { 1315 let this_scenario_selected_count = 0; 1316 //toping 1317 element['topings'].forEach(elementt => { 1318 let selected_count = this.check_is_selected(elementt.id, elementt.is_mandatory, element.btn_type); 1319 // // console.log('zzz:', selected_count); 1320 this_scenario_selected_count += selected_count; 1321 }); 1322 if (element.is_mandatory == 'true') { 1323 //validate by checking min and max 1324 if (element.btn_type == "optional") { 1325 //check min and max 1326 if (!(element.min_toping_count <= this_scenario_selected_count && element.max_toping_count >= this_scenario_selected_count)) { 1327 this.appObject.errors['error_in_scenario_' + element.i
1327d] = true; 1328 error_on_dish = true; 1329 } 1330 } 1331 else { 1332 //only min 1333 if (!(element.min_toping_count <= this_scenario_selected_count)) { 1334 this.appObject.errors['error_in_scenario_' + element.id] = true; 1335 error_on_dish = true; 1336 } 1337 } 1338 } 1339 // // console.log('selected count', this_scenario_selected_count); 1340 }); 1341 } 1342 catch (error) { 1343 } 1344 } 1345 if (this.appObject.errors['mandatory_toping_should_be_selected'] || error_on_dish) { 1346 this.appObject.errors['mandatory_toping_should_be_selected'] = true; 1347 return false; 1348 } 1349 if (this.editing_cart_item) { 1350 this.appObject.orderObject.cart.splice(this.editing_cart_item, 1); 1351 this.appObject.orderObjectDup.cart.splice(this.editing_cart_item, 1); 1352 } 1353 let dishDetails = []; 1354 dishDetails['dish_id'] = this.selectedDish.fullDishInfo.id; 1355 dishDetails['count'] = 1; 1356 if (this.selectedDish.fullDishInfo.is_size == 'true') { 1357 dishDetails['name'] = this.selectedDish.fullDishInfo.name + ' (' + this.selectedDish.fullDishInfo.sizes[this.selectedDish.size_index].name + ')'; 1358 dishDetails['size_info'] = { 1359 size_id: this.selectedDish.size_id, 1360 topping_info: this.selectedDish.selectedTopings 1361 }; 1362 } 1363 else { 1364 dishDetails['name'] = this.selectedDish.fullDishInfo.name; 1365 dishDetails['size_info'] = { 1366 size_id: this.selectedDish.size_id, 1367 topping_info: this.selectedDish.selectedTopings 1368 }; 1369 } 1370 this.appObject.orderObject.cart.push({ 1371 'dish_id': dishDetails['dish_id'], 1372 'count': dishDetails['count'], 1373 'name': dishDetails['name'], 1374 'size_info': dishDetails['size_info'], 1375 'points_per_dish': (this.appObject.isPointsEnable && this.selectedDish.fullDishInfo.points_per_dish) ? this.selectedDish.fullDishInfo.points_per_dish : 0 1376 }); 1377 this.appObject.orderObjectDup.cart.push(this.selectedDish.fullDishInfo); 1378 yield this.calculateCartAmounts(); 1379 this.modalController.dismiss({ 1380 'dismissed': true 1381 }); 1382 if (this.cartIsOpen) { 1383 this.editing_cart_item = false; 1384 const modal = yield this.modalController.create({ 1385 component: _views_modals_cart_cart_page__WEBPACK_IMPORTED_MODULE_9__.CartPage, 1386 cssClass: 'custom-popup' 1387 }); 1388 yield modal.present(); 1389 } 1390 else { 1391 this.animationDrop = true; 1392 this.className = 'animating'; 1393 setTimeout(function () { 1394 this.className = ''; 1395 this.animationDrop = false; 1396 }.bind(this), 1000); 1397 // if not from cross selling page, then allow to display cart icon 1398 if (!fromCrossSelling) 1399 this.hideCartButton = false; 1400 } 1401 // check if the process came from cross selling form, if it is then mark the question as answered 1402 // otherwise open cross selling popup if available on the selected dish 1403 let validQuestion = this.selectedDish.fullDishInfo && this.selectedDish.fullDishInfo.cross_selling_products && this.selectedDish.fullDishInfo.cross_selling_products.length ? 1404 this.selectedDish.fullDishInfo.cross_selling_products.find((csproduct) => csproduct.category.count > 0) : null; 1405 if (!fromCrossSelling && validQuestion && this.selectedDish.fullDishInfo && this.selectedDish.fullDishInfo.cross_selling_products && this.selectedDish.fullDishInfo.cross_selling_products.length) { 1406 if (!this.isWebVersion) { 1407 this.hideCartButton = true; 1408 const modal = yield this.modalController.create({ 1409 component: _views_modals_cross_selling_cross_selling_page__WEBPACK_IMPORTED_MODULE_10__.CrossSellingPage, 1410 cssClass: 'custom-popup', 1411 componentProps: { 1412 'crossSellingProducts': this.selectedDish.fullDishInfo.cross_selling_products, 1413 'selectedDishCategory': this.selectedDish.fullDishInfo.menu_categories_id.id, 1414 'title': this.selectedDish.fullDishInfo.name 1415 } 1416 }); 1417 yield modal.present(); 1418 } 1419 else { 1420 const modal = yield this.modalController.create({ 1421 component: _views_web_views_shared_modal_popover_modal_popover_page__WEBPACK_IMPORTED_MODULE_12__.ModalPopoverPage, 1422 componentProps: { 1423 'type': this.POPOVER_TYPES.CROSS_SELLING.TYPE, 1424 'title': this.selectedDish.fullDishInfo.name, 1425 'crossSellingProducts': this.selectedDish.fullDishInfo.cross_selling_products, 1426 'selectedDishCategory': this.selectedDish.fullDishInfo.menu_categories_id.id, 1427 } 1428 }); 1429 yield modal.present(); 1430 } 1431 } 1432 else if (fromCrossSelling) { 1433 this.watchAddToCartFromCrossSelling({ status: 'done' }); 1434 } 1435 }); 1436 } 1437 /** 1438 * This function will validate topping senario configurations 1439 * when its checked or even quantity change 1440 * 1441 * Part of this function is copied from addSizeToCart function 1442 * implemented by Pumayk26 at 2024-04-23 1443 */ 1444 validateDishSenarioToppingConfigsRealTime() { 1445 //check total toping count if is_mandatory 1446 let error_on_dish = false;
1447 let selected_size_or_scenario = []; 1448 if (this.selectedDish.fullDishInfo.is_size == 'true') { 1449 if (this.selectedDish.size_index === null) { 1450 return; 1451 } 1452 selected_size_or_scenario = this.selectedDish.fullDishInfo.sizes[this.selectedDish.size_index].scenarios; 1453 } 1454 else { 1455 selected_size_or_scenario = this.selectedDish.fullDishInfo.scenarios; 1456 } 1457 if (selected_size_or_scenario) { 1458 try { 1459 //scenario 1460 selected_size_or_scenario.forEach(element => { 1461 element.disable_rest = false; 1462 let this_scenario_selected_count = 0; 1463 //toping 1464 element['topings'].forEach(elementt => { 1465 let selected_count = this.check_is_selected(elementt.id, elementt.is_mandatory, element.btn_type); 1466 this_scenario_selected_count += selected_count; 1467 }); 1468 if (element.is_mandatory == 'true') { 1469 this.appObject.errors['error_in_scenario_' + element.id] = false; 1470 if (element.btn_type == "optional") { 1471 if (this_scenario_selected_count === element.max_toping_count) { 1472 // this.appObject.errors['error_in_scenario_' + element.id] = true; 1473 element.disable_rest = true; 1474 } 1475 } 1476 } 1477 // // console.log('selected count', this_scenario_selected_count); 1478 }); 1479 } 1480 catch (error) { 1481 console.log('error occoured while realtime topping cal : ', error); 1482 } 1483 } 1484 } 1485 addToCart(dish, fromCrossSelling = false) { 1486 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 1487 // // console.log('dish : ', dish); 1488 return new Promise((resolve, reject) => (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 1489 var _a, _b; 1490 if ((this.closenotice && !this.isPreOrderAccept) || this.isSelectedRestaurantOnVacation) { 1491 // console.log('Am Called.... : ', this.appObject.selectedRestaurantDetails.openDetails.is_pre_order); 1492 if (!this.isWebVersion) 1493 this.showAlert('error', this.isSelectedRestaurantOnVacation ? 'key.we_are_on_a_vacation' : 'key.restaurant_closed', this.appObject.selectedRestaurantDetails.openDetails.text ? this.appObject.selectedRestaurantDetails.openDetails.text : 'closeNote', false); 1494 else { 1495 this.translate.get(this.isSelectedRestaurantOnVacation ? 'key.we_are_on_a_vacation' : 'key.we_are_closed_at_the_moment_and_wouldnt_accept_any_orders').toPromise().then((data) => { 1496 this.showToast(data, 'danger', 'bottom', 5000); 1497 }).catch((err) => { 1498 console.log('error while fetching close notice : ', err); 1499 }); 1500 // this.showToast('') 1501 } 1502 return; 1503 } 1504 // check the selected ordering method is available in selected restaurant 1505 // if (this.appObject.selectedRestaurantDetails) { 1506 // let availbaleDeliveryMethodsInRest: string[] = this.findSelectedRestaurantOrderTypes(this.appObject.selectedRestaurantDetails.openDetails, true); 1507 // if (!availbaleDeliveryMethodsInRest.includes(this.appObject.selectedDeliveryMethod)) { 1508 // this.translate.get('key.selected_ordering_method_not_available_at_the_moment').toPromise().then((data) => { 1509 // this.showToast(data, 'danger', 'bottom', 5000); 1510 // }).catch((err) => { 1511 // console.log('error while fetching close notice : ', err); 1512 // }) 1513 // return; 1514 // } 1515 // } 1516 if (!this.isWebVersion) 1517 this.animationDrop = true; 1518 this.className = 'animating'; 1519 setTimeout(function () { 1520 this.className = ''; 1521 this.animationDrop = false;
1522 }.bind(this), 1000); 1523 let counted = false; 1524 let dishDetails = []; 1525 // only if bar mode is disable, so we can add same item separated into bill (then use going to pay we can collect each items and send as a single dish) 1526 // console.log('am called in here : ' , this.appObject.selectedRestaurantDetails.is_bar_mode , ' | ', this.appObject.selectedDeliveryMethod); 1527 if (this.appObject.selectedRestaurantDetails && (this.appObject.selectedRestaurantDetails.is_bar_mode !== 'true' || this.appObject.selectedDeliveryMethod !== 'dine_in')) { 1528 //for each to check this already exit 1529 if (((_b = (_a = this.appObject) === null || _a === void 0 ? void 0 : _a.orderObject) === null || _b === void 0 ? void 0 : _b.cart.length) > 0) { 1530 for (let index = 0; index < this.appObject.orderObject.cart.length; index++) { 1531 if (this.appObject.orderObject.cart[index].dish_id == dish.id && dish.is_size == 'false' && dish.is_customise == 'false') { 1532 counted = true; 1533 //change count 1534 this.appObject.orderObject.cart[index].count += 1; 1535 if (this.appObject.isPointsEnable && dish.points_per_dish) 1536 this.appObject.orderObject.cart[index].points_per_dish = (dish.points_per_dish * this.appObject.orderObject.cart[index].count); 1537 } 1538 } 1539 } 1540 } 1541 if (!counted) { 1542 dishDetails['points_per_dish'] = (this.appObject.isPointsEnable && dish.points_per_dish) ? dish.points_per_dish : 0; 1543 dishDetails['dish_id'] = dish.id; 1544 dishDetails['count'] = 1; 1545 dishDetails['name'] = dish.name; 1546 this.appObject.orderObject.cart.push({ 1547 'dish_id': dishDetails['dish_id'], 1548 'count': dishDetails['count'], 1549 'name': dishDetails['name'], 1550 'points_per_dish': dishDetails['points_per_dish'] 1551 }); 1552 this.appObject.orderObjectDup.cart.push(dish); 1553 } 1554 yield this.calculateCartAmounts(); 1555 // check if the user came from crossselling form, if not open to select cross selling product 1556 let validQuestion = dish && dish.cross_selling_products && dish.cross_selling_products.length ? 1557 dish.cross_selling_products.find((csproduct) => csproduct.category.count > 0) : null; 1558 if (!fromCrossSelling && validQuestion && dish && dish.cross_selling_products && dish.cross_selling_products.length) { 1559 if (!this.isWebVersion) { 1560 this.hideCartButton = true; 1561 const modal = yield this.modalController.create({ 1562 component: _views_modals_cross_selling_cross_selling_page__WEBPACK_IMPORTED_MODULE_10__.CrossSellingPage, 1563 cssClass: 'custom-popup', 1564 componentProps: { 1565 'crossSellingProducts': dish.cross_selling_products, 1566 'selectedDishCategory': dish.menu_categories_id.id, 1567 'title': dish.name 1568 } 1569 }); 1570 yield modal.present(); 1571 } 1572 else { 1573 const modal = yield this.modalController.create({ 1574 component: _views_web_views_shared_modal_popover_modal_popover_page__WEBPACK_IMPORTED_MODULE_12__.ModalPopoverPage, 1575 componentProps: { 1576 'type': this.POPOVER_TYPES.CROSS_SELLING.TYPE, 1577 'title': dish.name, 1578 'crossSellingProducts': dish.cross_selling_products, 1579 'selectedDishCategory': dish.menu_categories_id.id, 1580 } 1581 }); 1582 yield modal.present(); 1583 } 1584 } 1585 else if (fromCrossSelling) { 1586 return resolve({ status: 'done' }); 1587 } 1588 })); 1589 }); 1590 } 1591 setSelectedSize(index) { 1592 var _a; 1593 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 1594 if ((_a = index === null || index === void 0 ? void 0 : index.detail) === null || _a === void 0 ? void 0 : _a.value) { 1595 index = index.detail.value; 1596 } 1597 this.selectedDish.selectedTopings = []; 1598 this.selectedDish.size_index = index; 1599 this.selectedDish.size_id = this.selectedDish.fullDishInfo.sizes[index].id; 1600 this.calcSelectedDishTotal(); 1601 }); 1602 } 1603 topingInc(evt, toping, sc, t) { 1604 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 1605 let s = this.selectedDish.size_index; 1606 for (let index = 0; index < this.selectedDish.selectedTopings.length; index++) { 1607 if (this.selectedDish.selectedTopings[index].topping_id == to
1607ping.id) { 1608 this.selectedDish.selectedTopings[index].count += 1; 1609 this.selectedDish.selectedTopings[index].total = this.selectedDish.selectedTopings[index].price * this.selectedDish.selectedTopings[index].count; 1610 toping.count_selected++; 1611 this.validateDishSenarioToppingConfigsRealTime(); 1612 } 1613 } 1614 this.calcSelectedDishTotal(); 1615 }); 1616 } 1617 topingDec(evt, toping, sc, t) { 1618 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 1619 let s = this.selectedDish.size_index; 1620 for (let index = 0; index < this.selectedDish.selectedTopings.length; index++) { 1621 if (this.selectedDish.selectedTopings[index].topping_id == toping.id) { 1622 if (this.selectedDish.selectedTopings[index].count > 1) { 1623 this.selectedDish.selectedTopings[index].count -= 1; 1624 this.selectedDish.selectedTopings[index].total = this.selectedDish.selectedTopings[index].price * this.selectedDish.selectedTopings[index].count; 1625 toping.count_selected--; 1626 this.validateDishSenarioToppingConfigsRealTime(); 1627 } 1628 } 1629 } 1630 this.calcSelectedDishTotal(); 1631 }); 1632 } 1633 /** 1634 * Oldfunction modified to use scenario object instead of indexes 1635 * @param evt select event 1636 * @param sc scenario object 1637 */ 1638 selectTopingOp2(evt, sc) { 1639 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 1640 // console.log('hereeee', evt); 1641 // console.log('sc : ' , sc); 1642 let s = this.selectedDish.size_index; 1643 let toping = []; 1644 let found = false; 1645 //check this optional group exist in the selected array, if remove it or add 1646 // let tt_each = []; 1647 // if (this.selectedDish.fullDishInfo.is_size == 'true') { 1648 // tt_each = sc.topings; 1649 // } else { 1650 // tt_each = sc.topings; 1651 // } 1652 let tt_each = sc.topings; 1653 let type = 'checkbox'; 1654 if (typeof evt.detail.checked === 'undefined') { 1655 type = 'dropdown'; 1656 } 1657 // console.log('tt_each : ' , tt_each); 1658 for (let findex = 0; findex < tt_each.length; findex++) { 1659 if (type == 'dropdown') { 1660 let top_id = tt_each[findex].id; 1661 for (let index = 0; index < this.selectedDish.selectedTopings.length; index++) { 1662 // console.log('found val', this.selectedDish.selectedTopings[index].topping_id); 1663 if (top_id == this.selectedDish.selectedTopings[index].topping_id) { 1664 //exist and remove 1665 // console.log('found and removed'); 1666 this.selectedDish.selectedTopings.splice(index, 1); 1667 found = true; 1668 } 1669 } 1670 } 1671 if (tt_each[findex].id == evt.detail.value) { 1672 if (this.selectedDish.fullDishInfo.is_size == 'true') { 1673 toping = sc.topings[findex]; 1674 } 1675 else { 1676 toping = sc.topings[findex]; 1677 } 1678 } 1679 } 1680 if (!evt.detail.checked) { 1681 //remove toping 1682 for (let index = 0; index < this.selectedDish.selectedTopings.length; index++) { 1683 if (evt.detail.value == this.selectedDish.selectedTopings[index].topping_id) { 1684 //exist and remove 1685 this.selectedDish.selectedTopings.splice(index, 1); 1686 found = true; 1687 } 1688 } 1689 // console.log('selected topings : ' , this.selectedDish.selectedTopings); 1690 } 1691 if (evt.detail.checked || type == 'dropdown') { 1692 let top = []; 1693 top['topping_id'] = toping['id']; 1694 top['count'] = 1; 1695 top['price'] = toping[this.appObject.selectedDeliveryMethod]; 1696 //for future use 1697 top['delivery'] = toping['delivery']; 1698 top['pickup'] = toping['pickup']; 1699 top['dine_in'] = toping['dine_in']; 1700 top['name'] = toping['name']; 1701 //end for future use 1702 // console.log('top : ' , top); 1703 // if(top['price'] > 0){ 1704 // top['total'] = top['count'] * top['price']; 1705 // }else{ 1706 // top['total'] = 0; 1707 // } 1708 top['total'] = (top['count'] > 0 && top['price'] > 0) ? top['count'] * top['price'] : 0; 1709 // console.log('top[topping_id] : ' , toping); 1710 this.selectedDish.selectedTopings.push({ 1711 'topping_id': top['topping_id'], 1712 'count': top['count'], 1713 'price': top['price'], 1714 'delivery': top['delivery'], 1715 'pickup': top['pickup'], 1716 'dine_in': top['dine_in'], 1717 'total': top['total'], 1718 'name': top['name'], 1719 'senario_position': sc.position, 1720 'topping_position': toping['position'], 1721 'topping_tax': sc.toppingTax, 1722 }); 1723 this.selectedDish.selectedTopings.sort((a, b) => {
1724 // return +(a['senario_position'] + '' + a['topping_position']) - +(b['senario_position'] + '' + b['topping_position']); 1725 if (a.senario_position === b.senario_position) { 1726 return a.topping_position - b.topping_position; 1727 } 1728 return a.senario_position - b.senario_position; 1729 }); 1730 } 1731 // console.log('selected', this.selectedDish.selectedTopings); 1732 this.calcSelectedDishTotal(); 1733 }); 1734 } 1735 selectTopingOp(evt, sc) { 1736 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 1737 // console.log('hereeee', evt); 1738 let s = this.selectedDish.size_index; 1739 let toping = []; 1740 let found = false; 1741 //check this optional group exist in the selected array, if remove it or add 1742 let tt_each = []; 1743 if (this.selectedDish.fullDishInfo.is_size == 'true') { 1744 tt_each = this.selectedDish.fullDishInfo.sizes[s].scenarios[sc].topings; 1745 } 1746 else { 1747 tt_each = this.selectedDish.fullDishInfo.scenarios[sc].topings; 1748 } 1749 let type = 'checkbox'; 1750 if (typeof evt.detail.checked === 'undefined') { 1751 type = 'dropdown'; 1752 } 1753 for (let findex = 0; findex < tt_each.length; findex++) { 1754 if (type == 'dropdown') { 1755 let top_id = tt_each[findex].id; 1756 for (let index = 0; index < this.selectedDish.selectedTopings.length; index++) { 1757 // console.log('found val', this.selectedDish.selectedTopings[index].topping_id); 1758 if (top_id == this.selectedDish.selectedTopings[index].topping_id) { 1759 //exist and remove 1760 // console.log('found and removed'); 1761 this.selectedDish.selectedTopings.splice(index, 1); 1762 found = true; 1763 } 1764 } 1765 } 1766 if (tt_each[findex].id == evt.detail.value) { 1767 if (this.selectedDish.fullDishInfo.is_size == 'true') { 1768 toping = this.selectedDish.fullDishInfo.sizes[s].scenarios[sc].topings[findex]; 1769 } 1770 else { 1771 toping = this.selectedDish.fullDishInfo.scenarios[sc].topings[findex]; 1772 } 1773 } 1774 } 1775 if (!evt.detail.checked) { 1776 //remove toping 1777 for (let index = 0; index < this.selectedDish.selectedTopings.length; index++) { 1778 if (evt.detail.value == this.selectedDish.selectedTopings[index].topping_id) { 1779 //exist and remove 1780 this.selectedDish.selectedTopings.splice(index, 1); 1781 found = true; 1782 } 1783 } 1784 } 1785 if (evt.detail.checked || type == 'dropdown') { 1786 let top = []; 1787 top['topping_id'] = toping['id']; 1788 top['count'] = 1; 1789 top['price'] = toping[this.appObject.selectedDeliveryMethod]; 1790 //for future use 1791 top['delivery'] = toping['delivery']; 1792 top['pickup'] = toping['pickup']; 1793 top['dine_in'] = toping['dine_in']; 1794 top['name'] = toping['name']; 1795 //end for future use 1796 this.selectedDish.selectedTopings.push({ 1797 'topping_id': top['topping_id'], 1798 'count': top['count'], 1799 'price': top['price'], 1800 'delivery': top['delivery'], 1801 'pickup': top['pickup'], 1802 'dine_in': top['dine_in'], 1803 'total': top['total'], 1804 'name': top['name'], 1805 'senario_position': sc.position, 1806 'topping_position': toping['position'], 1807 'topping_tax': sc.toppingTax, 1808 }); 1809 this.selectedDish.selectedTopings.sort((a, b) => {
1810 // return +(a['senario_position'] + '' + a['topping_position']) - +(b['senario_position'] + '' + b['topping_position']); 1811 if (a.senario_position === b.senario_position) { 1812 return a.topping_position - b.topping_position; 1813 } 1814 return a.senario_position - b.senario_position; 1815 }); 1816 } 1817 // console.log('selected', this.selectedDish.selectedTopings); 1818 this.calcSelectedDishTotal(); 1819 }); 1820 } 1821 /** 1822 * COPIED FROM TOPPINGS PAGE by Pumayk26 at 2024-04-23 in order to fix an issue with topping select lists 1823 * Will return status active topping list 1824 * @param toppingList topping list to filter from 1825 * @returns filtered topping list that status is active 1826 */ 1827 getActiveToppings(toppingList) { 1828 if (toppingList && toppingList.length) { 1829 return toppingList.filter((topping) => { 1830 return topping.status === 'true'; 1831 }); 1832 } 1833 else { 1834 return []; 1835 } 1836 } 1837 selectTopingAddon(evt, toping, sc, t) { 1838 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 1839 // console.log('aaa:', sc); 1840 let s = this.selectedDish.size_index; 1841 // get only active toppings of the senario coz in the topping select list index get from the active toppings 1842 // the "t" (topping index) is not compatible with "sc.topings" array 1843 let activeToppings = this.getActiveToppings(sc.topings); 1844 if ((this.selectedDish.fullDishInfo.is_size == 'true' && (typeof activeToppings[t].checked === 'undefined' || 1845 !activeToppings[t].checked)) 1846 || 1847 (this.selectedDish.fullDishInfo.is_customise == 'true' && (typeof activeToppings[t].checked === 'undefined' || 1848 !activeToppings[t].checked))) { 1849 //add toping 1850 let found = false; 1851 for (let index = 0; index < this.selectedDish.selectedTopings.length; index++) { 1852 if (toping.id == this.selectedDish.selectedTopings[index].topping_id) { 1853 found = true; 1854 } 1855 } 1856 if (!found) { 1857 let top = []; 1858 top['topping_id'] = toping.id; 1859 top['count'] = 1; 1860 top['price'] = toping[this.appObject.selectedDeliveryMethod]; 1861 //for future use 1862 top['delivery'] = toping['delivery']; 1863 top['pickup'] = toping['pickup']; 1864 top['dine_in'] = toping['dine_in']; 1865 top['name'] = toping['name']; 1866 //end for future use 1867 top['total'] = top['count'] * top['price']; 1868 if (this.selectedDish.fullDishInfo.is_size == 'true') { 1869 activeToppings[t].checked = true; 1870 } 1871 else { 1872 activeToppings[t].checked = true; 1873 } 1874 toping.count_selected = 1; 1875 this.selectedDish.selectedTopings.push({ 1876 'topping_id': top['topping_id'], 1877 'count': top['count'], 1878 'price': top['price'], 1879 'delivery': top['delivery'], 1880 'pickup': top['pickup'], 1881 'dine_in': top['dine_in'], 1882 'total': top['total'], 1883 'name': top['name'], 1884 'senario_position': sc.position, 1885 'topping_position': toping.position, 1886 'topping_tax': sc.toppingTax, 1887 }); 1888 this.selectedDish.selectedTopings.sort((a, b) => {
1889 // return +(a['senario_position'] + '' + a['topping_position']) - +(b['senario_position'] + '' + b['topping_position']); 1890 if (a.senario_position === b.senario_position) { 1891 return a.topping_position - b.topping_position; 1892 } 1893 return a.senario_position - b.senario_position; 1894 }); 1895 // console.log('ads : ' , ads); 1896 } 1897 } 1898 else { 1899 //remove toping 1900 for (let index = 0; index < this.selectedDish.selectedTopings.length; index++) { 1901 if (toping.id == this.selectedDish.selectedTopings[index].topping_id) { 1902 //delete 1903 this.selectedDish.selectedTopings.splice(index, 1); 1904 if (this.selectedDish.fullDishInfo.is_size == 'true') { 1905 activeToppings[t].checked = false; 1906 } 1907 else { 1908 activeToppings[t].checked = false; 1909 } 1910 } 1911 } 1912 } 1913 this.validateDishSenarioToppingConfigsRealTime(); 1914 this.calcSelectedDishTotal(); 1915 }); 1916 } 1917 topingPopupOpen(dish, isFromCrossSelling = false) { 1918 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 1919 dish.progressing = true; 1920 if (dish.is_size == 'true') { 1921 this.selectedDish.size_id = dish.sizes[0].id; 1922 } 1923 else { 1924 this.selectedDish.size_id = null; 1925 } 1926 this.selectedDish.selectedTopings = []; 1927 this.selectedDish.fullDishInfo = JSON.parse(JSON.stringify(dish)); 1928 // if selected restaurant settings avoid size auto select is enabled then dont set a size index 1929 if (this.appObject.selectedRestaurantDetails.is_size_auto_select === 'true') { 1930 this.selectedDish.size_index = null; 1931 // make the price of selected dish to 0, otherwise the add to cart button price 1932 // will display the previously selected dish total value 1933 // bug fixed 2023-01-21 by Pumayk26 1934 this.selectedDish.total = 0; 1935 } 1936 else 1937 this.selectedDish.size_index = 0; 1938 if (this.selectedDish.size_index !== null) 1939 this.calcSelectedDishTotal(); 1940 if (!this.isWebVersion) { 1941 const modal = yield this.modalController.create({ 1942 component: _views_modals_toppings_toppings_page__WEBPACK_IMPORTED_MODULE_8__.ToppingsPage, 1943 cssClass: 'custom-popup', 1944 componentProps: { 1945 'isFromCrossSelling': isFromCrossSelling 1946 } 1947 }); 1948 yield modal.present(); 1949 } 1950 else { 1951 const modal = yield this.modalController.create({ 1952 component: _views_web_views_shared_modal_popover_modal_popover_page__WEBPACK_IMPORTED_MODULE_12__.ModalPopoverPage, 1953 componentProps: { 1954 'type': this.POPOVER_TYPES.TOPPINGS.TYPE, 1955 'title': dish.name, 1956 'isFromCrossSelling': isFromCrossSelling 1957 } 1958 }); 1959 yield modal.present(); 1960 modal.onDidDismiss().then((data) => { 1961 dish.progressing = false; 1962 }); 1963 } 1964 }); 1965 } 1966 showAlert(type, title = (type === 'success' ? 'Success' : 'Error'), message, autoClose = true) { 1967 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 1968 const modal = yield this.modalController.create({ 1969 component: _views_modals_alert_alert_page__WEBPACK_IMPORTED_MODULE_11__.AlertPage, 1970 cssClass: 'custom-popup', 1971 componentProps: { 1972 'type': type, 1973 'message': message, 1974 'autoClose': autoClose, 1975 'title': title 1976 } 1977 }); 1978 yield modal.present(); 1979 }); 1980 } 1981 setDeliveryMethod(method, orderProcess = false) { 1982 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 1983 this.appObject.selectedDeliveryMethod = method; 1984 if (method == 'delivery') { 1985 if (orderProcess) { 1986 this.router.navigate(['find-near-by-me'], { 1987 queryParams: { 1988 isOrderProcess: orderProcess 1989 } 1990 }); 1991 } 1992 else { 1993 this.router.navigate(['find-near-by-me']); 1994 } 1995 } 1996 else { 1997 if (orderProcess) { 1998 yield this.calculateCartAmounts(); 1999 yield this.updateAppObject(); 2000 this.routeToSelectedRestaurant(); 2001 } 2002 else { 2003 this.router.navigate(['restaurant-list']); 2004 } 2005 } 2006 }); 2007 } 2008 loginOrCheckout() { 2009 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 2010 yield this.calculateCartAmounts(); 2011 yield this.updateAppObject(); 2012 if (this.appObject.isAuthed) { 2013 this.router.navigateByUrl('checkout'); 2014 } 2015 else { 2016 this.router.navigate(['login'], { 2017 queryParams: { 2018 isOrderProcess: true 2019 } 2020 }); 2021 } 2022 }); 2023 } 2024 calculateCartAmountsV2() { 2025 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 2026 return new Promise((resolve, reject) => (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 2027 var _a, _b, _c, _d, _e, _f, _g, _h; 2028 let dishTotalTaxExclusive = 0; 2029 let dishTotalTaxInclusive = 0; 2030 let dishNetTotal = 0; 2031 let dishNetTotalWithDiscount = 0; 2032 let dishNetTotalWithoutTax = 0; 2033 let dishTotalDiscount = 0; 2034 let totalDishCount = 0; 2035 let deliveryTaxInclusive = 0; 2036 let deliveryTaxExclusive = 0; 2037 // ------- Topping tax feature 2038 // _v2 variables added with topping tax feature 2039 let dishTotalDiscount_v2 = 0; 2040 let dishToppingTotalDiscount_v2 = 0; 2041 let dishNetTotal_v2 = 0; 2042 let dishToppingNetTotal_v2 = 0; 2043 let dishTotalTaxExclusive_v2 = 0; 2044 let dishTotalTaxInclusive_v2 = 0; 2045 let dishToppingTotalTaxExclusive_v2 = 0; 2046 let dishToppingTotalTaxInclusive_v2 = 0; 2047 let orderDeliveryTaxExclusive_v2 = 0; 2048 let orderDeliveryTaxInclusive_v2 = 0; 2049 // ------- 2050 let orderMainDiscountOb = null; 2051 // will check this value with restaurant min order amount 2052 let totalForMinOrderAmount = 0; 2053 // these deliveryTaxHelper is to calculate tax for the delivery cost 2054 // will be used in few places, 2055 // the new way to calculate this delivery tax is as below, 2056 // Find the most valuable item in the cart (x cost 10 and qty is 1, y cost 5 and qty is 3, so the most valuble one is y because qty is 3 and it cost 15 so we take the tax of dish y) 2057 let deliveryCostAvailable = false;
2058 if (((_c = (_b = (_a = this.appObject) === null || _a === void 0 ? void 0 : _a.orderObject) === null || _b === void 0 ? void 0 : _b.cart_summery) === null || _c === void 0 ? void 0 : _c.delivery_cost) > 0) 2059 deliveryCostAvailable = true; 2060 let deliveryTaxHelper = { 2061 maximumAmountDish: null, 2062 tax: null, 2063 deliveryTax: 0 2064 }; 2065 // get order taxes array filled up 2066 // we need all taxes in dishes as a summary 2067 // all 7% included, all 7% excluded like that 2068 let taxes = []; 2069 let taxes_v2 = []; 2070 if (((_e = (_d = this.appObject) === null || _d === void 0 ? void 0 : _d.orderObject) === null || _e === void 0 ? void 0 : _e.cart.length) > 0) { 2071 let dailySpecialAvailability = this.checkDailySpecialDiscountEligibility([...this.appObject.orderObject.cart]); 2072 for (let index = 0; index < this.appObject.orderObject.cart.length; index++) { 2073 let dish = this.appObject.orderObject.cart[index]; 2074 // _v2 variables added with topping tax feature 2075 dish.net_total_v2 = 0; 2076 dish.net_topping_total_v2 = 0; 2077 dish.discounted_amount_v2 = 0; 2078 dish.total_discount_v2 = 0; 2079 // findout dish category for future uses 2080 let dishesCategory = this.selectedRestaurantCategories.categories.find((category) => category.id === this.appObject.orderObjectDup.cart[index].menu_categories_id.id); 2081 // check dishes are available for current ordering type 2082 dish.not_available = false; 2083 if (dishesCategory && dishesCategory['disabled_for_' + this.appObject.selectedDeliveryMethod] === 'true') 2084 dish.not_available = true; 2085 // clear previously calculated data 2086 dish.discount = []; 2087 dish.total_discount = 0; 2088 dish.tax = []; 2089 dish.tax_v2 = []; 2090 // total dish count of the order
2091 totalDishCount += dish.count; 2092 // calculate basic dish amounts 2093 if (this.appObject.orderObjectDup.cart[index].is_customise == 'false' && this.appObject.orderObjectDup.cart[index].is_size == 'false') { 2094 dish.dish_price = this.appObject.orderObjectDup.cart[index][this.appObject.selectedDeliveryMethod]; 2095 dish.total = dish.dish_price; 2096 dish.net_total = dish.dish_price * dish.count; 2097 // for topping tax 2098 dish.net_total_v2 = dish.dish_price * dish.count; 2099 } 2100 // calculations for toppings / if the dish is customizable 2101 if (this.appObject.orderObjectDup.cart[index].is_customise == 'true' && dish.size_info) { 2102 dish.dish_price = this.appObject.orderObjectDup.cart[index][this.appObject.selectedDeliveryMethod]; 2103 //TOPING FOREACH // Topping calculatons 2104 let sctoping_total = 0; 2105 for (let stindex = 0; stindex < dish.size_info.topping_info.length; stindex++) { 2106 dish.size_info.topping_info[stindex]['price'] = dish.size_info.topping_info[stindex][this.appObject.selectedDeliveryMethod]; 2107 dish.size_info.topping_info[stindex]['total'] = dish.size_info.topping_info[stindex]['price'] * dish.size_info.topping_info[stindex]['count']; 2108 sctoping_total += dish.size_info.topping_info[stindex]['total']; 2109 } 2110 dish['topping_price'] = sctoping_total; 2111 dish['total'] = dish['dish_price'] + dish['topping_price']; 2112 dish.net_total = dish.total * dish['count']; 2113 // for topping tax 2114 dish.net_topping_total_v2 += sctoping_total; 2115 dish.net_total_v2 = dish.dish_price * dish['count']; 2116 } 2117 // Check if the dish has sizes enabled, diffrent sizes has diffrent prices.. 2118 // sizes calculations goes here 2119 if (this.appObject.orderObjectDup.cart[index].is_size == 'true') { 2120 //for each to find correct size values 2121 for (let sindex = 0; sindex < this.appObject.orderObjectDup.cart[index].sizes.length; sindex++) { 2122 if (dish.size_info && dish.size_info.size_id == this.appObject.orderObjectDup.cart[index].sizes[sindex].id) { 2123 //this is correct size 2124 //re get size value 2125 dish['dish_price'] = this.appObject.orderObjectDup.cart[index].sizes[sindex][this.appObject.selectedDeliveryMethod]; 2126 //TOPING FOREACH 2127 let toping_total = 0; 2128 for (let stindex = 0; stindex < dish.size_info.topping_info.length; stindex++) { 2129 dish.size_info.topping_info[stindex]['price'] = dish.size_info.topping_info[stindex][this.appObject.selectedDeliveryMethod]; 2130 dish.size_info.topping_info[stindex]['total'] = dish.size_info.topping_info[stindex]['price'] * dish.size_info.topping_info[stindex]['count']; 2131 toping_total += dish.size_info.topping_info[stindex]['total']; 2132 } 2133 //END TOPING 2134 dish['topping_price'] = toping_total; 2135 dish['total'] = dish['dish_price'] + dish['topping_price']; 2136 dish['net_total'] = dish['total'] * dish['count']; 2137 // for topping tax 2138 dish.net_total_v2 = dish.dish_price * dish['count']; 2139 dish.net_topping_total_v2 += toping_total; 2140 } 2141 } 2142 } 2143 dish.total_discount = 0; 2144 // as the default discounted amount
2145 dish.discounted_amount = dish.net_total; 2146 let minOrderTotalClaAmountForThisDish = 0; 2147 let finalDishNetTotalWithDiscount = 0; 2148 // calculate discounts, if dish category has discounts enabled 2149 if (dishesCategory && dishesCategory.discounts_disabled !== 'true') { 2150 // only one discount can be applied for an order, so to check that use this variable 2151 let appliedAnyDiscount = false; 2152 /*if (this.appObject.selectedCoupon.length) { 2153 // oscoup['discount_id'] = this.appObject.selectedCoupon[0].id; 2154 // oscoup['amount'] = this.appObject.selectedCoupon[0].amount; 2155 // oscoup['type'] = this.appObject.selectedCoupon[0].apply_as; 2156 // oscoup['coupon_code'] = this.appObject.selectedCoupon[0].coupon_code; 2157 // oscoup['name'] = 2158 2159 let disc = []; 2160 disc['discount_id'] = this.appObject.selectedCoupon[0].id; 2161 disc['amount'] = this.appObject.selectedCoupon[0].amount; 2162 disc['type'] = this.appObject.selectedCoupon[0].apply_as; 2163 disc['name'] = this.appObject.selectedCoupon[0].title; 2164 disc['coupon'] = this.appObject.selectedCoupon[0].coupon_code; 2165 2166 2167 // let discountCalculations = await this.getDiscount(dish.gross_total, disc['type'], disc['amount']); 2168 let discountCalculations = await this.getDiscount(dish.net_total, disc['type'], disc['amount']); 2169 2170 if (disc['type'] == "fixed") { 2171 discountCalculations['dis_amoount'] = discountCalculations['dis_amoount'] * dish['count']; 2172 } 2173 2174 dish.discounted_amount = dish.net_total - discountCalculations['dis_amoount']; 2175 2176 // dishNetTotalWithDiscount += dis
2176h.discounted_amount; 2177 finalDishNetTotalWithDiscount = dish.discounted_amount; 2178 2179 // if the menu category has excluded from getting calculated for min order amount, this won't calculate for min order amount check 2180 // if (dishesCategory.exclude_min_order_amount_cal !== 'true') totalForMinOrderAmount += dish.discounted_amount; 2181 minOrderTotalClaAmountForThisDish = dish.discounted_amount; 2182 2183 disc['discount_amount'] = discountCalculations['dis_amoount']; 2184 2185 dish.total_discount += discountCalculations['dis_amoount']; 2186 dishTotalDiscount += discountCalculations['dis_amoount']; 2187 dish.discount.push({ 2188 'discount_id': disc['discount_id'], 2189 'amount': disc['amount'], 2190 'type': disc['type'], 2191 'name': disc['name'], 2192 'discount_amount': disc['discount_amount'], 2193 'coupon': disc['coupon'] 2194 }); 2195 2196 appliedAnyDiscount = true; 2197 2198 }*/ 2199 // 1st Discounts available for menu category 2200 if (!appliedAnyDiscount && ((_g = (_f = this.appObject.orderObjectDup.cart[index]) === null || _f === void 0 ? void 0 : _f.discounts) === null || _g === void 0 ? void 0 : _g.length) > 0) { 2201 for (let dindex = 0; dindex < this.appObject.orderObjectDup.cart[index].discounts.length; dindex++) { 2202 if (this.appObject.orderObjectDup.cart[index].discounts[dindex].apply_platform == 'both' || this.appObject.orderObjectDup.cart[index].discounts[dindex].apply_platform == config.plf) { 2203 let disc = []; 2204 disc['discount_id'] = this.appObject.orderObjectDup.cart[index].discounts[dindex].id; 2205 disc['amount'] = this.appObject.orderObjectDup.cart[index].discounts[dindex].amount; 2206 disc['type'] = this.appObject.orderObjectDup.cart[index].discounts[dindex].apply_as; 2207 disc['name'] = this.appObject.orderObjectDup.cart[index].discounts[dindex].title; 2208 // let discountCalculations = await this.getDiscount(dish.gross_total, disc['type'], disc['amount']); 2209 let discountCalculations = yield this.getDiscount(dish.net_total, disc['type'], disc['amount']); 2210 if (disc['type'] == "fixed") { 2211 discountCalculations['dis_amoount'] = discountCalculations['dis_amoount'] * dish['count']; 2212 } 2213 // implemented v2 with topping tax calculation feature 2214 let discountCalculations_v2 = yield this.getDiscount(dish.net_total_v2, disc['type'], disc['amount']); 2215 dish.discounted_amount_v2 = dish.net_total_v2 - discountCalculations_v2['dis_amoount']; 2216 dishTotalDiscount_v2 += discountCalculations_v2['dis_amoount']; 2217 dish.total_discount_v2 += discountCalculations_v2['dis_amoount']; 2218 // ------ 2219 dish.discounted_amount = dish.net_total - discountCalculations['dis_amoount']; 2220 // dishNetTotalWithDiscount += dis
2220h.discounted_amount; 2221 finalDishNetTotalWithDiscount = dish.discounted_amount; 2222 // if the menu category has excluded from getting calculated for min order amount, this won't calculate for min order amount check 2223 // if (dishesCategory.exclude_min_order_amount_cal !== 'true') totalForMinOrderAmount += dish.discounted_amount; 2224 minOrderTotalClaAmountForThisDish = dish.discounted_amount; 2225 disc['discount_amount'] = discountCalculations['dis_amoount']; 2226 dish.total_discount += discountCalculations['dis_amoount']; 2227 dishTotalDiscount += discountCalculations['dis_amoount']; 2228 dish.discount.push({ 2229 'discount_id': disc['discount_id'], 2230 'amount': disc['amount'], 2231 'type': disc['type'], 2232 'name': disc['name'], 2233 'discount_amount': disc['discount_amount'] 2234 }); 2235 appliedAnyDiscount = true; 2236 } 2237 else { 2238 minOrderTotalClaAmountForThisDish = dish.net_total; 2239 finalDishNetTotalWithDiscount = dish.net_total; 2240 } 2241 } 2242 } 2243 // daily special discounts 2244 if (!appliedAnyDiscount && this.appObject.selectedRestaurantDetails && this.appObject.selectedRestaurantDetails.discountRestaurant && this.appObject.selectedRestaurantDetails.discountRestaurant.isActive && this.appObject.selectedRestaurantDetails.discountRestaurant.isActive == "true") { 2245 let apply = dailySpecialAvailability.apply; 2246 let amount = dailySpecialAvailability.amount; 2247 // console.log('amount : ' , amount && apply , ' | ' , amount); 2248 if (amount > 0 && apply) { 2249 //check is reached minimum details 2250 // if (this.appObject.selectedRestaurantDetails && this.appObject.selectedRestaurantDetails.discountRestaurant.minimumDishes <= totalDishCount && dish.net_total >= this.appObject.selectedRestaurantDetails.discountRestaurant.minimumAmount) { 2251 if (dailySpecialAvailability.eligible) { 2252 let olddis = []; 2253 olddis['amount'] = amount; 2254 olddis['type'] = 'percentage'; 2255 olddis['name'] = this.appObject.selectedRestaurantDetails.discountRestaurant.displayText; 2256 let ldiscountCalculations = yield this.getDiscount(dish.net_total, olddis['type'], olddis['amount']); 2257 olddis['discount_amount'] = ldiscountCalculations['dis_amoount']; 2258 // console.log('Toda : ' , olddis); 2259 // _ototal_discount += olddis['discount_amount']; 2260 dish.total_discount += olddis['discount_amount']; 2261 dishTotalDiscount += olddis['discount_amount']; 2262 dish.discounted_amount = dish.net_total - olddis['discount_amount']; 2263 // implemented v2 with topping tax calculation feature 2264 let discountCalculations_v2 = yield this.getDiscount(dish.net_total_v2, olddis['type'], olddis['amount']); 2265 dish.discounted_amount_v2 = dish.net_total_v2 - discountCalculations_v2['dis_amoount']; 2266 dishTotalDiscount_v2 += discountCalculations_v2['dis_amoount']; 2267 dish.total_discount_v2 += discountCalculations_v2['dis_amoount']; 2268 // ------ 2269 // dishNetTotalWithDiscount += dis
2269h.discounted_amount; 2270 finalDishNetTotalWithDiscount = dish.discounted_amount; 2271 // if the menu category has excluded from getting calculated for min order amount, this won't calculate for min order amount check 2272 // if (dishesCategory.exclude_min_order_amount_cal !== 'true') totalForMinOrderAmount += dish.discounted_amount; 2273 minOrderTotalClaAmountForThisDish = dish.discounted_amount; 2274 // this.appObject.orderObject.discounts.push({ 2275 // 'amount': olddis['amount'], 2276 // 'type': olddis['type'], 2277 // 'name': olddis['name'], 2278 // 'discount_amount': olddis['discount_amount'] 2279 // }); 2280 let discount = { 2281 'amount': olddis['amount'], 2282 'type': olddis['type'], 2283 'name': olddis['name'], 2284 'discount_amount': olddis['discount_amount'], 2285 'is_daily_discount': 'true' 2286 }; 2287 dish.discount.push(discount); 2288 orderMainDiscountOb = discount; 2289 appliedAnyDiscount = true; 2290 } 2291 else { 2292 // if the menu category has excluded from getting calculated for min order amount, this won't calculate for min order amount check 2293 // if (dishesCategory.exclude_min_order_amount_cal !== 'true') totalForMinOrderAmount += dish.net_total; 2294 minOrderTotalClaAmountForThisDish = dish.net_total; 2295 finalDishNetTotalWithDiscount = dish.net_total; 2296 } 2297 } 2298 } 2299 // calculate restaurant anytime discounts for the item 2300 if (!appliedAnyDiscount) { 2301 let delm = 'deliver'; 2302 switch (this.appObject.selectedDeliveryMethod) { 2303 case 'pickup': 2304 delm = 'pickup'; 2305 break; 2306 case 'dine_in': 2307 delm = 'dinein'; 2308 break; 2309 } 2310 if (this.appObject.selectedRestaurantDetails && this.appObject.selectedRestaurantDetails[delm + '_discount']) { 2311 let oddis = []; 2312 oddis['amount'] = this.appObject.selectedRestaurantDetails[delm + '_discount']; 2313 oddis['type'] = 'percentage'; 2314 oddis['name'] = 'anytime ' + oddis['amount'] + '%'; 2315 let discountCalculations = yield this.getDiscount(dish.net_total, oddis['type'], oddis['amount']); 2316 dishTotalDiscount += discountCalculations['dis_amoount']; 2317 dish.discounted_amount = dish.net_total - discountCalculations['dis_amoount']; 2318 dish.total_discount = discountCalculations['dis_amoount']; 2319 // dishNetTotalWithDiscount += dis
2319h.discounted_amount; 2320 finalDishNetTotalWithDiscount = dish.discounted_amount; 2321 // if the menu category has excluded from getting calculated for min order amount, this won't calculate for min order amount check 2322 // if (dishesCategory.exclude_min_order_amount_cal !== 'true') totalForMinOrderAmount += dish.discounted_amount; 2323 minOrderTotalClaAmountForThisDish = dish.discounted_amount; 2324 // implemented v2 with topping tax calculation feature 2325 let discountCalculations_v2 = yield this.getDiscount(dish.net_total_v2, oddis['type'], oddis['amount']); 2326 dish.discounted_amount_v2 = dish.net_total_v2 - discountCalculations_v2['dis_amoount']; 2327 dishTotalDiscount_v2 += discountCalculations_v2['dis_amoount']; 2328 dish.total_discount_v2 = discountCalculations_v2['dis_amoount']; 2329 // ------ 2330 // console.log('oddis : ' , oddis); 2331 dish.discount.push({ 2332 'amount': oddis['amount'], 2333 'type': oddis['type'], 2334 'name': oddis['name'], 2335 'discount_amount': discountCalculations['dis_amoount'], 2336 'is_anytime_discount': 'true' 2337 }); 2338 appliedAnyDiscount = true; 2339 } 2340 else { 2341 // if the menu category has excluded from getting calculated for min order amount, this won't calculate for min order amount check 2342 // if (dishesCategory.exclude_min_order_amount_cal !== 'true') totalForMinOrderAmount += dish.net_total; 2343 minOrderTotalClaAmountForThisDish = dish.net_total; 2344 // dishNetTotalWithDiscount += dis
2344h.net_total; 2345 finalDishNetTotalWithDiscount = dish.net_total; 2346 } 2347 } 2348 } 2349 else { 2350 minOrderTotalClaAmountForThisDish = dish.net_total; 2351 finalDishNetTotalWithDiscount = dish.net_total; 2352 } 2353 dishNetTotal += dish.net_total; 2354 // for topping tax 2355 dishNetTotal_v2 += dish.net_total_v2; 2356 // multiply topping total by dish count 2357 dishToppingNetTotal_v2 += dish.net_topping_total_v2 * dish.count; 2358 // get final value and add it to dishNetTotalWithDiscount 2359 dishNetTotalWithDiscount += finalDishNetTotalWithDiscount; 2360 // add value for min order amount check value 2361 if (dishesCategory.exclude_min_order_amount_cal !== 'true') 2362 totalForMinOrderAmount += minOrderTotalClaAmountForThisDish; 2363 // calculate menu category tax for selected dish 2364 let taxOb = this.appObject.orderObjectDup.cart[index].tax ? this.appObject.orderObjectDup.cart[index].tax : null; 2365 // console.log('this.appObject.orderObjectDup.cart[index] : ' , this.appObject.orderObjectDup.cart[index]); 2366 // get dish menu category id 2367 if (dishesCategory) 2368 dish.menu_category_id = dishesCategory.id; 2369 if (dishesCategory && dishesCategory.tax && dishesCategory.categoryTaxDetails) { 2370 taxOb = dishesCategory.categoryTaxDetails; 2371 // delivery tax calculations 2372 if (deliveryTaxHelper.maximumAmountDish < dish.net_total) { 2373 deliveryTaxHelper.maximumAmountDish = dish.net_total; 2374 deliveryTaxHelper.tax = taxOb; 2375 } 2376 } 2377 dish.total_tax_exclusive = 0; 2378 dish.total_tax_inclusive = 0; 2379 // for topping tax 2380 dish.total_topping_tax_exclusive_v2 = 0; 2381 dish.total_topping_tax_inclusive_v2 = 0; 2382 dish.topping_discounted_total_v2 = 0; 2383 dish.total_topping_discount_v2 = 0; 2384 // calculate the discounts and taxes for toppings 2385 // this part of the code is realted with topping tax feature implementation 2386 if (dish.size_info && dish.size_info && dish.size_info.topping_info) { 2387 for (let tIndex = 0; tIndex < dish.size_info.topping_info.length; tIndex++) { 2388 const topping = dish.size_info.topping_info[tIndex]; 2389 // assign total amount by default into discounted_price 2390 topping.discounted_total = topping.total; 2391 topping.discount_amount = 0; 2392 // get the topping total amount by multiply from dish count 2393 topping.total_v2 = topping.total * dish.count; 2394 // if discounts available in the dish, apply them to toppings as well 2395 // CONSIDER ONLY ONE DISCOUNT APPLIED TO THE DISH 2396 if (dish.discount && dish.discount.length) { 2397 for (let tDIndex = 0; tDIndex < dish.discount.length; tDIndex++) { 2398 const tDiscount = dish.discount[tDIndex]; 2399 let toppingDiscount = yield this.getDiscount(topping.total_v2, tDiscount['type'], tDiscount['amount']); 2400 if (toppingDiscount) { 2401 topping.discounted_total = topping.total_v2 - toppingDiscount['dis_amoount']; 2402 topping.discount_amount = toppingDiscount['dis_amoount']; 2403 dishToppingTotalDiscount_v2 += topping.discount_amount; 2404 dish.total_topping_discount_v2 += topping.discount_amount; 2405 // store discount details inside topping 2406 let discountOb = JSON.parse(JSON.stringify(tDiscount)); 2407 delete discountOb.discount_amount; 2408 topping.discount_details = JSON.stringify(discountOb); 2409 } 2410 } 2411 } 2412 dish.topping_discounted_total_v2 += topping.discounted_total; 2413 if (topping.topping_tax) { 2414 let toppingTax = yield this.getTax(topping.discounted_total, topping.topping_tax.type, topping.topping_tax.apply_as, topping.topping_tax[this.appObject.selectedDeliveryMethod]); 2415 if (topping.topping_tax['type'] == 'excluded') { 2416 dish.total_topping_tax_exclusive_v2 += toppingTax['tax_amoount']; 2417 dishTotalTaxExclusive_v2 += toppingTax['tax_amoount']; 2418 dishToppingTotalTaxExclusive_v2 += toppingTax['tax_amoount']; 2419 } 2420 else { 2421 dish.total_topping_tax_inclusive_v2 += toppingTax['tax_amoount']; 2422 dishTotalTaxInclusive_v2 += toppingTax['tax_amoount']; 2423 dishToppingTotalTaxInclusive_v2 += toppingTax['tax_amoount']; 2424 } 2425 topping.tax_amount = toppingTax['tax_amoount']; 2426 let foundExistingTax_v2 = taxes_v2.find((taxEx) => taxEx['tax_id'] === topping.topping_tax.id); 2427 // console.log(topping.topping_tax); 2428 if (foundExistingTax_v2) { 2429 foundExistingTax_v2['tax_amount_v2'] += toppingTax['tax_amoount']; 2430 } 2431 else { 2432 let tax = {}; 2433 tax['tax_id'] = topping.topping_tax.id; 2434 tax['amount'] = topping.topping_tax[this.appObject.selectedDeliveryMethod]; 2435 tax['type'] = topping.topping_tax.apply_as; 2436 tax['tax_type'] = topping.topping_tax.type; 2437 tax['name'] = topping.topping_tax.title; 2438 tax['tax_amount_v2'] = toppingTax['tax_amoount']; 2439 taxes_v2.push(tax); 2440 } 2441 } 2442 } 2443 } 2444 // ------ 2445 if (taxOb) { 2446 let tax = {}; 2447 // I had to put this isArray condition 2448 // I have no idea how this happend, but sometimes taxOb return as an array 2449 // didn't notice in the last developments before 2023-04-25 2450 // Applied by Pumayk26 2451 if (Array.isArray(taxOb)) { 2452 tax['tax_id'] = taxOb[0].id; 2453 tax['amount'] = taxOb[0][this.appObject.selectedDeliveryMethod]; 2454 tax['type'] = taxOb[0].apply_as; 2455 tax['tax_type'] = taxOb[0].type; 2456 tax['name'] = taxOb[0].title; 2457 } 2458 else { 2459 tax['tax_id'] = taxOb.id; 2460 tax['amount'] = taxOb[this.appObject.selectedDeliveryMethod]; 2461 tax['type'] = taxOb.apply_as; 2462 tax['tax_type'] = taxOb.type; 2463 tax['name'] = taxOb.title; 2464 } 2465 // console.log('(dish.net_total - dish.total_discount) : ' , (dish.net_total - dish.total_discount)); 2466 let taxCalculations = yield this.getTax((dish.net_total - dish.total_discount), tax['tax_type'], tax['type'], tax['amount']); 2467 if (tax['type'] == "fixed") { 2468 taxCalculations['tax_amoount'] = taxCalculations['tax_amoount'] * dish['count']; 2469 } 2470 if (tax['tax_type'] == 'excluded') { 2471 dish.total_tax_exclusive = taxCalculations['tax_amoount'];
2472 dishTotalTaxExclusive += dish.total_tax_exclusive; 2473 } 2474 else { 2475 dish.total_tax_inclusive = taxCalculations['tax_amoount']; 2476 dishTotalTaxInclusive += dish.total_tax_inclusive; 2477 } 2478 tax['tax_amount'] = taxCalculations['tax_amoount']; 2479 dish.tax.push({ 2480 'tax_id': tax['tax_id'], 2481 'amount': tax['amount'], 2482 'type': tax['type'], 2483 'tax_type': tax['tax_type'], 2484 'name': tax['tax_id'], 2485 'tax_amount': tax['tax_amount'] 2486 }); 2487 ///------ START ---------- Calculate taxes _v2 2488 // console.log('(dish.net_total_v2 - dish.total_discount_v2) : ' , (dish.net_total_v2 - dish.total_discount_v2)); 2489 let taxCalculations_v2 = yield this.getTax((dish.net_total_v2 - dish.total_discount_v2), tax['tax_type'], tax['type'], tax['amount']); 2490 if (tax['type'] == "fixed") { 2491 taxCalculations_v2['tax_amoount'] = taxCalculations_v2['tax_amoount'] * dish['count']; 2492 } 2493 dish.total_tax_exclusive_v2 = 0; 2494 dish.total_tax_inclusive_v2 = 0; 2495 dish.dish_total_tax_amount_v2 = 0; 2496 if (tax['tax_type'] == 'excluded') { 2497 dish.total_tax_exclusive_v2 = taxCalculations_v2['tax_amoount']; 2498 dishTotalTaxExclusive_v2 += dish.total_tax_exclusive_v2; 2499 dish.dish_total_tax_exclusive_amount_v2 = taxCalculations_v2['tax_amoount']; 2500 } 2501 else { 2502 dish.total_tax_inclusive_v2 = taxCalculations_v2['tax_amoount']; 2503 dish.dish_total_tax_inclusive_amount_v2 = taxCalculations_v2['tax_amoount']; 2504 dishTotalTaxInclusive_v2 += dish.total_tax_inclusive_v2; 2505 } 2506 tax['tax_amount_v2'] = taxCalculations_v2['tax_amoount']; 2507 dish.tax_v2.push({ 2508 'tax_id': tax['tax_id'], 2509 'amount': tax['amount'], 2510 'type': tax['type'], 2511 'tax_type': tax['tax_type'], 2512 'name': tax['tax_id'], 2513 'tax_amount': tax['tax_amount_v2'] 2514 }); 2515 ///------ END ---------- Calculate taxes _v2 2516 // gather tax information to calculate and check in the backend 2517 let foundExistingTax = taxes.find((taxEx) => taxEx['tax_id'] === tax['tax_id']); 2518 if (foundExistingTax) { 2519 foundExistingTax['tax_amount'] += tax['tax_amount']; 2520 } 2521 else { 2522 taxes.push(tax); 2523 } 2524 let foundExistingTax_v2 = taxes_v2.find((taxEx) => taxEx['tax_id'] === tax['tax_id']); 2525 if (foundExistingTax_v2) { 2526 foundExistingTax_v2['tax_amount_v2'] += tax['tax_amount_v2']; 2527 } 2528 else { 2529 taxes_v2.push(tax); 2530 } 2531 // } 2532 // console.log('dish : ', this.appObject.orderObject.cart[index]); 2533 // console.log('Tax : ', this.appObject.orderObject.cart[index].tax); 2534 } 2535 dish.gross_without_tax_price = dish.discounted_amount - dish.total_tax_inclusive; 2536 // console.log('dish.total_tax_inclusive :', dish.total_tax_inclusive); 2537 // console.log('dish.total_tax_inclusive_v2 :', (dish.total_tax_inclusive_v2 + dish.total_topping_tax_inclusive_v2)); 2538 // console.log('Total Discounted Amount :', dish.discounted_amount_v2 + dish.topping_discounted_total_v2); 2539 // console.log('Total Tax Inclusive :', dish.total_tax_inclusive_v2 + dish.total_topping_tax_inclusive_v2); 2540 // for topping tax 2541 dish.gross_without_tax_price_v2 = dish.discounted_amount_v2 - dish.total_tax_inclusive_v2; 2542 dish.gross_without_tax_price_topping_v2 = dish.topping_discounted_total_v2 - dish.total_topping_tax_inclusive_v2; 2543 dish.gross_without_tax_price_v2 += dish.gross_without_tax_price_topping_v2; 2544 // console.log('dish.gross_without_tax_price : ' , dish.gross_without_tax_price); 2545 // console.log('dish.total_tax_inclusive : ' , dish.total_tax_inclusive); 2546 // console.log('dish.total_tax_exclusive : ' , dish.total_tax_exclusive); 2547 // dish.gross_total = dish.gross_without_tax_price + dish.total_tax_inclusive + dish.total_tax_exclusive; 2548 dish.gross_total_with_discount = dish.discounted_amount; // dish.gross_total - this.appObject.orderObject.cart[index].total_discount; 2549 dish.gross_total_with_discount_v2 = dish.discounted_amount_v2 + dish.topping_discounted_total_v2; 2550 dish.gross_total = dish.gross_without_tax_price + dish.total_tax_inclusive + dish.total_tax_exclusive; 2551 // for topping tax 2552 dish.total_tax_exclusive_v2 += dish.total_topping_tax_exclusive_v2; 2553 dish.total_tax_inclusive_v2 += dish.total_topping_tax_inclusive_v2; 2554 dish.gross_total_v2 = dish.gross_without_tax_price_v2 + dish.total_tax_inclusive_v2 + dish.total_tax_exclusive_v2; 2555 // this.appObject.orderObject.cart[index].gross_without_tax_price = this.appObject.orderObject.cart[index].net_total - this.appObject.orderObject.cart[index].total_tax_inclusive; 2556 // this.appObject.orderObject.cart[index].gross_total = this.appObject.orderObject.cart[index].gross_without_tax_price + this.appObject.orderObject.cart[index].total_tax_inclusive + this.appObject.orderObject.cart[index].total_tax_exclusive; 2557 dish.comment = !dish.comment ? "" : dish.comment; 2558 // console.log('dish : ' , dish); 2559 } 2560 } 2561 // order taxes 2562 this.appObject.orderObject.order_tax = taxes; 2563 this.appObject.orderObject.order_tax_v2 = taxes_v2; 2564 // calculate discount object again for all the order 2565 // this is anytime discounts, just to display in cart section 2566 if (orderMainDiscountOb) 2567 this.appObject.orderObject.discounts = [orderMainDiscountOb]; 2568 // let delm = 'deliver'; 2569 // switch (this.appObject.selectedDeliveryMethod) { 2570 // case 'pickup': 2571 // delm = 'pickup'; 2572 // break; 2573 // case 'dine_in': 2574 // delm = 'dinein'; 2575 // break; 2576 // } 2577 // if (this.appObject.selectedRestaurantDetails && this.appObject.selectedRestaurantDetails[delm + '_discount']) { 2578 // let oddis = []; 2579 // oddis['amount'] = this.appObject.selectedRestaurantDetails[delm + '_discount']; 2580 // oddis['type'] = 'percentage'; 2581 // oddis['name'] = 'anytime ' + oddis['amount'] + '%'; 2582 // let discountCalculations = await this.getDiscount(dishNetTotal, oddis['type'], oddis['amount']); 2583 // oddis['discount_amount'] = discountCalculations['dis_amoount']; 2584 // // dishTotalDiscount += oddis['discount_amount']; 2585 // this.appObject.orderObject.discounts.push({ 2586 // 'amount': oddis['amount'], 2587 // 'type': oddis['type'], 2588 // 'name': oddis['name'], 2589 // 'discount_amount': oddis['discount_amount'] 2590 // }); 2591 // } 2592 // calculate delivery cost 2593 let delivery_cost = 0; 2594 //by distance 2595 let distance = Math.round(this.appObject.selectedRestaurantDetails && this.appObject.selectedRestaurantDetails.distance_to_location ? this.appObject.selectedRestaurantDetails.distance_to_location : 0); 2596 if (distance == 0) { 2597 distance = 1; 2598 } 2599 this.appObject.orderObject.cart_summery.min_amount = 0; 2600 if (this.appObject.selectedDeliveryMethod == 'delivery') { 2601 // new IF came with postal code feature 2602 if (this.appObject.settings.is_postalcode === 'true') { 2603 if (this.appObject.postalCodeDetails) { 2604 let deliveryCost = this.appObject.postalCodeDetails.price.find((prices) => prices.restaurantId === this.appObject.selectedRestaurantDetails.id); 2605 if (deliveryCost) { 2606 // get selected restaurant refreshed postal code details 2607 // let selectedRestaurantPostalDetails = JSON.parse(this.appObject.selectedRestaurantDetails.postal_code_details); 2608 let selectedRestaurantPostalDetails = this.appObject.selectedRestaurantDetails.postal_code_details_v2; 2609 if (selectedRestaurantPostalDetails) { 2610 // find selected postal code data in selected restaurant postal code details 2611 let postalCodeFound = selectedRestaurantPostalDetails.find((postal) => postal.code === this.appObject.postalCodeDetails.code && postal.name === this.appObject.postalCodeDetails.name); 2612 if (postalCodeFound) { 2613 // if found, then apply the latest changes to currently selected postal code details 2614 let postalChargesOfSelectedRestaurant = this.appObject.postalCodeDetails.price.find((postalCharges) => postalCharges.restaurantId === this.appObject.selectedRestaurantDetails.id); 2615 if (postalChargesOfSelectedRestaurant) { 2616 // apply latest postal code detail changes to selected postal code object 2617 // postalChargesOfSelectedRestaurant.cost = postalCodeFound.cost; 2618 // postalChargesOfSelectedRestaurant.minOrderAmount = postalCodeFound.min_order; 2619 let currentPrices = this.getGivenPostalCodeCurrentPriceAndMinAmount(postalChargesOfSelectedRestaurant, this.appObject.selectedTimeSlot); 2620 if (currentPrices.id) 2621 this.appObject.orderObject.selected_postal_code_slot_id = currentPrices.id; 2622 else 2623 this.appObject.orderObject.selected_postal_code_slot_id = null; 2624 // console.log('this.appObject.orderObject.selected_postal_code_slot_id :' ,this.appObject.orderObject.selected_postal_code_slot_id); 2625 postalChargesOfSelectedRestaurant.cost = currentPrices.cost; 2626 postalChargesOfSelectedRestaurant.minOrderAmount = currentPrices.min_order; 2627 } 2628 } 2629 else { 2630 // if there is no postal code details in restaurant postal code details as the selected one, 2631 // force user to start over the ordering process 2632 this.appObject.postalCodeDetails = null; 2633 this.appObject.selectedDeliveryMethod = 'pickup'; 2634 yield this.updateAppObject(); 2635 // show error message and redirect into home page 2636 this.showToast('Unable to validate postal area details, Please start over ordering process', 'danger'); 2637 this.router.navigate(['home'], { replaceUrl: true, queryParams: { calculationFailed: true } }); 2638 return resolve({ calculationFailed: true }); 2639 } 2640 // console.log('postalCodeFound :' , postalCodeFound); 2641 } 2642 this.appObject.orderObject.cart_summery.min_amount = +deliveryCost.minOrderAmount; 2643 delivery_cost = +deliveryCost.cost; 2644 } 2645 else { 2646 console.log('something went wrong when finding delivery cost for selected restaurant'); 2647 } 2648 } 2649 else { 2650 console.log('something went wrong when calculate delivery cost'); 2651 } 2652 } 2653 else { 2654 // moved from outside of the IF, because this value only use when selected delivery method is 'delivery' 2655 // let minOrderAmounts = JSON.parse(this.appObject.selectedRestaurantDetails.min_order_amounts); 2656 // set 0 as default value 2657 this.appObject.orderObject.cart_summery.min_amount = 0; 2658 if (this.appObject.selectedRestaurantDetails.delivery_charge_type == "fixed_amount") { 2659 if (this.appObject.selectedRestaurantDetails.fixed_delivery_amount != null && this.appObject.selectedRestaurantDetails.fixed_delivery_amount_apply_as != null) { 2660 let dcharge = yield this.getDeliveryCost(dishNetTotal, this.appObject.selectedRestaurantDetails.fixed_delivery_amount_apply_as, this.appObject.selectedRestaurantDetails.fixed_delivery_amount); 2661 delivery_cost = yield this.getNumberValue(dcharge['del_amoount']); 2662 } 2663 } 2664 else { 2665 // OLD CODE 2666 // let byDistance = JSON.parse(this.appObject.selectedRestaurantDetails.delivery_cost); 2667 // if (byDistance.length >= distance) { 2668 // if (byDistance[distance - 1].cost) { 2669 // delivery_cost = await this.getNumberValue(byDistance[distance - 1].cost); 2670 // } 2671 // } 2672 // END OLD CODE 2673 // console.log('delivery_cost_details : ', this.appObject.selectedRestaurantDetails.delivery_cost_details); 2674 let currentTimeSlotData = this.getGivenTimeAndDistanceMinOrderAmountAndDeliveryCost(distance, this.appObject.selectedRestaurantDetails, this.appObject.selectedTimeSlot ? this.appObject.selectedTimeSlot : ''); 2675 // keep delivery time slot id, so we can do validations in backend 2676 if (currentTimeSlotData && currentTimeSlotData.id) 2677 this.appObject.orderObject.selected_delivery_time_slot_id = currentTimeSlotData.id; 2678 e
2678lse 2679 this.appObject.orderObject.selected_delivery_time_slot_id = null; 2680 if (currentTimeSlotData) { 2681 delivery_cost = yield this.getNumberValue(currentTimeSlotData.cost); 2682 this.appObject.orderObject.cart_summery.min_amount = yield this.getNumberValue(currentTimeSlotData.min_order); 2683 } 2684 else { 2685 // keep this console log 2686 console.log('There is no any available delivery time slots'); 2687 // there is no currently available time slots , so set 0 2688 delivery_cost = 0; 2689 this.appObject.orderObject.cart_summery.min_amount = 0; 2690 } 2691 } 2692 // this.appObject.orderObject.cart_summery.min_amount = await this.getNumberValue(minOrderAmounts[distance - 1].amount); 2693 if (Number.isNaN(this.appObject.orderObject.cart_summery.min_amount)) { 2694 this.appObject.orderObject.cart_summery.min_amount = 0; 2695 } 2696 } 2697 // set the delivery cost and minimum order amount 0, when there is no cart items 2698 if (this.appObject.orderObject.cart && !this.appObject.orderObject.cart.length) { 2699 delivery_cost = 0; 2700 this.appObject.orderObject.cart_summery.min_amount = 0; 2701 } 2702 //check min order amount is reached 2703 if (this.appObject.selectedRestaurantDetails.free_delivery_amount_status !== 'true' && this.appObject.selectedRestaurantDetails.is_free_delivery == 'true') { 2704 if (this.appObject.orderObject.cart_summery.min_reached) { 2705 delivery_cost = 0; 2706 } 2707 } 2708 // new feature, this will overwrite above feature... Added new option to add minimum order amount for free delivery 2709 if (this.appObject.selectedRestaurantDetails.free_delivery_amount_status && this.appObject.selectedRestaurantDetails.free_delivery_amount_status === 'true' && this.appObject.selectedRestaurantDetails.free_delivery_amount) { 2710 if (this.appObject.selectedRestaurantDetails.free_delivery_amount <= totalForMinOrderAmount) { 2711 // to display savings 2712 this.appObject.orderObject.deliveryCostWas = delivery_cost; 2713 delivery_cost = 0; 2714 this.appObject.orderObject.specialFreeDeliveryApplied = true; 2715 } 2716 else 2717 this.appObject.orderObject.specialFreeDeliveryApplied = false; 2718 } 2719 else 2720 this.appObject.orderObject.specialFreeDeliveryApplied = false; 2721 // if there is a delivery cost, 2722 // let's calculate the tax for delivery cost 2723 // delivery cost tax values will be the most valuable item's tax in the cart 2724 this.appObject.orderObject.delivery_tax = []; 2725 if (this.appObject.selectedDeliveryMethod == 'delivery' && delivery_cost > 0 && deliveryTaxHelper.tax) { 2726 let dtax = []; 2727 dtax['tax_id'] = deliveryTaxHelper.tax.id; 2728 dtax['amount'] = deliveryTaxHelper.tax[this.appObject.selectedDeliveryMethod]; 2729 dtax['type'] = deliveryTaxHelper.tax.apply_as; 2730 dtax['tax_type'] = 'included'; 2731 dtax['name'] = deliveryTaxHelper.tax.title; 2732 let ftaxCalculations = yield this.getTax(delivery_cost, dtax['tax_type'], dtax['type'], dtax['amount']); 2733 dtax['tax_amount'] = ftaxCalculations['tax_amoount']; 2734 if (dtax['tax_type'] == 'excluded') { 2735 deliveryTaxExclusive += dtax['tax_amount']; 2736 // add to dish total tax exclusive 2737 dishTotalTaxExclusive += deliveryTaxExclusive; 2738 dishTotalTaxExclusive_v2 += deliveryTaxExclusive; 2739 orderDeliveryTaxExclusive_v2 = deliveryTaxExclusive; 2740 } 2741 else { 2742 deliveryTaxInclusive += dtax['tax_amount']; 2743 // add to dish total tax inclusinve 2744 dishTotalTaxInclusive += deliveryTaxInclusive; 2745 dishTotalTaxInclusive_v2 += deliveryTaxInclusive; 2746 orderDeliveryTaxInclusive_v2 = deliveryTaxInclusive; 2747 } 2748 this.appObject.orderObject.delivery_tax.push({ 2749 'tax_id': dtax['tax_id'], 2750 'amount': dtax['amount'], 2751 'type': dtax['type'], 2752 'tax_type': dtax['tax_type'], 2753 'name': dtax['name'], 2754 'tax_amount': dtax['tax_amount'] 2755 }); 2756 } 2757 } 2758 // this.appObject.orderObject.cart_summery.total_tax_inclusive = _dtotal_tax_inclusive; 2759 // this.appObject.orderObject.cart_summery.total_tax_exclusive = _dtotal_tax_exclusive; 2760 // this.appObject.orderObject.cart_summery.net_total_without_tax = _dnet_total_without_tax; 2761 this.appObject.orderObject.cart_summery.total_tax_inclusive = dishTotalTaxInclusive; //_dtotal_tax_inclusive; 2762 this.appObject.orderObject.cart_summery.total_tax_exclusive = dishTotalTaxExclusive; //_dtotal_tax_exclusive; 2763 this.appObject.orderObject.cart_summery.net_total = dishNetTotal; // _ot_net_total; 2764 this.appObject.orderObject.cart_summery.total_discount = dishTotalDiscount; // _ototal_discount; 2765 this.appObject.orderObject.cart_summery.total_dish_count = totalDishCount; 2766 this.appObject.orderObject.cart_summery.delivery_cost = delivery_cost; // + _dt_total_tax_exclusive; 2767 // Topping tax feature 2768 // ------------ 2769 this.appObject.orderObject.cart_summery.total_tax_inclusive_v2 = dishTotalTaxInclusive_v2; //_dtotal_tax_inclusive; 2770 this.appObject.orderObject.cart_summery.total_tax_exclusive_v2 = dishTotalTaxExclusive_v2; //_dtotal_tax_exclusive; 2771 this.appObject.orderObject.cart_summery.total_topping_tax_inclusive_v2 = dishToppingTotalTaxInclusive_v2; //_dtotal_tax_inclusive; 2772 this.appObject.orderObject.cart_summery.total_topping_tax_exclusive_v2 = dishToppingTotalTaxExclusive_v2; //_dtotal_tax_exclusive; 2773 this.appObject.orderObject.cart_summery.net_total_v2 = dishNetTotal_v2 + dishToppingNetTotal_v2; // _ot_net_total; 2774 this.appObject.orderObject.cart_summery.total_discount_v2 = dishTotalDiscount_v2 + dishToppingTotalDiscount_v2; // _ototal_discount; 2775 this.appObject.orderObject.cart_summery.order_delivery_tax_exclusive_v2 = orderDeliveryTaxExclusive_v2; 2776 this.appObject.orderObject.cart_summery.order_delivery_tax_inclusive_v2 = orderDeliveryTaxInclusive_v2; 2777 // ------------ 2778 this.appObject.orderObject.cart_summery.total_with_discount_price = this.appObject.orderObject.cart_summery.net_total - this.appObject.orderObject.cart_summery.total_discount; 2779 this.appObject.orderObject.cart_summery.gross_total = this.appObject.orderObject.cart_summery.total_with_discount_price + this.appObject.orderObject.cart_summery.delivery_cost; 2780 this.appObject.orderObject.cart_summery.dish_net_total_with_discount = dishNetTotalWithDiscount; 2781 this.appObject.orderObject.cart_summery.total_with_discount_price_v2 = this.appObject.orderObject.cart_summery.net_total_v2 - this.appObject.orderObject.cart_summery.total_discount_v2; 2782 this.appObject.orderObject.cart_summery.gross_total_v2 = this.appObject.orderObject.cart_summery.total_with_discount_price_v2 + this.appObject.orderObject.cart_summery.delivery_cost; 2783 // console.log('this.appObject.orderObject.cart :', this.appObject.orderObject.cart); 2784 // console.log('this.appObject.orderObject.cart_summery :', this.appObject.orderObject);
2785 //////// OLD VALUES 2786 // this.appObject.orderObject.cart_summery.total_tax_inclusive = _dtotal_tax_inclusive; 2787 // this.appObject.orderObject.cart_summery.total_tax_exclusive = _dtotal_tax_exclusive; 2788 // this.appObject.orderObject.cart_summery.net_total_without_tax = _dnet_total_without_tax; 2789 // this.appObject.orderObject.cart_summery.net_total = _ot_net_total; 2790 // this.appObject.orderObject.cart_summery.total_discount = _ototal_discount; 2791 // this.appObject.orderObject.cart_summery.total_with_discount_price = this.appObject.orderObject.cart_summery.net_total - this.appObject.orderObject.cart_summery.total_discount; 2792 // this.appObject.orderObject.cart_summery.delivery_cost = delivery_cost + _dt_total_tax_exclusive; 2793 // this.appObject.orderObject.cart_summery.gross_total = this.appObject.orderObject.cart_summery.total_with_discount_price + this.appObject.orderObject.cart_summery.delivery_cost; 2794 // this.appObject.orderObject.cart_summery.total_dish_count = _total_dish_count; 2795 // Payment method transaction fee calculation 2796 let selectedPaymentConfig = this.appObject.selectedRestaurantDetails.payment_methods.find((method) => method.id === this.appObject.orderObject.selectedPaymentMethod); 2797 let feeAmount = 0; 2798 let fixedFeeAmount = 0; 2799 // if transaction fee enabled for selected payment option 2800 if (selectedPaymentConfig && selectedPaymentConfig.config && (selectedPaymentConfig.config.transactionFeeStatus === 'true' || selectedPaymentConfig.config.transactionFeeStatus === true)) { 2801 if (selectedPaymentConfig.config.feeType === 'percentage') { 2802 feeAmount = (this.appObject.orderObject.cart_summery.gross_total / 100) * (+selectedPaymentConfig.config.feeAmount); 2803 } 2804 else if (selectedPaymentConfig.config.feeType === 'fixed') { 2805 feeAmount = (+selectedPaymentConfig.config.feeAmount); 2806 } 2807 if (selectedPaymentConfig.config.fixedFeeStatus 2808 && (selectedPaymentConfig.config.fixedFeeStatus === 'true' || selectedPaymentConfig.config.fixedFeeStatus === true) 2809 && selectedPaymentConfig.config.fixedFee && !isNaN(+selectedPaymentConfig.config.fixedFee)) { 2810 fixedFeeAmount = +selectedPaymentConfig.config.fixedFee; 2811 } 2812 } 2813 // console.log('feeAmount : ' ,feeAmount); 2814 this.appObject.orderObject.cart_summery.transactionFee = feeAmount; 2815 this.appObject.orderObject.cart_summery.fixedTransactionFee = fixedFeeAmount; 2816 // this.appObject.orderObject.cart_summery.gross_total += feeAmount; 2817 // // moved from top to bottom 2818 // // and changed the value checking minimum order amount to total_with_discount_price instead of gross_total 2819 // was 2820 // if (this.appObject.orderObject.cart_summery.min_amount <= this.appObject.orderObject.cart_summery.total_with_discount_price) {if (this.appObject.orderObject.cart_summery.min_amount <= this.appObject.orderObject.cart_summery.total_with_discount_price) { 2821 if (this.appObject.orderObject.cart_summery.min_amount <= totalForMinOrderAmount) { 2822 this.appObject.orderObject.cart_summery.min_reached = true; 2823 } 2824 else { 2825 this.appObject.orderObject.cart_summery.min_reached = false; 2826 } 2827 console.log('this.appObject.orderObject.cart_summery.min_reached :', this.appObject.orderObject.cart_summery.min_reached); 2828 //apply coupon if available 2829 if (this.appObject.selectedCoupon.length) { 2830 let disc = {}; 2831 disc['discount_id'] = this.appObject.selectedCoupon[0].id; 2832 disc['amount'] = this.appObject.selectedCoupon[0].amount; 2833 disc['type'] = this.appObject.selectedCoupon[0].apply_as;
2834 disc['name'] = this.appObject.selectedCoupon[0].title; 2835 disc['coupon'] = this.appObject.selectedCoupon[0].coupon_code; 2836 let discountCalculations = yield this.getDiscountForCoupon((_h = this.appObject) === null || _h === void 0 ? void 0 : _h.orderObject.cart_summery.gross_total, disc['type'], disc['amount']); 2837 // console.log('discountCalculations:', discountCalculations); 2838 // console.log('disc:', disc); 2839 // console.log('cart_summery:', this.appObject.orderObject.cart_summery); 2840 this.appObject.orderObject.cart_summery['coupon_discount'] = discountCalculations['dis_amoount']; 2841 this.appObject.orderObject.cart_summery['gross_total'] = discountCalculations['amount_after_dis']; 2842 this.appObject.orderObject.cart_summery['coupon_details'] = disc; 2843 } 2844 else { 2845 this.appObject.orderObject.cart_summery.coupon_details = null; 2846 } 2847 //console.log('Order Object : ', this.appObject?.orderObject); 2848 this.updateAppObject(); 2849 return resolve('calculation is done'); 2850 })); 2851 }); 2852 } 2853 /** 2854 * Check if the cart items are elegible for daily special discount 2855 * @param cart cart items array 2856 * @returns Object special discount details 2857 */ 2858 checkDailySpecialDiscountEligibility(cart) { 2859 let totalAmount = 0; 2860 let totalDishCount = 0; 2861 for (let index = 0; index < cart.length; index++) { 2862 let dish = cart[index];
2863 totalDishCount += dish.count; 2864 // calculate basic dish amounts 2865 if (this.appObject.orderObjectDup.cart[index].is_customise == 'false' && this.appObject.orderObjectDup.cart[index].is_size == 'false') { 2866 dish.dish_price = this.appObject.orderObjectDup.cart[index][this.appObject.selectedDeliveryMethod]; 2867 dish.total = dish.dish_price; 2868 dish.net_total = dish.dish_price * dish.count; 2869 } 2870 // calculations for toppings / if the dish is customizable 2871 if (this.appObject.orderObjectDup.cart[index].is_customise == 'true' && dish.size_info) { 2872 dish.dish_price = this.appObject.orderObjectDup.cart[index][this.appObject.selectedDeliveryMethod]; 2873 //TOPING FOREACH // Topping calculatons 2874 let sctoping_total = 0; 2875 for (let stindex = 0; stindex < dish.size_info.topping_info.length; stindex++) { 2876 dish.size_info.topping_info[stindex]['price'] = dish.size_info.topping_info[stindex][this.appObject.selectedDeliveryMethod]; 2877 dish.size_info.topping_info[stindex]['total'] = dish.size_info.topping_info[stindex]['price'] * dish.size_info.topping_info[stindex]['count']; 2878 sctoping_total += dish.size_info.topping_info[stindex]['total']; 2879 } 2880 dish['topping_price'] = sctoping_total; 2881 dish['total'] = dish['dish_price'] + dish['topping_price']; 2882 dish.net_total = dish.total * dish['count']; 2883 } 2884 // Check if the dish has sizes enabled, diffrent sizes has diffrent prices.. 2885 // sizes calculations goes here 2886 if (this.appObject.orderObjectDup.cart[index].is_size == 'true') { 2887 //for each to find correct size values 2888 for (let sindex = 0; sindex < this.appObject.orderObjectDup.cart[index].sizes.length; sindex++) { 2889 if (dish.size_info && dish.size_info.size_id == this.appObject.orderObjectDup.cart[index].sizes[sindex].id) { 2890 //this is correct size 2891 //re get size value 2892 dish['dish_price'] = this.appObject.orderObjectDup.cart[index].sizes[sindex][this.appObject.selectedDeliveryMethod]; 2893 //TOPING FOREACH 2894 let toping_total = 0; 2895 for (let stindex = 0; stindex < dish.size_info.topping_info.length; stindex++) { 2896 dish.size_info.topping_info[stindex]['price'] = dish.size_info.topping_info[stindex][this.appObject.selectedDeliveryMethod]; 2897 dish.size_info.topping_info[stindex]['total'] = dish.size_info.topping_info[stindex]['price'] * dish.size_info.topping_info[stindex]['count']; 2898 toping_total += dish.size_info.topping_info[stindex]['total']; 2899 } 2900 //END TOPING 2901 dish['topping_price'] = toping_total; 2902 dish['total'] = dish['dish_price'] + dish['topping_price']; 2903 dish['net_total'] = dish['total'] * dish['count']; 2904 } 2905 } 2906 } 2907 totalAmount += dish.net_total; 2908 } 2909 let details = { 2910 apply: false, 2911 amount: 0, 2912 method: '', 2913 eligible: false 2914 }; 2915 switch (this.appObject.selectedDeliveryMethod) { 2916 case 'delivery': 2917 if (this.appObject.selectedRestaurantDetails.discountRestaurant.isDeliveryAvailable == 'true') { 2918 details.apply = true; 2919 details.amount = this.appObject.selectedRestaurantDetails.discountRestaurant.deliveryCost; 2920 details.method = 'delivery'; 2921 } 2922 break; 2923 case 'pickup': 2924 if (this.appObject.selectedRestaurantDetails.discountRestaurant.isPickUpAvailable == 'true') { 2925 details.apply = true; 2926 details.amount = this.appObject.selectedRestaurantDetails.discountRestaurant.pickUpCost; 2927 details.method = 'pickup'; 2928 } 2929 break; 2930 case 'dine_in': 2931 if (this.appObject.selectedRestaurantDetails.discountRestaurant.isDineInAvailable == 'true') { 2932 details.apply = true; 2933 details.amount = this.appObject.selectedRestaurantDetails.discountRestaurant.dineInCost; 2934 details.method = 'dine_in'; 2935 } 2936 break; 2937 } 2938 if (details.amount > 0 && details.apply) { 2939 //check is reached minimum details 2940 if (this.appObject.selectedRestaurantDetails && this.appObject.selectedRestaurantDetails.discountRestaurant.minimumDishes <= totalDishCount && totalAmount >= this.appObject.selectedRestaurantDetails.discountRestaurant.minimumAmount) { 2941 details.eligible = true; 2942 } 2943 } 2944 // console.log('Daily Special : ', details); 2945 return details; 2946 } 2947 calculateCartAmounts() { 2948 var _a, _b, _c, _d, _e, _f, _g; 2949 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 2950 return this.calculateCartAmountsV2(); 2951 // return; 2952 let _dtotal_tax_exclusive = 0; 2953 let _dtotal_tax_inclusive = 0; 2954 let _dnet_total_without_tax = 0; 2955 let _dnet_total = 0; 2956 let _dtotal_discount = 0; 2957 let _total_dish_count = 0; 2958 let _dgross_total_with_discount = 0; 2959 // these deliveryTaxHelper is to calculate tax for the delivery cost 2960 // will be used in few places, 2961 // the new way to calculate this delivery tax is as below, 2962 // Find the most valuable item in the cart (x cost 10 and qty is 1, y cost 5 and qty is 3, so the most valuble one is y because qty is 3 and it cost 15 so we take the tax of dish y) 2963 let deliveryCostAvailable = false;
2964 if (((_c = (_b = (_a = this.appObject) === null || _a === void 0 ? void 0 : _a.orderObject) === null || _b === void 0 ? void 0 : _b.cart_summery) === null || _c === void 0 ? void 0 : _c.delivery_cost) > 0) 2965 deliveryCostAvailable = true; 2966 let deliveryTaxHelper = { 2967 maximumAmountDish: null, 2968 tax: null, 2969 deliveryTax: 0 2970 }; 2971 //////////////////////////////GO EACH DISHES 2972 if (((_e = (_d = this.appObject) === null || _d === void 0 ? void 0 : _d.orderObject) === null || _e === void 0 ? void 0 : _e.cart.length) > 0) { 2973 for (let index = 0; index < this.appObject.orderObject.cart.length; index++) { 2974 //////////////////////////////CLEAR PREVIOUS TAX AND DISCOUNTS 2975 this.appObject.orderObject.cart[index].tax = []; 2976 this.appObject.orderObject.cart[index].discount = []; 2977 //////////////////////////////END CLEAR 2978 //////
2978////////////////////////COUNT += DISH COUNT 2979 _total_dish_count += this.appObject.orderObject.cart[index]['count']; 2980 //////////////////////////////END COUNT 2981 //////////////////////////////CHECK DISH IS NORMAL / COMBO 2982 // console.log('its mee called : ' , this.appObject.orderObjectDup.cart); 2983 if (this.appObject.orderObjectDup.cart[index].is_customise == 'false' && this.appObject.orderObjectDup.cart[index].is_size == 'false') { 2984 this.appObject.orderObject.cart[index].dish_price = this.appObject.orderObjectDup.cart[index][this.appObject.selectedDeliveryMethod]; 2985 this.appObject.orderObject.cart[index].total = this.appObject.orderObject.cart[index].dish_price; 2986 this.appObject.orderObject.cart[index].net_total = this.appObject.orderObject.cart[index].dish_price * this.appObject.orderObject.cart[index]['count']; 2987 } 2988 //////////////////////////////END CHECKING
2989 //////////////////////////////CHECK IS CUSTOMIZE 2990 if (this.appObject.orderObjectDup.cart[index].is_customise == 'true' && this.appObject.orderObject.cart[index].size_info) { 2991 this.appObject.orderObject.cart[index].dish_price = this.appObject.orderObjectDup.cart[index][this.appObject.selectedDeliveryMethod]; 2992 //TOPING FOREACH 2993 let sctoping_total = 0; 2994 for (let stindex = 0; stindex < this.appObject.orderObject.cart[index].size_info.topping_info.length; stindex++) { 2995 this.appObject.orderObject.cart[index].size_info.topping_info[stindex]['price'] = this.appObject.orderObject.cart[index].size_info.topping_info[stindex][this.appObject.selectedDeliveryMethod]; 2996 this.appObject.orderObject.cart[index].size_info.topping_info[stindex]['total'] = this.appObject.orderObject.cart[index].size_info.topping_info[stindex]['price'] * this.appObject.orderObject.cart[index].size_info.topping_info[stindex]['count']; 2997 sctoping_total += this.appObject.orderObject.cart[index].size_info.topping_info[stindex]['total']; 2998 } 2999 //END TOPING 3000 // console.log('------------------------------------------------------'); 3001 // console.log('this.appObject.orderObject.cart[index] : ' , this.appObject.orderObject.cart[index]); 3002 // console.log('this.appObject.orderObject.cart[index].dish_price : ' , this.appObject.orderObject.cart[index]['dish_price']); 3003 // console.log('this.appObject.orderObject.cart[index][topping_price] : ' , this.appObject.orderObject.cart[index]['topping_price']); 3004 // console.log('------------------------------------------------------'); 3005 // console.log(''); 3006 this.appObject.orderObject.cart[index]['topping_price'] = sctoping_total; 3007 this.appObject.orderObject.cart[index]['total'] = this.appObject.orderObject.cart[index]['dish_price'] + this.appObject.orderObject.cart[index]['topping_price']; 3008 this.appObject.orderObject.cart[index].net_total = this.appObject.orderObject.cart[index].total * this.appObject.orderObject.cart[index]['count']; 3009 }
3010 //////////////////////////////END CHECK CUSTOMIZE 3011 //////////////////////////////CHECK IS SIZE AVAILABLE 3012 if (this.appObject.orderObjectDup.cart[index].is_size == 'true') { 3013 //for each to find correct size values 3014 for (let sindex = 0; sindex < this.appObject.orderObjectDup.cart[index].sizes.length; sindex++) { 3015 if (this.appObject.orderObject.cart[index].size_info && this.appObject.orderObject.cart[index].size_info.size_id == this.appObject.orderObjectDup.cart[index].sizes[sindex].id) { 3016 //this is correct size 3017 //re get size value 3018 this.appObject.orderObject.cart[index]['dish_price'] = this.appObject.orderObjectDup.cart[index].sizes[sindex][this.appObject.selectedDeliveryMethod]; 3019 //TOPING FOREACH 3020 let toping_total = 0; 3021 for (let stindex = 0; stindex < this.appObject.orderObject.cart[index].size_info.topping_info.length; stindex++) { 3022 this.appObject.orderObject.cart[index].size_info.topping_info[stindex]['price'] = this.appObject.orderObject.cart[index].size_info.topping_info[stindex][this.appObject.selectedDeliveryMethod]; 3023 this.appObject.orderObject.cart[index].size_info.topping_info[stindex]['total'] = this.appObject.orderObject.cart[index].size_info.topping_info[stindex]['price'] * this.appObject.orderObject.cart[index].size_info.topping_info[stindex]['count']; 3024 toping_total += this.appObject.orderObject.cart[index].size_info.topping_info[stindex]['total']; 3025 } 3026 //END TOPING 3027 this.appObject.orderObject.cart[index]['topping_price'] = toping_total; 3028 this.appObject.orderObject.cart[index]['total'] = this.appObject.orderObject.cart[index]['dish_price'] + this.appObject.orderObject.cart[index]['topping_price']; 3029 this.appObject.orderObject.cart[index]['net_total'] = this.appObject.orderObject.cart[index]['total'] * this.appObject.orderObject.cart[index]['count']; 3030 } 3031 } 3032 }
3033 //////////////////////////////END CHECK SIZE AVAILABLE 3034 //////////////////////////////CLEAR PREVOUS VARIABLES BEFORE CALCULATE 3035 this.appObject.orderObject.cart[index].total_tax_inclusive = 0; 3036 this.appObject.orderObject.cart[index].total_tax_exclusive = 0; 3037 this.appObject.orderObject.cart[index].gross_without_tax_price = 0; 3038 this.appObject.orderObject.cart[index].gross_total = 0; 3039 //////////////////////////////END CLEAR 3040 //////////////////////////////CHECK TAX IS AVAILABLE FOR THIS DISH 3041 // if (this.appObject.orderObjectDup.cart[index]?.tax?.length > 0) { 3042 // for (let oindex = 0; oindex < this.appObject.orderObjectDup.cart[index].tax.length; oindex++) { 3043 // let tax = []; 3044 // tax['tax_id'] = this.appObject.orderObjectDup.cart[index].tax[oindex].id; 3045 // tax['amount'] = this.appObject.orderObjectDup.cart[index].tax[oindex][this.appObject.selectedDeliveryMethod]; 3046 // tax['type'] = this.appObject.orderObjectDup.cart[index].tax[oindex].apply_as; 3047 // tax['tax_type'] = this.appObject.orderObjectDup.cart[index].tax[oindex].type; 3048 // tax['name'] = this.appObject.orderObjectDup.cart[index].tax[oindex].title; 3049 // let taxCalculations = await this.getTax(this.appObject.orderObject.cart[index].net_total, tax['tax_type'], tax['type'], tax['amount']); 3050 // if (tax['type'] == "fixed") { 3051 // taxCalculations['tax_amoount'] = taxCalculations['tax_amoount'] * this.appObject.orderObject.cart[index]['count']; 3052 // } 3053 // if (tax['tax_type'] == 'excluded') { 3054 // this.appObject.orderObject.cart[index].total_tax_exclusive += taxCalculations['tax_amoount']; 3055 // } else { 3056 // this.appObject.orderObject.cart[index].total_tax_inclusive += taxCalculations['tax_amoount']; 3057 // } 3058 // tax['tax_amount'] = taxCalculations['tax_amoount']; 3059 // this.appObject.orderObject.cart[index].tax.push({ 3060 // 'tax_id': tax['tax_id'], 3061 // 'amount': tax['amount'], 3062 // 'type': tax['type'], 3063 // 'tax_type': tax['tax_type'], 3064 // 'name': tax['tax_id'], 3065 // 'tax_amount': tax['tax_amount'] 3066 // }); 3067 // } 3068 // } 3069 // ------------------------ Dish tax calculation with menu category tax 3070 let taxOb = this.appObject.orderObjectDup.cart[index].tax ? this.appObject.orderObjectDup.cart[index].tax : null; 3071 let dishesCategory = this.selectedRestaurantCategories.categories.find((category) => category.id === this.appObject.orderObjectDup.cart[index].menu_categories_id.id); 3072 if (dishesCategory && dishesCategory.tax && dishesCategory.categoryTaxDetails) { 3073 taxOb = dishesCategory.categoryTaxDetails; 3074 // delivery tax calculations 3075 if (deliveryTaxHelper.maximumAmountDish < this.appObject.orderObject.cart[index].net_total) { 3076 deliveryTaxHelper.maximumAmountDish = this.appObject.orderObject.cart[index].net_total; 3077 deliveryTaxHelper.tax = taxOb; 3078 } 3079 } 3080 if (taxOb) { 3081 let tax = []; 3082 tax['tax_id'] = taxOb.id; 3083 tax['amount'] = taxOb[this.appObject.selectedDeliveryMethod]; 3084 tax['type'] = taxOb.apply_as; 3085 tax['tax_type'] = taxOb.type; 3086 tax['name'] = taxOb.title; 3087 let taxCalculations = yield this.getTax(this.appObject.orderObject.cart[index].net_total, tax['tax_type'], tax['type'], tax['amount']); 3088 if (tax['type'] == "fixed") { 3089 taxCalculations['tax_amoount'] = taxCalculations['tax_amoount'] * this.appObject.orderObject.cart[index]['count']; 3090 } 3091 if (tax['tax_type'] == 'excluded') { 3092 this.appObject.orderObject.cart[index].total_tax_exclusive += taxCalculations['tax_amoount']; 3093 } 3094 else { 3095 this.appObject.orderObject.cart[index].total_tax_inclusive += taxCalculations['tax_amoount']; 3096 } 3097 tax['tax_amount'] = taxCalculations['tax_amoount']; 3098 this.appObject.orderObject.cart[index].tax.push({ 3099 'tax_id': tax['tax_id'], 3100 'amount': tax['amount'], 3101 'type': tax['type'], 3102 'tax_type': tax['tax_type'], 3103 'name': tax['tax_id'], 3104 'tax_amount': tax['tax_amount'] 3105 }); 3106 // } 3107 // console.log('dish : ', this.appObject.orderObject.cart[index]); 3108 // console.log('Tax : ', this.appObject.orderObject.cart[index].tax); 3109 } 3110 // console.log('this.appObject.orderObject.cart[index].net_total : ' , this.appObject.orderObject.cart[index].net_total); 3111 // console.log('this.appObject.orderObject.cart[index].total_tax_inclusive : ' , this.appObject.orderObject.cart[index].total_tax_inclusive); 3112 // console.log(''); 3113 this.appObject.orderObject.cart[index].gross_without_tax_price = this.appObject.orderObject.cart[index].net_total - this.appObject.orderObject.cart[index].total_tax_inclusive; 3114 // console.log('this.appObject.orderObject.cart[index].gross_without_tax_price : ' , this.appObject.orderObject.cart[index].gross_without_tax_price); 3115 // console.log('this.appObject.orderObject.cart[index].total_tax_inclusive : ' , this.appObject.orderObject.cart[index].total_tax_inclusive); 3116 // console.log('this.appObject.orderObject.cart[index].total_tax_exclusive : ' , this.appObject.orderObject.cart[index].total_tax_exclusive); 3117 // console.log('Total : ' , (this.appObject.orderObject.cart[index].gross_without_tax_price + this.appObject.orderObject.cart[index].total_tax_inclusive + this.appObject.orderObject.cart[index].total_tax_exclusive)); 3118 // console.log(''); 3119 this.appObject.orderObject.cart[index].gross_total = this.appObject.orderObject.cart[index].gross_without_tax_price + this.appObject.orderObject.cart[index].total_tax_inclusive + this.appObject.orderObject.cart[index].total_tax_exclusive;
3120 //////////////////////////////END CHECK TAX FOR DISH 3121 //////////////////////////////DISH TAXES += 3122 _dtotal_tax_exclusive += this.appObject.orderObject.cart[index].total_tax_exclusive; 3123 _dtotal_tax_inclusive += this.appObject.orderObject.cart[index].total_tax_inclusive; 3124 _dnet_total_without_tax += this.appObject.orderObject.cart[index].gross_without_tax_price; 3125 _dnet_total += this.appObject.orderObject.cart[index].gross_total; 3126 // console.log('_dtotal_tax_exclusive : ' , _dtotal_tax_exclusive); 3127 // console.log('_dtotal_tax_inclusive : ' , _dtotal_tax_inclusive); 3128 //////////////////////////////END DISH TAXES += 3129 //////////////////////////////DISCOUNT VARIABLES 3130 this.appObject.orderObject.cart[index].total_discount = 0; 3131 this.appObject.orderObject.cart[index].gross_total_with_discount = 0; 3132 // was : "this.appObject.orderObject.cart[index].comment = ''", have no idea why.... 3133 // this is changed when adding dish note in web version 3134 this.appObject.orderObject.cart[index].comment = !this.appObject.orderObject.cart[index].comment ? "" : this.appObject.orderObject.cart[index].comment;
3135 //////////////////////////////CHECK DISCOUNT AVAILABILITY 3136 if (((_g = (_f = this.appObject.orderObjectDup.cart[index]) === null || _f === void 0 ? void 0 : _f.discounts) === null || _g === void 0 ? void 0 : _g.length) > 0) { 3137 for (let dindex = 0; dindex < this.appObject.orderObjectDup.cart[index].discounts.length; dindex++) { 3138 if (this.appObject.orderObjectDup.cart[index].discounts[dindex].apply_platform == 'both' || this.appObject.orderObjectDup.cart[index].discounts[dindex].apply_platform == config.plf) { 3139 let disc = []; 3140 disc['discount_id'] = this.appObject.orderObjectDup.cart[index].discounts[dindex].id; 3141 disc['amount'] = this.appObject.orderObjectDup.cart[index].discounts[dindex].amount; 3142 disc['type'] = this.appObject.orderObjectDup.cart[index].discounts[dindex].apply_as; 3143 disc['name'] = this.appObject.orderObjectDup.cart[index].discounts[dindex].title; 3144 let discountCalculations = yield this.getDiscount(this.appObject.orderObject.cart[index].gross_total, disc['type'], disc['amount']); 3145 if (disc['type'] == "fixed") { 3146 discountCalculations['dis_amoount'] = discountCalculations['dis_amoount'] * this.appObject.orderObject.cart[index]['count']; 3147 } 3148 disc['discount_amount'] = discountCalculations['dis_amoount']; 3149 this.appObject.orderObject.cart[index].total_discount += discountCalculations['dis_amoount']; 3150 this.appObject.orderObject.cart[index].discount.push({ 3151 'discount_id': disc['discount_id'], 3152 'amount': disc['amount'], 3153 'type': disc['type'], 3154 'name': disc['name'], 3155 'discount_amount': disc['discount_amount'] 3156 }); 3157 } 3158 } 3159 } 3160 this.appObject.orderObject.cart[index].gross_total_with_discount = this.appObject.orderObject.cart[index].gross_total - this.appObject.orderObject.cart[index].total_discount; 3161 // console.log('this.appObject.orderObject.cart[index].gross_total_with_discount : (' , index , ') ', this.appObject.orderObject.cart[index].gross_total_with_discount); 3162 _dgross_total_with_discount += this.appObject.orderObject.cart[index].gross_total_with_discount;
3163 //////////////////////////////END CHECK DISCOUNT AVAILABILITY 3164 _dtotal_discount += this.appObject.orderObject.cart[index].total_discount; 3165 } 3166 } 3167 if (deliveryCostAvailable) { 3168 // console.log('this.appObject?.orderObject?.cart_summery?.delivery_cost : ', deliveryTaxHelper); 3169 // let dCost = this.appObject?.orderObject?.cart_summery?.delivery_cost; 3170 // let type = deliveryTaxHelper.tax.type; 3171 // let apply_as = deliveryTaxHelper.tax.apply_as; 3172 // let taxAmount = deliveryTaxHelper.tax.delivery; 3173 // this.appObject.selectedRestaurantDetails.resturent_delivery_tax_ids = [deliveryTaxHelper.tax]; 3174 // console.log('dCost : ' ,dCost,' | type: ', type, ' | apply_as : ' ,apply_as, ' | taxAmount : ', taxAmount); 3175 // let tax = await this.getTax(dCost,type,apply_as,taxAmount); 3176 // console.log('Tax : ' , tax); 3177 } 3178 console.log('deliveryTaxHelper : ', deliveryTaxHelper);
3179 //////////////////////////////END GO EACH DISHES 3180 //////////////////////////////ORDER TAX VARIABLES 3181 let _ot_total_tax_exclusive = 0; 3182 let _ot_total_tax_inclusive = 0; 3183 let _ot_net_total_without_tax = 0; 3184 let _ot_net_total = 0; 3185 //////////////////////////////ORDER TAX CHECK 3186 this.appObject.orderObject.order_tax = []; 3187 // if (this.appObject.selectedRestaurantDetails?.resturent_order_tax_ids?.length > 0) { 3188 // for (let otindex = 0; otindex < this.appObject.selectedRestaurantDetails.resturent_order_tax_ids.length; otindex++) { 3189 // let otax = []; 3190 // otax['tax_id'] = this.appObject.selectedRestaurantDetails.resturent_order_tax_ids[otindex].id; 3191 // otax['amount'] = this.appObject.selectedRestaurantDetails.resturent_order_tax_ids[otindex][this.appObject.selectedDeliveryMethod]; 3192 // otax['type'] = this.appObject.selectedRestaurantDetails.resturent_order_tax_ids[otindex].apply_as; 3193 // otax['tax_type'] = this.appObject.selectedRestaurantDetails.resturent_order_tax_ids[otindex].type; 3194 // otax['name'] = this.appObject.selectedRestaurantDetails.resturent_order_tax_ids[otindex].title; 3195 // let ftaxCalculations = await this.getTax(_dgross_total_with_discount, otax['tax_type'], otax['type'], otax['amount']); 3196 // otax['tax_amount'] = ftaxCalculations['tax_amoount']; 3197 // if (otax['tax_type'] == 'excluded') { 3198 // _ot_total_tax_exclusive += otax['tax_amount']; 3199 // } else { 3200 // _ot_total_tax_inclusive += otax['tax_amount']; 3201 // } 3202 // this.appObject.orderObject.order_tax.push({ 3203 // 'tax_id': otax['tax_id'], 3204 // 'amount': otax['amount'], 3205 // 'type': otax['type'], 3206 // 'tax_type': otax['tax_type'], 3207 // 'name': otax['name'], 3208 // 'tax_amount': otax['tax_amount'] 3209 // }); 3210 // } 3211 // } 3212 // console.log('_dgross_total_with_discount : ' , _dgross_total_with_discount); 3213 // console.log('_ot_total_tax_inclusive : ' , _ot_total_tax_inclusive); 3214 // console.log('_ot_total_tax_inclusive : ' , _ot_total_tax_inclusive); 3215 // console.log('_ot_total_tax_exclusive : ' , _ot_total_tax_exclusive); 3216 // _dtotal_tax_exclusive 3217 // _dtotal_tax_inclusive 3218 _ot_net_total_without_tax = _dgross_total_with_discount - _dtotal_tax_inclusive; 3219 _ot_net_total = _dnet_total_without_tax + _dtotal_tax_inclusive + _dtotal_tax_exclusive;
3220 //////////////////////////////END ORDER TAX CHECK 3221 // console.log('_ot_net_total : ' , _ot_net_total); 3222 // console.log('_ot_net_total_without_tax : ' , _ot_net_total_without_tax); 3223 // console.log('_ot_total_tax_inclusive : ' , _ot_total_tax_inclusive); 3224 // console.log('_ot_total_tax_exclusive : ' , _ot_total_tax_exclusive); 3225 //////////////////////////////DELIVERY COST 3226 let _ototal_discount = 0; 3227 //////////////////////////////ORDER DEFAULT DISCOUNT CHECK 3228 this.appObject.orderObject.discounts = []; 3229 let delm = 'deliver'; 3230 switch (this.appObject.selectedDeliveryMethod) { 3231 case 'pickup': 3232 delm = 'pickup'; 3233 break; 3234 case 'dine_in': 3235 delm = 'dinein'; 3236 break; 3237 } 3238 if (this.appObject.selectedRestaurantDetails && this.appObject.selectedRestaurantDetails[delm + '_discount']) { 3239 let oddis = []; 3240 oddis['amount'] = this.appObject.selectedRestaurantDetails[delm + '_discount']; 3241 oddis['type'] = 'percentage'; 3242 oddis['name'] = 'anytime ' + oddis['amount'] + '%'; 3243 let discountCalculations = yield this.getDiscount(_ot_net_total, oddis['type'], oddis['amount']); 3244 oddis['discount_amount'] = discountCalculations['dis_amoount']; 3245 _ototal_discount += oddis['discount_amount']; 3246 this.appObject.orderObject.discounts.push({ 3247 'amount': oddis['amount'], 3248 'type': oddis['type'], 3249 'name': oddis['name'], 3250 'discount_amount': oddis['discount_amount'] 3251 }); 3252 }
3253 //////////////////////////////END ORDER DEFAULT DISCOUNT CHECK 3254 //////////////////////////////TIME LIMIT DISCOUNT 3255 if (this.appObject.selectedRestaurantDetails && this.appObject.selectedRestaurantDetails.discountRestaurant && this.appObject.selectedRestaurantDetails.discountRestaurant.isActive && this.appObject.selectedRestaurantDetails.discountRestaurant.isActive == "true") { 3256 let apply = false; 3257 let amount = 0; 3258 switch (this.appObject.selectedDeliveryMethod) { 3259 case 'delivery': 3260 if (this.appObject.selectedRestaurantDetails.discountRestaurant.isDeliveryAvailable == 'true') { 3261 apply = true; 3262 amount = this.appObject.selectedRestaurantDetails.discountRestaurant.deliveryCost; 3263 } 3264 break; 3265 case 'pickup': 3266 if (this.appObject.selectedRestaurantDetails.discountRestaurant.isPickUpAvailable == 'true') { 3267 apply = true; 3268 amount = this.appObject.selectedRestaurantDetails.discountRestaurant.pickUpCost; 3269 } 3270 break; 3271 case 'dine_in': 3272 if (this.appObject.selectedRestaurantDetails.discountRestaurant.isDineInAvailable == 'true') { 3273 apply = true; 3274 amount = this.appObject.selectedRestaurantDetails.discountRestaurant.dineInCost; 3275 } 3276 break; 3277 } 3278 if (apply) { 3279 //check is reached minimum details 3280 if (this.appObject.selectedRestaurantDetails && this.appObject.selectedRestaurantDetails.discountRestaurant.minimumDishes <= _total_dish_count && _dnet_total >= this.appObject.selectedRestaurantDetails.discountRestaurant.minimumAmount) { 3281 let olddis = []; 3282 olddis['amount'] = amount; 3283 olddis['type'] = 'percentage'; 3284 olddis['name'] = this.appObject.selectedRestaurantDetails.discountRestaurant.displayText; 3285 let ldiscountCalculations = yield this.getDiscount(_ot_net_total, olddis['type'], olddis['amount']); 3286 olddis['discount_amount'] = ldiscountCalculations['dis_amoount']; 3287 _ototal_discount += olddis['discount_amount']; 3288 this.appObject.orderObject.discounts.push({ 3289 'amount': olddis['amount'], 3290 'type': olddis['type'], 3291 'name': olddis['name'], 3292 'discount_amount': olddis['discount_amount'] 3293 }); 3294 } 3295 } 3296 }
3297 //////////////////////////////END TIME LIMIT DISCOUNT 3298 //////////////////////////////CHECK TIME LIMIT DISCOUNT 3299 if (this.appObject.selectedRestaurantDetails && this.appObject.selectedRestaurantDetails.discountList && this.appObject.selectedRestaurantDetails.discountList.length > 0) { 3300 for (let tlindex = 0; tlindex < this.appObject.selectedRestaurantDetails.discountList.length; tlindex++) { 3301 let tld = []; 3302 tld['discount_id'] = this.appObject.selectedRestaurantDetails.discountList[tlindex].id; 3303 tld['amount'] = this.appObject.selectedRestaurantDetails.discountList[tlindex].amount; 3304 tld['type'] = this.appObject.selectedRestaurantDetails.discountList[tlindex].apply_as; 3305 tld['name'] = this.appObject.selectedRestaurantDetails.discountList[tlindex].title; 3306 let tldiscountCalculations = yield this.getDiscount(_ot_net_total, tld['type'], tld['amount']); 3307 tld['discount_amount'] = tldiscountCalculations['dis_amoount']; 3308 _ototal_discount += tld['discount_amount']; 3309 this.appObject.orderObject.discounts.push({ 3310 'discount_id': tld['discount_id'], 3311 'amount': tld['amount'], 3312 'type': tld['type'], 3313 'name': tld['name'], 3314 'discount_amount': tld['discount_amount'] 3315 }); 3316 } 3317 }
3318 //////////////////////////////END CHECK TIME LIMIT DISCOUNT 3319 //selected coupon 3320 if (typeof this.appObject.selectedCoupon.length !== 'undefined' && this.appObject.selectedCoupon.length > 0) { 3321 let oscoup = []; 3322 oscoup['discount_id'] = this.appObject.selectedCoupon[0].id; 3323 oscoup['amount'] = this.appObject.selectedCoupon[0].amount; 3324 oscoup['type'] = this.appObject.selectedCoupon[0].apply_as; 3325 oscoup['coupon_code'] = this.appObject.selectedCoupon[0].coupon_code; 3326 oscoup['name'] = this.appObject.selectedCoupon[0].title; 3327 let couponCalculations = yield this.getDiscount(_ot_net_total, oscoup['type'], oscoup['amount']); 3328 oscoup['discount_amount'] = couponCalculations['dis_amoount']; 3329 _ototal_discount += oscoup['discount_amount']; 3330 this.appObject.orderObject.discounts.push({ 3331 'discount_id': oscoup['discount_id'], 3332 'amount': oscoup['amount'], 3333 'type': oscoup['type'], 3334 'coupon_code': oscoup['coupon_code'], 3335 'name': oscoup['name'], 3336 'discount_amount': oscoup['discount_amount'] 3337 }); 3338 } 3339 this.appObject.orderObject.cart_summery.min_reached = true; 3340 //delivery charge 3341 let delivery_cost = 0; 3342 //by distance 3343 let distance = Math.round(this.appObject.selectedRestaurantDetails && this.appObject.selectedRestaurantDetails.distance_to_location ? this.appObject.selectedRestaurantDetails.distance_to_location : 0); 3344 if (distance == 0) { 3345 distance = 1; 3346 } 3347 this.appObject.orderObject.cart_summery.min_amount = 0; 3348 if (this.appObject.selectedDeliveryMethod == 'delivery') { 3349 // new IF came with postal code feature 3350 if (this.appObject.settings.is_postalcode === 'true') { 3351 if (this.appObject.postalCodeDetails) { 3352 let deliveryCost = this.appObject.postalCodeDetails.price.find((prices) => prices.restaurantId === this.appObject.selectedRestaurantDetails.id); 3353 if (deliveryCost) { 3354 this.appObject.orderObject.cart_summery.min_amount = +deliveryCost.minOrderAmount; 3355 delivery_cost = +deliveryCost.cost; 3356 } 3357 else { 3358 console.log('something went wrong when finding delivery cost for selected restaurant'); 3359 } 3360 } 3361 else { 3362 console.log('something went wrong when calculate delivery cost'); 3363 } 3364 } 3365 else { 3366 // moved from outside of the IF, because this value only use when selected delivery method is 'delivery' 3367 let minOrderAmounts = JSON.parse(this.appObject.selectedRestaurantDetails.min_order_amounts); 3368 if (this.appObject.selectedRestaurantDetails.delivery_charge_type == "fixed_amount") { 3369 if (this.appObject.selectedRestaurantDetails.fixed_delivery_amount != null && this.appObject.selectedRestaurantDetails.fixed_delivery_amount_apply_as != null) { 3370 let dcharge = yield this.getDeliveryCost(_ot_net_total, this.appObject.selectedRestaurantDetails.fixed_delivery_amount_apply_as, this.appObject.selectedRestaurantDetails.fixed_delivery_amount); 3371 delivery_cost = yield this.getNumberValue(dcharge['del_amoount']); 3372 } 3373 } 3374 else { 3375 let byDistance = JSON.parse(this.appObject.selectedRestaurantDetails.delivery_cost); 3376 if (byDistance.length >= distance) { 3377 if (byDistance[distance - 1].cost) { 3378 delivery_cost = yield this.getNumberValue(byDistance[distance - 1].cost); 3379 } 3380 } 3381 } 3382 this.appObject.orderObject.cart_summery.min_amount = yield this.getNumberValue(minOrderAmounts[distance - 1].amount); 3383 if (Number.isNaN(this.appObject.orderObject.cart_summery.min_amount)) { 3384 this.appObject.orderObject.cart_summery.min_amount = 0; 3385 } 3386 // Moved to below 3387 // if (this.appObject.orderObject.cart_summery.min_amount <= _ot_net_total) { 3388 // this.appObject.orderObject.cart_summery.min_reached = true; 3389 // } else { 3390 // this.appObject.orderObject.cart_summery.min_reached = false;
3391 // } 3392 } 3393 //check min order amount is reached 3394 if (this.appObject.selectedRestaurantDetails.is_free_delivery == 'true') { 3395 if (this.appObject.orderObject.cart_summery.min_reached) { 3396 delivery_cost = 0; 3397 } 3398 } 3399 } 3400 //////////////////////////////ORDER DELEVERY TAX VARIABLES 3401 let _dt_total_tax_exclusive = 0; 3402 let _dt_total_tax_inclusive = 0; 3403 let _dt_net_total_without_tax = 0; 3404 let _dt_net_total = 0; 3405 //////////////////////////////ORDER DELEVERY TAX CHECK 3406 this.appObject.orderObject.delivery_tax = []; 3407 if (this.appObject.selectedDeliveryMethod == 'delivery' && delivery_cost > 0 && deliveryTaxHelper.tax) { 3408 // if (this.appObject.selectedRestaurantDetails?.resturent_delivery_tax_ids?.length > 0) { 3409 let dtax = []; 3410 dtax['tax_id'] = deliveryTaxHelper.tax.id; 3411 dtax['amount'] = deliveryTaxHelper.tax[this.appObject.selectedDeliveryMethod]; 3412 dtax['type'] = deliveryTaxHelper.tax.apply_as; 3413 dtax['tax_type'] = 'included'; 3414 dtax['name'] = deliveryTaxHelper.tax.title; 3415 let ftaxCalculations = yield this.getTax(delivery_cost, dtax['tax_type'], dtax['type'], dtax['amount']); 3416 dtax['tax_amount'] = ftaxCalculations['tax_amoount']; 3417 if (dtax['tax_type'] == 'excluded') { 3418 _dt_total_tax_exclusive += dtax['tax_amount']; 3419 } 3420 else { 3421 _dt_total_tax_inclusive += dtax['tax_amount']; 3422 } 3423 this.appObject.orderObject.delivery_tax.push({ 3424 'tax_id': dtax['tax_id'], 3425 'amount': dtax['amount'], 3426 'type': dtax['type'], 3427 'tax_type': dtax['tax_type'], 3428 'name': dtax['name'], 3429 'tax_amount': dtax['tax_amount'] 3430 }); 3431 } 3432 //_dt_net_total_without_tax = _dnet_total_without_tax - _dt_total_tax_inclusive; 3433 // _dt_net_total += (_dnet_total_without_tax - _dt_total_tax_inclusive) + _dt_total_tax_exclusive;
3434 //////////////////////////////END ORDER DELEVERY TAX CHECK 3435 //summery net_total 3436 // this.appObject.orderObject.cart_summery.total_tax_inclusive = _ot_total_tax_inclusive; 3437 // this.appObject.orderObject.cart_summery.total_tax_exclusive = _ot_total_tax_exclusive; 3438 // this.appObject.orderObject.cart_summery.net_total_without_tax = _ot_net_total_without_tax; 3439 this.appObject.orderObject.cart_summery.total_tax_inclusive = _dtotal_tax_inclusive; 3440 this.appObject.orderObject.cart_summery.total_tax_exclusive = _dtotal_tax_exclusive; 3441 this.appObject.orderObject.cart_summery.net_total_without_tax = _dnet_total_without_tax; 3442 this.appObject.orderObject.cart_summery.net_total = _ot_net_total; 3443 this.appObject.orderObject.cart_summery.total_discount = _ototal_discount; 3444 this.appObject.orderObject.cart_summery.total_with_discount_price = this.appObject.orderObject.cart_summery.net_total - this.appObject.orderObject.cart_summery.total_discount; 3445 this.appObject.orderObject.cart_summery.delivery_cost = delivery_cost + _dt_total_tax_exclusive; 3446 this.appObject.orderObject.cart_summery.gross_total = this.appObject.orderObject.cart_summery.total_with_discount_price + this.appObject.orderObject.cart_summery.delivery_cost; 3447 this.appObject.orderObject.cart_summery.total_dish_count = _total_dish_count; 3448 // moved from top to bottom 3449 // and changed the value checking minimum order amount to total_with_discount_price instead of gross_total 3450 if (this.appObject.orderObject.cart_summery.min_amount <= this.appObject.orderObject.cart_summery.total_with_discount_price) { 3451 this.appObject.orderObject.cart_summery.min_reached = true; 3452 } 3453 else { 3454 this.appObject.orderObject.cart_summery.min_reached = false; 3455 } 3456 this.updateAppObject(); 3457 }); 3458 } 3459 getTax(amount, type, apply_as, tax_value) { 3460 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 3461 let tax = []; 3462 // console.log('amount : ' , amount); 3463 if (apply_as == 'percentage') { 3464 if (type == 'excluded') { 3465 tax['tax_amoount'] = (amount / 100) * tax_value; 3466 tax['amount_before_tax'] = amount; 3467 tax['amount_after_tax'] = amount + (amount / 100) * tax_value; 3468 } 3469 else { 3470 tax['tax_amoount'] = amount - (amount * 100) / (100 + tax_value); 3471 tax['amount_before_tax'] = amount - tax['tax_amoount']; 3472 tax['amount_after_tax'] = amount; 3473 } 3474 } 3475 else { 3476 if (type == 'excluded') { 3477 tax['tax_amoount'] = tax_value; 3478 tax['amount_before_tax'] = amount; 3479 tax['amount_after_tax'] = amount + tax_value; 3480 } 3481 else { 3482 tax['tax_amoount'] = tax_value; 3483 tax['amount_before_tax'] = amount - tax_value; 3484 tax['amount_after_tax'] = amount; 3485 } 3486 } 3487 return tax; 3488 }); 3489 } 3490 getDiscount(amount, apply_as, dis_value) { 3491 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 3492 let dis = []; 3493 if (apply_as == 'percentage') { 3494 dis['dis_amoount'] = (amount / 100) * dis_value; 3495 dis['amount_before_dis'] = amount; 3496 dis['amount_after_dis'] = amount + (amount / 100) * dis_value; 3497 } 3498 else { 3499 dis['dis_amoount'] = dis_value; 3500 dis['amount_before_dis'] = amount; 3501 dis['amount_after_dis'] = amount + dis_value; 3502 } 3503 return dis; 3504 }); 3505 } 3506 getDiscountForCoupon(amount, apply_as, dis_value) { 3507 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 3508 let dis = [];
3509 if (apply_as == 'percentage') { 3510 dis['dis_amoount'] = (amount / 100) * dis_value; 3511 dis['amount_after_dis'] = amount - dis['dis_amoount']; 3512 } 3513 else { 3514 if (amount < dis_value) { 3515 dis['dis_amoount'] = amount; 3516 dis['amount_after_dis'] = 0; 3517 } 3518 else { 3519 dis['dis_amoount'] = dis_value; 3520 dis['amount_after_dis'] = amount - dis_value; 3521 } 3522 } 3523 return dis; 3524 }); 3525 } 3526 getDeliveryCost(amount, apply_as, del_value) { 3527 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 3528 let del = []; 3529 if (apply_as == 'percentage') { 3530 del['del_amoount'] = (amount / 100) * del_value; 3531 del['amount_before_del'] = amount; 3532 del['amount_after_del'] = amount + (amount / 100) * del_value; 3533 } 3534 else { 3535 del['del_amoount'] = del_value; 3536 del['amount_before_del'] = amount; 3537 del['amount_after_del'] = amount + del_value; 3538 } 3539 return del; 3540 }); 3541 } 3542 changeAddress() { 3543 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 3544 this.routeToRestaurantList = true; 3545 this.router.navigate(['/find-near-by-me'], { replaceUrl: true }); 3546 }); 3547 } 3548 getLanguages() { 3549 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 3550 yield this.requestService.post('language/list', {}).then(data => { 3551 if (data.status) { 3552 this.appObject.langList = data.lang; 3553 } 3554 }, error => { 3555 this.appObject.isLoading = false; 3556 }); 3557 }); 3558 } 3559 addCoupon(code) { 3560 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 3561 return yield this.requestService.post('coupon/status', { 3562 'code': code, 3563 'restaurant_id': this.appObject.selectedRestaurantId, 3564 'customer_id': this.appObject.userId, 3565 'device_type': config.plf, 3566 'device_id': this.appObject.deviceUUID, 3567 'discounts': this.appObject.orderObject.discounts, 3568 'language': this.appObject.currentLang, 3569 }); 3570 }); 3571 } 3572 changeLanguage(val) { 3573 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 3574 this.currentLang = val.detail.value; 3575 this.translate.setDefaultLang(this.currentLang); 3576 this.translate.use(this.currentLang); 3577 yield this.storage.set('lang', this.currentLang); 3578 yield this.getSettings(); 3579 this.updateAppObject(); 3580 }); 3581 } 3582 getSettings() { 3583 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 3584 yield this.requestService.post('settings', { 3585 'device_id': this.appObject.deviceUUID, 3586 'language': this.appObject.currentLang, 3587 'device_type': config.plf, 3588 'app_version': src_environments_environment__WEBPACK_IMPORTED_MODULE_6__.environment.APP_VERSION 3589 }).then((data) => (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 3590 if (data.status) { 3591 let pages_in_side_menu = []; 3592 data.data.pages.forEach(element => { 3593 if (element.is_show_on_side_menu == "true") { 3594 pages_in_side_menu.push(element); 3595 } 3596 }); 3597 this.appObject.settings = data.data; 3598 this.appObject.sideMenuPages = pages_in_side_menu; 3599 if (this.appObject.settings.app_configuration) { 3600 this.appObject.settings.app_configuration = JSON.parse(this.appObject.settings.app_configuration); 3601 } 3602 // get pages details , extract data that really need and set to the localstorage 3603 let pageDetails = data.data && data.data.pages && data.data.pages.length ? data.data.pages.reduce((a, o) => (a.push({ id: o.id, slug: o.slug, name: o.name, content: o.content }), a), []) : []; 3604 this.storage.set(this.STORAGE_KEYS.PAGES_KEY, JSON.stringify(pageDetails)); 3605 // if web version, then get default restaurant details 3606 if (this.isWebVersion && this.appObject.settings && this.appObject.settings.main_restaurant && this.appObject.settings.main_restaurant.slug) { 3607 if (!this.doNotFetchMain) { 3608 yield this.getRestaurantBySlug(this.appObject.settings.main_restaurant.slug); 3609 // get available discounts to display in web app landing page 3610 this.getDiscounts(); 3611 } 3612 } 3613 // If multiple restaurants has then get delivery options from settings object, 3614 // otherwise get options from main restaurant open details 3615 this.findSelectedRestaurantOrderTypes(this.appObject.settings.app_configuration 3616 && this.appObject.settings.app_configuration.has_multiple_restaurants 3617 ? this.appObject.settings 3618 : this.appObject.settings.main_restaurant.openDetails); 3619 // set favicon from main restaurant 3620 this.appObject.favIcon = src_environments_environment__WEBPACK_IMPORTED_MODULE_6__.environment.BASE_URL + '/images/restaurant-favicon/' + this.appObject.settings.main_restaurant.id; 3621 let favIcon = document.getElementById('appFavIcon'); 3622 if (favIcon) 3623 favIcon.href = this.appObject.favIcon; 3624 if (this.appObject.settings.title !== "") { 3625 this.titleService.setTitle(this.appObject.settings.title); 3626 } 3627 if (this.appObject.settings.main_restaurant && this.appObject.settings.main_restaurant.color_configuration) { 3628 let theme = JSON.parse(this.appObject.settings.main_restaurant.color_configuration); 3629 this.appObject.theme = theme; 3630 // this is just for randomize the background image, otherwise it won't
3630change event image has been changed from the backend 3631 if (this.appObject.theme[this.themeConfigFor] && this.appObject.theme[this.themeConfigFor].home) 3632 this.appObject.theme[this.themeConfigFor].home.imageURL = new Date().getTime(); 3633 this.themeOb = this.appObject.theme; 3634 this.isWebVersion ? this.themeConfigFor = 'web' : ''; 3635 } 3636 // update app object in storage 3637 this.updateAppObject(); 3638 // check if mandatory app updates are available 3639 if (!this.isWebVersion && data.data && data.data.update_required) { 3640 this.router.navigate(['update-required']); 3641 } 3642 // if maintain mode is on, then redirect into maintenance page 3643 if (this.appObject.settings.maintenance_mode === 'true') { 3644 this.router.navigate(['maintenance'], { replaceUrl: true }); 3645 } 3646 else { 3647 const currentRoute = this.router.url; 3648 if (currentRoute === '/maintenance') { 3649 this.router.navigate(['/'], { replaceUrl: true }); 3650 } 3651 } 3652 this.isSettingsLoaded = true; 3653 this.watchSettingsGettingLoaded({ status: 'done' }); 3654 } 3655 }), error => { 3656 this.appObject.isLoading = false; 3657 }); 3658 }); 3659 } 3660 /** 3661 * Find supported order types of selected restaurant 3662 * @param openDetails restaurant open details 3663 * @param justReturnMethods just return methods instead of assigning to availableDeliveryMethods 3664 * @deprecated use findSelectedRestaurantOrderTypesV2 instead 3665 */ 3666 findSelectedRestaurantOrderTypes(openDetails, justReturnMethods = false) { 3667 let deliveryMethods = []; 3668 // commented due to show menu even restaurant has no deliery methods requirement 3669 if (openDetails.is_delivery == true || openDetails.is_delivery === 'true') { 3670 deliveryMethods.push("delivery"); 3671 } 3672 if (openDetails.is_dine_in == true || openDetails.is_dine_in === 'true') { 3673 deliveryMethods.push("dine_in"); 3674 } 3675 if (openDetails.is_pickup == true || openDetails.is_pickup === 'true') { 3676 deliveryMethods.push("pickup"); 3677 } 3678 // if restaurant is closed and preorder won't accept, then take service from main restaurant 3679 if (!justReturnMethods && openDetails.current_status === 'closed' && !openDetails.is_pre_order && this.appObject.settings && this.appObject.settings.main_restaurant && this.appObject.settings.main_restaurant.service) { 3680 // if (this.appObject.settings.app_configuration && !this.appObject.settings.app_configuration.has_multiple_restaurants) { 3681 let service = this.appObject.settings.main_restaurant.service.split(','); 3682 deliveryMethods = []; 3683 service.includes("'delivery'") ? deliveryMethods.push('delivery') : ''; 3684 service.includes("'dineIn'") ? deliveryMethods.push('dine_in') : ''; 3685 service.includes("'pickup'") ? deliveryMethods.push('pickup') : ''; 3686 // } 3687 } 3688 // deliveryMethods = ['delivery', 'dine_in', 'pickup']; 3689 // console.log('am caleld : ', deliveryMethods); 3690 if (justReturnMethods) 3691 return deliveryMethods; 3692 else 3693 this.availableDeliveryMethods = deliveryMethods; 3694 } 3695 /** 3696 * V2 : This will accept restauant object instead of openDetails object 3697 * Find supported order types of selected restaurant 3698 * @param restaurant restaurant object to get opendetails 3699 * @param justReturnMethods just return methods instead of assigning to availableDeliveryMethods 3700 */ 3701 findSelectedRestaurantOrderTypesV2(restaurant, justReturnMethods = false) { 3702 let openDetails = restaurant.openDetails; 3703 let deliveryMethods = []; 3704 // commented due to show menu even restaurant has no deliery methods requirement 3705 if (openDetails.is_delivery == true || openDetails.is_delivery === 'true') { 3706 deliveryMethods.push("delivery"); 3707 } 3708 if (openDetails.is_dine_in == true || openDetails.is_dine_in === 'true') { 3709 deliveryMethods.push("dine_in"); 3710 } 3711 if (openDetails.is_pickup == true || openDetails.is_pickup === 'true') { 3712 deliveryMethods.push("pickup"); 3713 } 3714 // if restaurant is closed and preorder won't accept, then take service from main restaurant 3715 if (!justReturnMethods && openDetails.current_status === 'closed' && !openDetails.is_pre_order && this.appObject.settings && this.appObject.settings.main_restaurant && this.appObject.settings.main_restaurant.service) { 3716 // if (this.appObject.settings.app_configuration && !this.appObject.settings.app_configuration.has_multiple_restaurants) { 3717 let service = this.appObject.settings.main_restaurant.service.split(','); 3718 deliveryMethods = []; 3719 service.includes("'delivery'") ? deliveryMethods.push('delivery') : ''; 3720 service.includes("'dineIn'") ? deliveryMethods.push('dine_in') : ''; 3721 service.includes("'pickup'") ? deliveryMethods.push('pickup') : ''; 3722 // } 3723 } 3724 /** 3725 * unable to place preorders for feture when desired order option is currently disabled 3726 * below code is related to this issue 3727 * fix by Pumayk26 3728 **/ 3729 let preorderHelper = {}; 3730 const daysOfWeek = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT']; 3731 const dayName = daysOfWeek[new Date().getDay()]; 3732 // find out today's schedule of the restaurant 3733 let openHours = restaurant.openHoursData; 3734 let todaySchedule = openHours.find((dayData) => dayData.day === dayName); 3735 // get current time slot in HH:MM 3736 const now = new Date(); 3737 const hours = now.getHours().toString().padStart(2, '0'); 3738 const minutes = now.getMinutes().toString().padStart(2, '0'); 3739 // current user time slot 3740 let time = `${hours}:${minutes}`; 3741 // if an ordering option not available in ordering methods that means it's not available at the moment, 3742 // so if restaurant has preorder option enabled for the option that unavailable right now, then check for other timeslots availability 3743 let options = ['delivery', 'dinein', 'pickup']; 3744 for (let i = 0; i < options.length; i++) { 3745 const option = options[i]; 3746 // this variable made because of this dine_in option _ not available in values from backend
3747 let includeCheck = option === 'dinein' ? 'dine_in' : option; 3748 // find out each unavailable options at the moment will be available in second timeslot 3749 // if it is available for preorder in second timeslot, display the ordering option 3750 if (!deliveryMethods.includes(includeCheck) && restaurant.openHoursData && restaurant.is_pre_order === 'true' && restaurant['is_pre_order_' + option] === 'true') { 3751 if (todaySchedule.slot_two_first && (todaySchedule['slot_two_' + option] === 'true' || todaySchedule['slot_two_' + option] === true)) { 3752 // get string today yyyy-mm-dd to use in calculations below 3753 let todayDate = this.formatDateObject(new Date(), false); 3754 let currentTime = new Date(todayDate + ' ' + time); 3755 let slotTwoFirst = new Date(todayDate + ' ' + todaySchedule.slot_two_first); 3756 let slot_two_second = new Date(todayDate + ' ' + todaySchedule.slot_two_second); 3757 // if current time is behind the ordering option available time, then make it available now for preorder 3758 if (currentTime.getTime() <= slotTwoFirst.getTime() || currentTime.getTime() <= slot_two_second.getTime()) { 3759 deliveryMethods.push(includeCheck); 3760 preorderHelper[includeCheck] = true; 3761 } 3762 } 3763 } 3764 } 3765 if (justReturnMethods) 3766 return { deliveryMethods: deliveryMethods, preorderOptions: preorderHelper }; 3767 else 3768 this.availableDeliveryMethods = deliveryMethods; 3769 } 3770 /** 3771 * Watching add to cart from cross selling page when toppings available on selected dish 3772 * @param data 3773 */ 3774 watchSettingsGettingLoaded(data) { 3775 this.settingsLoadedCallBack.next(data); 3776 } 3777 triggerSettingsLoadedSuccssfulyCallback() { 3778 return this.settingsLoadedCallBack; 3779 } 3780 openLink(url) { 3781 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 3782 const browser = this.iab.create(url); 3783 }); 3784 } 3785 openSideMenu() { 3786 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 3787 this.menu.enable(true, 'sidemenu'); 3788 this.menu.open('sidemenu'); 3789 }); 3790 } 3791 closeMenu() { 3792 this.menu.close('sidemenu'); 3793 } 3794 pageSetup(page) { 3795 switch (page) { 3796 case 'find-near-by-me': 3797 this.isFooterMenu = false;
3798 this.appObject.errors = []; 3799 break; 3800 default: 3801 break; 3802 } 3803 } 3804 goTo(url) { 3805 // this.menu.close('sidemenu'); 3806 //this.navController.navigateRoot(url); 3807 setTimeout(() => { 3808 this.router.navigate(url); 3809 }, 200); 3810 // console.log('here'); 3811 } 3812 routeToSelectedRestaurant() { 3813 // console.log('restaurant/' + this.appObject.selectedRestaurant); 3814 this.router.navigate(['restaurant/' + this.appObject.selectedRestaurant]); 3815 } 3816 formataNumero(e, separador = '.', decimais = 2) { 3817 let a = e.value.split(''); 3818 let ns = ''; 3819 a.forEach((c) => { if (!isNaN(c)) 3820 ns = ns + c; }); 3821 ns = parseInt(ns).toString(); 3822 if (ns.length < (decimais + 1)) { 3823 ns = ('0'.repeat(decimais + 1) + ns); 3824 ns = ns.slice((decimais + 1) * -1); 3825 } 3826 let ans = ns.split(''); 3827 let r = ''; 3828 for (let i = 0; i < ans.length; i++) 3829 if (i == ans.length - decimais) 3830 r = r + separador + ans[i]; 3831 else 3832 r = r + ans[i]; 3833 e.value = r; 3834 } 3835 openCart() { 3836 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 3837 // console.log(this.appObject); 3838 this.animationDrop = true; 3839 this.className = 'animating'; 3840 let response = yield this.calculateCartAmounts(); 3841 // console.log(response); 3842 if (response && !response.calculationFailed) { 3843 setTimeout(() => { 3844 this.className = ''; 3845 this.animationDrop = false; 3846 this.openCartPopup(); 3847 }, 1500); 3848 } 3849 else { 3850 this.animationDrop = false; 3851 this.className = ''; 3852 } 3853 }); 3854 } 3855 openCartPopup() { 3856 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 3857 this.hideCartButton = true; 3858 const cartModal = yield this.modalController.create({ 3859 component: _views_modals_cart_cart_page__WEBPACK_IMPORTED_MODULE_9__.CartPage, 3860 cssClass: 'custom-popup' 3861 }); 3862 yield cartModal.present(); 3863 cartModal.onDidDismiss().then((data) => { 3864 this.hideCartButton = false; 3865 }); 3866 }); 3867 } 3868 placeOrder(isWebVersion = false) { 3869 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 3870 // check the minimum order amount 3871 if (this.appObject.orderObject && this.appObject.orderObject.cart_summery && !this.appObject.orderObject.cart_summery.min_reached) { 3872 yield this.translate.get(['key.minimum_order_amount_', 'key.is_not_reached']).subscribe((response) => { 3873 // check just in case lang keys are missing, then trigger the hard coded toast 3874 if (response['key.minimum_order_amount_'] && response['key.is_not_reached']) { 3875 this.showToast((response['key.minimum_order_amount_'] + ' ' + response['key.is_not_reached']), 'danger'); 3876 } 3877 else { 3878 this.showToast('Minimum Order Amount is Not Reached', 'danger'); 3879 } 3880 }); 3881 return; 3882 } 3883 /* 3884 let order_details = { 3885 delivery_type: this.appObject.selectedDeliveryMethod, 3886 delivery_time: '', 3887 delivery_address: { 3888 name: this.appObject.myAddress.name, 3889 lat: this.appObject.myAddress.lat, 3890 lng: this.appObject.myAddress.lng, 3891 3892 this.appObject.orderObject.order_details.delivery_address.name = this.appObject.myAddress.name; 3893 this.appObject.orderObject.order_details.delivery_address.lat = this.appObject.myAddress.lat; 3894 this.appObject.orderObject.order_details.delivery_address.lng = this.appObject.myAddress.lng; 3895 }, 3896 payment_type: 'cod', 3897 name: 'viraj harshana', 3898 email: '[email protected]', 3899 mobile_number: '071958475543', 3900 backyard: '', 3901 special_note:'' 3902 }; 3903 */ 3904 //store user details in cache 3905 if (this.appObject.user.type == 'guest') { 3906 let full_name = this.appObject.orderObject.order_details.name; 3907 let name = full_name.split(" "); 3908 this.appObject.user.fname = name[0]; 3909 this.appObject.user.lname = name.length > 2 ? name[1] + ' ' + name[2] : name[1]; 3910 this.appObject.user.email = this.appObject.orderObject.order_details.email; 3911 this.appObject.user.telephone = this.appObject.orderObject.order_details.mobile_number; 3912 } 3913 this.appObject.orderObject.order_details.delivery_address.name = this.appObject.myAddress.name; 3914 this.appObject.orderObject.order_details.delivery_address.lat = this.appObject.myAddress.lat; 3915 this.appObject.orderObject.order_details.delivery_address.lng = this.appObject.myAddress.lng; 3916 this.appObject.orderObject['order_details'] = this.appObject.orderObject.order_details; 3917 this.appObject.orderObject['device_id'] = this.appObject.deviceUUID; 3918 this.appObject.orderObject['lang'] = this.appObject.currentLang; 3919 this.appObject.orderObject['resturent_id'] = this.appObject.selectedRestaurantId; 3920 this.appObject.orderObject['device_type'] = config.plf; 3921 this.appObject.orderObject['customer_id'] = this.appObject.userId; 3922 // console.log('this.appObject.orderObject : ', this.appObject.orderObject); 3923 // Do menu category visibility validation here before placing the order 3924 let menuCategoryValidation = { 3925 menuCategories: [], 3926 delivery_time: this.appObject.orderObject.order_details.delivery_time, 3927 delivery_type: this.appObject.orderObject.order_details.delivery_type, 3928 delivery_date: this.appObject.orderObject.order_details.delivery_date, 3929 lang: this.appObject.currentLang, 3930 device_id: this.appObject.deviceUUID, 3931 device_type: config.plf 3932 }; 3933 for (let i = 0; i < this.appObject.orderObject.cart.length; i++) { 3934 const cartItem = this.appObject.orderObject.cart[i]; 3935 let exists = menuCategoryValidation.menuCategories.find((cat) => cat.id === cartItem.menu_category_id); 3936 if (!exists) { 3937 menuCategoryValidation.menuCategories.push(cartItem.menu_category_id); 3938 } 3939 } 3940 this.appObject.isLoading = true; 3941 this.menusNotAvailable = []; 3942 let stopProcess = false;
3943 yield this.requestService.post('menu-category/validate', menuCategoryValidation).then((data) => (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 3944 if (data.status) { 3945 let validationResult = data.data; 3946 // find out what menus are not available for selected time slot 3947 for (let i = 0; i < validationResult.length; i++) { 3948 const element = validationResult[i]; 3949 if (element && element.visibility && !element.visibility.availableForTime) 3950 this.menusNotAvailable.push(element); 3951 } 3952 if (this.menusNotAvailable.length) { 3953 // console.log('show that popup'); 3954 this.tempDeliveryDate = menuCategoryValidation.delivery_date === 'asap' ? this.formatDateObject(new Date(), false) : menuCategoryValidation.delivery_date; 3955 if (this.isWebVersion) { 3956 const modal = yield this.modalController.create({ 3957 component: _views_web_views_shared_modal_popover_modal_popover_page__WEBPACK_IMPORTED_MODULE_12__.ModalPopoverPage, 3958 cssClass: 'custom-popup', 3959 componentProps: { 3960 'type': this.POPOVER_TYPES.UNABLE_TO_COMPLETE_ORDER.TYPE, 3961 'title': this.POPOVER_TYPES.UNABLE_TO_COMPLETE_ORDER.TITLE 3962 }, 3963 keyboardClose: false, 3964 }); 3965 // this.modalController.dismiss(); 3966 modal.present(); 3967 } 3968 else { 3969 const modal = yield this.modalController.create({ 3970 component: _views_modals_popup_popup_page__WEBPACK_IMPORTED_MODULE_5__.PopupPage, 3971 cssClass: 'custom-popup', 3972 componentProps: { 3973 'currentUI': 'unable-to-complete-order' 3974 } 3975 }); 3976 modal.present(); 3977 this.hideCartButton = true; 3978 } 3979 // stop the process 3980 this.appObject.isLoading = false; 3981 stopProcess = true; 3982 } 3983 } 3984 })).catch((error) => { 3985 console.log('menucategory validation error : ', error); 3986 }).finally(() => { 3987 this.appObject.isLoading = false; 3988 }); 3989 if (stopProcess) 3990 return; 3991 // await this.calculateCartAmounts(); 3992 // rebuild order details object (to avoid duplicated dishes) 3993 if (this.appObject.orderObject.selectedTable) { 3994 let re_orderObject = JSON.parse(JSON.stringify(this.appObject.orderObject)); 3995 let itemsWithSize = re_orderObject.cart.filter((item) => item.size_info); 3996 let itemsWithoutSize = re_orderObject.cart.filter((item) => !item.size_info); 3997 let recreated = []; 3998 for (let i = 0; i < itemsWithoutSize.length; i++) { 3999 const element = itemsWithoutSize[i]; 4000 let existing = recreated.find((existingDish) => existingDish.dish_id === element.dish_id); 4001 if (existing) { 4002 existing.points_per_dish += element.points_per_dish; 4003 existing.count += element.count; 4004 existing.gross_total += element.gross_total; 4005 existing.gross_total_with_discount += element.gross_total_with_discount; 4006 existing.gross_without_tax_price += element.gross_without_tax_price; 4007 existing.net_total += element.net_total; 4008 } 4009 else 4010 recreated.push(element); 4011 } 4012 // find duplicates in itemsWithoutSize 4013 let cartItems = itemsWithSize; 4014 cartItems = cartItems.concat(recreated); 4015 this.appObject.orderObject.cart = cartItems; 4016 this.updateAppObject(); 4017 } 4018 yield this.calculateCartAmounts(); 4019 // console.log(this.appObject.orderObject.cart); 4020 // return; 4021 //console.log('DAD : ' , this.appObject.orderObject); 4022 // return; 4023 this.appObject.isLoading = true; 4024 return new Promise((resolve, reject) => (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4025 // add the app version, so we can know the user app version 4026 this.appObject.orderObject.appVersion = this.appObject.appVersion; 4027 // send currntly selected restaurant distance to the selected address 4028 this.appObject.orderObject.distanceToLocation = this.appObject.selectedRestaurantDetails.distance_to_location; 4029 yield this.requestService.post('order/add_v3', this.appObject.orderObject).then(data => { 4030 // console.log('inside:', data); 4031 if (data.status) { 4032 // reset the selected time slot to calculate cart amounts 4033 this.appObject.selectedTimeSlot = ''; 4034 this.updateAppObject(); 4035 if (data.points) { 4036 this.showToast('Huray! You just earned ' + data.points + ' points!', 'success'); 4037 } 4038 if (this.appObject.orderObject.order_details.payment_type == 'points' || this.appObject.orderObject.order_details.payment_type == 'cod' || this.appObject.orderObject.order_details.payment_type == 'ecCard') { 4039 //success 4040 this.clearCart(); 4041 // if not the web version, then redirect to order summary page 4042 if (!isWebVersion) 4043 this.router.navigate(['/order-summery/' + data.payment_id]); 4044 else { 4045 this.appObject.isLoading = false;
4046 return resolve(data); 4047 } 4048 } 4049 else { 4050 //open payments 4051 const url = data.url; 4052 if (isWebVersion || this.isMobileWeb()) { 4053 // console.log('am called : ', url); 4054 // this.router.navigateByUrl(url); 4055 if (this.isMobileWeb()) 4056 window.open(url, "_self"); 4057 else 4058 window.location = url; 4059 // var Int = setInterval(() => { 4060 // if (windoeRef.closed) { 4061 // clearInterval(Int); 4062 // Int = null; 4063 // //order status check 4064 // this.requestService.post('order/payment/status', { payment_id: data.payment_id, device_id: this.appObject.deviceUUID, lang: this.appObject.currentLang }).then(paymentStatus => { 4065 // if (paymentStatus.status && paymentStatus.data.status === "paid") { 4066 // //payment done 4067 // this.clearCart(); 4068 // this.appObject.isLoading = false; 4069 // return resolve(data); 4070 // } else { 4071 // //err 4072 // this.translate.get('key.payment_faild_msg').toPromise().then((response) => { 4073 // this.showAlert('error', '', response); 4074 // }); 4075 // } 4076 // }); 4077 // } else { 4078 // //order status check 4079 // this.requestService.post('order/payment/status', { payment_id: data.payment_id, device_id: this.appObject.deviceUUID, lang: this.appObject.currentLang }).then(paymentStatus => { 4080 // this.appObject.isLoading = false; 4081 // if (paymentStatus.status && paymentStatus.data.status === "paid") { 4082 // //payment done 4083 // clearInterval(Int); 4084 // windoeRef.close(); 4085 // windoeRef = null; 4086 // this.clearCart(); 4087 // return resolve(data); 4088 // } else if (paymentStatus.status && paymentStatus.data.status === "cancelled") { 4089 // //payment cancelled 4090 // clearInterval(Int); 4091 // windoeRef.close(); 4092 // windoeRef = null; 4093 // //err 4094 // this.translate.get('key.payment_faild_msg').toPromise().then((response) => { 4095 // this.showAlert('error', '', response); 4096 // }); 4097 // return reject(data); 4098 // } else { 4099 // //err 4100 // this.translate.get('key.payment_faild_msg').toPromise().then((response) => { 4101 // this.showAlert('error', '', response); 4102 // }); 4103 // } 4104 // }); 4105 // } 4106 // }, 2000); 4107 // this.appObject.isLoading = false;
4108 // return resolve(data); 4109 } 4110 else { 4111 //app start 4112 const options = { 4113 location: 'no', 4114 clearcache: 'yes', 4115 zoom: 'yes', 4116 toolbar: 'yes', 4117 closebuttoncaption: 'close' 4118 }; 4119 //open in app 4120 const browser = this.iab.create(url, '_blank', options); 4121 //event subscribe 4122 browser.on('loadstop').subscribe(event => { 4123 //order status check 4124 this.requestService.post('order/payment/status', { payment_id: data.payment_id, device_id: this.appObject.deviceUUID, lang: this.appObject.currentLang }).then(paymentStatus => { 4125 if (paymentStatus.status && paymentStatus.data.status === "paid") { 4126 setTimeout(() => { 4127 //payment done 4128 browser.close(); 4129 this.clearCart(); 4130 this.router.navigate(['/order-summery/' + data.payment_id]); 4131 }, 3000); 4132 } 4133 else if (paymentStatus.status && paymentStatus.data.status === "cancelled") { 4134 setTimeout(() => { 4135 //payment cancelled 4136 browser.close(); 4137 //err 4138 this.translate.get('key.payment_faild_msg').toPromise().then((response) => { 4139 this.showAlert('error', '', response); 4140 }); 4141 }, 3000); 4142 } 4143 else { 4144 //payment cancelled 4145 const navUrl = event.url; 4146 if (navUrl.includes('return')) { 4147 setTimeout(() => { 4148 // browser.close(); 4149 this.showAlert('error', 'status missing', paymentStatus.data.status); 4150 //err 4151 this.translate.get('key.payment_faild_msg').toPromise().then((response) => { 4152 // this.showAlert('error', '', response); 4153 }); 4154 }, 3000); 4155 } 4156 } 4157 }); 4158 }); 4159 //end 4160 } 4161 } 4162 // remove coupons after placing the order 4163 // this.appObject.couponWeb = ''; 4164 // this.appObject.couponWebAdded = false; 4165 // this.appObject.selectedCoupon = []; 4166 // this.updateAppObject(); 4167 } 4168 else { 4169 if (data.msg) 4170 this.showToast(data.msg, 'danger', '', 5000); 4171 // new delivery range feature errors 4172 if (data.availability_error && data.availability_error.showError && data.availability_error.error) { 4173 this.showToast(data.availability_error.error, 'danger', '', 10000); 4174 } 4175 if (isWebVersion) { 4176 this.appObject.isLoading = false;
4177 return reject(data); 4178 } 4179 } 4180 this.appObject.isLoading = false; 4181 }, error => { 4182 this.appObject.isLoading = false; 4183 }); 4184 })); 4185 }); 4186 } 4187 /** 4188 * Show toast 4189 * @param msg string message to display 4190 * @param colorArg toast color ('primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'danger' | 'light' | 'medium' | 'dark') 4191 * @param positionArg toast appearing position ('top' | 'bottom' | 'middle') 4192 * @param duration duration in miliseconds 4193 */ 4194 showToast(msg, colorArg = 'dark', positionArg = 'bottom', duration = 3000, cssClass = '') { 4195 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4196 let options = { 4197 message: msg, 4198 duration: duration, 4199 position: positionArg, 4200 }; 4201 if (cssClass) { 4202 options.cssClass = cssClass; 4203 } 4204 else { 4205 options.color = colorArg; 4206 } 4207 const toast = yield this.toastController.create(options); 4208 toast.present(); 4209 }); 4210 } 4211 checkout() { 4212 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4213 // Check if there are not available dishes in the cart added previously 4214 let unavailableDishes = []; 4215 if (this.appObject.orderObject.cart && this.appObject.orderObject.cart.length) { 4216 unavailableDishes = this.appObject.orderObject.cart.filter((dish) => dish.not_available); 4217 if (unavailableDishes.length) { 4218 this.translate.get('key.one_or_more_dishes_not_available_for').toPromise().then((translation) => { 4219 this.showToast(translation + ' ' + this.appObject.selectedDeliveryMethod, 'danger', '', 5000); 4220 }); 4221 return; 4222 } 4223 } 4224 this.modalController.dismiss(); 4225 if (this.appObject.isAuthed) { 4226 // if (!this.isWebVersion && (this.appObject.selectedDeliveryMethod === 'delivery' && (!this.appObject.myAddress.name || this.appObject.myAddress.lat || this.appObject.myAddress.lng))) { 4227 // console.log('Address Invalid'); 4228 // } 4229 this.router.navigateByUrl('checkout'); 4230 } 4231 else { 4232 this.router.navigate(['login'], { 4233 queryParams: { 4234 isOrderProcess: true 4235 } 4236 }); 4237 } 4238 }); 4239 } 4240 checkoutAsGuest() { 4241 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4242 this.appObject.user.type = 'guest'; 4243 this.router.navigateByUrl('checkout'); 4244 }); 4245 } 4246 getOpenTimes() { 4247 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4248 let preOrderAvailability = this.findSelectedRestaurantOrderTypesV2(this.appObject.selectedRestaurantDetails, true).preorderOptions; 4249 let onlyAvailableForPreorder = preOrderAvailability && preOrderAvailability[this.appObject.selectedDeliveryMethod] ? true : false; 4250 return yield this.requestService.post('checkout/delivery-time/list', { 4251 'restaurant_id': this.appObject.selectedRestaurantId, 4252 'device_id': this.appObject.deviceUUID, 4253 'device_type': config.plf, 4254 'delivery_method': this.appObject.selectedDeliveryMethod, 4255 'lang': this.appObject.currentLang, 4256 'is_special_preorder': onlyAvailableForPreorder 4257 }); 4258 }); 4259 } 4260 forgotPasswordEmail(value) { 4261 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4262 this.appObject.errors = []; 4263 this.requestService.post('forgot/password', value).then(data => { 4264 if (data.status) { 4265 this.email_content = false;
4266 this.code_content = true; 4267 } 4268 else { 4269 this.appObject.errors = data.msg[0]; 4270 } 4271 }, error => { 4272 this.appObject.isLoading = false; 4273 }); 4274 }); 4275 } 4276 confirmVerifyCode(value) { 4277 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4278 this.appObject.errors = []; 4279 this.requestService.post('reset/password/verify', value).then(data => { 4280 if (data.status) { 4281 this.repeatpass_content = true; 4282 this.email_content = false; 4283 this.code_content = false; 4284 } 4285 else { 4286 this.appObject.errors = data.msg; 4287 } 4288 }, error => { 4289 this.appObject.isLoading = false; 4290 }); 4291 }); 4292 } 4293 resetOldPassword(value) { 4294 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4295 return new Promise((resolve, reject) => { 4296 this.appObject.errors = []; 4297 this.requestService.post('reset/password', value).then(data => { 4298 if (data.status) { 4299 this.repeatpass_content = false; 4300 this.email_content = true; 4301 this.code_content = false; 4302 return resolve('true'); 4303 } 4304 else { 4305 this.appObject.errors = data.msg.password[0]; 4306 return resolve('false'); 4307 } 4308 }, error => { 4309 this.appObject.isLoading = false; 4310 }); 4311 }); 4312 }); 4313 } 4314 /** 4315 * update Profile 4316 */ 4317 updateProfile(profile_details) { 4318 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4319 this.appObject.errors = []; 4320 profile_details['lang'] = this.appObject.currentLang; 4321 profile_details['device_id'] = this.appObject.deviceUUID; 4322 profile_details['device_type'] = config.plf; 4323 return yield this.requestService.post('customer/edit', profile_details); 4324 }); 4325 } 4326 /** 4327 * update Profile password 4328 */ 4329 updatePassword(passwordDetails) { 4330 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4331 this.appObject.errors = []; 4332 passwordDetails['lang'] = this.appObject.currentLang; 4333 passwordDetails['device_id'] = this.appObject.deviceUUID; 4334 passwordDetails['device_type'] = config.plf; 4335 return yield this.requestService.post('customer/password/edit', passwordDetails); 4336 }); 4337 } 4338 /** 4339 * get user Details 4340 */ 4341 getUserDetails(profile_details) { 4342 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4343 this.appObject.errors = []; 4344 profile_details['lang'] = this.appObject.currentLang; 4345 profile_details['device_id'] = this.appObject.deviceUUID; 4346 profile_details['device_type'] = config.plf; 4347 return yield this.requestService.post('customer/details', profile_details); 4348 }); 4349 } 4350 getNumberValue(data) { 4351 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4352 return parseFloat(data); 4353 }); 4354 } 4355 /** 4356 * get user orders 4357 */ 4358 customerOrderList(customerDetails) { 4359 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4360 this.appObject.errors = []; 4361 customerDetails['lang'] = this.appObject.currentLang; 4362 customerDetails['device_id'] = this.appObject.deviceUUID; 4363 customerDetails['device_type'] = config.plf; 4364 return yield this.requestService.post('order/list', customerDetails); 4365 }); 4366 } 4367 getOrderInfo(orderUnique) { 4368 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () {
4369 return yield this.requestService.post('order/details', { 4370 lang: this.appObject.currentLang, 4371 device_id: this.appObject.deviceUUID, 4372 device_type: config.plf, 4373 payment_id: orderUnique 4374 }); 4375 }); 4376 } 4377 /** 4378 * Save user review from order summary 4379 * @param reviewData user review details 4380 * @returns promise 4381 */ 4382 insertUserReview(reviewData) { 4383 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4384 reviewData['lang'] = this.appObject.currentLang; 4385 reviewData['device_id'] = this.appObject.deviceUUID; 4386 reviewData['device_type'] = config.plf; 4387 return new Promise((resolve, reject) => { 4388 this.requestService.post('order/review', reviewData).then((response) => { 4389 return resolve(response); 4390 }).catch((error) => { 4391 return reject(error); 4392 }); 4393 }); 4394 }); 4395 } 4396 /** 4397 * Will return given date formatted as yyyy-mm-dd hh:mm am/pm 4398 * @param dateObject date object to format 4399 * @returns string formated date 4400 */ 4401 formatDateObject(dateObject, includeTime = true) { 4402 let month = dateObject.getMonth() + 1; 4403 month = month <= 9 ? '0' + month : month; 4404 let day = dateObject.getDate() <= 9 ? '0' + dateObject.getDate() : dateObject.getDate(); 4405 let year = dateObject.getFullYear(); 4406 let hour = dateObject.getHours() <= 9 ? '0' + dateObject.getHours() : dateObject.getHours(); 4407 let minute = dateObject.getMinutes() <= 9 ? '0' + dateObject.getMinutes() : dateObject.getMinutes(); 4408 return year + '-' + month + '-' + day + (includeTime ? (' ' + hour + ':' + minute) : ''); 4409 } 4410 /** 4411 * Fetch opening hours of give restaurant id 4412 * @param restaurantID restaurant id to fetch data 4413 * @returns promise 4414 */ 4415 getRestaurantOpeningHours(restaurantID) { 4416 return new Promise((resolve, reject) => { 4417 let data = { 4418 lang: this.appObject.currentLang, 4419 device_id: this.appObject.deviceUUID, 4420 device_type: config.plf 4421 }; 4422 this.requestService.post('open-hours/restaurant/' + restaurantID, data).then((response) => { 4423 return resolve(response); 4424 }).catch((error) => { 4425 return reject(error); 4426 }); 4427 }); 4428 } 4429 // ------------------------------------- WEB API CALLS ONLY ----------------------------------- 4430 /** 4431 * Get most popular dishes to display on home page 4432 * @returns promise 4433 */ 4434 web_getPopularDishesHome() { 4435 return new Promise((resolve, reject) => { 4436 let data = { 4437 lang: this.appObject.currentLang, 4438 device_id: this.appObject.deviceUUID, 4439 device_type: config.plf 4440 }; 4441 this.requestService.post('home/favourite-list', data).then((response) => { 4442 return resolve(response); 4443 }).catch((error) => { 4444 return reject(error); 4445 }); 4446 }); 4447 } 4448 clearSelectedRestaurant() { 4449 this.appObject.selectedRestaurant = null; 4450 this.appObject.selectedRestaurantDetails = []; 4451 this.appObject.selectedRestaurantId = null; 4452 } 4453 routeToOrder() { 4454 this.clearSelectedRestaurant(); 4455 this.router.navigate(['/delivery-method']); 4456 } 4457 getAdditivesAndSub() { 4458 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4459 this.appObject.isLoading = true; 4460 if (this.appObject.deviceUUID == "") { 4461 setTimeout(() => { 4462 this.getAdditivesAndSub(); 4463 }, 100); 4464 } 4465 else { 4466 // empty data before request 4467 this.alagic_list = []; 4468 yield this.requestService.post('home/additive-list', { 4469 'lang': this.appObject.currentLang, 4470 'device_id': this.appObject.deviceUUID, 4471 'device_type': config.plf 4472 }).then(data => { 4473 if (data.status) { 4474 this.AddNsUB = data.data; 4475 } 4476 }, error => { 4477 console.log(error); 4478 }); 4479 yield this.requestService.post('home/alagic-list', { 4480 'lang': this.appObject.currentLang, 4481 'device_id': this.appObject.deviceUUID, 4482 'device_type': config.plf 4483 }).then(data => { 4484 if (data.status) { 4485 this.alagic_list = data.data; 4486 } 4487 }, error => { 4488 console.log(error); 4489 }); 4490 this.appObject.isLoading = false;
4491 } 4492 }); 4493 } 4494 getHomePromo() { 4495 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4496 this.appObject.isLoading = true; 4497 if (this.appObject.deviceUUID == "") { 4498 setTimeout(() => { 4499 this.getHomePromo(); 4500 }, 100); 4501 } 4502 else { 4503 this.requestService.post('new-promotion/list', { 4504 'lang': this.appObject.currentLang, 4505 'device_id': this.appObject.deviceUUID, 4506 'device_type': config.plf, 4507 'restaurant_id': 'main' 4508 }).then(data => { 4509 if (data.status) { 4510 this.appObject.new_promotions = data.data; 4511 } 4512 this.appObject.isLoading = false; 4513 }, error => { 4514 this.appObject.isLoading = false; 4515 }); 4516 } 4517 }); 4518 } 4519 isMobileWeb() { 4520 return this.platform.is('mobileweb'); 4521 } 4522 /** 4523 * Fetch web app landing page meta details 4524 */ 4525 getWebAppLandingPageMetaData() { 4526 return new Promise((resolve, reject) => { 4527 this.requestService.post('web-meta/restaurant/main', { 4528 'lang': this.appObject.currentLang, 4529 'device_id': this.appObject.deviceUUID, 4530 'device_type': config.plf, 4531 'restaurant_id': 'main' 4532 }).then(data => { 4533 return resolve(data); 4534 }, error => { 4535 this.appObject.isLoading = false; 4536 return reject(error); 4537 }); 4538 }); 4539 } 4540 getDishesOfTheGivenCategory(cat_id) { 4541 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4542 return new Promise((resolve, reject) => { 4543 //this.appObject.isLoading = true; 4544 this.activeMenu = cat_id; 4545 this.requestService.post('dish/list', { 4546 'device_id': this.appObject.deviceUUID, 4547 'language': this.appObject.currentLang, 4548 'device_type': config.plf, 4549 'menu_categorie_id': cat_id, 4550 'restaurant_id': this.appObject.selectedRestaurantDetails.id 4551 }).then(data => { 4552 //this.appObject.isLoading = false; 4553 return resolve(data); 4554 }, error => { 4555 //this.appObject.isLoading = false; 4556 return reject(error); 4557 }); 4558 }); 4559 }); 4560 } 4561 /** 4562 * Watching add to cart from cross selling page when toppings available on selected dish 4563 * @param data 4564 */ 4565 watchAddToCartFromCrossSelling(data) { 4566 this.addToCartSuccessfulyCallBack.next(data); 4567 } 4568 triggerAddToCartSuccssfulyCallback() { 4569 return this.addToCartSuccessfulyCallBack; 4570 } 4571 /** 4572 * Display alergies and additives popup 4573 * @param dish dish object 4574 */ 4575 displayAlergies(dish) { 4576 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4577 let htmlContent = ''; 4578 let translatedContent = ''; 4579 // additives dataset 4580 if (dish && dish.additives && dish.additives.length) { 4581 yield this.translate.get('key.additives').toPromise().then((response) => { 4582 if (response) 4583 translatedContent = response; 4584 else 4585 translatedContent = 'key.additives'; 4586 }); 4587 htmlContent += '<strong><p>' + translatedContent + '</p></strong><ul>'; 4588 for (let i = 0; i < dish.additives.length; i++) { 4589 const additive = dish.additives[i]; 4590 htmlContent += '<li>' + additive.letter + '<br>' 4591 + additive.description + ' </li>'; 4592 } 4593 htmlContent += '</ul>'; 4594 } 4595 // alagics dataset 4596 if (dish && dish.alagics && dish.alagics.length) { 4597 yield this.translate.get('key.allergies').toProm
4597ise().then((response) => { 4598 if (response) 4599 translatedContent = response; 4600 else 4601 translatedContent = 'key.allergies'; 4602 }); 4603 htmlContent += '<strong><p>' + translatedContent + '</p></strong><ul>'; 4604 for (let i = 0; i < dish.alagics.length; i++) { 4605 const alagic = dish.alagics[i]; 4606 htmlContent += '<li>' + alagic.letter + '<br>' 4607 + alagic.description + ' </li>'; 4608 } 4609 htmlContent += '</ul>'; 4610 } 4611 // no data to display message 4612 // if (!htmlContent) { 4613 // await this.translate.get('key.no_allergies_and_additives_data_to_display').toPromise().then((response) => { 4614 // if (response) translatedContent = response; 4615 // else translatedContent = 'key.no_allergies_and_additives_data_to_display'; 4616 // }) 4617 // htmlContent += '<span><strong>' + translatedContent + '</strong></span>' 4618 // } 4619 if (this.isWebVersion && event) { 4620 const popover = yield this.modalController.create({ 4621 component: _views_web_views_shared_modal_popover_modal_popover_page__WEBPACK_IMPORTED_MODULE_12__.ModalPopoverPage, 4622 cssClass: 'my-custom-class', 4623 componentProps: { 4624 "htmlContent": htmlContent, 4625 'type': this.POPOVER_TYPES.ALLERGY.TYPE, 4626 'title': this.POPOVER_TYPES.ALLERGY.TITLE, 4627 } 4628 }); 4629 yield popover.present(); 4630 } 4631 else { 4632 this.showAlert('alergy-info', 'key.allergies_and_additives', htmlContent, false); 4633 } 4634 }); 4635 } 4636 /** 4637 * Submit table reservation data 4638 * @param dataSet table reservation details 4639 * @returns promise 4640 */ 4641 placeTableReservation(dataSet) { 4642 dataSet.device_id = this.appObject.deviceUUID; 4643 dataSet.language = this.appObject.currentLang; 4644 dataSet.device_type = config.plf; 4645 // this.appObject.isLoading = true; 4646 return new Promise((resolve, reject) => { 4647 this.requestService.post('table-reservation/add', dataSet).then(data => { 4648 // this.appObject.isLoading = false; 4649 return resolve(data); 4650 }, error => { 4651 // this.appObject.isLoading = false; 4652 return reject(error); 4653 }); 4654 }); 4655 } 4656 /** 4657 * Fetch restaurant list for table reservation form 4658 * @returns a promise 4659 */ 4660 fetchRestaurantListForTableReservation() { 4661 return new Promise((resolve, reject) => { 4662 this.requestService.post('table-reservation/restaurant/list', { 4663 'device_id': this.appObject.deviceUUID, 4664 'language': this.appObject.currentLang, 4665 'device_type': config.plf, 4666 }).then(data => { 4667 return resolve(data); 4668 }, error => { 4669 return reject(error); 4670 }); 4671 }); 4672 } 4673 /** 4674 * Fetch restaurant list for table reservation form 4675 * @param restaurantId restaurant id to fetch action list 4676 * @returns a promise 4677 */ 4678 fetchHighlightProducts(restaurantId = null) { 4679 return new Promise((resolve, reject) => { 4680 this.requestService.post('restaurant/action-list/' + (restaurantId ? restaurantId : 'main'), { 4681 'device_id': this.appObject.deviceUUID, 4682 'language': this.appObject.currentLang, 4683 'device_type': config.plf, 4684 }).then(data => { 4685 return resolve(data); 4686 }, error => { 4687 return reject(error); 4688 }); 4689 }); 4690 } 4691 /** 4692 * Fetch all restaurants 4693 */ 4694 fetchAllRestaurants(isInitCall = false) { 4695 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4696 return new Promise((resolve, reject) => { 4697 let sending = { 4698 'device_id': this.appObject.deviceUUID, 4699 'lang': this.appObject.currentLang, 4700 'delivery_method': this.appObject.selectedDeliveryMethod 4701 }; 4702 this.requestService.post('restaurant/list', sending).then(data => { 4703 if (data.status) { 4704 if (isInitCall) { 4705 this.appObject.ourBranches = data.data; 4706 for (let i = 0; i < this.appObject.ourBranches.length; i++) { 4707 const branch = this.appObject.ourBranches[i]; 4708 let splitedAddress = branch.address ? branch.address.split(',') : []; 4709 if (splitedAddress.length >= 2) { 4710 branch.address_1 = splitedAddress[0]; 4711 branch.address_2 = splitedAddress[1] + ', ' + splitedAddress[2]; 4712 } 4713 } 4714 } 4715 this.appObject.restaurants = data.data; 4716 } 4717 else { 4718 this.appObject.restaurants = []; 4719 } 4720 this.updateAppObject(); 4721 this.appObject.isLoading = false;
4722 return resolve('done'); 4723 }, error => { 4724 this.appObject.isLoading = false; 4725 return reject(error); 4726 }); 4727 }); 4728 }); 4729 } 4730 /** 4731 * Navigate user to ordering page from home page and footer btns 4732 */ 4733 navigateToOrderingPage() { 4734 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4735 if (this.appObject.settings && this.appObject.settings.app_configuration) { 4736 if (this.appObject.settings.app_configuration.has_multiple_restaurants) { 4737 if (!this.appObject.selectedDeliveryMethod) { 4738 yield this.openOrderTypeChooser(null); 4739 } 4740 if (this.appObject.selectedDeliveryMethod) 4741 this.router.navigate(['restaurant-list']); 4742 } 4743 else if (this.appObject.settings.main_restaurant && this.appObject.settings.main_restaurant.slug) { 4744 if (!this.appObject.selectedDeliveryMethod) { 4745 yield this.openOrderTypeChooser(this.appObject.settings.main_restaurant); 4746 } 4747 if (this.appObject.selectedDeliveryMethod) 4748 this.router.navigate(['restaurant', this.appObject.settings.main_restaurant.slug]); 4749 } 4750 } 4751 }); 4752 } 4753 openOrderTypeChooser(branch) { 4754 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4755 return new Promise((resolve, reject) => (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4756 let componentProps = { 4757 'currentUI': 'order-type', 4758 'selected_branch': branch 4759 }; 4760 const cartModal = yield this.modalController.create({ 4761 component: _views_modals_select_order_type_select_order_type_page__WEBPACK_IMPORTED_MODULE_14__.SelectOrderTypePage, 4762 cssClass: 'custom-popup', 4763 componentProps: componentProps 4764 }); 4765 yield cartModal.present(); 4766 yield cartModal.onDidDismiss().then((response) => { 4767 return resolve('done'); 4768 }); 4769 })); 4770 }); 4771 } 4772 /** 4773 * Fetch all notifications of the logged in user 4774 */ 4775 fetchNotifications() { 4776 this.appObject.isLoading = true; 4777 this.requestService.post('notification/list', { 4778 'device_id': this.appObject.deviceUUID, 4779 'device_type': config.plf, 4780 'lang': this.appObject.currentLang, 4781 'customer_id': this.appObject.userId 4782 }).then((response) => { 4783 this.appObject.notifications = []; 4784 if (response && response.status) { 4785 for (let i = 0; i < response.data.length; i++) { 4786 const notification = response.data[i]; 4787 if (notification.created_at) { 4788 let createdAt = new Date(notification.created_at); 4789 notification.createdDate = createdAt.getFullYear() + '-' + ((createdAt.getMonth() + 1) <= 9 ? ('0' + (createdAt.getMonth() + 1)) : (createdAt.getMonth() + 1)) + '-' + +((createdAt.getDate() + 1) <= 9 ? ('0' + (createdAt.getDate() + 1)) : (createdAt.getDate() + 1)); 4790 notification.createdTime = this.formatAMPM(createdAt); // (createdAt.getHours() <= 9 ? ('0' + createdAt.getHours()) : createdAt.getHours()) + ':' + (createdAt.getMinutes() <= 9 ? ('0' + createdAt.getMinutes()) : createdAt.getMinutes()) + ':' + (createdAt.getSeconds() <= 9 ? ('0' + createdAt.getSeconds()) : createdAt.getSeconds()); 4791 } 4792 if (notification.data) 4793 notification.data = JSON.parse(notification.data); 4794 this.appObject.notifications.push(notification); 4795 } 4796 } 4797 console.log(this.appObject.notifications); 4798 this.appObject.isLoading = false;
4799 }).catch((error) => { 4800 console.log('fetching notification occoured an error ', error); 4801 this.appObject.isLoading = false; 4802 }); 4803 } 4804 formatAMPM(date) { 4805 var hours = date.getHours(); 4806 var minutes = date.getMinutes(); 4807 var seconds = date.getSeconds(); 4808 var ampm = hours >= 12 ? 'pm' : 'am'; 4809 hours = hours % 12; 4810 hours = hours ? hours : 12; // the hour '0' should be '12' 4811 minutes = minutes < 10 ? '0' + minutes : minutes; 4812 seconds = seconds < 10 ? '0' + seconds : seconds; 4813 var strTime = hours + ':' + minutes + ':' + seconds + ' ' + ampm; 4814 return strTime; 4815 } 4816 /** 4817 * Mark notification as read 4818 * @param notification notification object 4819 * @returns promise 4820 */ 4821 markNotificationAsRead(notification) { 4822 return new Promise((resolve, reject) => { 4823 this.appObject.isLoading = true; 4824 this.requestService.post('notification/mark-as-read', { 4825 'device_id': this.appObject.deviceUUID, 4826 'device_type': config.plf, 4827 'lang': this.appObject.currentLang, 4828 'customer_id': notification.customers_id, 4829 'notification_id': notification.id 4830 }).then((response) => { 4831 if (response && response.status) { 4832 } 4833 this.appObject.isLoading = false; 4834 return resolve('done'); 4835 }).catch((error) => { 4836 console.log('reading notification ', error); 4837 this.appObject.isLoading = false; 4838 return reject('error'); 4839 }); 4840 }); 4841 } 4842 /** 4843 * Get Dishes Of Given Category 4844 * @param index index of category 4845 * @returns promise 4846 */ 4847 get_dishes(index) { 4848 if (this.menuList[index]) 4849 this.menuList[index].isLoading = true; 4850 this.dishFetchTimeoutList.push(setTimeout(() => { 4851 if (typeof this.menuList[index] !== "undefined" && !this.menuList[index].dishes.length) { 4852 this.getDishesOfTheGivenCategory(this.menuList[index].id).then((data) => { 4853 if (this.menuList[index]) 4854 this.menuList[index].isLoading = false; 4855 if (data.status) { 4856 this.menuList[index].dishes = data.data; 4857 } 4858 }).catch(err => { 4859 console.log("err :", err); 4860 this.menuList[index].isLoading = false; 4861 }); 4862 } 4863 }, 500 * index)); 4864 } 4865 /** 4866 * Will retrive all the tables in selected restaurant 4867 * @param id restaurant id 4868 * @returns a promise 4869 */ 4870 fetchAllTablesOfRestaurant(id) { 4871 return new Promise((resolve, reject) => { 4872 this.requestService.post('table-number/list', { 4873 'device_id': this.appObject.deviceUUID, 4874 'device_type': config.plf, 4875 'lang': this.appObject.currentLang, 4876 'restaurant_id': id 4877 }).then((response) => { 4878 this.appObject.isLoading = false; 4879 return resolve(response); 4880 }).catch((error) => { 4881 this.appObject.isLoading = false; 4882 return reject(error); 4883 }); 4884 }); 4885 } 4886 /** 4887 * Open select table popup 4888 * @param restaurant selected restaurant object 4889 * @param isAlreadyInMenuPage a boolean to know if the user is already in menu page 4890 */ 4891 openTableSelect(restaurant, isAlreadyInMenuPage = false) { 4892 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 4893 this.appObject.isLoading = true; 4894 // get user unpaid orders if availabel to avoid placing orders on table else 4895 yield this.getUserUnpaidActiveOrders(isAlreadyInMenuPage); 4896 let componentProps = { 4897 'currentUI': 'select-table', 4898 'tableSelectRestaurant': restaurant 4899 }; 4900 if (isAlreadyInMenuPage) { 4901 componentProps['isFromMenuPage'] = true; 4902 } 4903 const model = yield this.modalController.create({ 4904 component: _views_modals_select_order_type_select_order_type_page__WEBPACK_IMPORTED_MODULE_14__.SelectOrderTypePage, 4905 cssClass: 'custom-popup', 4906 componentProps: componentProps 4907 }); 4908 yield model.present(); 4909 this.appObject.isLoading = false;
4910 model.onDidDismiss().then((data) => { 4911 // console.log('am Here : ', data) 4912 }); 4913 }); 4914 } 4915 /** 4916 * Send dishes to kitchen order 4917 * @param closeModal close modal after process (boolean) 4918 * @returns a promise 4919 */ 4920 sendToKitchen(closeModal = true) { 4921 if (this.appObject.orderObject.selectedTable) { 4922 // maintain a variable that the selected table has a pending payment order 4923 this.appObject.orderObject.selectedTable.saved = true; 4924 } 4925 if (!this.isWebVersion && this.appObject.orderObject && !this.appObject.orderObject.selectedTable) { 4926 this.modalController.dismiss(); 4927 this.openTableSelect(this.appObject.selectedRestaurantDetails, true); 4928 return; 4929 } 4930 this.appObject.orderObject['device_id'] = this.appObject.deviceUUID; 4931 this.appObject.orderObject['lang'] = this.appObject.currentLang; 4932 this.appObject.orderObject['resturent_id'] = this.appObject.selectedRestaurantId; 4933 this.appObject.orderObject['device_type'] = config.plf; 4934 this.appObject.orderObject['customer_id'] = this.appObject.userId; 4935 let parameters = { 4936 'device_id': this.appObject.deviceUUID, 4937 'device_type': config.plf, 4938 'lang': this.appObject.currentLang, 4939 resturent_id: this.appObject.selectedRestaurantId, 4940 customer_id: this.appObject.userId, 4941 cart: this.appObject.orderObject.cart, 4942 table_number_id: this.appObject.orderObject.selectedTable.id, 4943 cart_save: this.appObject.orderObject 4944 }; 4945 this.appObject.isLoading = true; 4946 return this.requestService.post('table-order/save', parameters).then(data => { 4947 if (data.status) { 4948 this.appObject.orderObject.table_order_id = data.table_order_id; 4949 this.appObject.orderObject.save_items = data.save_items; 4950 this.updateAppObject(); 4951 // show success message 4952 this.translate.get('key.your_order_has_been_sent_to_kitchen').toPromise().then((response) => { 4953 if (response) 4954 this.showToast(response, 'success'); 4955 }); 4956 } 4957 if (closeModal) 4958 this.modalController.dismiss(); 4959 this.appObject.isLoading = false; 4960 }).catch((error) => { 4961 console.log('error :', error); 4962 this.appObject.isLoading = false; 4963 }); 4964 } 4965 /** 4966 * Update existing kitchen order 4967 * @returns a promise 4968 */ 4969 updateKitchenOrder() { 4970 if (this.appObject.orderObject.save_items) { 4971 let newItems = this.appObject.orderObject.cart.slice(this.appObject.orderObject.save_items); 4972 if (!newItems.length) 4973 return; 4974 this.appObject.orderObject['device_id'] = this.appObject.deviceUUID; 4975 this.appObject.orderObject['lang'] = this.appObject.currentLang; 4976 this.appObject.orderObject['resturent_id'] = this.appObject.selectedRestaurantId; 4977 this.appObject.orderObject['device_type'] = config.plf; 4978 this.appObject.orderObject['customer_id'] = this.appObject.userId; 4979 let parameters = { 4980 'device_id': this.appObject.deviceUUID, 4981 'device_type': config.plf, 4982 'lang': this.appObject.currentLang, 4983 customer_id: this.appObject.userId, 4984 resturent_id: this.appObject.selectedRestaurantId, 4985 cart: newItems, 4986 table_order_id: this.appObject.orderObject.table_order_id, 4987 cart_save: this.appObject.orderObject 4988 }; 4989 return this.requestService.post('table-order/change', parameters).then(data => { 4990 if (data.status) { 4991 this.appObject.orderObject.save_items = data.save_items; 4992 // console.log('this.appObject.orderObject : ', this.appObject.orderObject); 4993 this.appObject.orderObjectDup = { 4994 cart: [...this.appObject.orderObject.cart] 4995 }; 4996 // console.log('this.appObject.orderObjectDup : ' , this.appObject.orderObjectDup); 4997 this.updateAppObject(); 4998 } 4999 }).catch((error) => { 5000 console.log('error :', error); 5001 }); 5002 } 5003 } 5004 /** 5005 * Check if new dishes been added to the cart 5006 * @returns boolean 5007 */ 5008 hasNewDishesInCart() { 5009 let newItems = this.appObject.orderObject.cart.slice(this.appObject.orderObject.save_items); 5010 return newItems.length ? true : false;
5011 } 5012 /** 5013 * Fetch if logged in user has any unpaid in kitchen orders 5014 * @param isAlreadyInMenuPage accept this parameter to check if the user already in menu page, then do not clear the cart 5015 * @returns a promise 5016 */ 5017 getUserUnpaidActiveOrders(isAlreadyInMenuPage = false) { 5018 let parameters = { 5019 'device_id': this.appObject.deviceUUID, 5020 'device_type': config.plf, 5021 'lang': this.appObject.currentLang, 5022 customer_id: this.appObject.userId, 5023 }; 5024 return this.requestService.post('table-order/status', parameters).then((data) => (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 5025 if (data.status) { 5026 this.appObject.orderObject = JSON.parse(data.data.cart); 5027 // console.log('this.appObject.orderObject : ', this.appObject.orderObject); 5028 this.appObject.orderObject.table_order_id = data.data.id; 5029 this.appObject.orderObject.save_items = data.data.save_items; 5030 this.appObject.orderObjectDup = { 5031 cart: [...this.appObject.orderObject.cart] 5032 }; 5033 yield this.calculateCartAmounts(); 5034 // console.log('this.appObject.orderObjectDup : ' , this.appObject.orderObjectDup); 5035 this.updateAppObject(); 5036 } 5037 else { 5038 this.appObject.orderObject.table_order_id = null; 5039 this.appObject.orderObject.selectedTable = null; 5040 this.appObject.orderObject.save_items = 0; 5041 if (!isAlreadyInMenuPage) 5042 this.clearCart(); 5043 } 5044 })).catch((error) => { 5045 console.log('error :', error); 5046 }); 5047 } 5048 /* This will find out what discounts should display in web landing page 5049 * @returns discount list 5050 */ 5051 getDiscounts() { 5052 let discountList = []; 5053 if (this.appObject && this.appObject.settings && this.appObject.settings.main_restaurant) { 5054 let restaurant = this.appObject.settings.main_restaurant; 5055 let options = []; 5056 if (restaurant.dinein_discount) { 5057 options.push({ value: restaurant.dinein_discount, label: 'key.discount_for_dinein' }); 5058 } 5059 if (restaurant.pickup_discount) { 5060 options.push({ value: restaurant.pickup_discount, label: 'key.discount_for_pickup' }); 5061 } 5062 if (restaurant.deliver_discount) { 5063 options.push({ value: restaurant.deliver_discount, label: 'key.discount_for_delivery' }); 5064 } 5065 if (options.length) { 5066 let largestDiscount = this.findLargestDiscount(options); 5067 if (largestDiscount.value === restaurant.deliver_discount) { 5068 discountList = [{ value: restaurant.deliver_discount, label: 'key.discount_for_delivery' }]; 5069 } 5070 else { 5071 // console.log('an empty array N : ', largestDiscount); 5072 if (largestDiscount.value === restaurant.pickup_discount) { 5073 discountList = [{ value: restaurant.pickup_discount, label: 'key.discount_for_pickup' }]; 5074 } 5075 discountList = [largestDiscount]; 5076 } 5077 } 5078 else { 5079 // console.log('an empty array 1'); 5080 discountList = []; 5081 } 5082 } 5083 // console.log('an empty array'); 5084 this.discountListWeb = discountList; 5085 // console.log('this.discountList : ' , this.discountListWeb); 5086 return discountList; 5087 } 5088 /** 5089 * Find out the most valuable discount from all the available discounts 5090 * @param arr discount array 5091 * @returns the largest discount object 5092 */ 5093 findLargestDiscount(arr) { 5094 let i; 5095 // Initialize maximum element 5096 let max = arr[0].value; 5097 let ob = arr[0]; 5098 // Traverse array elements 5099 // from second and compare 5100 // every element with current max 5101 for (i = 1; i < arr.length; i++) { 5102 if (arr[i].value > max) { 5103 max = arr[i].value; 5104 ob = arr[i]; 5105 } 5106 } 5107 return ob; 5108 } 5109 /** 5110 * Will rerurn default theme color object, these colors settings are predefined 5111 * @returns default theme color configurations 5112 */ 5113 getDefaultThemeColors() { 5114 let primaryColor = src_environments_environment__WEBPACK_IMPORTED_MODULE_6__.environment.DEFAULT_PRIMARY_COLOR || '#98cc1f'; //'#059aeb'; 5115 let primaryTextColor = src_environments_environment__WEBPACK_IMPORTED_MODULE_6__.environment.DEFAULT_PRIMARY_COLOR || '#ffffff'; 5116 // this.storage.get('appObject').then(((appObject) =>{
5117 // if (appObject && appObject.theme) { 5118 // this.appObject.theme = appObject.theme; 5119 // } 5120 // })); 5121 return { 5122 app: { 5123 advance: false, 5124 primaryColor: primaryColor, 5125 primaryTextColor: 'white', 5126 headerBackground: 'black', 5127 headerText: 'white', 5128 footerMenuBackground: 'black', 5129 footerMenuText: 'white', 5130 orderNowButtonArrowActiveColor: primaryTextColor, 5131 orderNowButtonArrowInactiveColor: primaryColor, 5132 spinnerColor: primaryColor, 5133 favouriteRestaurantButtonBackground: primaryColor, 5134 favouriteRestaurantButtonIcon: primaryTextColor, 5135 downloadAppBannerBackgroundColor: primaryColor, 5136 downloadAppBannerTextColor: primaryTextColor, 5137 home: { 5138 secondaryButtons: 'white', 5139 secondaryButtonsText: 'black', 5140 backgroundType: 'gradiant', 5141 color: 'yellow', 5142 gradiant: 'linear-gradient(#5d5e5e,#363738)', 5143 imageURL: 'https://i.stack.imgur.com/uD9js.png', 5144 orderNowArrowActiveColor: primaryTextColor, 5145 orderNowArrowInactiveColor: primaryColor, 5146 }, 5147 sideMenu: { 5148 textColor: primaryTextColor, 5149 background: primaryColor 5150 }, 5151 advanced: { 5152 orderNowButton: primaryColor, 5153 orderNowButtonText: 'white', 5154 gotItButton: primaryColor, 5155 deliveryMethodTypeButton: primaryColor, 5156 deliveryMethodTypeButtonText: 'white', 5157 popupTitleIcon: primaryColor, 5158 // login page 5159 loginBtn: primaryColor, 5160 loginBtnText: 'white', 5161 createAccountButton: primaryColor, 5162 createAccountButtonText: 'white', 5163 orderAsGuestButton: primaryColor, 5164 orderAsGuestButtonText: 'white', 5165 // menu page 5166 menuTitle: primaryColor, 5167 cartIconColor: primaryColor, 5168 floatingCartButton: primaryColor, 5169 floatingCartButtonText: 'white', 5170 // cart 5171 checkoutButton: primaryColor, 5172 checkoutButtonText: 'white', 5173 proceedOrderButton: primaryColor, 5174 proceedOrderButtonText: 'white', 5175 orderAgainButton: primaryColor, 5176 orderAgainButtonText: 'white', 5177 registerButton: primaryColor, 5178 registerButtonText: 'white', 5179 addToCartButton: primaryColor, 5180 addToCartButtonText: 'white', 5181 openHourDayHeader: primaryColor, 5182 openHourDayHeaderText: 'white', 5183 addReviewButton: primaryColor, 5184 addReviewButtonText: primaryTextColor, 5185 reviewStarColor: primaryColor, 5186 } 5187 }, 5188 web: { 5189 advance: false, 5190 primaryColor: primaryColor, 5191 primaryTextColor: primaryTextColor, 5192 footerBackground: 'darkgray', 5193 footerText: primaryTextColor, 5194 navigationLinkText: primaryColor, 5195 navigationBackground: primaryTextColor, 5196 spinnerColor: primaryColor, 5197 home: { 5198 titleText: primaryColor, 5199 subTitleText: 'black', 5200 orderNowButton: primaryColor, 5201 orderNowButtonText: primaryTextColor, 5202 stepIconBackground: primaryColor, 5203 stepIconText: primaryTextColor, 5204 stepTitleColor: '#273c75', 5205 stepSubtitleColor: 'black',
5206 mobileAppAdBackground: primaryColor, 5207 mobileAppAdBackgroundText: primaryTextColor 5208 }, 5209 menu: { 5210 headerButtonBackground: primaryColor, 5211 headerButtonText: primaryTextColor, 5212 categoriesHeaderBackground: primaryColor, 5213 categoriesHeaderText: primaryTextColor, 5214 activeCategoryText: primaryColor, 5215 shoppingCartHeaderBackground: primaryColor, 5216 shoppingCartHeaderText: primaryTextColor, 5217 shoppingCartHeaderIcon: primaryColor, 5218 checkoutButtonBackground: primaryColor, 5219 checkoutButtonText: primaryTextColor, 5220 grandTotalText: primaryColor, 5221 dishQuntityChangeButton: primaryColor, 5222 dishQuntityChangeButtonText: primaryTextColor, 5223 addToCartButton: primaryColor, 5224 sendToKitchenButton: primaryColor, 5225 sendToKitchenButtonText: primaryTextColor, 5226 sendToKitchenButtonDisabled: 'lightgray', 5227 sendToKitchenButtonTextDisabled: 'black', 5228 restaurantTitleBrushColor: primaryColor, 5229 restaurantTitleText: primaryTextColor 5230 }, 5231 advanced: { 5232 gotItButton: primaryColor, 5233 deliveryMethodTypeButton: primaryColor, 5234 deliveryMethodTypeButtonText: primaryTextColor, 5235 restaurantListCardBackground: primaryColor, 5236 restaurantListCardText: primaryTextColor, 5237 popupTitleText: primaryColor, 5238 popupTitleBackground: 'white', 5239 // login page 5240 loginBtn: primaryColor, 5241 loginBtnText: 'white', 5242 createAccountButton: primaryColor, 5243 createAccountButtonText: 'white', 5244 orderAsGuestButton: primaryColor, 5245 orderAsGuestButtonText: 'white', 5246 // menu page 5247 menuTitle: primaryColor, 5248 // cart 5249 checkoutButton: primaryColor, 5250 checkoutButtonText: primaryTextColor, 5251 proceedOrderButton: primaryColor, 5252 proceedOrderButtonText: primaryTextColor, 5253 orderAgainButton: primaryColor, 5254 orderAgainButtonText: primaryTextColor, 5255 registerButton: primaryColor, 5256 registerButtonText: primaryTextColor, 5257 openHourDayHeader: primaryColor, 5258 openHourDayHeaderText: primaryTextColor, 5259 addToCartButton: primaryColor, 5260 addToCartButtonText: primaryTextColor, 5261 addReviewButton: primaryColor, 5262 addReviewButtonText: primaryTextColor, 5263 reviewStarColor: primaryColor, 5264 } 5265 } 5266 }; 5267 } 5268 /** 5269 * Refresh favourite restaurant data 5270 * @param slug restaurant slug to retrive data 5271 */ 5272 getFavouriteRestaurantData(slug) { 5273 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 5274 // console.log('called multiple times'); 5275 yield this.requestService.post('restaurant/' + slug, { 5276 'device_id': this.appObject.deviceUUID, 5277 'language': this.appObject.currentLang, 5278 'device_type': config.plf, 5279 'delivery_type': this.appObject.selectedDeliveryMethod, 5280 'lat': this.appObject.myAddress.lat, 5281 'lng': this.appObject.myAddress.lng 5282 }).then(data => { 5283 if (data.status) { 5284 this.appObject.favouriteRestaurant = data.data; 5285 } 5286 }, error => { 5287 this.appObject.isLoading = false; 5288 }); 5289 }); 5290 } 5291 /* 5292 * Send Account Delete Email 5293 */ 5294 sendAccountDeleteEmail(profile_details) { 5295 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 5296 profile_details['lang'] = this.appObject.currentLang; 5297 profile_details['device_id'] = this.appObject.deviceUUID; 5298 profile_details['device_type'] = config.plf; 5299 return yield this.requestService.post('customer/delete/send', profile_details); 5300 }); 5301 } 5302 /** 5303 * Account Delete Email 5304 */ 5305 sendAccountDelete(profile_details) { 5306 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 5307 profile_details['lang'] = this.appObject.currentLang; 5308 profile_details['device_id'] = this.appObject.deviceUUID; 5309 profile_details['device_type'] = config.plf; 5310 return yield this.requestService.post('customer/delete', profile_details); 5311 }); 5312 } 5313 /** 5314 * Modal Dismiss 5315 */ 5316 modalDismiss() { 5317 this.modalController.dismiss(); 5318 } 5319 /** 5320 * Return available delivery methods from all the branches in restaurant 5321 */ 5322 getAvailableOrderMethodsFromBranches() { 5323 let availableMethods = []; 5324 if (this.appObject.ourBranches && this.appObject.ourBranches.length) { 5325 for (let i = 0; i < this.appObject.ourBranches.length; i++) { 5326 const element = this.appObject.ourBranches[i]; 5327 let methods = this.findSelectedRestaurantOrderTypesV2(element, true).deliveryMethods; 5328 methods.forEach(method => { 5329 if (!availableMethods.find(methodEx => methodEx === method))
5330 availableMethods.push(method); 5331 }); 5332 } 5333 } 5334 return availableMethods; 5335 } 5336 checkSecialOpenCloseDay(details) { 5337 return new Promise((resolve, reject) => { 5338 details['lang'] = this.appObject.currentLang; 5339 details['device_id'] = this.appObject.deviceUUID; 5340 this.appObject.isLoading = true; 5341 this.requestService.post('special-open-close-days/check', details).then(data => { 5342 this.appObject.isLoading = false; 5343 return resolve(data); 5344 }, error => { 5345 this.appObject.isLoading = false; 5346 return reject(error); 5347 }); 5348 }); 5349 } 5350 checkHasSecialOpenCloseDayNear(details) { 5351 return new Promise((resolve, reject) => { 5352 details['lang'] = this.appObject.currentLang; 5353 details['device_id'] = this.appObject.deviceUUID; 5354 this.appObject.isLoading = true; 5355 this.requestService.post('special-open-close-days/check/near', details).then(data => { 5356 this.appObject.isLoading = false; 5357 return resolve(data); 5358 }, error => { 5359 this.appObject.isLoading = false; 5360 return reject(error); 5361 }); 5362 }); 5363 } 5364 /** 5365 * 5366 * @param dateToFormat date object or date string to format 5367 * @param includeTime boolean true/false to include time 5368 * @param includeSeconds boolean true/false to include seconds in time 5369 * @returns 5370 */ 5371 formatDateTime(dateToFormat = new Date(), includeTime = false, includeSeconds = false) { 5372 const date = typeof dateToFormat === 'string' ? new Date(dateToFormat) : dateToFormat; 5373 const year = date.getFullYear().toString();
5374 const month = (date.getMonth() + 1).toString().padStart(2, '0'); 5375 const day = date.getDate().toString().padStart(2, '0'); 5376 let settings = this.appObject.settings; 5377 let dateFormat = settings.date_format ? settings.date_format : 'DD-MM-YYYY'; 5378 let timeFormat = settings.time_format ? settings.time_format : '24_HOURS'; 5379 let monthName = ''; 5380 if (dateFormat.includes('mmmm')) { 5381 const monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; 5382 monthName = monthNames[date.getMonth()]; 5383 } 5384 if (dateFormat.includes('MON')) { 5385 const monthNames = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']; 5386 monthName = monthNames[date.getMonth()]; 5387 } 5388 let formattedDate = dateFormat 5389 .replace('YYYY', year) 5390 .replace('MM', month) 5391 .replace('DD', day) 5392 .replace('mmmm', monthName) 5393 .replace('MON', monthName); 5394 if (includeTime) { 5395 let hours = ''; 5396 let minutes = date.getMinutes().toString().padStart(2, '0'); 5397 let seconds = date.getSeconds().toString().padStart(2, '0'); 5398 let period = ''; 5399 if (timeFormat === '12_HOURS') { 5400 // Determine whether it's AM or PM 5401 period = date.getHours() >= 12 ? 'PM' : 'AM'; 5402 // Convert 24-hour format to 12-hour format 5403 let formattedHours = date.getHours() % 12; 5404 formattedHours = formattedHours ? formattedHours : 12; 5405 hours = formattedHours.toString().padStart(2, '0'); 5406 } 5407 else { 5408 hours = date.getHours().toString().padStart(2, '0'); 5409 } 5410 formattedDate += ` ${hours}:${minutes}`; 5411 if (includeSeconds) { 5412 formattedDate += `:${seconds}`; 5413 } 5414 formattedDate += ` ${period}`; 5415 } 5416 return formattedDate.trim(); 5417 } 5418 /** 5419 * Will return min order amount and delivery cost for the given time or current time 5420 * @param postalCodeData postal code details object 5421 */ 5422 getGivenPostalCodeCurrentPriceAndMinAmount(postalCodeData, time = '') { 5423 if (postalCodeData) { 5424 let currentTimeSlot = time; 5425 // if there is no any specified time, the get current HH:mm 5426 if (!currentTimeSlot) { 5427 let currentTime = new Date(); 5428 const hours = currentTime.getHours().toString().padStart(2, '0'); 5429 const minutes = currentTime.getMinutes().toString().padStart(2, '0'); 5430 currentTimeSlot = hours + ':' + minutes; 5431 } 5432 // get the pricing for the time slot 5433 let currentTimeSlotDetails = postalCodeData.time_slots.find((slot) => { 5434 if (slot.status === 'true') { 5435 if (slot.time_from !== 'All Day') { 5436 let slotStartTime = new Date('2024-01-01 ' + slot.time_from); 5437 let slotEndTime = new Date('2024-01-01 ' + slot.time_to); 5438 let currentTime = new Date('2024-01-01 ' + currentTimeSlot); 5439 // if the end time is set to 00:00 means tomorrow early morning 5440 // so increase the day by 1 5441 if (slot.time_to === '00:00') { 5442 slotEndTime.setDate(slotEndTime.getDate() + 1); 5443 } 5444 if (currentTime >= slotStartTime && currentTime <= slotEndTime) { 5445 return true; 5446 } 5447 else { 5448 return false; 5449 } 5450 } 5451 else { 5452 return true; 5453 } 5454 } 5455 return false; 5456 }); 5457 return currentTimeSlotDetails ? currentTimeSlotDetails : { min_order: 0, cost: 0 }; 5458 } 5459 return { min_order: 0, cost: 0 }; 5460 } 5461 /** 5462 * Will return when only require single topping option, there is enable disable option in backend to display dropdown or checkboxes to topping select 5463 * @returns boolean 5464 */ 5465 getSelectedRestaurantSingleOptionSelectCondition() { 5466 if (this.appObject.selectedRestaurantDetails && this.appObject.selectedRestaurantDetails.display_checkboxes_for_single_topping_select_option === 'true') { 5467 return true; 5468 } 5469 return false;
5470 } 5471 /** 5472 * Try again from maintenance mode 5473 */ 5474 tryAgainMaintenance() { 5475 return (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 5476 yield this.requestService.post('settings', { 5477 'device_id': this.appObject.deviceUUID, 5478 'language': this.appObject.currentLang, 5479 'device_type': config.plf, 5480 'app_version': src_environments_environment__WEBPACK_IMPORTED_MODULE_6__.environment.APP_VERSION 5481 }).then((data) => (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__awaiter)(this, void 0, void 0, function* () { 5482 // if maintain mode is on, then redirect into maintenance page 5483 if (data.data && data.data.maintenance_mode === 'false') { 5484 this.router.navigate(['/'], { replaceUrl: true }); 5485 // when go back to home page, refresh the settings for real 5486 this.getSettings(); 5487 } 5488 })); 5489 }); 5490 } 5491 /** 5492 * Will return min order amount and delivery cost for given distance + restaurant + timeslot 5493 * @param distance distance in km 5494 * @param restaurant selected restaurant / or if unavailable get the selectedRestaurantObject in appObject 5495 * @param time time slot in string as "HH:MM" / or if not available get current time 5496 */ 5497 getGivenTimeAndDistanceMinOrderAmountAndDeliveryCost(distance, restaurant = null, time = '') { 5498 let baseRestaurant = restaurant; 5499 if (!baseRestaurant) 5500 baseRestaurant = this.appObject.selectedRestaurantDetails; 5501 if (!time) { 5502 let currentTime = new Date(); 5503 const hours = currentTime.getHours().toString().padStart(2, '0'); 5504 const minutes = currentTime.getMinutes().toString().padStart(2, '0'); 5505 time = hours + ':' + minutes; 5506 } 5507 if (baseRestaurant.delivery_cost_details && baseRestaurant.delivery_cost_details.length) { 5508 let deliveryCostDetails = baseRestaurant.delivery_cost_details.find((costDetailObject) => costDetailObject.range_km === distance); 5509 // get the pricing for the time slot 5510 return deliveryCostDetails.time_slots.find((slot) => { 5511 if (slot.time_from !== 'All Day' && slot.status === 'true') { 5512 let slotStartTime = new Date('2024-01-01 ' + slot.time_from); 5513 let slotEndTime = new Date('2024-01-01 ' + slot.time_to); 5514 let currentTime = new Date('2024-01-01 ' + time); 5515 // if the end time is set to 00:00 means tomorrow early morning 5516 // so increase the day by 1 5517 if (slot.time_to === '00:00') { 5518 slotEndTime.setDate(slotEndTime.getDate() + 1); 5519 } 5520 if (currentTime >= slotStartTime && currentTime <= slotEndTime) { 5521 return true; 5522 } 5523 else { 5524 return false; 5525 } 5526 } 5527 else if (slot.time_from === 'All Day') { 5528 return true; 5529 } 5530 else { 5531 return false; 5532 } 5533 }); 5534 } 5535 else { 5536 console.log('There is no delivery configurations defined'); 5537 return null; 5538 } 5539 } 5540}; 5541AppServiceService.ctorParameters = () => [ 5542 { type: _core_storage_service__WEBPACK_IMPORTED_MODULE_0__.StorageService }, 5543 { type: _ngx_translate_core__WEBPACK_IMPORTED_MODULE_17__.TranslateService }, 5544 { type: _angular_router__WEBPACK_IMPORTED_MODULE_18__.Router }, 5545 { type: _ionic_native_geolocation_ngx__WEBPACK_IMPORTED_MODULE_1__.Geolocation }, 5546 { type: _core_request_service__WEBPACK_IMPORTED_MODULE_2__.RequestService }, 5547 { type: _ionic_native_onesignal_ngx__WEBPACK_IMPORTED_MODULE_3__.OneSignal }, 5548 { type: _ionic_angular__WEBPACK_IMPORTED_MODULE_19__.Platform }, 5549 { type: _ionic_native_globalization_ngx__WEBPACK_IMPORTED_MODULE_4__.Globalization }, 5550 { type: _ionic_angular__WEBPACK_IMPORTED_MODULE_19__.ModalController }, 5551 { type: _ionic_native_in_app_browser_ngx__WEBPACK_IMPORTED_MODULE_7__.InAppBrowser }, 5552 { type: _ionic_angular__WEBPACK_IMPORTED_MODULE_19__.MenuController },
5553 { type: _ionic_angular__WEBPACK_IMPORTED_MODULE_19__.NavController }, 5554 { type: _ionic_angular__WEBPACK_IMPORTED_MODULE_19__.ToastController }, 5555 { type: _angular_core__WEBPACK_IMPORTED_MODULE_20__.NgZone }, 5556 { type: _angular_platform_browser__WEBPACK_IMPORTED_MODULE_21__.Title }, 5557 { type: _angular_router__WEBPACK_IMPORTED_MODULE_18__.ActivatedRoute } 5558]; 5559AppServiceService = (0,tslib__WEBPACK_IMPORTED_MODULE_16__.__decorate)([ 5560 (0,_angular_core__WEBPACK_IMPORTED_MODULE_20__.Injectable)({ 5561 providedIn: 'root' 5562 }) 5563], AppServiceService); 5564 5565 5566 5567/***/ }), 5568 5569/***/ 90158: 5570/*!***************************************!*\ 5571 !*** ./src/app/app-routing.module.ts ***! 5572 \***************************************/ 5573/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 5574 5575"use strict"; 5576__webpack_require__.r(__webpack_exports__); 5577/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5578/* harmony export */ "AppRoutingModule": function() { return /* binding */ AppRoutingModule; } 5579/* harmony export */ }); 5580/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tslib */ 64762); 5581/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ 37716); 5582/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/router */ 39895); 5583/* harmony import */ var _core_auth_guard_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core/auth-guard.service */ 73048); 5584 5585 5586 5587 5588var routes = []; 5589if (config.viewpltf && config.viewpltf == 'mobile') { 5590 var routes = [ 5591 { 5592 path: '', 5593 redirectTo: 'home', 5594 pathMatch: 'full' 5595 }, 5596 { 5597 path: 'home', 5598 loadChildren: () => Promise.all(/*! import() */[__webpack_require__.e("default-src_app_views_modals_table-reservation_table-reservation_page_ts"), __webpack_require__.e("common"), __webpack_require__.e("src_app_views_home-single_home-single_module_ts")]).then(__webpack_require__.bind(__webpack_require__, /*! ./views/home-single/home-single.module */ 19143)).then(m => m.HomeSinglePageModule), 5599 canActivate: [_core_auth_guard_service__WEBPACK_IMPORTED_MODULE_0__.AuthGuardService], 5600 data: { 5601 needAuth: false, 5602 sideMenu: true, 5603 footerMenu: true 5604 } 5605 }, 5606 { 5607 path: 'login', 5608 loadChildren: () => __webpack_require__.e(/*! import() */ "default-src_app_views_login_login_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./views/login/login.module */ 50265)).then(m => m.LoginPageModule), 5609 canActivate: [_core_auth_guard_service__WEBPACK_IMPORTED_MODULE_0__.AuthGuardService], 5610 data: { 5611 needAuth: false, 5612 sideMenu: true, 5613 footerMenu: true 5614 } 5615 }, 5616 { 5617 path: 'register', 5618 loadChildren: () => __webpack_require__.e(/*! import() */ "default-src_app_views_register_register_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./views/register/register.module */ 73779)).then(m => m.RegisterPageModule), 5619 canActivate: [_core_auth_guard_service__WEBPACK_IMPORTED_MODULE_0__.AuthGuardService], 5620 data: { 5621 needAuth: false, 5622 sideMenu: false, 5623 footerMenu: true 5624 } 5625 }, 5626 { 5627 path: 'modals/popup', 5628 loadChildren: () => __webpack_require__.e(/*! import() */ "src_app_views_modals_popup_popup_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./views/modals/popup/popup.module */ 66693)).then(m => m.PopupPageModule) 5629 }, 5630 { 5631 path: 'modals/cart', 5632 loadChildren: () => __webpack_require__.e(/*! import() */ "src_app_views_modals_cart_cart_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./views/modals/cart/cart.module */ 76034)).then(m => m.CartPageModule) 5633 }, 5634 { 5635 path: 'modals/toppings', 5636 loadChildren: () => __webpack_require__.e(/*! import() */ "common").then(__webpack_require__.bind(__webpack_require__, /*! ./views/modals/toppings/toppings.module */ 86636)
5636).then(m => m.ToppingsPageModule) 5637 }, 5638 { 5639 path: 'modals/cross-selling', 5640 loadChildren: () => __webpack_require__.e(/*! import() */ "common").then(__webpack_require__.bind(__webpack_require__, /*! ./views/modals/cross-selling/cross-selling.module */ 15914)).then(m => m.CrossSellingPageModule) 5641 }, 5642 { 5643 path: 'modals/table-reservation', 5644 loadChildren: () => Promise.all(/*! import() */[__webpack_require__.e("default-src_app_views_modals_table-reservation_table-reservation_page_ts"), __webpack_require__.e("common")]).then(__webpack_require__.bind(__webpack_require__, /*! ./views/modals/table-reservation/table-reservation.module */ 90197)).then(m => m.TableReservationPageModule) 5645 }, 5646 { 5647 path: 'modals/select-order-type', 5648 loadChildren: () => __webpack_require__.e(/*! import() */ "src_app_views_modals_select-order-type_select-order-type_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./views/modals/select-order-type/select-order-type.module */ 81339)).then(m => m.SelectOrderTypePageModule) 5649 }, 5650 { 5651 path: 'restaurant/:slug', 5652 loadChildren: () => __webpack_require__.e(/*! import() */ "src_app_views_ordering-main2_ordering-main2_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./views/ordering-main2/ordering-main2.module */ 89197)).then(m => m.OrderingMain2PageModule), 5653 canActivate: [_core_auth_guard_service__WEBPACK_IMPORTED_MODULE_0__.AuthGuardService], 5654 data: { 5655 needAuth: false, 5656 sideMenu: true, 5657 footerMenu: true 5658 } 5659 }, 5660 { 5661 path: 'branches-map', 5662 loadChildren: () => __webpack_require__.e(/*! import() */ "src_app_views_branches-map_branches-map_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./views/branches-map/branches-map.module */ 46979)).then(m => m.BranchesMapPageModule), 5663 canActivate: [_core_auth_guard_service__WEBPACK_IMPORTED_MODULE_0__.AuthGuardService], 5664 data: { 5665 needAuth: false, 5666 sideMenu: true, 5667 footerMenu: true 5668 } 5669 }, 5670 { 5671 path: 'pages/:slug', 5672 loadChildren: () => __webpack_require__.e(/*! import() */ "common").then(__webpack_require__.bind(__webpack_require__, /*! ./views/pages/pages.module */ 21244)).then(m => m.PagesPageModule) 5673 }, 5674 { 5675 path: 'model/tour', 5676 loadChildren: () => Promise.all(/*! import() */[__webpack_require__.e("common"), __webpack_require__.e("src_app_views_modals_tour_tour_module_ts")]).then(__webpack_require__.bind(__webpack_require__, /*! ./views/modals/tour/tour.module */ 57833)).then(m => m.TourPageModule) 5677 }, 5678 { 5679 path: 'model/delivery-times', 5680 loadChildren: () => __webpack_require__.e(/*! import() */ "src_app_views_modals_delivery-times_delivery-times_module_ts-_92480").then(__webpack_require__.bind(__webpack_require__, /*! ./views/modals/delivery-times/delivery-times.module */ 59912)).then(m => m.DeliveryTimesPageModule) 5681 }, 5682 { 5683 path: 'restaurant-list', 5684 loadChildren: () => __webpack_require__.e(/*! import() */ "src_app_views_restaurant-list_restaurant-list_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./views/restaurant-list/restaurant-list.module */ 41178)).then(m => m.RestaurantListPageModule), 5685 canActivate: [_core_auth_guard_service__WEBPACK_IMPORTED_MODULE_0__.AuthGuardService], 5686 data: { 5687 needAuth: false, 5688 sideMenu: true, 5689 footerMenu: true 5690 } 5691 }, 5692 { 5693 path: 'checkout', 5694 loadChildren: () => Promise.all(/*! import() */[__webpack_require__.e("default-src_app_views_checkout_checkout_module_ts"), __webpack_require__.e("src_app_views_modals_delivery-times_delivery-times_module_ts-_92481")]).then(__webpack_require__.bind(__webpack_require__, /*! ./views/checkout/checkout.module */ 72478)).then(m => m.CheckoutPageModule), 5695 canActivate: [_core_auth_guard_service__WEBPACK_IMPORTED_MODULE_0__.AuthGuardService], 5696 data: { 5697 needAuth: false, 5698 sideMenu: true, 5699 footerMenu: true 5700 } 5701 }, 5702 { 5703 path: 'alert', 5704 loadChildren: () => __webpack_require__.e(/*! import() */ "src_app_views_modals_alert_alert_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./views/modals/alert/alert.module */ 90065)).then(m => m.AlertPageModule) 5705 }, 5706 { 5707 path: 'profile', 5708 loadChildren: () => __webpack_require__.e(/*! import() */ "default-src_app_views_profile-update_profile-update_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./views/profile-update/profile-update.module */ 3557)).then(m => m.ProfileUpdatePageModule), 5709 canActivate: [_core_auth_guard_service__WEBPACK_IMPORTED_MODULE_0__.AuthGuardService], 5710 data: { 5711 needAuth: false, 5712 sideMenu: true, 5713 footerMenu: true 5714 } 5715 }, { 5716 path: 'forgot-password', 5717 loadChildren: () => __webpack_require__.e(/*! import() */ "default-src_app_views_forgot-password_forgot-password_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./views/forgot-password/forgot-password.module */ 6465)).then(m => m.ForgotPasswordPageModule), 5718 canActivate: [_core_auth_guard_service__WEBPACK_IMPORTED_MODULE_0__.AuthGuardService], 5719 data: { 5720 needAuth: false, 5721 sideMenu: true, 5722 footerMenu: true 5723 } 5724 }, 5725 { 5726 path: 'my-orders', 5727 loadChildren: () => __webpack_require__.e(/*! import() */ "default-src_app_views_past-order_past-order_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./views/past-order/past-order.module */ 80363)).then(m => m.PastOrderPageModule), 5728 canActivate: [_core_auth_guard_service__WEBPACK_IMPORTED_MODULE_0__.AuthGuardService], 5729 data: { 5730 needAuth: false, 5731 sideMenu: true, 5732 footerMenu: true 5733 } 5734 }, { 5735 path: 'branches-map/:slug/review', 5736 loadChildren: () => __webpack_require__.e(/*! import() */ "src_app_views_restaurant-review_restaurant-review_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./views/restaurant-review/restaurant-review.module */ 46645)).then(m => m.RestaurantReviewPageModule), 5737 canActivate: [_core_auth_guard_service__WEBPACK_IMPORTED_MODULE_0__.AuthGuardService], 5738 data: { 5739 needAuth: false, 5740 sideMenu: true, 5741 footerMenu: true 5742 } 5743 }, 5744 { 5745 path: 'order-summery/:unique', 5746 loadChildren: () => __webpack_require__.e(/*! import() */ "default-src_app_views_order-summery_order-summery_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./views/order-summery/order-summery.module */ 75991)).then(m => m.OrderSummeryPageModule), 5747 canActivate: [_core_auth_guard_service__WEBPACK_IMPORTED_MODULE_0__.AuthGuardService], 5748 data: { 5749 needAuth: false, 5750 sideMenu: true, 5751 footerMenu: true 5752 } 5753 }, 5754 { 5755 path: 'imprint/:slug', 5756 loadChildren: () => __webpack_require__.e(/*! import() */ "src_app_views_imprint_imprint_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./views/imprint/imprint.module */ 49410)).then(m => m.ImprintPageModule), 5757 canActivate: [_core_auth_guard_service__WEBPACK_IMPORTED_MODULE_0__.AuthGuardService], 5758 data: { 5759 needAuth: false, 5760 sideMenu: true, 5761 footerMenu: true 5762 } 5763 }, 5764 { 5765 path: 'open-hours/:restaurant_id', 5766 loadChildren: () => __webpack_require__.e(/*! import() */ "default-src_app_views_open-hours_open-hours_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./views/open-hours/open-hours.module */ 30547)).then(m => m.OpenHoursPageModule), 5767 canActivate: [_core_auth_guard_service__WEBPACK_IMPORTED_MODULE_0__.AuthGuardService], 5768 data: { 5769 needAuth: false, 5770 sideMenu: true, 5771 footerMenu: true 5772 } 5773 }, 5774 { 5775 path: 'register-via', 5776 loadChildren: () => __webpack_require__.e(/*! import() */ "default-src_app_views_register-via_register-via_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./views/register-via/register-via.module */ 51564)).then(m => m.RegisterViaPageModule), 5777 canActivate: [_core_auth_guard_service__WEBPACK_IMPORTED_MODULE_0__.AuthGuardService], 5778 data: { 5779 needAuth: false, 5780 sideMenu: true, 5781 footerMenu: true 5782 } 5783 }, 5784 { 5785 path: 'additives-and-substances', 5786 loadChildren: () => __webpack_require__.e(/*! import() */ "common").then(__webpack_require__.bind(__webpack_require__, /*! ./views/additives-and-substances/additives-and-substances.module */ 44619)).then(m => m.AdditivesAndSubstancesPageModule), 5787 canActivate: [_core_auth_guard_service__WEBPACK_IMPORTED_MODULE_0__.AuthGuardService], 5788 data: { 5789 needAuth: false, 5790 sideMenu: true, 5791 footerMenu: true 5792 } 5793 }, 5794 { 5795 path: 'inbox', 5796 loadChildren: () => __webpack_require__.e(/*! import() */ "src_app_views_notifications_notifications_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./views/notifications/notifications.module */ 9181)).then(m => m.NotificationsPageModule), 5797 canActivate: [_core_auth_guard_service__WEBPACK_IMPORTED_MODULE_0__.AuthGuardService], 5798 data: { 5799 needAuth: true, 5800 sideMenu: true, 5801 footerMenu: true 5802 } 5803 }, 5804 { 5805 path: 'notification', 5806 loadChildren: () => __webpack_require__.e(/*! import() */ "src_app_views_notification-content_notification-content_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./views/notification-content/notification-content.module */ 52239)).then(m => m.NotificationContentPageModule), 5807 canActivate: [_core_auth_guard_service__WEBPACK_IMPORTED_MODULE_0__.AuthGuardService], 5808 data: { 5809 needAuth: true, 5810 sideMenu: true, 5811 footerMenu: true 5812 } 5813 }, 5814 { 5815 path: 'update-required', 5816 loadChildren: () => __webpack_require__.e(/*! import() */ "src_app_views_app-update_app-update_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./views/app-update/app-update.module */ 37594)).then(m => m.AppUpdatePageModule), 5817 canActivate: [_core_auth_guard_service__WEBPACK_IMPORTED_MODULE_0__.AuthGuardService], 5818 data: { 5819 needAuth: false, 5820 sideMenu: false, 5821 footerMenu: false 5822 } 5823 }, 5824 { 5825 path: 'maintenance', 5826 loadChildren: () => __webpack_require__.e(/*! import() */ "src_app_views_under-maintenance-mob_under-maintenance_module_ts").then(__webpack_require__.bind(__webpack_require__, /*! ./views/under-maintenance-mob/u
5826nder-maintenance.module */ 80770)).then(m => m.UnderMaintenanceMobPageModule), 5827 canActivate: [_core_auth_guard_service__WEBPACK_IMPORTED_MODULE_0__.AuthGuardService], 5828 data: { 5829 needAuth: false, 5830 sideMenu: false, 5831 footerMenu: false 5832 } 5833 } 5834 ]; 5835} 5836if (config.viewpltf && config.viewpltf == 'web') { 5837 var routes = [ 5838 { 5839 path: '', 5840 redirectTo: 'home', 5841 pathMatch: 'full' 5842 }, 5843 { 5844 path: 'home', 5845 loadChildren: () => Promise.all(/*! import() */[__webpack_require__.e("default-src_app_views_modals_table-reservation_table-reservation_page_ts"), __webpack_require__.e("default-src_app_views_modals_delivery-times_delivery-times_module_ts-src_app_views_web-views_-6cf62c"), __webpack_require__.e("default-src_app_views_checkout_checkout_module_ts"), __webpack_require__.e("default-src_app_views_order-summery_order-summery_module_ts"), __webpack_require__.e("default-src_app_views_login_login_module_ts"), __webpack_require__.e("default-src_app_views_profile-update_profile-update_module_ts"), __webpack_require__.e("default-src_app_views_register-via_register-via_module_ts"), __webpack_require__.e("default-src_app_views_register_register_module_ts"), __webpack_require__.e("default-src_app_views_open-hours_open-hours_module_ts"), __webpack_require__.e("default-src_app_views_forgot-password_forgot-password_module_ts"), __webpack_require__.e("default-src_app_views_past-order_past-order_module_ts"), __webpack_require__.e("common"), __webpack_require__.e("src_app_views_web-views_weblanding_weblanding_module_ts")]).then(__webpack_require__.bind(__webpack_require__, /*! ./views/web-views/weblanding/weblanding.module */ 36928)).then(m => m.WeblandingPageModule), 5846 canActivate: [_core_auth_guard_service__WEBPACK_IMPORTED_MODULE_0__.AuthGuardService], 5847 data: { 5848 needAuth: false, 5849 sideMenu: false, 5850 footerMenu: false 5851 } 5852 }, 5853 { 5854 path: 'menu/:slug', 5855 loadChildren: () => Promise.all(/*! import() */[__webpack_require__.e("default-src_app_views_modals_delivery-times_delivery-times_module_ts-src_app_views_web-views_-6cf62c"), __webpack_require__.e("src_app_views_web-views_web-menu_web-menu_module_ts")]).then(__webpack_require__.bind(__webpack_require__, /*! ./views/web-views/web-menu/web-menu.module */ 26164)).then(m => m.WebMenuPageModule), 5856 data: { 5857 needAuth: false, 5858 sideMenu: false, 5859 footerMenu: true 5860 } 5861 }, 5862 { 5863 path: 'maintenance', 5864 loadChildren: () => Promise.all(/*! import() */[__webpack_require__.e("default-src_app_views_modals_delivery-times_delivery-times_module_ts-src_app_views_web-views_-6cf62c"), __webpack_require__.e("src_app_views_web-views_under-maintenance_under-maintenance_module_ts")]).then(__webpack_require__.bind(__webpack_require__, /*! ./views/web-views/under-maintenance/under-maintenance.module */ 76023)).then(m => m.UnderMaintenancePageModule), 5865 data: { 5866 needAuth: false, 5867 sideMenu: false, 5868 footerMenu: false 5869 } 5870 } 5871 ]; 5872} 5873let AppRoutingModule = class AppRoutingModule { 5874}; 5875AppRoutingModule = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__decorate)([ 5876 (0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.NgModule)({ 5877 imports: [ 5878 _angular_router__WEBPACK_IMPORTED_MODULE_3__.RouterModule.forRoot(routes, { preloadingStrategy: _angular_router__WEBPACK_IMPORTED_MODULE_3__.PreloadAllModules }) 5879 ], 5880 exports: [_angular_router__WEBPACK_IMPORTED_MODULE_3__.RouterModule] 5881 }) 5882], AppRoutingModule); 5883 5884 5885 5886/***/ }), 5887 5888/***/ 55041: 5889/*!**********************************!*\ 5890 !*** ./src/app/app.component.ts ***! 5891 \**********************************/ 5892/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 5893 5894"use strict"; 5895__webpack_require__.r(__webpack_exports__); 5896/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5897/* harmony export */ "AppComponent": function() { return /* binding */ AppComponent; } 5898/* harmony export */ }); 5899/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! tslib */ 64762); 5900/* harmony import */ var _raw_loader_app_component_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !raw-loader!./app.component.html */ 91106); 5901/* harmony import */ var _app_component_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./app.component.scss */ 43069); 5902/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @angular/core */ 37716); 5903/* harmony import */ var _ionic_angular__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @ionic/angular */ 80476); 5904/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @angular/router */ 39895); 5905/* harmony import */ var _api_app_service_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./api/app-service.service */ 95670); 5906/* harmony import */ var _ionic_native_call_number_ngx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @ionic-native/call-number/ngx */ 64687); 5907/* harmony import */ var _ionic_native_onesignal_ngx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @ionic-native/onesignal/ngx */ 61779); 5908/* harmony import */ var _ionic_native_splash_screen_ngx__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @ionic-native/splash-screen/ngx */ 51524); 5909/* harmony import */ var _ionic_native_status_bar_ngx__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @ionic-native/status-bar/ngx */ 73494); 5910/* harmony import */ var src_app_core_request_service__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! src/app/core/request.service */ 25094); 5911/* harmony import */ var src_environments_environment__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! src/environments/environment */ 92340); 5912/* harmony import */ var _views_web_views_shared_modal_popover_modal_popover_page__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./views/web-views/shared/modal-popover/modal-popover.page */ 65524); 5913/* harmony import */ var _ionic_native_network_ngx__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @ionic-native/network/ngx */ 75592); 5914/* harmony import */ var _views_modals_popup_popup_page__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./views/modals/popup/popup.page */ 79979); 5915/* harmony import */ var _app_views_web_views_shared_constatnts_json__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../app/views/web-views/shared/constatnts.json */ 20991); 5916/* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @angular/platform-browser */ 39075); 5917 5918 5919 5920 5921 5922 5923 5924 5925 5926//For One Signal Fix 5927 5928 5929 5930 5931 5932 5933// Network 5934 5935 5936// import { StylishAlertPage } from './views/modals/stylish-alert/stylish-alert.page';
5937 5938 5939let AppComponent = class AppComponent { 5940 constructor(appService, platform, callNumber, splashScreen, statusBar, oneSignal, requestService, router, modalController, route, zone, network, alertController, metaService) { 5941 var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x; 5942 this.appService = appService; 5943 this.platform = platform; 5944 this.callNumber = callNumber; 5945 this.splashScreen = splashScreen; 5946 this.statusBar = statusBar; 5947 this.oneSignal = oneSignal; 5948 this.requestService = requestService; 5949 this.router = router; 5950 this.modalController = modalController; 5951 this.route = route; 5952 this.zone = zone; 5953 this.network = network; 5954 this.alertController = alertController; 5955 this.metaService = metaService; 5956 this.baseURL = src_environments_environment__WEBPACK_IMPORTED_MODULE_8__.environment.BASE_URL; 5957 this.appVersion = src_environments_environment__WEBPACK_IMPORTED_MODULE_8__.environment.APP_VERSION; 5958 this.pages = {}; 5959 this.PRIVACY_POLICY_SLUG = 'pnp'; 5960 this.TERMS_AND_CONDITIONS_SLUG = 'tnc'; 5961 this.targetPage = ''; 5962 this.internetConnection = true; 5963 this.POPOVER_TYPES = _app_views_web_views_shared_constatnts_json__WEBPACK_IMPORTED_MODULE_12__.POPOVER_TYPES; 5964 this.colorSpinner = ((_b = (_a = this.appService.appObject) === null || _a === void 0 ? void 0 : _a.theme[this.appService.themeConfigFor]) === null || _b === void 0 ? void 0 : _b.spinnerColor) ? (_d = (_c = this.appService.appObject) === null || _c === void 0 ? void 0 : _c.theme[this.appService.themeConfigFor]) === null || _d === void 0 ? void 0 : _d.spinnerColor : '255, 7, 28'; 5965 this.sideMenuBackground = ((_g = (_f = (_e = this.appService.appObject) === null || _e === void 0 ? void 0 : _e.theme[this.appService.themeConfigFor]) === null || _f === void 0 ? void 0 : _f.sideMenu) === null || _g === void 0 ? void 0 : _g.background) ? (_k = (_j = (_h = this.appService.appObject) === null || _h === void 0 ? void 0 : _h.theme[this.appService.themeConfigFor]) === null || _j === void 0 ? void 0 : _j.sideMenu) === null || _k === void 0 ? void 0 : _k.background : '#ff071c'; 5966 this.selectListColor = ((_m = (_l = this.appService.appObject) === null || _l === void 0 ? void 0 : _l.theme[this.appService.themeConfigFor]) === null || _m === void 0 ? void 0 : _m.primaryColor) ? (_p = (_o = this.appService.appObject) === null || _o === void 0 ? void 0 : _o.theme[this.appService.themeConfigFor]) === null || _p === void 0 ? void 0 : _p.primaryColor : ''; 5967 this.deliveryCostChangedToast = ((_r = (_q = this.appService.appObject) === null || _q === void 0 ? void 0 : _q.theme[this.appService.themeConfigFor]) === null || _r === void 0 ? void 0 : _r.primaryColor) ? (_t = (_s = this.appService.appObject) === null || _s === void 0 ? void 0 : _s.theme[this.appService.themeConfigFor]) === null || _t === void 0 ? void 0 : _t.primaryColor : ''; 5968 this.deliveryCostChangedToastText = ((_v = (_u = this.appService.appObject) === null || _u === void 0 ? void 0 : _u.theme[this.appService.themeConfigFor]) === null || _v === void 0 ? void 0 : _v.primaryTextColor) ? (_x = (_w = this.appService.appObject) === null || _w === void 0 ? void 0 : _w.theme[this.appService.themeConfigFor]) === null || _x === void 0 ? void 0 : _x.primaryTextColor : ''; 5969 this.isFavoriteRestaurantPopUpOpen = false; 5970 this.isCookieBannerClosed = true; 5971 // mobile app download banner popup links 5972 this.iOsLink = ''; 5973 this.androidLink = ''; 5974 this.appName = ''; 5975 this.appIcon = ''; 5976 this.network.onDisconnect().subscribe(() => { 5977 // this.appService.showToast('No internet connection', 'danger', 'top', 1000); 5978 this.zone.run(() => { 5979 this.getTranslateText(); 5980 this.internetConnection = false; 5981 }); 5982 }); 5983 // watch network for a connection 5984 this.network.onConnect().subscribe(() => { 5985 // this.appService.showToast('Internet connected', 'success', 'top', 500); 5986 this.zone.run(() => { 5987 this.internetConnection = true; 5988 }); 5989 }); 5990 route.queryParams.subscribe((parameters) => { 5991 // console.log('parameters : ' , parameters); 5992 if (parameters.target) { 5993 this.targetPage = parameters.target; 5994 } 5995 }); 5996 //For One Signal Fix 5997 this.initializeApp(); 5998 let watcher = setInterval(() => (0,tslib__WEBPACK_IMPORTED_MODULE_13__.__awaiter)(this, void 0, void 0, function* () { 5999 var _y; 6000 if (this.appService.isSettingsLoaded) { 6001 // open slug if request contain 6002 if (this.targetPage && this.appService.isWebVersion && this.appService.appObject.settings && this.appService.appObject.settings.pages) { 6003 let page = this.appService.appObject.settings.pages.find((page) => page.slug === this.targetPage); 6004 if (page) { 6005 this.openPage(page.slug, page.name); 6006 } 6007 } 6008 // get ios and android app store links 6009 if (this.appService.appObject.settings && this.appService.appObject.settings.ios_link) 6010 this.iOsLink = this.appService.appObject.settings.ios_link; 6011 if (this.appService.appObject.settings && this.appService.appObject.settings.android_link) 6012 this.androidLink = this.appService.appObject.settings.android_link; 6013 if (this.appService.appObject.settings.main_restaurant && this.appService.appObject.settings.main_restaurant.web_meta) { 6014 let webMeta = JSON.parse(this.appService.appObject.settings.main_restaurant.web_meta); 6015 this.appName = webMeta && webMeta.appName ? webMeta.appName : ''; 6016 this.appIcon = webMeta && webMeta.appIcon ? webMeta.appIcon : ''; 6017 } 6018 // Set meta tags from backend data 6019 if (this.appService.appObject.settings.main_restaurant) { 6020 if (this.appService.appObject.settings.main_restaurant.meta_description) 6021 this.metaService.addTag({ name: 'description', content: this.appService.appObject.settings.main_restaurant.meta_description }); 6022 if (this.appService.appObject.settings.main_restaurant.meta_keywords) 6023 this.metaService.addTag({ name: 'keywords', content: this.appService.appObject.settings.main_restaurant.meta_keywords }); 6024 } 6025 if (this.appService.appObject.settings.is_franchise === 'true' && ((_y = this.appService.appObject.settings.app_configuration) === null || _y === void 0 ? void 0 : _y.has_multiple_restaurants) && !this.appService.appObject.favouriteRestaurant) { 6026 // console.log('document.location.pathname : ', document.location.pathname); 6027 if (!this.appService.isWebVersion) { 6028 const modal = yield this.modalController.create({ 6029 component: _views_modals_popup_popup_page__WEBPACK_IMPORTED_MODULE_11__.PopupPage, 6030 cssClass: 'custom-popup', 6031 componentProps: { 6032 'currentUI': 'favourite-restaurant' 6033 } 6034 }); 6035 if (!this.isFavoriteRestaurantPopUpOpen) { 6036 yield modal.present(); 6037 this.isFavoriteRestaurantPopUpOpen = true; 6038 } 6039 else { 6040 // console.log('else called'); 6041 } 6042 } 6043 else { 6044 if (document.location.pathname === '/home') { 6045 const modal = yield this.modalController.create({ 6046 component: _views_web_views_shared_modal_popover_modal_popover_page__WEBPACK_IMPORTED_MODULE_9__.ModalPopoverPage, 6047 cssClass: 'custom-popup', 6048 componentProps: { 6049 'type': this.POPOVER_TYPES.FAVOURITE_RESTAURANT_SELECT.TYPE, 6050 'title': this.POPOVER_TYPES.FAVOURITE_RESTAURANT_SELECT.TIT
6050LE 6051 }, 6052 keyboardClose: false, 6053 }); 6054 if (!this.isFavoriteRestaurantPopUpOpen) { 6055 yield modal.present(); 6056 modal.onDidDismiss().then((response) => (0,tslib__WEBPACK_IMPORTED_MODULE_13__.__awaiter)(this, void 0, void 0, function* () { 6057 if (response.data && response.data.status) { 6058 const cmodal = yield this.modalController.create({ 6059 component: _views_web_views_shared_modal_popover_modal_popover_page__WEBPACK_IMPORTED_MODULE_9__.ModalPopoverPage, 6060 cssClass: 'my-custom-class', 6061 componentProps: { 6062 'title': this.POPOVER_TYPES.FAVOURITE_RESTAURANT_SEARCH.TITLE, 6063 'type': this.POPOVER_TYPES.FAVOURITE_RESTAURANT_SEARCH.TYPE, 6064 'selectfavouriteRestaurant': true 6065 } 6066 }); 6067 yield cmodal.present(); 6068 } 6069 })); 6070 this.isFavoriteRestaurantPopUpOpen = true; 6071 } 6072 else { 6073 // console.log('else called'); 6074 } 6075 } 6076 } 6077 } 6078 clearInterval(watcher); 6079 } 6080 }), 1000); 6081 // set spinner color from backend 6082 let spinnerColor = setInterval(() => { 6083 var _a, _b, _c, _d, _e, _f; 6084 if (this.appService.isSettingsLoaded) { 6085 if ((_a = this.appService.appObject.theme[this.appService.themeConfigFor]) === null || _a === void 0 ? void 0 : _a.spinnerColor) { 6086 // transform hexa value to RGB 6087 var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec((_b = this.appService.appObject.theme[this.appService.themeConfigFor]) === null || _b === void 0 ? void 0 : _b.spinnerColor); 6088 this.colorSpinner = (parseInt(result[1], 16) + ',' + parseInt(result[2], 16) + ',' + parseInt(result[3], 16)); 6089 } 6090 if ((_d = (_c = this.appService.appObject.theme[this.appService.themeConfigFor]) === null || _c === void 0 ? void 0 : _c.sideMenu) === null || _d === void 0 ? void 0 : _d.background) { 6091 this.sideMenuBackground = (_f = (_e = this.appService.appObject.theme[this.appService.themeConfigFor]) === null || _e === void 0 ? void 0 : _e.sideMenu) === null || _f === void 0 ? void 0 : _f.background; 6092 } 6093 clearInterval(spinnerColor); 6094 } 6095 }, 1000); 6096 } 6097 ngDoCheck() { 6098 var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p; 6099 if ((_a = this.appService.appObject.theme[this.appService.themeConfigFor]) === null || _a === void 0 ? void 0 : _a.spinnerColor) { 6100 // transform hexa value to RGB 6101 var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec((_b = this.appService.appObject.theme[this.appService.themeConfigFor]) === null || _b === void 0 ? void 0 : _b.spinnerColor); 6102 this.colorSpinner = (parseInt(result[1], 16) + ',' + parseInt(result[2], 16) + ',' + parseInt(result[3], 16)); 6103 } 6104 if ((_d = (_c = this.appService.appObject.theme[this.appService.themeConfigFor]) === null || _c === void 0 ? void 0 : _c.sideMenu) === null || _d === void 0 ? void 0 : _d.background) { 6105 this.sideMenuBackground = (_f = (_e = this.appService.appObject.theme[this.appService.themeConfigFor]) === null || _e === void 0 ? void 0 : _e.sideMenu) === null || _f === void 0 ? void 0 : _f.background; 6106 } 6107 this.deliveryCostChangedToast = ((_h = (_g = this.appService.appObject) === null || _g === void 0 ? void 0 : _g.theme[this.appService.themeConfigFor]) === null || _h === void 0 ? void 0 : _h.primaryColor) ? (_k = (_j = this.appService.appObject) === null || _j === void 0 ? void 0 : _j.theme[this.appService.themeConfigFor]) === null || _k === void 0 ? void 0 : _k.primaryColor : ''; 6108 this.deliveryCostChangedToastText = ((_m = (_l = this.appService.appObject) === null || _l === void 0 ? void 0 : _l.theme[this.appService.themeConfigFor]) === null || _m === void 0 ? void 0 : _m.primaryTextColor) ? (_p = (_o = this.appService.appObject) === null || _o === void 0 ? void 0 : _o.theme[this.appService.themeConfigFor]) === null || _p === void 0 ? void 0 : _p.primaryTextColor : ''; 6109 } 6110 initializeApp() { 6111 return (0,tslib__WEBPACK_IMPORTED_MODULE_13__.__awaiter)(this, void 0, void 0, function* () { 6112 this.platform.ready().then(() => (0,tslib__WEBPACK_IMPORTED_MODULE_13__.__awaiter)(this, void 0, void 0, function* () { 6113 this.splashScreen.show(); 6114 yield this.appService.appInit(); 6115 // open slug if request contain 6116 // if (this.targetPage && this.appService.isWebVersion && this.appService.appObject.settings && this.appService.appObject.settings.pages) { 6117 // let page = this.appService.appObject.settings.pages.find((page) => page.slug === this.targetPage); 6118 // if (page) { 6119 // this.openPage(page.slug, page.name); 6120 // } 6121 // } 6122 let favIcon = document.getElementById('appFavIcon'); 6123 if (favIcon && this.appService.appObject.favIcon) 6124 favIcon.href = this.appService.appObject.favIcon; 6125 this.splashScreen.hide(); 6126 // this.statusBar.overlaysWebView(true); 6127 // setTimeout(() => { 6128 // this.splashScreen.hide(); 6129 // }, 3000); 6130 this.requestService.post('onesignal/key?device_type=' + config.plf, []).then(data => { 6131 if (data.status) { 6132 //set one signal id for web to init 6133 config.osid = data.onesignal_key; 6134 this.appService.appObject.oneSignalConfig.key = data.onesignal_key; 6135 this.appService.appObject.oneSignalConfig.fireid = data.firebase_id; 6136 //For One Signal Fix 6137 if ((this.platform.is('android') || this.platform.is('ios')) && !this.appService.isMobileWeb()) { 6138 window.plugins.OneSignal.setAppId((this.appService.appObject.oneSignalConfig.key)); 6139 window.plugins.OneSignal.promptForPushNotificationsWithUserResponse(); 6140 window.plugins.OneSignal.getDeviceState((stateChanges) => { 6141 if (stateChanges.hasNotificationPermission && stateChanges.userId) { 6142 this.appService.appObject.deviceUUID = stateChanges.userId; 6143 this.doUpdate(); 6144 } 6145 }); 6146 // ............... OLD Method .............. 6147 // this.oneSignal.startInit(this.appService.appObject.oneSignalConfig.key, this.appService.appObject.oneSignalConfig.fireid); 6148 // this.oneSignal.inFocusDisplaying(this.oneSignal.OSInFocusDisplayOption.None); 6149 // this.oneSignal.handleNotificationReceived().subscribe(data => {
6150 // // do something when notification is received 6151 // }); 6152 // this.oneSignal.handleNotificationOpened().subscribe(data => { 6153 // // do something when a notification is opened 6154 // }); 6155 // this.oneSignal.endInit(); 6156 // this.oneSignal.getIds().then(identity => { 6157 // //this.appService.showAlert('success','success',JSON.stringify(identity)); 6158 // this.appService.appObject.deviceUUID = identity.userId; 6159 // this.doUpdate(); 6160 // }, err => { 6161 // //this.appService.showAlert('error','error',err); 6162 // }); 6163 } 6164 } 6165 }); 6166 })); 6167 }); 6168 } 6169 call() { 6170 // console.log('this.appService.appObject.selectedRestaurantDetails.order_mobile_number_1 : ', this.appService.appObject.selectedRestaurantDetails.order_mobile_number_1); 6171 // console.log('this.appService.appObject.selectedRestaurantDetails.order_mobile_number_1 : ', this.appService.appObject.settings.main_restaurant.order_mobile_number_1); 6172 let mobileNumber = ''; 6173 if (this.appService.appObject) { 6174 if (this.appService.appObject.selectedRestaurantDetails && this.appService.appObject.selectedRestaurantDetails.order_mobile_number_1) { 6175 mobileNumber = this.appService.appObject.selectedRestaurantDetails.order_mobile_number_1; 6176 } 6177 else if (this.appService.appObject.settings && this.appService.appObject.settings.main_restaurant && this.appService.appObject.settings.main_restaurant.order_mobile_number_1) { 6178 mobileNumber = this.appService.appObject.settings.main_restaurant.order_mobile_number_1; 6179 } 6180 } 6181 // removes all white spaces from mobile number string 6182 if (mobileNumber) { 6183 mobileNumber = mobileNumber.replace(/\s/g, ''); 6184 } 6185 if (mobileNumber) { 6186 this.callNumber.callNumber(mobileNumber, true) 6187 .then(res => console.log('Launched dialer!', res)) 6188 .catch(err => console.log('Error launching dialer', err)); 6189 } 6190 else { 6191 console.log('mobile number not found'); 6192 } 6193 } 6194 doUpdate() { 6195 return (0,tslib__WEBPACK_IMPORTED_MODULE_13__.__awaiter)(this, void 0, void 0, function* () { 6196 // console.log('DO_UPDATEEEEE'); 6197 yield this.appService.deviceRegister(true); 6198 yield this.appService.updateAppObject(); 6199 }); 6200 } 6201 cookiesAccepted() { 6202 this.appService.appObject.isCookiesAccepted = true; 6203 this.isCookieBannerClosed = true; 6204 this.appService.updateAppObject(); 6205 } 6206 cookiesBannerDismissed() { 6207 var _a, _b, _c; 6208 if ((_c = (_b = (_a = this.appService) === null || _a === void 0 ? void 0 : _a.appObject) === null || _b === void 0 ? void 0 : _b.settings) === null || _c === void 0 ? void 0 : _c.pages) { 6209 var page = this.appService.appObject.settings.pages.filter(function (el) { 6210 return el.slug == "pnp"; 6211 }); 6212 if (typeof page[0] !== "undefined") { 6213 page = page[0]; 6214 this.openPage(page.slug, page.name || 'Privacy Policy'); 6215 } 6216 else {
6217 this.cookiesBannerDismissedNotPage(); 6218 } 6219 } 6220 else { 6221 this.cookiesBannerDismissedNotPage(); 6222 } 6223 } 6224 cookiesBannerDismissedNotPage() { 6225 let cookiesBanner = document.getElementById('cookies-banner'); 6226 if (cookiesBanner) { 6227 cookiesBanner.remove(); 6228 this.isCookieBannerClosed = true; 6229 } 6230 } 6231 displayCookieBanner() { 6232 if ((this.appService.isWebVersion || ((this.platform.is('android') || this.platform.is('ios')) && this.appService.isMobileWeb())) && (this.appService.appObject && !this.appService.appObject.isCookiesAccepted)) { 6233 this.isCookieBannerClosed = false; 6234 return true; 6235 } 6236 this.isCookieBannerClosed = true; 6237 return false; 6238 } 6239 displayAppDownloadBanner() { 6240 if (!this.appService.isWebVersion && ((this.platform.is('android') || this.platform.is('ios')) && this.appService.isMobileWeb() && (this.appService.appObject && !this.appService.appObject.isAppDownloadBannerDismissed))) { 6241 if (this.platform.is('android') && this.androidLink) 6242 return true; 6243 else if (this.platform.is('ios') && this.iOsLink) 6244 return true; 6245 } 6246 return false; 6247 } 6248 getAppBannerDismissed() { 6249 this.appService.appObject.isAppDownloadBannerDismissed = true; 6250 this.appService.updateAppObject(); 6251 } 6252 getAppInstalled() { 6253 if (this.platform.is('android')) { 6254 window.open(this.androidLink); 6255 } 6256 else if (this.platform.is('ios')) { 6257 window.open(this.iOsLink); 6258 } 6259 } 6260 displayLinks(slug) { 6261 if (this.appService.appObject && this.appService.appObject.settings && this.appService.appObject.settings.pages) { 6262 if (this.appService.appObject.settings.pages.length) { 6263 // console.log('this.appService.appObject.currentLang : ', slug + '-' + this.appService.appObject.currentLang); 6264 let page = this.appService.appObject.settings.pages.find((page) => page.slug === (slug + '-' + this.appService.appObject.currentLang) && page.status === 'true'); 6265 if (page) { 6266 this.pages[slug] = page; 6267 return true; 6268 } 6269 else 6270 return false; 6271 } 6272 } 6273 } 6274 openSlug(slug, title) { 6275 return (0,tslib__WEBPACK_IMPORTED_MODULE_13__.__awaiter)(this, void 0, void 0, function* () { 6276 if (this.appService.isWebVersion) { 6277 const modal = yield this.modalController.create({ 6278 component: _views_web_views_shared_modal_popover_modal_popover_page__WEBPACK_IMPORTED_MODULE_9__.ModalPopoverPage, 6279 cssClass: 'order-popup', 6280 componentProps: { 6281 'type': 'pages', 6282 'title': title, 6283 'slug': (slug + '-' + this.appService.appObject.currentLang) 6284 } 6285 }); 6286 yield modal.present(); 6287 } 6288 else { 6289 this.router.navigate(['pages/' + (slug + '-' + this.appService.appObject.currentLang)]); 6290 } 6291 }); 6292 } 6293 openPage(slug, title) { 6294 return (0,tslib__WEBPACK_IMPORTED_MODULE_13__.__awaiter)(this, void 0, void 0, function* () { 6295 // if app or mobile web, then navigate into page 6296 if (!this.appService.isWebVersion) { 6297 if (slug) 6298 this.router.navigate(['pages', slug]);
6299 this.cookiesBannerDismissedNotPage(); 6300 return; 6301 } 6302 const modal = yield this.modalController.create({ 6303 component: _views_web_views_shared_modal_popover_modal_popover_page__WEBPACK_IMPORTED_MODULE_9__.ModalPopoverPage, 6304 cssClass: 'order-popup', 6305 componentProps: { 6306 'type': 'pages', 6307 'title': title, 6308 'slug': slug 6309 } 6310 }); 6311 yield modal.present(); 6312 }); 6313 } 6314 triggerHomeRefresh() { 6315 this.appService.getSettings(); 6316 } 6317 getTranslateText() { 6318 let lang = { 6319 en: { 6320 woops: "Oops!", 6321 msg: "Please check your connection and try again" 6322 }, 6323 de: { 6324 woops: "Hoppla!", 6325 msg: "Bitte überprüfen Sie Ihre Verbindung und versuchen Sie es erneut" 6326 } 6327 }; 6328 if (this.appService.appObject.currentLang == 'en') 6329 this.noInternet = lang.en; 6330 if (this.appService.appObject.currentLang == 'de') 6331 this.noInternet = lang.de; 6332 } 6333}; 6334AppComponent.ctorParameters = () => [ 6335 { type: _api_app_service_service__WEBPACK_IMPORTED_MODULE_2__.AppServiceService }, 6336 { type: _ionic_angular__WEBPACK_IMPORTED_MODULE_14__.Platform }, 6337 { type: _ionic_native_call_number_ngx__WEBPACK_IMPORTED_MODULE_3__.CallNumber }, 6338 { type: _ionic_native_splash_screen_ngx__WEBPACK_IMPORTED_MODULE_5__.SplashScreen }, 6339 { type: _ionic_native_status_bar_ngx__WEBPACK_IMPORTED_MODULE_6__.StatusBar }, 6340 { type: _ionic_native_onesignal_ngx__WEBPACK_IMPORTED_MODULE_4__.OneSignal }, 6341 { type: src_app_core_request_service__WEBPACK_IMPORTED_MODULE_7__.RequestService }, 6342 { type: _angular_router__WEBPACK_IMPORTED_MODULE_15__.Router }, 6343 { type: _ionic_angular__WEBPACK_IMPORTED_MODULE_14__.ModalController }, 6344 { type: _angular_router__WEBPACK_IMPORTED_MODULE_15__.ActivatedRoute }, 6345 { type: _angular_core__WEBPACK_IMPORTED_MODULE_16__.NgZone }, 6346 { type: _ionic_native_network_ngx__WEBPACK_IMPORTED_MODULE_10__.Network }, 6347 { type: _ionic_angular__WEBPACK_IMPORTED_MODULE_14__.AlertController }, 6348 { type: _angular_platform_browser__WEBPACK_IMPORTED_MODULE_17__.Meta } 6349]; 6350AppComponent.propDecorators = { 6351 colorSpinner: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_16__.HostBinding, args: ['style.--loading-spinner-rgb',] }], 6352 sideMenuBackground: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_16__.HostBinding, args: ['style.--side-menu-bakcground',] }], 6353 selectListColor: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_16__.HostBinding, args: ['style.--select-list-primary',] }], 6354 deliveryCostChangedToast: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_16__.HostBinding, args: ['style.--delivery-cost-changed-toast-bg',] }], 6355 deliveryCostChangedToastText: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_16__.HostBinding, args: ['style.--delivery-cost-changed-toast-text',] }] 6356}; 6357AppComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_13__.__decorate)([ 6358 (0,_angular_core__WEBPACK_IMPORTED_MODULE_16__.Component)({ 6359 selector: 'app-root', 6360 template: _raw_loader_app_component_html__WEBPACK_IMPORTED_MODULE_0__.default, 6361 styles: [_app_component_scss__WEBPACK_IMPORTED_MODULE_1__.default] 6362 }) 6363], AppComponent); 6364 6365 6366 6367/***/ }), 6368 6369/***/ 36747: 6370/*!*******************************!*\ 6371 !*** ./src/app/app.module.ts ***! 6372 \*******************************/ 6373/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6374 6375"use strict"; 6376__webpack_require__.r(__webpack_exports__); 6377/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6378/* harmony export */ "createTranslateLoader": function() { return /* binding */ createTranslateLoader; }, 6379/* harmony export */ "AppModule": function() { return /* binding */ AppModule; } 6380/* harmony export */ }); 6381/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! tslib */ 64762); 6382/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @angular/core */ 37716); 6383/* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @angular/platform-browser */ 39075); 6384/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! @angular/router */ 39895); 6385/* harmony import */ var _ionic_angular__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @ionic/angular */ 80476); 6386/* harmony import */ var _app_routing_module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./app-routing.module */ 90158); 6387/* harmony import */ var _app_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./app.component */ 55041); 6388/* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @angular/common/http */ 91841); 6389/* harmony import */ var _ngx_translate_http_loader__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @ngx-translate/http-loader */ 32472); 6390/* harmony import */ var _ngx_translate_core__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @ngx-translate/core */ 29790); 6391/* harmony import */ var src_environments_environment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! src/environments/environment */ 92340); 6392/* harmony import */ var _ionic_storage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @ionic/storage */ 61628); 6393/* harmony import */ var _ionic_native_http_ngx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @ionic-native/http/ngx */ 68589); 6394/* harmony import */ var _ionic_native_geolocation_ngx__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @ionic-native/geolocation/ngx */ 87152); 6395/* harmony import */ var _ionic_native_onesignal_ngx__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @ionic-native/onesignal/ngx */ 61779); 6396/* harmony import */ var _ionic_native_globalization_ngx__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @ionic-native/globalization/ngx */ 25145); 6397/* harmony import */ var _ionic_native_in_app_browser_ngx__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @ionic-native/in-app-browser/ngx */ 53760); 6398/* harmony import */ var _ionic_native_google_plus_ngx__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @ionic-native/google-plus/ngx */ 19342); 6399/* harmony import */ var _ionic_native_facebook_ngx__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @ionic-native/facebook/ngx */ 30222); 6400/* harmony import */ var _ionic_native_sign_in_with_apple_ngx__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @ionic-native/sign-in-with-apple/ngx */ 9980); 6401/* harmony import */ var _component_animatedloading_animatedloading_component__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./component/animatedloading/animatedloading.component */ 7920); 6402/* harmony import */ var _angular_cdk_drag_drop__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @angular/cdk/drag-drop */ 77310); 6403/* harmony import */ var _ionic_native_call_number_ngx__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @ionic-native/call-number/ngx */ 64687); 6404/* harmony import */ var angularx_social_login__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! angularx-social-login */ 32707); 6405/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! @angular/common */ 38583); 6406/* harmony import */ var _ionic_native_splash_screen_ngx__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @ionic-native/splash-screen/ngx */ 51524); 6407/* harmony import */ var _ionic_native_status_bar_ngx__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @ionic-native/status-bar/ngx */ 73494); 6408/* harmony import */ var _core_pipe_module__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./core/pipe.module */ 82222); 6409/* harmony import */ var _ionic_native_network_ngx__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @ionic-native/network/ngx */ 75592); 6410 6411 6412 6413 6414 6415 6416 6417 6418 6419 6420 6421 6422 6423 6424 6425 6426 6427 6428 6429 6430 6431 6432 6433 6434 6435//For One Signal Fix 6436 6437 6438//Production Build Bug Fix 6439 6440// Network 6441 6442function createTranslateLoader(http) { 6443 return new _ngx_translate_http_loader__WEBPACK_IMPORTED_MODULE_18__.TranslateHttpLoader(http, src_environments_environment__WEBPACK_IMPORTED_MODULE_2__.environment.API_URL + 'language?lang=', ''); 6444} 6445//enableProdMode(); 6446let AppModule = class AppModule { 6447}; 6448AppModule = (0,tslib__WEBPACK_IMPORTED_MODULE_19__.__decorate)([ 6449 (0,_angular_core__WEBPACK_IMPORTED_MODULE_20__.NgModule)({ 6450 declarations: [_app_component__WEBPACK_IMPORTED_MODULE_1__.AppComponent, _component_animatedloading_animatedloading_component__WEBPACK_IMPORTED_MODULE_12__.AnimatedloadingComponent], 6451 entryComponents: [], 6452 imports: [ 6453 _angular_common_http__WEBPACK_IMPORTED_MODULE_21__.HttpClientModule, 6454 _angular_platform_browser__WEBPACK_IMPORTED_MODULE_22__.BrowserModule, 6455 _ngx_translate_core__WEBPACK_IMPORTED_MODULE_23__.TranslateModule.forRoot({ 6456 loader: { 6457 provide: _ngx_translate_core__WEBPACK_IMPORTED_MODULE_23__.TranslateLoader, 6458 useFactory: (createTranslateLoader), 6459 deps: [_angular_common_http__WEBPACK_IMPORTED_MODULE_21__.HttpClient] 6460 } 6461 }), 6462 _ionic_angular__WEBPACK_IMPORTED_MODULE_24__.IonicModule.forRoot({ 6463 rippleEffect: false, 6464 mode: 'md' 6465 }), 6466 _app_routing_module__WEBPACK_IMPORTED_MODULE_0__.AppRoutingModule, 6467 _angular_cdk_drag_drop__WEBPACK_IMPORTED_MODULE_25__.DragDropModule, 6468 angularx_social_login__WEBPACK_IMPORTED_MODULE_26__.SocialLoginModule, 6469 _core_pipe_module__WEBPACK_IMPORTED_MODULE_16__.PipeModule 6470 ], 6471 providers: [ 6472 { provide: _angular_router__WEBPACK_IMPORTED_MODULE_27__.RouteReuseStrategy, useClass: _ionic_angular__WEBPACK_IMPORTED_MODULE_24__.IonicRouteStrategy }, 6473 _ionic_storage__WEBPACK_IMPORTED_MODULE_3__.Storage, 6474 _ionic_native_http_ngx__WEBPACK_IMPORTED_MODULE_4__.HTTP, 6475 _ionic_native_geolocation_ngx__WEBPACK_IMPORTED_MODULE_5__.Geolocation, 6476 _ionic_native_onesignal_ngx__WEBPACK_IMPORTED_MODULE_6__.OneSignal, 6477 _ionic_native_globalization_ngx__WEBPACK_IMPORTED_MODULE_7__.Globalization, 6478 _ionic_native_in_app_browser_ngx__WEBPACK_IMPORTED_MODULE_8__.InAppBrowser, 6479 _ionic_native_google_plus_ngx__WEBPACK_IMPORTED_MODULE_9__.GooglePlus, 6480 _ionic_native_facebook_ngx__WEBPACK_IMPORTED_MODULE_10__.Facebook, 6481 _ionic_native_sign_in_with_apple_ngx__WEBPACK_IMPORTED_MODULE_11__.SignInWithApple, 6482 _ionic_native_call_number_ngx__WEBPACK_IMPORTED_MODULE_13__.CallNumber, 6483 _ionic_native_splash_screen_ngx__WEBPACK_IMPORTED_MODULE_14__.SplashScreen, 6484 _ionic_native_status_bar_ngx__WEBPACK_IMPORTED_MODULE_15__.StatusBar, 6485 { 6486 provide: 'SocialAuthServiceConfig', 6487 useValue: { 6488 autoLogin: false, 6489 providers: [ 6490 { 6491 id: angularx_social_login__WEBPACK_IMPORTED_MODULE_26__.GoogleLoginProvider.PROVIDER_ID, 6492 provider: new angularx_social_login__WEBPACK_IMPORTED_MODULE_26__.GoogleLoginProvider(src_environments_environment__WEBPACK_IMPORTED_MODULE_2__.environment.GOOGLE_LOGIN_WEB_CLIENT_ID) 6493 }, 6494 { 6495 id: angularx_social_login__WEBPACK_IMPORTED_MODULE_26__.FacebookLoginProvider.PROVIDER_ID, 6496 provider: new angularx_social_login__WEBPACK_IMPORTED_MODULE_26__.FacebookLoginProvider(src_environments_environment__WEBPACK_IMPORTED_MODULE_2__.environment.FACEBOOK_LOGIN_APP_ID) 6497 } 6498 ] 6499 }, 6500 }, 6501 _angular_common__WEBPACK_IMPORTED_MODULE_28__.DatePipe, 6502 _ionic_native_network_ngx__WEBPACK_IMPORTED_MODULE_17__.Network, 6503 _angular_platform_browser__WEBPACK_IMPORTED_MODULE_22__.Meta 6504 ], 6505 bootstrap: [_app_component__WEBPACK_IMPORTED_MODULE_1__.AppComponent] 6506 }) 6507], AppModule); 6508 6509 6510 6511/***/ }), 6512 6513/***/ 7920: 6514/*!************************************************************************!*\ 6515 !*** ./src/app/component/animatedloading/animatedloading.component.ts ***! 6516 \************************************************************************/ 6517/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6518 6519"use strict"; 6520__webpack_require__.r(__webpack_exports__); 6521/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6522/* harmony export */ "AnimatedloadingComponent": function() { return /* binding */ AnimatedloadingComponent; } 6523/* harmony export */ }); 6524/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ 64762); 6525/* harmony import */ var _raw_loader_animatedloading_component_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !raw-loader!./animatedloading.component.html */ 80628); 6526/* harmony import */ var _animatedloading_component_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./animatedloading.component.scss */ 33420); 6527/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/core */ 37716); 6528 6529 6530 6531 6532let AnimatedloadingComponent = class AnimatedloadingComponent { 6533 constructor() { } 6534 ngOnInit() { } 6535}; 6536AnimatedloadingComponent.ctorParameters = () => []; 6537AnimatedloadingComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__decorate)([ 6538 (0,_angular_core__WEBPACK_IMPORTED_MODULE_3__.Component)({ 6539 selector: 'app-animatedloading', 6540 template: _raw_loader_animatedloading_component_html__WEBPACK_IMPORTED_MODULE_0__.default, 6541 styles: [_animatedloading_component_scss__WEBPACK_IMPORTED_MODULE_1__.default] 6542 }) 6543], AnimatedloadingComponent); 6544 6545 6546 6547/***/ }), 6548 6549/***/ 73048: 6550/*!********************************************!*\ 6551 !*** ./src/app/core/auth-guard.service.ts ***! 6552 \********************************************/ 6553/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6554 6555"use strict"; 6556__webpack_require__.r(__webpack_exports__); 6557/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6558/* harmony export */ "AuthGuardService": function() { return /* binding */ AuthGuardService; }
6559/* harmony export */ }); 6560/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ 64762); 6561/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/core */ 37716); 6562/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ 39895); 6563/* harmony import */ var _api_app_service_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../api/app-service.service */ 95670); 6564/* harmony import */ var _core_storage_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/storage.service */ 66498); 6565 6566 6567 6568 6569 6570let AuthGuardService = class AuthGuardService { 6571 constructor(storage, router, appService) { 6572 this.storage = storage; 6573 this.router = router; 6574 this.appService = appService; 6575 } 6576 canActivate(route) { 6577 // console.log(route); 6578 //set side menu status 6579 this.appService.isSideMenu = route.data.sideMenu; 6580 this.appService.isFooterMenu = route.data.footerMenu; 6581 this.appService.appObject.errors = []; 6582 //no need to login can access 6583 return true; 6584 } 6585}; 6586AuthGuardService.ctorParameters = () => [ 6587 { type: _core_storage_service__WEBPACK_IMPORTED_MODULE_1__.StorageService }, 6588 { type: _angular_router__WEBPACK_IMPORTED_MODULE_2__.Router }, 6589 { type: _api_app_service_service__WEBPACK_IMPORTED_MODULE_0__.AppServiceService } 6590]; 6591AuthGuardService = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__decorate)([ 6592 (0,_angular_core__WEBPACK_IMPORTED_MODULE_4__.Injectable)({ 6593 providedIn: 'root' 6594 }) 6595], AuthGuardService); 6596 6597 6598 6599/***/ }), 6600 6601/***/ 82222: 6602/*!*************************************!*\ 6603 !*** ./src/app/core/pipe.module.ts ***! 6604 \*************************************/ 6605/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6606 6607"use strict"; 6608__webpack_require__.r(__webpack_exports__); 6609/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6610/* harmony export */ "PipeModule": function() { return /* binding */ PipeModule; } 6611/* harmony export */ }); 6612/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! tslib */ 64762); 6613/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/core */ 37716); 6614/* harmony import */ var _pipes_PastOrderPricePipe__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pipes/PastOrderPricePipe */ 99930); 6615/* harmony import */ var _pipes_PricePipe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pipes/PricePipe */ 62110); 6616/* harmony import */ var _pipes_TaxPipe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./pipes/TaxPipe */ 12042); 6617/* harmony import */ var _pipes_dishPricePipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pipes/dishPricePipe */ 69120); 6618/* harmony import */ var _pipes_sizePricePipe__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pipes/sizePricePipe */ 15934); 6619/* harmony import */ var _pipes_topingPricePipe__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./pipes/topingPricePipe */ 78342); 6620 6621 6622 6623 6624 6625 6626 6627 6628let PipeModule = class PipeModule { 6629}; 6630PipeModule = (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__decorate)([ 6631 (0,_angular_core__WEBPACK_IMPORTED_MODULE_7__.NgModule)({ 6632 declarations: [ 6633 _pipes_PastOrderPricePipe__WEBPACK_IMPORTED_MODULE_0__.PastOrderPricePipe, 6634 _pipes_PricePipe__WEBPACK_IMPORTED_MODULE_1__.PricePipe, 6635 _pipes_TaxPipe__WEBPACK_IMPORTED_MODULE_2__.TaxPipe, 6636 _pipes_dishPricePipe__WEBPACK_IMPORTED_MODULE_3__.dishPricePipe, 6637 _pipes_sizePricePipe__WEBPACK_IMPORTED_MODULE_4__.sizePricePipe, 6638 _pipes_topingPricePipe__WEBPACK_IMPORTED_MODULE_5__.topingPricePipe 6639 ], exports: [ 6640 _pipes_PastOrderPricePipe__WEBPACK_IMPORTED_MODULE_0__.PastOrderPricePipe, 6641 _pipes_PricePipe__WEBPACK_IMPORTED_MODULE_1__.PricePipe, 6642 _pipes_TaxPipe__WEBPACK_IMPORTED_MODULE_2__.TaxPipe, 6643 _pipes_dishPricePipe__WEBPACK_IMPORTED_MODULE_3__.dishPricePipe, 6644 _pipes_sizePricePipe__WEBPACK_IMPORTED_MODULE_4__.sizePricePipe, 6645 _pipes_topingPricePipe__WEBPACK_IMPORTED_MODULE_5__.topingPricePipe 6646 ], 6647 }) 6648], PipeModule); 6649 6650 6651 6652/***/ }), 6653 6654/***/ 99930: 6655/*!**************************************************!*\ 6656 !*** ./src/app/core/pipes/PastOrderPricePipe.ts ***! 6657 \**************************************************/ 6658/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6659 6660"use strict"; 6661__webpack_require__.r(__webpack_exports__); 6662/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6663/* harmony export */ "PastOrderPricePipe": function() { return /* binding */ PastOrderPricePipe; } 6664/* harmony export */ }); 6665/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ 64762); 6666/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ 37716); 6667 6668 6669let PastOrderPricePipe = class PastOrderPricePipe { 6670 transform(price, currency, showin, dtype) { 6671 let p = ''; 6672 price = (Math.round(price * 100) / 100).toFixed(2); 6673 if (showin == 'after') { 6674 p = price + ' ' + currency; 6675 } 6676 else { 6677 p = currency + ' ' + price; 6678 } 6679 return p; 6680 } 6681 formataNumero(e, separador = '.', decimais = 2) { 6682 let a = e.value.split(''); 6683 let ns = ''; 6684 a.forEach((c) => { if (!isNaN(c)) 6685 ns = ns + c; }); 6686 ns = parseInt(ns).toString(); 6687 if (ns.length < (decimais + 1)) { 6688 ns = ('0'.repeat(decimais + 1) + ns); 6689 ns = ns.slice((decimais + 1) * -1); 6690 } 6691 let ans = ns.split(''); 6692 let r = ''; 6693 for (let i = 0; i < ans.length; i++) 6694 if (i == ans.length - decimais) 6695 r = r + separador + ans[i]; 6696 else 6697 r = r + ans[i]; 6698 e.value = r; 6699 } 6700}; 6701PastOrderPricePipe = (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__decorate)([ 6702 (0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.Pipe)({ 6703 name: 'poprice' 6704 }) 6705], PastOrderPricePipe); 6706 6707 6708 6709/***/ }), 6710 6711/***/ 62110: 6712/*!*****************************************!*\ 6713 !*** ./src/app/core/pipes/PricePipe.ts ***! 6714 \*****************************************/ 6715/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6716 6717"use strict"; 6718__webpack_require__.r(__webpack_exports__); 6719/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6720/* harmony export */ "PricePipe": function() { return /* binding */ PricePipe; } 6721/* harmony export */ }); 6722/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ 64762); 6723/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ 37716); 6724 6725 6726let PricePipe = class PricePipe { 6727 transform(price, currency, showin, dtype) { 6728 let p = ''; 6729 price = (Math.round(price * 100) / 100).toFixed(2); 6730 if (showin == 'after') { 6731 p = price + ' ' + currency; 6732 } 6733 else { 6734 p = currency + ' ' + price; 6735 } 6736 return p; 6737 } 6738 formataNumero(e, separador = '.', decimais = 2) { 6739 let a = e.value.split(''); 6740 let ns = ''; 6741 a.forEach((c) => { if (!isNaN(c)) 6742 ns = ns + c; }); 6743 ns = parseInt(ns).toString(); 6744 if (ns.length < (decimais + 1)) { 6745 ns = ('0'.repeat(decimais + 1) + ns); 6746 ns = ns.slice((decimais + 1) * -1); 6747 } 6748 let ans = ns.split(''); 6749 let r = ''; 6750 for (let i = 0; i < ans.length; i++) 6751 if (i == ans.length - decimais) 6752 r = r + separador + ans[i]; 6753 else 6754 r = r + ans[i]; 6755 e.value = r; 6756 } 6757};
6758PricePipe = (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__decorate)([ 6759 (0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.Pipe)({ 6760 name: 'price' 6761 }) 6762], PricePipe); 6763 6764 6765 6766/***/ }), 6767 6768/***/ 12042: 6769/*!***************************************!*\ 6770 !*** ./src/app/core/pipes/TaxPipe.ts ***! 6771 \***************************************/ 6772/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6773 6774"use strict"; 6775__webpack_require__.r(__webpack_exports__); 6776/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6777/* harmony export */ "TaxPipe": function() { return /* binding */ TaxPipe; } 6778/* harmony export */ }); 6779/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ 64762); 6780/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ 37716); 6781 6782 6783let TaxPipe = class TaxPipe { 6784 transform(price, currency, showin, dtype, type) { 6785 let p = ''; 6786 if (type == 'fixed') { 6787 price = (Math.round(price * 100) / 100).toFixed(2); 6788 if (showin == 'after') { 6789 p = price + ' ' + currency; 6790 } 6791 else { 6792 p = currency + ' ' + price; 6793 } 6794 } 6795 else { 6796 p = price + '%'; 6797 } 6798 return p; 6799 } 6800 formataNumero(e, separador = '.', decimais = 2) { 6801 let a = e.value.split(''); 6802 let ns = ''; 6803 a.forEach((c) => { if (!isNaN(c)) 6804 ns = ns + c; }); 6805 ns = parseInt(ns).toString(); 6806 if (ns.length < (decimais + 1)) { 6807 ns = ('0'.repeat(decimais + 1) + ns); 6808 ns = ns.slice((decimais + 1) * -1); 6809 } 6810 let ans = ns.split(''); 6811 let r = ''; 6812 for (let i = 0; i < ans.length; i++) 6813 if (i == ans.length - decimais) 6814 r = r + separador + ans[i]; 6815 else 6816 r = r + ans[i]; 6817 e.value = r; 6818 } 6819}; 6820TaxPipe = (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__decorate)([ 6821 (0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.Pipe)({ 6822 name: 'tax' 6823 }) 6824], TaxPipe); 6825 6826 6827 6828/***/ }), 6829 6830/***/ 69120: 6831/*!*********************************************!*\ 6832 !*** ./src/app/core/pipes/dishPricePipe.ts ***! 6833 \*********************************************/ 6834/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6835 6836"use strict"; 6837__webpack_require__.r(__webpack_exports__); 6838/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6839/* harmony export */ "dishPricePipe": function() { return /* binding */ dishPricePipe; } 6840/* harmony export */ }); 6841/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ 64762); 6842/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ 37716); 6843 6844 6845let dishPricePipe = class dishPricePipe { 6846 transform(dish, currency, showin, dtype, base = false) { 6847 let p = ''; 6848 let price = dish[dtype]; 6849 if (dish.is_size == 'true') { 6850 price = dish.sizes[0][dtype]; 6851 } 6852 price = (Math.round(price * 100) / 100).toFixed(2); 6853 if (showin == 'after') { 6854 p = price + ' ' + currency; 6855 } 6856 else { 6857 p = currency + ' ' + price; 6858 } 6859 return p; 6860 } 6861 formataNumero(e, separador = '.', decimais = 2) { 6862 let a = e.value.split(''); 6863 let ns = ''; 6864 a.forEach((c) => { if (!isNaN(c)) 6865 ns = ns + c; }); 6866 ns = parseInt(ns).toString(); 6867 if (ns.length < (decimais + 1)) { 6868 ns = ('0'.repeat(decimais + 1) + ns); 6869 ns = ns.slice((decimais + 1) * -1); 6870 } 6871 let ans = ns.split(''); 6872 let r = ''; 6873 for (let i = 0; i < ans.length; i++) 6874 if (i == ans.length - decimais) 6875 r = r + separador + ans[i]; 6876 else 6877 r = r + ans[i]; 6878 e.value = r; 6879 } 6880}; 6881dishPricePipe = (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__decorate)([ 6882 (0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.Pipe)({ 6883 name: 'dishprice' 6884 }) 6885], dishPricePipe); 6886 6887 6888 6889/***/ }), 6890 6891/***/ 15934: 6892/*!*********************************************!*\ 6893 !*** ./src/app/core/pipes/sizePricePipe.ts ***! 6894 \*********************************************/ 6895/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6896 6897"use strict"; 6898__webpack_require__.r(__webpack_exports__); 6899/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6900/* harmony export */ "sizePricePipe": function() { return /* binding */ sizePricePipe; } 6901/* harmony export */ }); 6902/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ 64762); 6903/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ 37716); 6904 6905 6906let sizePricePipe = class sizePricePipe { 6907 transform(size, currency, showin, dtype) { 6908 let p = ''; 6909 let price = size[dtype]; 6910 price = (Math.round(price * 100) / 100).toFixed(2); 6911 if (showin == 'after') { 6912 p = price + ' ' + currency; 6913 } 6914 else { 6915 p = currency + ' ' + price; 6916 } 6917 return p; 6918 } 6919 formataNumero(e, separador = '.', decimais = 2) { 6920 let a = e.value.split(''); 6921 let ns = ''; 6922 a.forEach((c) => { if (!isNaN(c)) 6923 ns = ns + c; }); 6924 ns = parseInt(ns).toString(); 6925 if (ns.length < (decimais + 1)) { 6926 ns = ('0'.repeat(decimais + 1) + ns); 6927 ns = ns.slice((decimais + 1) * -1); 6928 } 6929 let ans = ns.split(''); 6930 let r = ''; 6931 for (let i = 0; i < ans.length; i++) 6932 if (i == ans.length - decimais) 6933 r = r + separador + ans[i]; 6934 else 6935 r = r + ans[i]; 6936 e.value = r; 6937 } 6938}; 6939sizePricePipe = (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__decorate)([ 6940 (0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.Pipe)({ 6941 name: 'sizeprice' 6942 }) 6943], sizePricePipe); 6944 6945 6946 6947/***/ }), 6948 6949/***/ 78342: 6950/*!***********************************************!*\ 6951 !*** ./src/app/core/pipes/topingPricePipe.ts ***! 6952 \***********************************************/ 6953/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6954 6955"use strict"; 6956__webpack_require__.r(__webpack_exports__); 6957/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6958/* harmony export */ "topingPricePipe": function() { return /* binding */ topingPricePipe; } 6959/* harmony export */ }); 6960/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ 64762); 6961/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ 37716); 6962 6963 6964let topingPricePipe = class topingPricePipe { 6965 transform(toping, currency, showin, dtype) { 6966 let p = ''; 6967 let price = toping[dtype]; 6968 price = (Math.round(price * 100) / 100).toFixed(2); 6969 if (showin == 'after') { 6970 p = price + ' ' + currency; 6971 } 6972 else { 6973 p = currency + ' ' + price; 6974 } 6975 return p; 6976 } 6977 formataNumero(e, separador = '.', decimais = 2) { 6978 let a = e.value.split(''); 6979 let ns = ''; 6980 a.forEach((c) => { if (!isNaN(c)) 6981 ns = ns + c; }); 6982 ns = parseInt(ns).toString(); 6983 if (ns.length < (decimais + 1)) { 6984 ns = ('0'.repeat(decimais + 1) + ns); 6985 ns = ns.slice((decimais + 1) * -1); 6986 } 6987 let ans = ns.split(''); 6988 let r = ''; 6989 for (let i = 0; i < ans.length; i++) 6990 if (i == ans.length - decimais) 6991 r = r + separador + ans[i]; 6992 else 6993 r = r + ans[i]; 6994 e.value = r; 6995 } 6996}; 6997topingPricePipe = (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__decorate)([ 6998 (0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.Pipe)({ 6999 name: 'topingprice' 7000 }) 7001], topingPricePipe); 7002 7003 7004 7005/***/ }), 7006 7007/***/ 25094: 7008/*!*****************************************!*\ 7009 !*** ./src/app/core/request.service.ts ***! 7010 \*****************************************/ 7011/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 7012 7013"use strict"; 7014__webpack_require__.r(__webpack_exports__); 7015/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7016/* harmony export */ "RequestService": function() { return /* binding */ RequestService; }
7017/* harmony export */ }); 7018/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ 64762); 7019/* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/common/http */ 91841); 7020/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/core */ 37716); 7021/* harmony import */ var _ionic_native_http_ngx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ionic-native/http/ngx */ 68589); 7022/* harmony import */ var _ionic_angular__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @ionic/angular */ 80476); 7023/* harmony import */ var src_environments_environment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! src/environments/environment */ 92340); 7024 7025 7026 7027 7028 7029 7030let RequestService = class RequestService { 7031 constructor(http, httpClient, platform) { 7032 this.http = http; 7033 this.httpClient = httpClient; 7034 this.platform = platform; 7035 } 7036 // / 7037 // * Returns http promiss request 7038 // * 7039 // * @param {string} url The api path 7040 // * @param {any} data The data which posting 7041 // * @return {HttpClient or http} http request. 7042 // */ 7043 get(url, data) { 7044 return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__awaiter)(this, void 0, void 0, function* () { 7045 if ((this.platform.is('android') || this.platform.is('ios')) && !this.platform.is('mobileweb')) { 7046 this.http.setDataSerializer("json"); 7047 return yield this.http.get(src_environments_environment__WEBPACK_IMPORTED_MODULE_1__.environment.API_URL + url, data, {}).then(response => { 7048 return JSON.parse(response.data); 7049 }).catch(error => { 7050 return {}; 7051 }); 7052 } 7053 else { 7054 return yield this.httpClient.get(src_environments_environment__WEBPACK_IMPORTED_MODULE_1__.environment.API_URL + url, data).toPromise(); 7055 } 7056 }); 7057 } 7058 // / 7059 // * Returns http promiss request 7060 // * 7061 // * @param {string} url The api path 7062 // * @param {any} data The data which posting 7063 // * @return {HttpClient or http} http request. 7064 // */ 7065 post(url, data) { 7066 return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__awaiter)(this, void 0, void 0, function* () { 7067 if ((this.platform.is('android') || this.platform.is('ios')) && !this.platform.is('mobileweb')) { 7068 this.http.setDataSerializer("json"); 7069 return yield this.http.post(src_environments_environment__WEBPACK_IMPORTED_MODULE_1__.environment.API_URL + url, data, {}).then(response => { 7070 return JSON.parse(response.data); 7071 }).catch(error => { 7072 return {}; 7073 }); 7074 } 7075 else { 7076 return yield this.httpClient.post(src_environments_environment__WEBPACK_IMPORTED_MODULE_1__.environment.API_URL + url, data).toPromise(); 7077 } 7078 }); 7079 } 7080}; 7081RequestService.ctorParameters = () => [ 7082 { type: _ionic_native_http_ngx__WEBPACK_IMPORTED_MODULE_0__.HTTP }, 7083 { type: _angular_common_http__WEBPACK_IMPORTED_MODULE_3__.HttpClient }, 7084 { type: _ionic_angular__WEBPACK_IMPORTED_MODULE_4__.Platform } 7085]; 7086RequestService = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__decorate)([ 7087 (0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.Injectable)({ 7088 providedIn: 'root' 7089 }) 7090], RequestService); 7091 7092 7093 7094/***/ }), 7095 7096/***/ 66498: 7097/*!*****************************************!*\ 7098 !*** ./src/app/core/storage.service.ts ***! 7099 \*****************************************/ 7100/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 7101 7102"use strict"; 7103__webpack_require__.r(__webpack_exports__); 7104/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7105/* harmony export */ "StorageService": function() { return /* binding */ StorageService; } 7106/* harmony export */ }); 7107/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tslib */ 64762); 7108/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ 37716); 7109/* harmony import */ var _ionic_storage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ionic/storage */ 61628); 7110 7111 7112 7113let StorageService = class StorageService { 7114 constructor(storage) { 7115 this.storage = storage; 7116 this._storage = null; 7117 this.init(); 7118 } 7119 /** 7120 * Init database 7121 */ 7122 init() { 7123 return (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__awaiter)(this, void 0, void 0, function* () { 7124 const storage = new _ionic_storage__WEBPACK_IMPORTED_MODULE_0__.Storage({ 7125 name: '__gastro_master', 7126 driverOrder: [_ionic_storage__WEBPACK_IMPORTED_MODULE_0__.Drivers.SecureStorage, _ionic_storage__WEBPACK_IMPORTED_MODULE_0__.Drivers.IndexedDB, _ionic_storage__WEBPACK_IMPORTED_MODULE_0__.Drivers.LocalStorage] 7127 }); 7128 storage.create(); 7129 this._storage = storage; 7130 }); 7131 } 7132 /** 7133 * Returns nothing 7134 * 7135 * @param {string} key The key 7136 * @param {any} value The data which need to store 7137 */ 7138 set(key, value) { 7139 var _a; 7140 return (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__awaiter)(this, void 0, void 0, function* () { 7141 (_a = this._storage) === null || _a === void 0 ? void 0 : _a.set(key, value); 7142 }); 7143 } 7144 /** 7145 * Returns storage value 7146 * 7147 * @param {string} key The key 7148 * @return {Storage} return value 7149 */ 7150 get(key) { 7151 var _a; 7152 return (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__awaiter)(this, void 0, void 0, function* () { 7153 return yield ((_a = this._storage) === null || _a === void 0 ? void 0 : _a.get(key)); 7154 }); 7155 } 7156}; 7157StorageService.ctorParameters = () => [ 7158 { type: _ionic_storage__WEBPACK_IMPORTED_MODULE_0__.Storage } 7159]; 7160StorageService = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__decorate)([ 7161 (0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.Injectable)({ 7162 providedIn: 'root' 7163 }) 7164], StorageService); 7165 7166 7167 7168/***/ }), 7169 7170/***/ 60307: 7171/*!**************************************************!*\ 7172 !*** ./src/app/views/modals/alert/alert.page.ts ***! 7173 \**************************************************/ 7174/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 7175 7176"use strict"; 7177__webpack_require__.r(__webpack_exports__); 7178/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7179/* harmony export */ "AlertPage": function() { return /* binding */ AlertPage; } 7180/* harmony export */ }); 7181/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ 64762); 7182/* harmony import */ var _raw_loader_alert_page_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !raw-loader!./alert.page.html */ 90602); 7183/* harmony import */ var _alert_page_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./alert.page.scss */ 70022); 7184/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/core */ 37716); 7185/* harmony import */ var _ionic_angular__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @ionic/angular */ 80476); 7186/* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/platform-browser */ 39075); 7187/* harmony import */ var _api_app_service_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../api/app-service.service */ 95670); 7188/* harmony import */ var _select_order_type_select_order_type_page__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../select-order-type/select-order-type.page */ 84640); 7189 7190 7191 7192 7193 7194 7195 7196 7197let AlertPage = class AlertPage { 7198 constructor(modalController, sanitizer, appService) { 7199 this.modalController = modalController; 7200 this.sanitizer = sanitizer; 7201 this.appService = appService; 7202 this.alertDismissAfter = 3000; 7203 } 7204 ngOnInit() { 7205 // if the autoClose true, then close alert after defined seconds 7206 if (this.autoClose) { 7207 setTimeout(() => { 7208 this.modalController.dismiss(); 7209 }, this.alertDismissAfter); 7210 } 7211 } 7212 go() { 7213 return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function* () { 7214 this.modalController.dismiss(); 7215 let componentProps = { 7216 'currentUI': 'order-type', 7217 'selectFavoriteRestaurant': true 7218 }; 7219 const cartModal = yield this.modalController.create({ 7220 component: _select_order_type_select_order_type_page__WEBPACK_IMPORTED_MODULE_3__.SelectOrderTypePage, 7221 cssClass: 'custom-popup', 7222 componentProps: componentProps 7223 }); 7224 yield cartModal.present(); 7225 }); 7226 } 7227 close() { 7228 this.modalController.dismiss(); 7229 } 7230}; 7231AlertPage.ctorParameters = () => [ 7232 { type: _ionic_angular__WEBPACK_IMPORTED_MODULE_5__.ModalController }, 7233 { type: _angular_platform_browser__WEBPACK_IMPORTED_MODULE_6__.DomSanitizer }, 7234 { type: _api_app_service_service__WEBPACK_IMPORTED_MODULE_2__.AppServiceService } 7235]; 7236AlertPage.propDecorators = { 7237 type: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_7__.Input }], 7238 message: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_7__.Input }], 7239 autoClose: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_7__.Input }], 7240 title: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_7__.Input }] 7241}; 7242AlertPage = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__decorate)([ 7243 (0,_angular_core__WEBPACK_IMPORTED_MODULE_7__.Component)({ 7244 selector: 'app-alert', 7245 template: _raw_loader_alert_page_html__WEBPACK_IMPORTED_MODULE_0__.default, 7246 styles: [_alert_page_scss__WEBPACK_IMPORTED_MODULE_1__.default] 7247 }) 7248], AlertPage); 7249 7250 7251 7252/***/ }), 7253 7254/***/ 728: 7255/*!************************************************!*\ 7256 !*** ./src/app/views/modals/cart/cart.page.ts ***! 7257 \************************************************/ 7258/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 7259 7260"use strict"; 7261__webpack_require__.r(__webpack_exports__); 7262/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7263/* harmony export */ "CartPage": function() { return /* binding */ CartPage; }, 7264/* harmony export */ "InlinePopoverComponent": function() { return /* binding */ InlinePopoverComponent; }, 7265/* harmony export */ "InlinePopoverComponentDe": function() { return /* binding */ InlinePopoverComponentDe; } 7266/* harmony export */ }); 7267/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! tslib */ 64762); 7268/* harmony import */ var _raw_loader_cart_page_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !raw-loader!./cart.page.html */ 84410); 7269/* harmony import */ var _cart_page_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cart.page.scss */ 3760); 7270/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @angular/core */ 37716); 7271/* harmony import */ var _ionic_angular__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @ionic/angular */ 80476); 7272/* harmony import */ var src_app_api_app_service_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! src/app/api/app-service.service */ 95670); 7273/* harmony import */ var _toppings_toppings_page__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../toppings/toppings.page */ 85300); 7274/* harmony import */ var _ngx_translate_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @ngx-translate/core */ 29790); 7275/* harmony import */ var src_app_core_storage_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! src/app/core/storage.service */ 66498); 7276/* harmony import */ var _delivery_times_delivery_times_page__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../delivery-times/delivery-times.page */ 97966); 7277 7278 7279 7280 7281 7282 7283 7284 7285 7286 7287let CartPage = class CartPage { 7288 constructor(modalController, appService, translate, popoverCtrl, storage) { 7289 this.modalController = modalController; 7290 this.appService = appService; 7291 this.translate = translate; 7292 this.popoverCtrl = popoverCtrl; 7293 this.storage = storage; 7294 this.highlightUnavailableDishes = false;
7295 this.couponAdded = false; 7296 this.isheighok = true; 7297 this.coupon = ''; 7298 this.isCouponStatusChecking = false; 7299 // bar mode system properties 7300 this.isDineInSelected = false; 7301 this.isBarModeEnabled = false; 7302 this.makePayment = false; 7303 // unavailable dishes to display highlight when not available for selected order time 7304 this.unavailableDishesIds = []; 7305 if (this.appService.appObject.selectedCoupon.length > 0) { 7306 this.coupon = this.appService.appObject.selectedCoupon[0]['coupon_code']; 7307 this.couponAdded = true; 7308 } 7309 } 7310 ngOnInit() { 7311 this.appService.cartIsOpen = true; 7312 // console.log(this.appService.appObject.selectedRestaurantDetails); 7313 // bar mode changes 7314 if (this.appService.appObject.selectedRestaurantDetails && this.appService.appObject.selectedRestaurantDetails.is_bar_mode === 'true') { 7315 this.isBarModeEnabled = true; 7316 if (this.appService.appObject.selectedDeliveryMethod === 'dine_in') 7317 this.isDineInSelected = true; 7318 } 7319 // end bar mode changes 7320 const newThis = this; 7321 setInterval(() => { 7322 newThis.isheight(); 7323 }, 500); 7324 // this will trigger when user click on categories unavailable error card in checkout page 7325 // this will highlight dishes in cart which are not available for the order date and time 7326 if (this.highlightUnavailableDishes) { 7327 this.appService.unavailableDishes.forEach((dish) => { 7328 this.unavailableDishesIds.push(dish.dish_id); 7329 }); 7330 } 7331 // setTimeout(() => { 7332 // if(!this.appService.appObject.tourEndDeliveryMobile){ 7333 // let cl = document.getElementById('open-tour-delivery'); 7334 // if(cl) cl.click(); 7335 // } 7336 // }, 800); 7337 } 7338 isheight() { 7339 if (document.querySelectorAll('.popup-container').length) { 7340 const element = document.querySelectorAll('.popup-container')[0]; 7341 const element2 = document.querySelectorAll('.popup-container-inner')[0]; 7342 if ((element && element2) && element.offsetHeight < element2.offsetHeight) { 7343 this.isheighok = false; 7344 } 7345 else { 7346 this.isheighok = true; 7347 } 7348 } 7349 } 7350 dismiss() { 7351 this.appService.cartIsOpen = false; 7352 this.appService.hideCartButton = false; 7353 //this.appService.getRestaurantBySlug(this.appService.appObject.selectedRestaurant); 7354 // using the injected ModalController this page 7355 // can "dismiss" itself and optionally pass back data 7356 if (!this.appService.appObject.orderObject.cart_summery.min_reached && this.appService.appObject.orderObject.cart_summery.min_amount > 0) { 7357 this.appService.routeToSelectedRestaurant(); 7358 } 7359 this.modalController.dismiss({ 7360 'dismissed': true, 7361 'array': 'kk' 7362 }); 7363 } 7364 removeCoupon() { 7365 return (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__awaiter)(this, void 0, void 0, function* () { 7366 this.couponAdded = false; 7367 this.coupon = ''; 7368 this.appService.appObject.selectedCoupon = []; 7369 this.appService.calculateCartAmounts(); 7370 }); 7371 } 7372 addCoupon() { 7373 return (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__awaiter)(this, void 0, void 0, function* () { 7374 if (this.coupon === "") { 7375 return false; 7376 } 7377 if (!this.appService.appObject.user || this.appService.appObject.user.type !== 'registered') { 7378 this.translate.get('key.in_order_to_user_coupons').toPromise().then((response) => { 7379 this.appService.showToast(response, 'danger'); 7380 }); 7381 return; 7382 } 7383 this.isCouponStatusChecking = true; 7384 yield this.appService.addCoupon(this.coupon).then(data => { 7385 if (data.status) { 7386 this.couponAdded = true; 7387 //set coupon details 7388 this.appService.appObject.selectedCoupon = []; 7389 data.data['coupon_code'] = this.coupon; 7390 this.appService.appObject.selectedCoupon.push(data.data); 7391 this.appService.calculateCartAmounts(); 7392 } 7393 else { 7394 this.couponAdded = false;
7395 this.coupon = ''; 7396 this.appService.showAlert('error', '', data.msg); 7397 } 7398 this.isCouponStatusChecking = false; 7399 }, error => { 7400 this.isCouponStatusChecking = false; 7401 this.appService.appObject.isLoading = false; 7402 }); 7403 }); 7404 } 7405 incDish(dish) { 7406 return (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__awaiter)(this, void 0, void 0, function* () { 7407 dish.count++; 7408 this.appService.calculateCartAmounts(); 7409 }); 7410 } 7411 decDish(dish) { 7412 return (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__awaiter)(this, void 0, void 0, function* () { 7413 if (dish.count > 1) { 7414 dish.count--; 7415 this.appService.calculateCartAmounts(); 7416 } 7417 }); 7418 } 7419 remove(index) { 7420 return (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__awaiter)(this, void 0, void 0, function* () { 7421 this.appService.appObject.orderObject.cart.splice(index, 1); 7422 this.appService.appObject.orderObjectDup.cart.splice(index, 1); 7423 this.appService.calculateCartAmounts(); 7424 if (this.appService.appObject.orderObject.cart.length == 0) { 7425 this.dismiss(); 7426 } 7427 }); 7428 } 7429 edit(index, dish) { 7430 return (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__awaiter)(this, void 0, void 0, function* () { 7431 this.appService.selectedDish.size_id = dish.size_info.size_id; 7432 this.appService.editing_cart_item = index; 7433 this.appService.selectedDish.selectedTopings = dish.size_info.topping_info; 7434 this.appService.selectedDish.fullDishInfo = JSON.parse(JSON.stringify(this.appService.appObject.orderObjectDup.cart[index])); 7435 this.modalController.dismiss({ 7436 'dismissed': true, 7437 'array': 'kk' 7438 }); 7439 this.appService.hideCartButton = true; 7440 const modal = yield this.modalController.create({ 7441 component: _toppings_toppings_page__WEBPACK_IMPORTED_MODULE_3__.ToppingsPage, 7442 cssClass: 'custom-popup' 7443 }); 7444 yield modal.present(); 7445 }); 7446 } 7447 onclickAny() { 7448 console.log('hi'); 7449 } 7450 makeFinalPayment() { 7451 return (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__awaiter)(this, void 0, void 0, function* () { 7452 if (this.appService.hasNewDishesInCart()) { 7453 if (this.appService.appObject.orderObject.save_items && this.appService.appObject.orderObject.table_order_id) { 7454 yield this.appService.updateKitchenOrder(); 7455 // console.log('Kitchen Order Updated'); 7456 } 7457 else { 7458 yield this.appService.sendToKitchen(false); 7459 // console.log('Kitchen Order Created'); 7460 } 7461 } 7462 this.makePayment = true; 7463 }); 7464 } 7465 openDeliveryTimeSlotDetails(event, openDetailComponent = false) { 7466 return (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__awaiter)(this, void 0, void 0, function* () { 7467 // let lang = await this.storage.get('lang'); 7468 const popover = yield this.popoverCtrl.create({ 7469 // component: !openDetailComponent ? (lang === 'en' ? InlinePopoverComponent : InlinePopoverComponentDe) : DeliveryTimesPage, 7470 component: _delivery_times_delivery_times_page__WEBPACK_IMPORTED_MODULE_5__.DeliveryTimesPage, 7471 cssClass: 'delivery-cost-tour-class', 7472 event: event, 7473 translucent: true, 7474 mode: 'ios', 7475 showBackdrop: true, 7476 backdropDismiss: true 7477 }); 7478 yield popover.present(); 7479 // this.appService.appObject.tourEndDeliveryMobile = true; 7480 // this.appService.updateAppObject(); 7481 }); 7482 } 7483}; 7484CartPage.ctorParameters = () => [ 7485 { type: _ionic_angular__WEBPACK_IMPORTED_MODULE_7__.ModalController }, 7486 { type: src_app_api_app_service_service__WEBPACK_IMPORTED_MODULE_2__.AppServiceService }, 7487 { type: _ngx_translate_core__WEBPACK_IMPORTED_MODULE_8__.TranslateService },
7488 { type: _ionic_angular__WEBPACK_IMPORTED_MODULE_7__.PopoverController }, 7489 { type: src_app_core_storage_service__WEBPACK_IMPORTED_MODULE_4__.StorageService } 7490]; 7491CartPage.propDecorators = { 7492 highlightUnavailableDishes: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_9__.Input }] 7493}; 7494CartPage = (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__decorate)([ 7495 (0,_angular_core__WEBPACK_IMPORTED_MODULE_9__.Component)({ 7496 selector: 'app-cart', 7497 template: _raw_loader_cart_page_html__WEBPACK_IMPORTED_MODULE_0__.default, 7498 styles: [_cart_page_scss__WEBPACK_IMPORTED_MODULE_1__.default] 7499 }) 7500], CartPage); 7501 7502// Define the inline popover component 7503let InlinePopoverComponent = class InlinePopoverComponent { 7504}; 7505InlinePopoverComponent = (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__decorate)([ 7506 (0,_angular_core__WEBPACK_IMPORTED_MODULE_9__.Component)({ 7507 template: ` 7508 <div style="padding: 5px;text-align: center;font-size: 12px;font-weight: 600;"> 7509 Click Here to see delivery times and prices for selected postal code. 7510 </div> 7511 ` 7512 }) 7513], InlinePopoverComponent); 7514 7515let InlinePopoverComponentDe = class InlinePopoverComponentDe { 7516}; 7517InlinePopoverComponentDe = (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__decorate)([ 7518 (0,_angular_core__WEBPACK_IMPORTED_MODULE_9__.Component)({ 7519 template: ` 7520 <div style="padding: 5px;text-align: center;font-size: 12px;font-weight: 600;"> 7521 Klicken Sie hier, um Lieferzeiten und Preise anzuzeigen. 7522 </div> 7523 ` 7524 }) 7525], InlinePopoverComponentDe); 7526 7527 7528 7529/***/ }), 7530 7531/***/ 45577: 7532/*!******************************************************************!*\ 7533 !*** ./src/app/views/modals/cross-selling/cross-selling.page.ts ***! 7534 \******************************************************************/ 7535/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 7536 7537"use strict"; 7538__webpack_require__.r(__webpack_exports__); 7539/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7540/* harmony export */ "CrossSellingPage": function() { return /* binding */ CrossSellingPage; } 7541/* harmony export */ }); 7542/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ 64762); 7543/* harmony import */ var _raw_loader_cross_selling_page_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !raw-loader!./cross-selling.page.html */ 69665); 7544/* harmony import */ var _cross_selling_page_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cross-selling.page.scss */ 9698); 7545/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/core */ 37716); 7546/* harmony import */ var _ionic_angular__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @ionic/angular */ 80476); 7547/* harmony import */ var src_app_api_app_service_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! src/app/api/app-service.service */ 95670); 7548/* harmony import */ var _ngx_translate_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @ngx-translate/core */ 29790); 7549 7550 7551 7552 7553 7554 7555 7556let CrossSellingPage = class CrossSellingPage { 7557 constructor(modalController, appService, translate) { 7558 this.modalController = modalController; 7559 this.appService = appService; 7560 this.translate = translate; 7561 this.crossSellingProducts = []; 7562 this.title = ''; 7563 this.openQuestionDishPage = new _angular_core__WEBPACK_IMPORTED_MODULE_3__.EventEmitter(); 7564 this.selectedQuestion = null; 7565 this.navigationHistory = []; 7566 this.currentUI = 'questions'; 7567 this.dishes = []; 7568 this.isDishesLoading = false; 7569 // this.title = appService.selectedDish.fullDishInfo.name; 7570 } 7571 ngOnInit() { 7572 } 7573 dismiss() { 7574 return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function* () { 7575 // console.log(this.appService.hideCartButton); 7576 this.appService.hideCartButton = false; 7577 this.modalController.dismiss({ 7578 'dismissed': true 7579 }); 7580 }); 7581 } 7582 /** 7583 * Fetch products of the selected category id 7584 * @param category selected category 7585 */ 7586 fetchProductList(category) { 7587 this.dishes = []; 7588 this.isDishesLoading = true;
7589 this.appService.getDishesOfTheGivenCategory(category.id).then((response) => { 7590 this.isDishesLoading = false; 7591 if (response.status) { 7592 this.dishes = response.data; 7593 } 7594 if (this.dishes.length) { 7595 // keep navigation history to navigate backwards 7596 this.navigationHistory.push('questions'); 7597 this.currentUI = 'dishes'; 7598 if (this.appService.isWebVersion) 7599 this.openQuestionDishPage.emit([category]); 7600 } 7601 // console.log('selectedQuestionIndex : ', this.selectedQuestion); 7602 }).catch((error) => { 7603 this.isDishesLoading = false; 7604 console.log('Dish error : ', error); 7605 }); 7606 } 7607 /** 7608 * This will listen till the dish successfuly adding to the cart and mark the question as user responded 7609 * @param dish Selected dish 7610 */ 7611 addToCart(dish) { 7612 this.appService.addToCart(dish, true).then((response) => { 7613 if (response.status === 'done' && this.selectedQuestion) { 7614 this.selectedQuestion.done = true; 7615 // display toast after adding items into cart 7616 this.translate.get('item_successfuly_added_to_the_cart').subscribe(value => { 7617 this.appService.showToast(value); 7618 }); 7619 } 7620 }).catch((error) => { 7621 console.log('response error : ', error); 7622 }); 7623 } 7624 /** 7625 * This will listen till the dish successfuly adding to the cart and mark the question as user responded 7626 * @param dish Selected dish 7627 */ 7628 openToppingPopUp(dish) { 7629 this.appService.topingPopupOpen(dish, true); 7630 let callbackResponsse = this.appService.triggerAddToCartSuccssfulyCallback().subscribe((response) => { 7631 if (response && response.status === 'done') { 7632 this.selectedQuestion.done = true; 7633 // display toast after adding items into cart 7634 this.translate.get('item_successfuly_added_to_the_cart').subscribe(value => { 7635 this.appService.showToast(value); 7636 }); 7637 } 7638 callbackResponsse.unsubscribe(); 7639 }); 7640 } 7641 /** 7642 * Will trigger when user click back button in web app 7643 */ 7644 navigateBackInWebVersion() { 7645 this.currentUI = 'questions'; 7646 } 7647}; 7648CrossSellingPage.ctorParameters = () => [ 7649 { type: _ionic_angular__WEBPACK_IMPORTED_MODULE_5__.ModalController }, 7650 { type: src_app_api_app_service_service__WEBPACK_IMPORTED_MODULE_2__.AppServiceService }, 7651 { type: _ngx_translate_core__WEBPACK_IMPORTED_MODULE_6__.TranslateService } 7652]; 7653CrossSellingPage.propDecorators = { 7654 crossSellingProducts: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_3__.Input }], 7655 selectedDishCategory: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_3__.Input }], 7656 title: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_3__.Input }], 7657 openQuestionDishPage: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_3__.Output }] 7658}; 7659CrossSellingPage = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__decorate)([ 7660 (0,_angular_core__WEBPACK_IMPORTED_MODULE_3__.Component)({ 7661 selector: 'app-cross-selling', 7662 template: _raw_loader_cross_selling_page_html__WEBPACK_IMPORTED_MODULE_0__.default, 7663 styles: [_cross_selling_page_scss__WEBPACK_IMPORTED_MODULE_1__.default] 7664 }) 7665], CrossSellingPage); 7666 7667 7668 7669/***/ }), 7670 7671/***/ 97966: 7672/*!********************************************************************!*\ 7673 !*** ./src/app/views/modals/delivery-times/delivery-times.page.ts ***! 7674 \********************************************************************/ 7675/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 7676 7677"use strict"; 7678__webpack_require__.r(__webpack_exports__); 7679/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7680/* harmony export */ "DeliveryTimesPage": function() { return /* binding */ DeliveryTimesPage; } 7681/* harmony export */ }); 7682/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ 64762); 7683/* harmony import */ var _raw_loader_delivery_times_page_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !raw-loader!./delivery-times.page.html */ 79201); 7684/* harmony import */ var _delivery_times_page_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./delivery-times.page.scss */ 30822); 7685/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/core */ 37716); 7686/* harmony import */ var _ionic_angular__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @ionic/angular */ 80476); 7687/* harmony import */ var src_app_api_app_service_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! src/app/api/app-service.service */ 95670); 7688 7689 7690 7691 7692 7693 7694let DeliveryTimesPage = class DeliveryTimesPage { 7695 constructor(popover, appService) { 7696 this.popover = popover; 7697 this.appService = appService; 7698 this.prices = []; 7699 this.currentSlotId = null; 7700 } 7701 ngOnInit() { 7702 let postalCodeDetails = this.appService.appObject.postalCodeDetails; 7703 let selectedRestaurantPricing = postalCodeDetails.price.find((prices) => prices.restaurantId === this.appService.appObject.selectedRestaurantId); 7704 if (selectedRestaurantPricing && selectedRestaurantPricing.time_slots) { 7705 this.prices = selectedRestaurantPricing.time_slots.filter((slot) => slot.status === 'true'); 7706 } 7707 else { 7708 this.prices = []; 7709 } 7710 let currentTimeSlot = this.appService.getGivenPostalCodeCurrentPriceAndMinAmount(selectedRestaurantPricing); 7711 // console.log('currentTimeSlot :', currentTimeSlot); 7712 if (currentTimeSlot && currentTimeSlot.id) 7713 this.currentSlotId = currentTimeSlot.id; 7714 else 7715 this.currentSlotId = null; 7716 } 7717 ngDoCheck() { 7718 // display touchable area to change favourite restaurant 7719 // let ele = document.getElementById('enable-tour-container'); 7720 // if (ele) { 7721 // let bounding = ele.getBoundingClientRect(); 7722 // if (bounding) { 7723 // let holeEle = document.getElementById('secret-div-web-menu'); 7724 // if (holeEle) holeEle.setAttribute('style', 'top:' + ((bounding.top) + 'px;left : ' + (bounding.left + 'px;width:') + ((bounding.width + 1) + 'px; height: ') + ((bounding.height + 1) + 'px'))); 7725 // } 7726 // } 7727 } 7728 dismiss() { 7729 this.popover.dismiss(); 7730 } 7731}; 7732DeliveryTimesPage.ctorParameters = () => [ 7733 { type: _ionic_angular__WEBPACK_IMPORTED_MODULE_3__.PopoverController }, 7734 { type: src_app_api_app_service_service__WEBPACK_IMPORTED_MODULE_2__.AppServiceService } 7735]; 7736DeliveryTimesPage = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__decorate)([ 7737 (0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.Component)({ 7738 selector: 'app-delivery-times', 7739 template: _raw_loader_delivery_times_page_html__WEBPACK_IMPORTED_MODULE_0__.default, 7740 styles: [_delivery_times_page_scss__WEBPACK_IMPORTED_MODULE_1__.default] 7741 }) 7742], DeliveryTimesPage); 7743 7744 7745 7746/***/ }), 7747 7748/***/ 79979: 7749/*!**************************************************!*\ 7750 !*** ./src/app/views/modals/popup/popup.page.ts ***! 7751 \**************************************************/ 7752/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 7753 7754"use strict"; 7755__webpack_require__.r(__webpack_exports__); 7756/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7757/* harmony export */ "PopupPage": function() { return /* binding */ PopupPage; } 7758/* harmony export */ }); 7759/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ 64762); 7760/* harmony import */ var _raw_loader_popup_page_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !raw-loader!./popup.page.html */ 75814); 7761/* harmony import */ var _popup_page_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./popup.page.scss */ 64054); 7762/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/core */ 37716); 7763/* harmony import */ var _ionic_angular__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @ionic/angular */ 80476); 7764/* harmony import */ var src_app_api_app_service_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! src/app/api/app-service.service */ 95670); 7765/* harmony import */ var _select_order_type_select_order_type_page__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../select-order-type/select-order-type.page */ 84640); 7766 7767 7768 7769 7770 7771 7772 7773let PopupPage = class PopupPage { 7774 constructor(modalController, appService) { 7775 this.modalController = modalController; 7776 this.appService = appService; 7777 this.currentUI = ''; 7778 } 7779 ngOnInit() { 7780 } 7781 langSelect(event) { 7782 return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function* () { 7783 yield this.appService.changeLanguage(event); 7784 // this.dismiss(); 7785 }); 7786 } 7787 dismiss() { 7788 // using the injected ModalController this page 7789 // can "dismiss" itself and optionally pass back data 7790 this.modalController.dismiss(); 7791 } 7792 /** 7793 * Choose favourite restaurant 7794 */ 7795 chooseFavouriteRestaurant() { 7796 return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function* () { 7797 this.dismiss(); 7798 let componentProps = { 7799 'currentUI': 'order-type', 7800 'selectFavouriteRestaurant': true 7801 }; 7802 const cartModal = yield this.modalController.create({ 7803 component: _select_order_type_select_order_type_page__WEBPACK_IMPORTED_MODULE_3__.SelectOrderTypePage, 7804 cssClass: 'custom-popup', 7805 componentProps: componentProps 7806 }); 7807 yield cartModal.present(); 7808 }); 7809 } 7810 closeUnavailableNote() { 7811 return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function* () { 7812 (yield this.modalController.getTop()).dismiss(); 7813 this.appService.hideCartButton = false;
7814 }); 7815 } 7816}; 7817PopupPage.ctorParameters = () => [ 7818 { type: _ionic_angular__WEBPACK_IMPORTED_MODULE_5__.ModalController }, 7819 { type: src_app_api_app_service_service__WEBPACK_IMPORTED_MODULE_2__.AppServiceService } 7820]; 7821PopupPage.propDecorators = { 7822 currentUI: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_6__.Input }] 7823}; 7824PopupPage = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__decorate)([ 7825 (0,_angular_core__WEBPACK_IMPORTED_MODULE_6__.Component)({ 7826 selector: 'app-popup', 7827 template: _raw_loader_popup_page_html__WEBPACK_IMPORTED_MODULE_0__.default, 7828 styles: [_popup_page_scss__WEBPACK_IMPORTED_MODULE_1__.default] 7829 }) 7830], PopupPage); 7831 7832 7833 7834/***/ }), 7835 7836/***/ 84640: 7837/*!**************************************************************************!*\ 7838 !*** ./src/app/views/modals/select-order-type/select-order-type.page.ts ***! 7839 \**************************************************************************/ 7840/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 7841 7842"use strict"; 7843__webpack_require__.r(__webpack_exports__); 7844/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7845/* harmony export */ "SelectOrderTypePage": function() { return /* binding */ SelectOrderTypePage; } 7846/* harmony export */ }); 7847/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ 64762); 7848/* harmony import */ var _raw_loader_select_order_type_page_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !raw-loader!./select-order-type.page.html */ 69081); 7849/* harmony import */ var _select_order_type_page_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./select-order-type.page.scss */ 3858); 7850/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/core */ 37716); 7851/* harmony import */ var _ionic_angular__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @ionic/angular */ 80476); 7852/* harmony import */ var src_app_api_app_service_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! src/app/api/app-service.service */ 95670); 7853/* harmony import */ var _ngx_translate_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @ngx-translate/core */ 29790); 7854/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/router */ 39895); 7855var SelectOrderTypePage_1; 7856 7857 7858 7859 7860 7861 7862 7863 7864 7865let SelectOrderTypePage = SelectOrderTypePage_1 = class SelectOrderTypePage { 7866 constructor(modalController, appService, translate, router) { 7867 this.modalController = modalController; 7868 this.appService = appService; 7869 this.translate = translate; 7870 this.router = router; 7871 this.just_select_address = false; 7872 this.just_select_order_type = false;
7873 this.currentUI = 'order-type'; 7874 this.selected_branch = null; 7875 this.selectFavouriteRestaurant = false; 7876 this.showAll = false; 7877 this.tableSelectRestaurant = null; 7878 this.tableListOfRestaurant = []; 7879 this.selectedTable = null; 7880 this.remaningTime = 3; 7881 this.previousRestaurant = ''; 7882 this.is_from_checkout_page = false; 7883 this.addressTemp = ''; 7884 this.hasMultipleRestaurants = false; 7885 this.favouriteRedirectCountDown = 10; 7886 this.redirectIntervel = null; 7887 this.loadingFavourite = false; 7888 /** 7889 * when user already has a favourite restauratn and select delivery as order method 7890 * so need to select where to deliver 7891 */ 7892 this.isFavouriteRestaurantDeliverySearch = false; 7893 // when franchise mode is on, there is a special way to get available delivery methods 7894 // check all the branches and get all available delivery methods 7895 this.availableDeliveryMethodsFranchise = []; 7896 this.isFromMenuPage = false; 7897 // is postal code feature enabled 7898 this.isPostalCodeEnabled = false; 7899 this.postalCodeRestaurantList = []; 7900 this.postalCodeList = []; 7901 this.selectedArea = null; 7902 this.restaurantList = []; 7903 this.postalFilterItem = []; 7904 this.isPostalItemAvailable = false; 7905 this.selected_postal = ''; 7906 // Loading spinner display till load restaurants list 7907 // in postal code select section 7908 this.displaySpinnerSection = false; 7909 this.hasMultipleRestaurants = this.appService.appObject.settings && this.appService.appObject.settings.app_configuration && this.appService.appObject.settings.app_configuration.has_multiple_restaurants; 7910 } 7911 ngOnInit() { 7912 var _a, _b, _c; 7913 return (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__awaiter)(this, void 0, void 0, function* () { 7914 if (!this.selected_branch && this.appService.appObject.settings.is_franchise === 'true' && this.currentUI === 'order-type') { 7915 this.availableDeliveryMethodsFranchise = this.appService.getAvailableOrderMethodsFromBranches(); 7916 } 7917 // check postal code feature enabled 7918 if (this.appService.appObject.settings.is_franchise === 'false' && this.appService.appObject.settings.main_restaurant && this.appService.appObject.settings.is_postalcode === 'true') { 7919 this.isPostalCodeEnabled = true; 7920 } 7921 // if user has already selected favourite restaurant, then redirect into favourite restaurant 7922 if (!this.tableSelectRestaurant && !this.showAll && !this.selected_branch && !this.just_select_order_type && this.appService.appObject.settings.is_franchise === 'true' && ((_a = this.appService.appObject.settings.app_configuration) === null || _a === void 0 ? void 0 : _a.has_multiple_restaurants) && this.appService.appObject.favouriteRestaurant) { 7923 // console.log('has favourite'); 7924 this.currentUI = 'redirect-to_favourite'; 7925 this.loadingFavourite = true; 7926 yield this.appService.getFavouriteRestaurantData(this.appService.appObject.favouriteRestaurant.slug); 7927 this.availableDeliveryMethodsFranchise = this.appService.findSelectedRestaurantOrderTypesV2(this.appService.appObject.favouriteRestaurant, true).deliveryMethods; 7928 this.loadingFavourite = false; 7929 // this.redirectIntervel = setInterval(() => { 7930 // this.favouriteRedirectCountDown--; 7931 // if (this.favouriteRedirectCountDown === 0) { 7932 // this.clearRedirectInterval(); 7933 // this.redirectTofavouriteRestaurant(); 7934 // } 7935 // }, 1000); 7936 return; 7937 } 7938 if (this.selectFavouriteRestaurant) { 7939 if (this.appService.appObject.myAddress.name == "" && this.appService.appObject.myAddress.lat == "" && this.appService.appObject.myAddress.lng == "") { 7940 this.appService.getCurrentLocation(); 7941 } 7942 // initialize google places auto complete input once delivery selected 7943 // set timeout to avoid expressionchangedafter exception for loading spinner 7944 setTimeout(() => { this.appService.appObject.isLoading = true; }, 10); 7945 setTimeout(() => { 7946 this.appService.initGoogle(this.googleaddress); 7947 this.appService.appObject.isLoading = false;
7948 }, 2000); 7949 this.currentUI = 'location-for-favourite'; 7950 return; 7951 } 7952 // get available ordering type of selected branch 7953 if (!this.just_select_order_type && this.selected_branch && this.selected_branch.openDetails) { 7954 this.appService.findSelectedRestaurantOrderTypesV2(this.selected_branch); 7955 } 7956 else if (!this.just_select_order_type && ((_c = (_b = this.appService.appObject.settings) === null || _b === void 0 ? void 0 : _b.main_restaurant) === null || _c === void 0 ? void 0 : _c.openDetails)) { 7957 this.appService.findSelectedRestaurantOrderTypesV2(this.appService.appObject.settings.main_restaurant); 7958 } 7959 if (this.tableSelectRestaurant) { 7960 // If user has already pending payment order on another restaurant, redirect into that restaurant menu instead of selected restaurant 7961 if (this.appService.appObject.orderObject.selectedTable && this.appService.appObject.orderObject.selectedTable.restaurants_id && this.tableSelectRestaurant.id !== this.appService.appObject.orderObject.selectedTable.restaurants_id) { 7962 // console.log('redirect into that restaurant'); 7963 if (this.appService.appObject.restaurants) { 7964 let previouslySelectedRestaurant = this.appService.appObject.restaurants.find((rest) => rest.id === this.appService.appObject.orderObject.selectedTable.restaurants_id); 7965 if (previouslySelectedRestaurant) { 7966 this.previousRestaurant = previouslySelectedRestaurant.name; 7967 this.appService.appObject.selectedRestaurantId = previouslySelectedRestaurant.id; 7968 this.startCountDown(previouslySelectedRestaurant.slug); 7969 } 7970 } 7971 } 7972 else { 7973 // this.appService.getUserUnpaidActiveOrders(); 7974 this.tableListOfRestaurant = []; 7975 this.appService.fetchAllTablesOfRestaurant(this.tableSelectRestaurant.id).then((response) => { 7976 if (response.status && response.data) { 7977 this.tableListOfRestaurant = response.data; 7978 this.appService.appObject.selectedRestaurantId = this.tableSelectRestaurant.id; 7979 if (this.appService.appObject.orderObject && this.appService.appObject.orderObject.selectedTable && this.appService.appObject.orderObject.selectedTable.saved) { 7980 // console.log('this.appService.appObject.orderObject.selectedTable : ' , this.appService.appObject.orderObject.selectedTable); 7981 this.startCountDown(this.tableSelectRestaurant.slug); 7982 } 7983 } 7984 }).catch((error) => { 7985 console.log('error while fetching tables : ', error); 7986 }); 7987 } 7988 } 7989 if (this.is_from_checkout_page) { 7990 this.addressTemp = this.appService.appObject.myAddress ? this.appService.appObject.myAddress.name : ''; 7991 // initialize google places auto complete input once delivery selected 7992 setTimeout(() => { 7993 this.appService.appObject.isLoading = true; 7994 }, 10); 7995 setTimeout(() => { 7996 this.appService.initGoogle(this.googleaddress); 7997 this.appService.appObject.isLoading = false; 7998 }, 2000); 7999 } 8000 }); 8001 } 8002 /** 8003 * Clear user redirect to favourite restaurant interval 8004 * @param dismiss dismiss after clear interval 8005 */ 8006 clearRedirectInterval(dismiss = false) { 8007 if (this.redirectIntervel) { 8008 clearInterval(this.redirectIntervel); 8009 this.redirectIntervel = null; 8010 } 8011 if (dismiss) 8012 this.dismiss(); 8013 } 8014 dismiss() { 8015 return (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__awaiter)(this, void 0, void 0, function* () { 8016 this.modalController.dismiss({ 8017 'dismissed': true, 8018 }); 8019 }); 8020 } 8021 /** 8022 * Trigger when user click choose address 8023 * @param orderType order type 'delivery', 'pickup', 'dine_in' 8024 */ 8025 selectTypeAsDelivery(orderType = 'delivery') { 8026 return (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__awaiter)(this, void 0, void 0, function* () { 8027 this.appService.appObject.errors.address = ''; 8028 // console.log('this.appService.appObject.myAddress : ', this.appService.appObject.myAddress); 8029 if (this.appService.appObject.myAddress.name != "" && this.appService.appObject.myAddress.lat != "" && this.appService.appObject.myAddress.lng != "") { 8030 this.appService.appObject.selectedDeliveryMethod = this.appService.appObject.selectedDeliveryMethod; 8031 // if the user want to change the ordering type and select the address 8032 // then stop once user had it 8033 // if (this.just_select_order_type) { 8034 // this.dismiss(); 8035 // return; 8036 // } 8037 this.appService.findNearByRestaurants((this.selected_branch ? 'branch-selected' : 'do-not-redirect'), false).then((response) => (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__awaiter)(this, void 0, void 0, function* () { 8038 var _a, _b; 8039 // if the user is from checkout page, for just change the address 8040 // must calculate the order amount 8041 if (this.selected_branch || this.is_from_checkout_page || this.just_select_order_type) { 8042 // console.log('this.appService.appObject.selectedRestaurantDetails.id : ' , this.appService.appObject.selectedRestaurantDetails.id); 8043 // console.log('this.appService.appObject.restaurants : ', this.appService.appObject.restaurants); 8044 let selectedBranch = this.appService.appObject.restaurants.find((restaurant) => { 8045 return restaurant.id === (this.selected_branch ? this.selected_branch.id : this.appService.appObject.selectedRestaurantDetails.id); 8046 }); // this.selected_branch.id 8047 // console.log('selectedBranch : ' , selectedBranch) 8048 if (selectedBranch) { 8049 if (this.selected_branch) 8050 this.router.navigate(['restaurant', selectedBranch.slug]); 8051 // else if from checkout page or ordering main 2 page order type change popup 8052 // then calculate cart amount and close popup 8053 else if (this.is_from_checkout_page || this.just_select_order_type) { 8054 yield this.appService.getRestaurantBySlug(selectedBranch.slug); 8055 yield this.appService.calculateCartAmounts(); 8056 } 8057 this.dismiss(); 8058 } 8059 else { 8060 // console.log('selected restaurant won\'t delivery to the selected address'); 8061 if (this.is_from_checkout_page || this.just_select_order_type) 8062 this.appService.clearAddress('selected_restaurant_cannot_delivery_to_selected_address'); 8063 this.appService.appObject.errors['address']
8063= ['selected_restaurant_cannot_delivery_to_selected_address']; 8064 } 8065 } 8066 else { 8067 if (this.isFavouriteRestaurantDeliverySearch) { 8068 let favouriteBranch = this.appService.appObject.restaurants.find((restaurant) => { 8069 return restaurant.id === this.appService.appObject.favouriteRestaurant.id; 8070 }); 8071 if (favouriteBranch) { 8072 this.dismiss(); 8073 this.router.navigate(['restaurant', favouriteBranch.slug]); 8074 } 8075 else { 8076 this.appService.appObject.errors['address'] = ['your_favourite_restaurant_cannot_delivery_to_selected_address']; 8077 } 8078 } 8079 else { 8080 if (this.appService.appObject.restaurants.length === 1 && this.appService.appObject.restaurants[0].slug && (!this.appService.appObject.settings.is_franchise || this.appService.appObject.settings.is_franchise === 'false' || !((_a = this.appService.appObject.settings.app_configuration) === null || _a === void 0 ? void 0 : _a.has_multiple_restaurants))) { 8081 this.dismiss(); 8082 this.router.navigate(['restaurant', this.appService.appObject.restaurants[0].slug]); 8083 } 8084 else if (this.appService.appObject.restaurants && this.appService.appObject.restaurants.length > 0 || (this.appService.appObject.settings.is_franchise === 'true' && ((_b = this.appService.appObject.settings.app_configuration) === null || _b === void 0 ? void 0 : _b.has_multiple_restaurants))) { 8085 this.dismiss(); 8086 this.router.navigate(['restaurant-list']); 8087 } 8088 else { 8089 this.appService.appObject.errors['address'] = ['selected_restaurant_cannot_delivery_to_selected_address']; 8090 } 8091 } 8092 } 8093 })); 8094 } 8095 else { 8096 // if lat lng address not availbale then mark as invalid 8097 this.appService.appObject.errors['address'] = ['address_is_not_valid']; 8098 } 8099 }); 8100 } 8101 /** 8102 * Will trigger when user select an option from order type select popup 8103 * @param option selected order type option 8104 */ 8105 selectOrderType(option) { 8106 var _a; 8107 return (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__awaiter)(this, void 0, void 0, function* () { 8108 // if the selected ordering type is "Delivery" and postal code feature is enabled 8109 if (option === 'delivery' && this.isPostalCodeEnabled) { 8110 this.postalCodeRestaurantList = []; 8111 this.postalCodeList = []; 8112 this.selectedArea = null; 8113 if (this.selected_branch) { 8114 let postalCodes = this.selected_branch.postal_code_details_v2 ? this.selected_branch.postal_code_details_v2 : []; 8115 if (!Array.isArray(postalCodes)) 8116 postalCodes = JSON.parse(postalCodes); 8117 for (let index = 0; index < postalCodes.length; index++) { 8118 const element = postalCodes[index]; 8119 element.price = [{ restaurantId: this.selected_branch.id, cost: element.cost, minOrderAmount: element.min_order }]; 8120 } 8121 this.postalCodeList = [...postalCodes]; 8122 } 8123 else { 8124 this.displaySpinnerSection = true; 8125 this.appService.getAllRestaurants().then((response) => { 8126 if (response.status) { 8127 this.postalCodeRestaurantList = response.data.filter((restaurant) => restaurant.postal_code_details_v2); 8128 for (let index = 0; index < this.postalCodeRestaurantList.length; index++) { 8129 const element = this.postalCodeRestaurantList[index]; 8130 // convert into json object 8131 // element.postal_code_details = element.postal_code_details ? JSON.parse(element.postal_code_details) : [] 8132 element.postal_code_details = element.postal_code_details_v2; 8133 for (let index1 = 0; index1 < element.postal_code_details.length; index1++) { 8134 // get each postal code data and put into postalCodeList global array 8135 // if multiple restaurants deliver to the same postal code, all prices will be available in 8136 // selected postal code object 8137 const postalCodeData = element.postal_code_details[index1]; 8138 let found = this.postalCodeList.find((post) => post.code === postalCodeData.code && post.name === postalCodeData.name); 8139 // to avoid duplicates, check by postal code and prices 8140 if (found) { 8141 found.price.push({ restaurantId: element.i
8141d, postalId: postalCodeData.id, cost: postalCodeData.cost, minOrderAmount: postalCodeData.min_order, time_slots: postalCodeData.time_slots }); 8142 } 8143 else { 8144 let postalData = { 8145 code: postalCodeData.code, 8146 name: postalCodeData.name, 8147 price: [{ restaurantId: element.id, postalId: postalCodeData.id, cost: postalCodeData.cost, minOrderAmount: postalCodeData.min_order, time_slots: postalCodeData.time_slots }] 8148 }; 8149 this.postalCodeList.push(postalData); 8150 } 8151 } 8152 // this.postalCodeList = this.postalCodeList.concat(element.postal_code_details); 8153 } 8154 // remove duplicated postal codes 8155 // this.postalCodeList = [...new Map(this.postalCodeList.map((m) => [m.code, m])).values()]; 8156 } 8157 // console.log('this.postalCodeList : ', this.postalCodeList); 8158 }).catch((error) => { 8159 console.log('error : ', error); 8160 }).finally(() => { 8161 this.displaySpinnerSection = false; 8162 }); 8163 } 8164 this.currentUI = 'select-postalcode'; 8165 // set if already has selected postal area in app object 8166 if (this.appService.appObject.postalCodeDetails) { 8167 this.selectedArea = this.appService.appObject.postalCodeDetails; 8168 this.selected_postal = this.selectedArea.code + ' - ' + this.selectedArea.name; 8169 } 8170 return; 8171 } 8172 // if came from the order main page and not delivery (we must select the address if delivery) 8173 // just let the user to select ordering type 8174 if (option !== 'delivery' && (this.just_select_order_type || this.selected_branch)) { 8175 this.appService.appObject.selectedDeliveryMethod = option; 8176 // if user came from branches slider, then redirect into branch menu after selecting order type 8177 if (this.selected_branch) { 8178 // if bar mode is enabled and user choosed dine_in, then open table selecter, otherwise redirect into menu page 8179 if (option === 'dine_in' && this.selected_branch.is_bar_mode && this.selected_branch.is_bar_mode === 'true') { 8180 this.appService.openTableSelect(this.selected_branch); 8181 } 8182 else { 8183 this.router.navigate(['restaurant', this.selected_branch.slug]); 8184 } 8185 } 8186 // calculate cart total when user change ordering type 8187 this.appService.calculateCartAmounts(); 8188 this.dismiss(); 8189 return; 8190 } 8191 // // if franchise mode is enabled 8192 // if (this.appService.appObject.settings.is_franchise === 'true') { 8193 // setTimeout(() => { 8194 // this.appService.initGoogle(this.googleaddress); 8195 // this.appService.appObject.isLoading = false; 8196 // }, 2000); 8197 // if(this.appService.appObject.favouriteRestaurant){ 8198 // }else{ 8199 // this.currentUI = (option === 'delivery' ? 'delivery-address' : (option === 'pickup' ? 'pickup-address' : (option === 'dine_in') ? 'dinein-address' : '')); 8200 // if (this.appService.appObject.myAddress.name == "" && this.appService.appObject.myAddress.lat == "" && this.appService.appObject.myAddress.lng == "") { 8201 // this.appService.getCurrentLocation(); 8202 // } 8203 // } 8204 // } else { 8205 // } 8206 if (option === 'delivery' || (this.appService.appObject.settings.is_franchise === 'true' && ((_a = this.appService.appObject.settings.app_configuration) === null || _a === void 0 ? void 0 : _a.has_multiple_restaurants))) { 8207 this.currentUI = (option === 'delivery' ? 'delivery-address' : (option === 'pickup' ? 'pickup-address' : (option === 'dine_in') ? 'dinein-address' : '')); 8208 // this.currentUI = 'delivery-address'; 8209 if (this.appService.appObject.myAddress.name == "" && this.appService.appObject.myAddress.lat == "" && this.appService.appObject.myAddress.lng == "") { 8210 this.appService.getCurrentLocation(); 8211 } 8212 this.appService.appObject.selectedDeliveryMethod = option; 8213 this.appService.updateAppObject(); 8214 // initialize google places auto complete input once delivery selected 8215 this.appService.appObject.isLoading = true; 8216 setTimeout(() => { 8217 this.appService.initGoogle(this.googleaddress); 8218 this.appService.appObject.isLoading = false;
8219 }, 2000); 8220 } 8221 else { 8222 this.appService.appObject.selectedDeliveryMethod = option; 8223 yield this.appService.clearSelectedRestaurant(); 8224 yield this.appService.findNearByRestaurants('', true); 8225 this.appService.updateAppObject(); 8226 // console.log('rest : ', this.appService.appObject.restaurants); 8227 // if (this.hasMultipleRestaurants) { 8228 // this.router.navigate(['restaurant-list']); 8229 // } else if (!this.hasMultipleRestaurants) { 8230 // if (this.appService.appObject.settings.main_restaurant.slug) this.router.navigate(['restaurant', this.appService.appObject.settings.main_restaurant.slug]); 8231 // } 8232 // if multiple restaurants is disabled then navigate directly into main restaurant menu page 8233 // this is a tricky solution. If has multiple option is disabled, then replace restaurant list with main restaurant 8234 if (this.appService.appObject.settings && this.appService.appObject.settings.app_configuration && !this.appService.appObject.settings.app_configuration.has_multiple_restaurants) { 8235 this.appService.appObject.restaurants = [this.appService.appObject.settings.main_restaurant]; 8236 this.router.navigate(['restaurant', this.appService.appObject.restaurants[0].slug]); 8237 this.dismiss(); 8238 return; 8239 } 8240 if (this.appService.appObject.restaurants && this.appService.appObject.restaurants.length > 1) { 8241 this.router.navigate(['restaurant-list']); 8242 } 8243 else if (this.appService.appObject.restaurants && this.appService.appObject.restaurants.length === 1) { 8244 this.router.navigate(['restaurant-list']); 8245 // if bar mode is on, then redirect to table select ui 8246 /* Commented this code, from now on user won't redirect to menu page without selecting restaurant */ 8247 // if (option === 'dine_in' && this.appService.appObject.restaurants[0].is_bar_mode && this.appService.appObject.restaurants[0].is_bar_mode === 'true') { 8248 // this.appService.openTableSelect(this.appService.appObject.restaurants[0]); 8249 // } else { 8250 // if (this.appService.appObject.restaurants[0].slug) this.router.navigate(['restaurant', this.appService.appObject.restaurants[0].slug]); 8251 // } 8252 } 8253 else if (!this.appService.appObject.restaurants || !this.appService.appObject.restaurants.length) { 8254 if (this.appService.appObject.settings && this.appService.appObject.settings.app_configuration && !this.appService.appObject.settings.app_configuration.has_multiple_restaurants) { 8255 this.router.navigate(['restaurant', this.appService.appObject.settings.main_restaurant.slug]); 8256 } 8257 else { 8258 this.translate.get('key.there_is_no_' + this.appService.appObject.selectedDeliveryMethod + '_available_restaurants_at_the_moment').toPromise().then((data) => { 8259 this.appService.showToast(data, 'danger', 'bottom', 5000); 8260 }).catch((err) => { 8261 console.log('error while fetching not available : ', err); 8262 }); 8263 } 8264 } 8265 this.dismiss(); 8266 } 8267 }); 8268 } 8269 /** 8270 * Clear selected postal data 8271 */ 8272 clearPostalArea() { 8273 this.selectedArea = null; 8274 this.selected_postal = ''; 8275 this.appService.appObject.postalCodeDetails = null; 8276 this.appService.updateAppObject(); 8277 } 8278 /** 8279 * Triggers when user select a postal area to get delivered 8280 */ 8281 onPostalCodeSelect() { 8282 return (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__awaiter)(this, void 0, void 0, function* () { 8283 if (this.selectedArea) { 8284 this.appService.appObject.selectedDeliveryMethod = 'delivery'; 8285 this.appService.appObject.postalCodeDetails = this.selectedArea; 8286 yield this.appService.updateAppObject(); 8287 if (this.selected_branch) { 8288 this.router.navigate(['restaurant', this.selected_branch.slug]); 8289 this.dismiss(); 8290 } 8291 else { 8292 let availableRestaurants = this.postalCodeRestaurantList.filter((restaurant) => restaurant.postal_code_details_v2.find((postal) => postal.code === this.selectedArea.code && postal.name === this.selectedArea.name)); 8293 if (availableRestaurants.length === 1) { 8294 this.router.navigate(['restaurant', availableRestaurants[0].slug]); 8295 this.dismiss(); 8296 } 8297 else { 8298 // console.log('Available List : ', availableRestaurants); 8299 this.appService.appObject.restaurants = [...availableRestaurants]; 8300 this.router.navigate(['restaurant-list']); 8301 this.dismiss(); 8302 } 8303 } 8304 } 8305 else { 8306 this.appService.appObject.errors['postalCode'] = ['select_postal_code']; 8307 } 8308 }); 8309 } 8310 cancelTableSelect() { 8311 this.dismiss(); 8312 } 8313 selectATable() { 8314 if (this.selectedTable && this.tableSelectRestaurant && this.tableSelectRestaurant.slug) { 8315 this.appService.appObject.orderObject.selectedTable = this.selectedTable; 8316 // console.log('this.appService.appObject.orderObject.selectedTable : ' , this.appService.appObject.orderObject.selectedTable); 8317 this.appService.updateAppObject(); 8318 if (!this.isFromMenuPage) { 8319 this.router.navigate(['restaurant', this.tableSelectRestaurant.slug]); 8320 } 8321 // this.dismiss(); 8322 this.modalController.dismiss({ 8323 'dismissed': true, 8324 }); 8325 } 8326 } 8327 /** 8328 * Start countdown when user has already unpaid kitchen order 8329 * @param slug slug to redirect after countdown 8330 */ 8331 startCountDown(slug) { 8332 let int = setInterval(() => { 8333 this.remaningTime--; 8334 if (!this.remaningTime) { 8335 clearInterval(int); 8336 this.router.navigate(['restaurant', slug]); 8337 this.dismiss(); 8338 } 8339 }, 1000); 8340 } 8341 /** 8342 * Redirect user to favourite 8343 */ 8344 redirectTofavouriteRestaurant() { 8345 if (this.appService.appObject.favouriteRestaurant && this.appService.appObject.favouriteRestaurant.slug) { 8346 this.router.navigate(['restaurant', this.appService.appObject.favouriteRestaurant.slug]); 8347 if (this.redirectIntervel) { 8348 clearInterval(this.redirectIntervel); 8349 this.redirectIntervel = null; 8350 } 8351 this.dismiss(); 8352 } 8353 } 8354 changeFavouriteRestaurant() { 8355 return (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__awaiter)(this, void 0, void 0, function* () { 8356 this.appService.appObject.favouriteRestaurant = null; 8357 this.appService.updateAppObject(); 8358 this.modalController.dismiss(); 8359 let componentProps = { 8360 'currentUI': 'order-type', 8361 'selectFavouriteRestaurant': true 8362 }; 8363 const cartModal = yield this.modalController.create({ 8364 component: SelectOrderTypePage_1, 8365 cssClass: 'custom-popup', 8366 componentProps: componentProps 8367 }); 8368 yield cartModal.present(); 8369 }); 8370 }
8371 goToNearbyRestaurantList() { 8372 return (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__awaiter)(this, void 0, void 0, function* () { 8373 yield this.appService.getRestaurantListForFavourite(); 8374 if (!this.appService.appObject.restaurants.length) { 8375 this.appService.appObject.errors['address'] = ['there_are_no_restaurants_available_around_selected_address_at_the_moment']; 8376 return; 8377 } 8378 this.router.navigate(['restaurant-list'], { queryParams: { selectfavourite: true } }); 8379 this.dismiss(); 8380 }); 8381 } 8382 /** 8383 * When user select delivery type from favourite restaurant 8384 * @param option selected option 8385 */ 8386 onFavoriteModeDeliveryMethodSelect(option) { 8387 this.appService.appObject.selectedDeliveryMethod = option; 8388 this.appService.updateAppObject(); 8389 if (option !== 'delivery') { 8390 this.router.navigate(['restaurant', this.appService.appObject.favouriteRestaurant.slug]); 8391 this.dismiss(); 8392 } 8393 else { 8394 // console.log('delivery selected'); 8395 this.currentUI = 'delivery-address'; 8396 // this.currentUI = 'delivery-address'; 8397 if (this.appService.appObject.myAddress.name == "" && this.appService.appObject.myAddress.lat == "" && this.appService.appObject.myAddress.lng == "") { 8398 this.appService.getCurrentLocation(); 8399 } 8400 this.appService.appObject.selectedDeliveryMethod = option; 8401 this.appService.updateAppObject(); 8402 this.isFavouriteRestaurantDeliverySearch = true; 8403 // initialize google places auto complete input once delivery selected 8404 this.appService.appObject.isLoading = true; 8405 setTimeout(() => { 8406 this.appService.initGoogle(this.googleaddress); 8407 this.appService.appObject.isLoading = false; 8408 }, 2000); 8409 } 8410 } 8411 /** 8412 * 8413 * @param ev event 8414 */ 8415 getPostalItems(ev) { 8416 this.appService.appObject.errors = []; 8417 const val = ev.target.value; 8418 if (val && val.trim() !== '') { 8419 this.isPostalItemAvailable = true; 8420 this.postalFilterItem = this.postalCodeList.filter((item) => item.name.toLowerCase().startsWith(val.toLowerCase()) || item.code.toLowerCase().startsWith(val.toLowerCase())); 8421 // this.postalFilterItem = this.postalFilterItem.slice(0, 2) 8422 } 8423 else { 8424 this.isPostalItemAvailable = false; 8425 this.selectedArea = null; 8426 } 8427 } 8428 /** 8429 * 8430 * @param Obj selected postal obj 8431 */ 8432 selectPostalCode(Obj) { 8433 this.selectedArea = Obj; 8434 this.selected_postal = Obj.code + ' - ' + Obj.name; 8435 } 8436}; 8437SelectOrderTypePage.ctorParameters = () => [ 8438 { type: _ionic_angular__WEBPACK_IMPORTED_MODULE_4__.ModalController }, 8439 { type: src_app_api_app_service_service__WEBPACK_IMPORTED_MODULE_2__.AppServiceService }, 8440 { type: _ngx_translate_core__WEBPACK_IMPORTED_MODULE_5__.TranslateService }, 8441 { type: _angular_router__WEBPACK_IMPORTED_MODULE_6__.Router } 8442]; 8443SelectOrderTypePage.propDecorators = { 8444 just_select_address: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_7__.Input }], 8445 just_select_order_type: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_7__.Input }], 8446 currentUI: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_7__.Input }], 8447 selected_branch: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_7__.Input }], 8448 selectFavouriteRestaurant: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_7__.Input }], 8449 showAll: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_7__.Input }], 8450 tableSelectRestaurant: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_7__.Input }], 8451 is_from_checkout_page: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_7__.Input }], 8452 googleaddress: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_7__.ViewChild, args: ['googleaddress', { read: _ionic_angular__WEBPACK_IMPORTED_MODULE_4__.IonInput },] }], 8453 isFromMenuPage: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_7__.Input }] 8454}; 8455SelectOrderTypePage = SelectOrderTypePage_1 = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__decorate)([ 8456 (0,_angular_core__WEBPACK_IMPORTED_MODULE_7__.Component)({ 8457 selector: 'app-select-order-type', 8458 template: _raw_loader_select_order_type_page_html__WEBPACK_IMPORTED_MODULE_0__.default, 8459 styles: [_select_order_type_page_scss__WEBPACK_IMPORTED_MODULE_1__.default] 8460 }) 8461], SelectOrderTypePage); 8462 8463 8464 8465/***/ }), 8466 8467/***/ 85300: 8468/*!********************************************************!*\ 8469 !*** ./src/app/views/modals/toppings/toppings.page.ts ***! 8470 \********************************************************/ 8471/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 8472 8473"use strict"; 8474__webpack_require__.r(__webpack_exports__); 8475/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8476/* harmony export */ "ToppingsPage": function() { return /* binding */ ToppingsPage; } 8477/* harmony export */ }); 8478/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ 64762); 8479/* harmony import */ var _raw_loader_toppings_page_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !raw-loader!./toppings.page.html */ 2614); 8480/* harmony import */ var _toppings_page_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./toppings.page.scss */ 75423); 8481/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/core */ 37716); 8482/* harmony import */ var _ionic_angular__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @ionic/angular */ 80476); 8483/* harmony import */ var src_app_api_app_service_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! src/app/api/app-service.service */ 95670); 8484/* harmony import */ var _cart_cart_page__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../cart/cart.page */ 728); 8485 8486 8487 8488 8489 8490 8491 8492let ToppingsPage = class ToppingsPage { 8493 constructor(modalController, appService, cdRef) { 8494 var _a, _b, _c, _d; 8495 this.modalController = modalController; 8496 this.appService = appService; 8497 this.cdRef = cdRef; 8498 this.autoSelected = []; 8499 this.radioColor = (((_b = (_a = this.appService.appObject) === null || _a === void 0 ? void 0 : _a.theme[this.appService.themeConfigFor]) === null || _b === void 0 ? void 0 : _b.primaryColor) ? (_d = (_c = this.appService.appObject) === null || _c === void 0 ? void 0 : _c.theme[this.appService.themeConfigFor]) === null || _d === void 0 ? void 0 : _d.primaryColor : '') + ' !important;'; 8500 // console.log(this.appService.selectedDish); 8501 this.appService.appObject.errors = []; 8502 this.appService.hideCartButton = true; 8503 } 8504 ngOnInit() { 8505 } 8506 ngDoCheck() { 8507 var _a; 8508 this.radioColor = ((_a = this.appService.appObject.theme[this.appService.themeConfigFor]) === null || _a === void 0 ? void 0 : _a.primaryColor) || ''; 8509 } 8510 // solution for ngCheckedAfterExpressionChanged exception, check it again 8511 ngAfterViewInit() { 8512 this.cdRef.detectChanges(); 8513 } 8514 dismiss() { 8515 return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function* () { 8516 // console.log(this.appService.hideCartButton); 8517 this.modalController.dismiss({ 8518 'dismissed': true 8519 }); 8520 if (this.appService.cartIsOpen) { 8521 const modal = yield this.modalController.create({ 8522 component: _cart_cart_page__WEBPACK_IMPORTED_MODULE_3__.CartPage, 8523 cssClass: 'custom-popup' 8524 }); 8525 yield modal.present(); 8526 } 8527 else { 8528 this.appService.hideCartButton = false;
8529 } 8530 }); 8531 } 8532 /** 8533 * Will return only active scenarios 8534 * @param scenarioList scenario list to filter from 8535 * @returns filtered scenario list 8536 */ 8537 getActiveScenarios(scenarioList) { 8538 if (scenarioList && scenarioList.length) { 8539 let activeScenarios = scenarioList.filter((scenario) => scenario.status === 'true'); 8540 return activeScenarios.sort((a, b) => a.position - b.position); 8541 } 8542 else { 8543 return []; 8544 } 8545 } 8546 /** 8547 * Will return status active topping list 8548 * @param toppingList topping list to filter from 8549 * @returns filtered topping list that status is active 8550 */ 8551 getActiveToppings(toppingList) { 8552 if (toppingList && toppingList.length) { 8553 return toppingList.filter((topping) => { 8554 return topping.status === 'true'; 8555 }); 8556 } 8557 else { 8558 return []; 8559 } 8560 } 8561 autoSelect(topings, index, fun) { 8562 switch (fun) { 8563 case 'selectTopingOp': 8564 this.appService.selectTopingOp(null, index); 8565 break; 8566 default: 8567 break; 8568 } 8569 // console.log('auto', topings[0]['id']); 8570 return topings[0]['id']; 8571 } 8572 addFirstToping(id, index) { 8573 var ex = this.autoSelected.indexOf(id); 8574 if (ex == -1) { 8575 this.autoSelected.push(id); 8576 // console.log(id, index); 8577 this.appService.selectTopingOp2({ detail: { value: id } }, index); 8578 } 8579 } 8580}; 8581ToppingsPage.ctorParameters = () => [ 8582 { type: _ionic_angular__WEBPACK_IMPORTED_MODULE_5__.ModalController }, 8583 { type: src_app_api_app_service_service__WEBPACK_IMPORTED_MODULE_2__.AppServiceService }, 8584 { type: _angular_core__WEBPACK_IMPORTED_MODULE_6__.ChangeDetectorRef } 8585]; 8586ToppingsPage.propDecorators = { 8587 isFromCrossSelling: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_6__.Input }], 8588 radioColor: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_6__.HostBinding, args: ['style.--radio-color',] }] 8589}; 8590ToppingsPage = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__decorate)([ 8591 (0,_angular_core__WEBPACK_IMPORTED_MODULE_6__.Component)({ 8592 selector: 'app-toppings', 8593 template: _raw_loader_toppings_page_html__WEBPACK_IMPORTED_MODULE_0__.default, 8594 styles: [_toppings_page_scss__WEBPACK_IMPORTED_MODULE_1__.default] 8595 }) 8596], ToppingsPage); 8597 8598 8599 8600/***/ }), 8601 8602/***/ 65524: 8603/*!****************************************************************************!*\ 8604 !*** ./src/app/views/web-views/shared/modal-popover/modal-popover.page.ts ***! 8605 \****************************************************************************/ 8606/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 8607 8608"use strict"; 8609__webpack_require__.r(__webpack_exports__); 8610/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8611/* harmony export */ "ModalPopoverPage": function() { return /* binding */ ModalPopoverPage; } 8612/* harmony export */ }); 8613/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ 64762); 8614/* harmony import */ var _raw_loader_modal_popover_page_html__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !raw-loader!./modal-popover.page.html */ 10167); 8615/* harmony import */ var _modal_popover_page_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modal-popover.page.scss */ 47167); 8616/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @angular/core */ 37716); 8617/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/router */ 39895); 8618/* harmony import */ var _ionic_angular__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @ionic/angular */ 80476); 8619/* harmony import */ var _api_app_service_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../api/app-service.service */ 95670); 8620/* harmony import */ var _constatnts_json__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constatnts.json */ 20991); 8621/* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @angular/platform-browser */ 39075); 8622/* harmony import */ var _ngx_translate_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @ngx-translate/core */ 29790); 8623/* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/common/http */ 91841); 8624var ModalPopoverPage_1; 8625 8626 8627 8628 8629 8630 8631 8632 8633 8634 8635 8636 8637let ModalPopoverPage = ModalPopoverPage_1 = class ModalPopoverPage { 8638 constructor(modalCtr, appService, router, httpClient, sanitizer, translate) { 8639 this.modalCtr = modalCtr; 8640 this.appService = appService; 8641 this.router = router; 8642 this.httpClient = httpClient; 8643 this.sanitizer = sanitizer; 8644 this.translate = translate; 8645 this.POPOVER_TYPES = _constatnts_json__WEBPACK_IMPORTED_MODULE_3__.POPOVER_TYPES;
8646 // This will keep records while navigate between components inside popover 8647 // Used to manage navigateBackward function 8648 this.historyStack = []; 8649 // when page click, slug need to be sent 8650 this.slug = null; 8651 this.isOrderProcessing = false; 8652 // Dish image preview url for DISH_IMAGE_PREVIEW 8653 this.dishImageURL = ''; 8654 // cross selling component data set 8655 this.crossSellingProducts = []; 8656 this.isInQuestionDishesPage = false; 8657 this.selectedQuestionCategory = null; 8658 this.justSelectDeliveryAddress = false; 8659 // close popup after selecting delivery address 8660 // @Input() closeAfterSelection: boolean = false; 8661 this.isContentLoading = false; 8662 this.isRestaurantsAvailable = true; 8663 this.address = ''; 8664 this.htmlContent = ''; 8665 // payment id after placing order in checkout 8666 this.uniqueId = ''; 8667 // reservation success message html content 8668 this.reservationSuccess = ''; 8669 this.selectedBranch = null; 8670 this.previousAddressData = null; 8671 this.addressInputChanged = false; 8672 this.isFromCheckoutToLocationSelect = false; 8673 this.backFromAddressSelect = false; 8674 // dine in available table list of selected restaurant 8675 this.selectedRestaurantTableList = []; 8676 this.justToSelectATable = false; 8677 this.origin = ''; 8678 this.loadingTables = false; 8679 this.selectedTable = null; 8680 this.selectedRestaurant = null; 8681 this.showPreviousPendingPaymentOrder = false; 8682 this.previousRestaurant = null; 8683 // select favourite restaurant modal status 8684 this.selectfavouriteRestaurant = false; 8685 // keep temp selected ordering type to use when franchise mode is on 8686 this.tempSelectedOrderType = ''; 8687 this.loadingFavourite = false; 8688 this.redirectIntervel = null; 8689 this.favouriteRedirectCountDown = 10; 8690 // when franchise mode is on, there is a special way to get available delivery methods 8691 // check all the branches and get all available delivery methods 8692 this.availableDeliveryMethodsFranchise = []; 8693 // select just order type from menu page 8694 this.justSelectOrderType = false;
8695 this.favouriteRestaurantDeliveryMethods = []; 8696 this.fromFavouriteIcon = false; 8697 /** 8698 * when user already has a favourite restauratn and select delivery as order method 8699 * so need to select where to deliver 8700 */ 8701 this.isFavouriteRestaurantDeliverySearch = false; 8702 //postal code 8703 this.postalCodeRestaurantList = []; 8704 this.postalCodeList = []; 8705 this.selectedArea = null; 8706 this.postalFilterItem = []; 8707 this.isPostalItemAvailable = false; 8708 this.isPostalModeEnable = false; 8709 this.selected_postal = ''; 8710 this.lang = null; 8711 this.todayDate = new Date(); 8712 } 8713 ngOnInit() { 8714 var _a; 8715 return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function* () { 8716 if (!this.selectedBranch && this.appService.appObject.settings && this.appService.appObject.settings.is_franchise === 'true' && this.type === this.POPOVER_TYPES.DELIVERY_TYPE.TYPE) { 8717 this.availableDeliveryMethodsFranchise = this.appService.getAvailableOrderMethodsFromBranches(); 8718 } 8719 else if (this.selectedBranch) { 8720 this.appService.findSelectedRestaurantOrderTypesV2(this.selectedBranch); 8721 } 8722 else if (this.justSelectOrderType) { 8723 this.availableDeliveryMethodsFranchise = this.appService.findSelectedRestaurantOrderTypesV2(this.appService.appObject.selectedRestaurantDetails, true).deliveryMethods; 8724 } 8725 if (this.type === 'delivery-type' && !this.selectedBranch && !this.justToSelectATable && this.appService.appObject.settings.is_franchise === 'true' && ((_a = this.appService.appObject.settings.app_configuration) === null || _a === void 0 ? void 0 : _a.has_multiple_restaurants) && this.appService.appObject.favouriteRestaurant) { 8726 // console.log('has favourite'); 8727 this.type = this.POPOVER_TYPES.FAVOURITE_RESTAURANT.TYPE; 8728 this.title = this.POPOVER_TYPES.FAVOURITE_RESTAURANT.TITLE; 8729 // this.currentUI = 'redirect-to_favourite'; 8730 this.loadingFavourite = true; 8731 yield this.appService.getFavouriteRestaurantData(this.appService.appObject.favouriteRestaurant.slug); 8732 this.favouriteRestaurantDeliveryMethods = this.appService.findSelectedRestaurantOrderTypesV2(this.appService.appObject.favouriteRestaurant, true).deliveryMethods; 8733 this.loadingFavourite = false; 8734 // this.redirectIntervel = setInterval(() => { 8735 // this.favouriteRedirectCountDown--; 8736 // if (this.favouriteRedirectCountDown === 0) { 8737 // this.clearRedirectInterval(); 8738 // this.redirectTofavouriteRestaurant(); 8739 // } 8740 // },1000); 8741 return; 8742 } 8743 // enable google auto complete for search near by restaurants for make favourite 8744 if (this.selectfavouriteRestaurant) { 8745 if (navigator.geolocation && !this.appService.appObject.isAddressHave) { 8746 this.getCurrentLocation(); 8747 } 8748 else if (!this.appService.appObject.myAddress || !this.appService.appObject.myAddress.name) { 8749 this.address = ''; 8750 } 8751 setTimeout(() => { 8752 this.appService.initGoogle(this.googleaddress); 8753 }, 1000); 8754 } 8755 // set custom size to modal when restaurant select or restaurant selected message popup open 8756 if (this.type === this.POPOVER_TYPES.FAVOURITE_RESTAURANT_SELECT.TYPE) { 8757 let elem = document.getElementsByClassName('modal-wrapper'); 8758 if (elem && elem.length) 8759 elem.item(0).setAttribute('style', 'width:350px;height:125px;'); 8760 } 8761 else if (this.type === this.POPOVER_TYPES.FAVOURITE_RESTAURANT_SELECT.TYPE || this.type === this.POPOVER_TYPES.FAVOURITE_RESTAURANT_SELECTED.TYPE) { 8762 let elem = document.getElementsByClassName('modal-wrapper'); 8763 if (elem && elem.length) 8764 elem.item(0).setAttribute('style', 'width:350px;height:150px;'); 8765 } 8766 if (this.appService.appObject.settings.is_postalcode === 'true') { 8767 this.getPostalCodeList(); 8768 // set if already has selected postal area in app object 8769 if (this.justSelectDeliveryAddress && this.appService.appObject.postalCodeDetails) { 8770 this.selectedArea = this.appService.appObject.postalCodeDetails; 8771 this.selected_postal = this.selectedArea.code + ' - ' + this.selectedArea.name; 8772 } 8773 } 8774 this.getLang(); 8775 }); 8776 } 8777 /** 8778 * Ask to select favourite restaurant accept triggering function 8779 */ 8780 chooseFavouriteRestaurant() { 8781 this.modalCtr.dismiss({ status: true }); 8782 } 8783 /** 8784 * After entering address search restaurants for mark as favourites 8785 */ 8786 favouriteRestaurantSearch() { 8787 return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function* () { 8788 yield this.appService.getRestaurantListForFavourite(); 8789 this.selectfavouriteRestaurant = true; 8790 this.type = this.POPOVER_TYPES.RESTAURANT_SELECT.TYPE; 8791 this.title = this.POPOVER_TYPES.RESTAURANT_SELECT.TIT
8791LE; 8792 this.historyStack.push(this.POPOVER_TYPES.FAVOURITE_RESTAURANT_SEARCH); 8793 }); 8794 } 8795 /** 8796 * Clear user redirect to favourite restaurant interval 8797 * @param dismiss dismiss after clear interval 8798 */ 8799 clearRedirectInterval(dismiss = false) { 8800 if (this.redirectIntervel) { 8801 clearInterval(this.redirectIntervel); 8802 this.redirectIntervel = null; 8803 } 8804 if (dismiss) 8805 this.close(); 8806 } 8807 /** 8808 * Redirect user to favourite 8809 */ 8810 redirectTofavouriteRestaurant() { 8811 if (this.appService.appObject.favouriteRestaurant && this.appService.appObject.favouriteRestaurant.slug) { 8812 this.router.navigate(['/menu', this.appService.appObject.favouriteRestaurant.slug]); 8813 if (this.redirectIntervel) { 8814 clearInterval(this.redirectIntervel); 8815 this.redirectIntervel = null; 8816 } 8817 this.close(); 8818 } 8819 } 8820 changeFavouriteRestaurant() { 8821 this.appService.appObject.favouriteRestaurant = null; 8822 this.appService.updateAppObject(); 8823 this.selectfavouriteRestaurant = true; 8824 this.type = this.POPOVER_TYPES.FAVOURITE_RESTAURANT_SEARCH.TYPE; 8825 this.title = this.POPOVER_TYPES.FAVOURITE_RESTAURANT_SEARCH.TITLE; 8826 this.clearRedirectInterval(); 8827 if (navigator.geolocation && !this.appService.appObject.isAddressHave) { 8828 this.getCurrentLocation(); 8829 } 8830 else if (!this.appService.appObject.myAddress || !this.appService.appObject.myAddress.name) { 8831 this.address = ''; 8832 } 8833 else if (this.appService.appObject.myAddress && this.appService.appObject.myAddress.name) { 8834 this.address = this.appService.appObject.myAddress.name; 8835 } 8836 setTimeout(() => { 8837 this.appService.initGoogle(this.googleaddress); 8838 }, 1000); 8839 } 8840 ngAfterViewInit() { 8841 if (this.type === this.POPOVER_TYPES.LOCATION_SELECT.TYPE || this.type === this.POPOVER_TYPES.FAVOURITE_RESTAURANT_SEARCH.TYPE) { 8842 setTimeout(() => (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function* () { 8843 yield this.appService.initGoogle(this.googleaddress); 8844 // get existing address from app object each time go to the address select ui 8845 // if (this.type === this.POPOVER_TYPES.LOCATION_SELECT.TYPE) { 8846 // } 8847 this.address = this.appService.appObject.myAddress && this.appService.appObject.myAddress.name ? this.appService.appObject.myAddress.name : ''; 8848 }), 1000); 8849 } 8850 } 8851 close(closingData = null) { 8852 return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function* () { 8853 // if user close without choosing an address, previous address data will reassigned 8854 if (this.historyStack.length && this.historyStack[this.historyStack.length - 1].TYPE === this.POPOVER_TYPES.CHECKOUT.TYPE && this.type === this.POPOVER_TYPES.LOCATION_SELECT.TYPE && this.addressInputChanged) { 8855 this.appService.appObject.myAddress = Object.assign({}, this.previousAddressData); 8856 } 8857 yield this.modalCtr.dismiss(closingData); 8858 }); 8859 } 8860 /** 8861 * Will trigger when user click back btn from the view delivery address select 8862 */ 8863 navigateBackward() { 8864 if (this.historyStack.length) { 8865 // if user came back from location select ui to checkout page this will trigger 8866 if (this.historyStack[this.historyStack.length - 1].TYPE === this.POPOVER_TYPES.CHECKOUT.TYPE && this.type === this.POPOVER_TYPES.LOCATION_SELECT.TYPE) { 8867 if (this.addressInputChanged) 8868 this.appService.appObject.myAddress = Object.assign({}, this.previousAddressData); 8869 this.backFromAddressSelect = true; 8870 } 8871 // get previous page and navigate 8872 this.navigateTo(this.historyStack[this.historyStack.length - 1], null, true); 8873 // remove the last record each time user navigate to previous page 8874 this.historyStack.splice(this.historyStack.length - 1, 1); 8875 } 8876 } 8877 /** 8878 * Navigate to another modal content or a page in web version 8879 * @param location the location to navigate 8880 * @param extraData extra data set if want to 8881 * @param isBackwardNavigating check wether user navigating backward (this one use to manage historyStack array) 8882 */ 8883 navigateTo(location, extraData = null, isBackwardNavigating = false) { 8884 return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function* () { 8885 if (location === 'restaurant-list') { 8886 // clear error messages 8887 this.appService.appObject.errors = []; 8888 // clear my address data when user need all restaurants to select 8889 let getAllRestaurants = false;
8890 if (extraData === 'all') { 8891 getAllRestaurants = true; 8892 } 8893 setTimeout(() => { 8894 this.appService.appObject.isLoading = true; 8895 }, 100); 8896 // find restaurants 8897 this.appService.findNearByRestaurants(false, getAllRestaurants).then((response) => (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function* () { 8898 setTimeout(() => { 8899 this.appService.appObject.isLoading = false; 8900 }, 100); 8901 // if has selected branch, check it's avialble for selected address to delivery 8902 // if it is then go to menu page, otherwise display an errror message 8903 if (this.selectedBranch) { 8904 let restaurant = this.appService.appObject.restaurants.find((restaurant) => restaurant.id === this.selectedBranch.id); // this.selectedBranch.id 8905 if (restaurant) { 8906 this.router.navigate(['/menu', restaurant.slug]); 8907 this.close(); 8908 // await this.appService.getRestaurantBySlug(restaurant.slug).then((response) => { 8909 // this.router.navigate(['/menu']); 8910 // this.close(); 8911 // }); 8912 } 8913 else { 8914 this.appService.appObject.errors['address'] = ['selected_restaurant_cannot_delivery_to_selected_address']; 8915 return; 8916 } 8917 } 8918 // if multiple restaurants is disabled then navigate directly into main restaurant menu page 8919 if (this.appService.appObject.settings && this.appService.appObject.settings.app_configuration && !this.appService.appObject.settings.app_configuration.has_multiple_restaurants) { 8920 /** 8921 * 2022-10-07 9.18 p.m by Pumayk26 8922 * the restaurant won't deliver to the user selected location 8923 * haven't receive any restaurant nearby entered location this is a patch for an issue found in 'gusto bonn' 8924 * user entered an invalid address / not delivery location address, but still navigate into menu page 8925 * to avoid this issue added below if condition and check delivery method is 'delivery' but no restaurants returned by 8926 * 'findNearByRestaurants()' function 8927 **/ 8928 /* PATCH START */ 8929 if (this.appService.appObject.selectedDeliveryMethod === 'delivery' && !this.appService.appObject.restaurants.length) { 8930 this.appService.appObject.errors['address'] = ['sorry_we_are_not_delivery_to_this_location']; 8931 return; 8932 } 8933 /* PATCH END */ 8934 if (this.appService.appObject.settings.main_restaurant && this.appService.appObject.settings.main_restaurant.slug) 8935 this.navigateTo('menu-page', this.appService.appObject.settings.main_restaurant); 8936 return; 8937 } 8938 if (this.appService.appObject.restaurants && this.appService.appObject.restaurants.length > 1) { 8939 // keep navigation history to navigate backward (just like in angular routing) 8940 if (getAllRestaurants) { 8941 this.historyStack.push(this.POPOVER_TYPES.DELIVERY_TYPE); 8942 } 8943 else { 8944 this.historyStack.push(this.POPOVER_TYPES.LOCATION_SELECT); 8945 } 8946 this.type = this.POPOVER_TYPES.RESTAURANT_SELECT.TYPE; 8947 // always send the title as language key 8948 this.title = this.POPOVER_TYPES.RESTAURANT_SELECT.TIT
8948LE; 8949 } 8950 else if (this.appService.appObject.restaurants && this.appService.appObject.restaurants.length === 1) { 8951 // keep navigation history to navigate backward (just like in angular routing) 8952 if (getAllRestaurants) { 8953 this.historyStack.push(this.POPOVER_TYPES.DELIVERY_TYPE); 8954 } 8955 else { 8956 this.historyStack.push(this.POPOVER_TYPES.LOCATION_SELECT); 8957 } 8958 this.type = this.POPOVER_TYPES.RESTAURANT_SELECT.TYPE; 8959 // always send the title as language key 8960 this.title = this.POPOVER_TYPES.RESTAURANT_SELECT.TITLE; 8961 // old code before 8962 // if (this.appService.appObject.restaurants[0].slug) this.navigateTo('menu-page', this.appService.appObject.restaurants[0]); 8963 } 8964 else if (!this.appService.appObject.restaurants || !this.appService.appObject.restaurants.length) { 8965 this.appService.appObject.errors['address'] = ['selected_restaurant_cannot_delivery_to_selected_address']; 8966 this.translate.get('key.there_is_no_' + this.appService.appObject.selectedDeliveryMethod + '_available_restaurants_at_the_moment').toPromise().then((data) => { 8967 this.appService.showToast(data, 'danger', 'bottom', 5000); 8968 }).catch((err) => { 8969 console.log('error while fetching not available : ', err); 8970 }); 8971 } 8972 })); 8973 } 8974 else if (location === 'menu-page') { 8975 if (extraData) { 8976 // if bar mode enabled and selected order type is dine_in, then allow user to select a table before ordering 8977 if (extraData.is_bar_mode === 'true' && this.appService.appObject.selectedDeliveryMethod === 'dine_in') { 8978 this.handleBarModeNavigations(extraData); 8979 // this.appService.appObject.isLoading = true; 8980 // this.selectedRestaurantTableList = []; 8981 // this.selectedTable = null; 8982 // // get user unpaid orders if availabel to avoid placing orders on table else 8983 // await this.appService.getUserUnpaidActiveOrders(); 8984 // // check if user have a pending order in kitchen, otherwise allow user to select a table and procced order 8985 // if (this.appService.appObject.orderObject && this.appService.appObject.orderObject.selectedTable) { 8986 // // get unpaid order restaurant details 8987 // let selectedRestaurant = this.appService.appObject.restaurants.find((rest) => rest.id === this.appService.appObject.orderObject.resturent_id); 8988 // // if the current selected restaurant and the previously ordered restaurnt is the same, Then proceed 8989 // // otherwise show a message to the user that he has an pending payment order in another restaurant and redirect into that restaurant 8990 // if (this.appService.appObject.orderObject.resturent_id === extraData.id) { 8991 // this.appService.appObject.selectedRestaurantId = extraData.id; 8992 // await this.appService.updateAppObject(); 8993 // this.router.navigate(['/menu', selectedRestaurant.slug]); 8994 // this.close(); 8995 // } else if (this.appService.appObject.orderObject.resturent_id === selectedRestaurant.id) { 8996 // this.type = this.POPOVER_TYPES.TABLE_SELECT.TYPE; 8997 // this.title = this.POPOVER_TYPES.TABLE_SELECT.TITLE; 8998 // this.showPreviousPendingPaymentOrder = true; 8999 // this.previousRestaurant = { 9000 // name: selectedRestaurant.name, 9001 // number: this.appService.appObject.orderObject.selectedTable.number, 9002 // countDown: 5, 9003 // slug: selectedRestaurant.slug 9004 // }; 9005 // // clear the history stack, no need to navigate back because user will redirect into the restaurant menu and popup will be closed 9006 // this.historyStack = []; 9007 // this.appService.appObject.isLoading = false;
9008 // let interval = setInterval((int) => { 9009 // this.previousRestaurant.countDown--; 9010 // // console.log('this.previousRestaurant: ' , this.previousRestaurant.count); 9011 // if (this.previousRestaurant.countDown === 0) { 9012 // clearInterval(interval); 9013 // this.router.navigate(['/menu', this.previousRestaurant.slug]); 9014 // this.close(); 9015 // } 9016 // }, 1000) 9017 // } 9018 // } else { 9019 // this.historyStack.push(this.POPOVER_TYPES.RESTAURANT_SELECT); 9020 // this.type = this.POPOVER_TYPES.TABLE_SELECT.TYPE; 9021 // this.title = this.POPOVER_TYPES.TABLE_SELECT.TITLE; 9022 // // keep restaurant data to navigate after selecting table 9023 // this.selectedRestaurant = extraData; 9024 // this.appService.fetchAllTablesOfRestaurant(extraData.id).then((response: any) => { 9025 // // console.log('table data : ' , response); 9026 // if (response.status) this.selectedRestaurantTableList = response.data; 9027 // this.appService.appObject.isLoading = false; 9028 // }).catch((error) => { 9029 // console.log('error while fetching tables : ', error); 9030 // this.appService.appObject.isLoading = false; 9031 // }); 9032 // } 9033 } 9034 else { 9035 if (this.selectfavouriteRestaurant) { 9036 this.appService.appObject.favouriteRestaurant = extraData; 9037 yield this.appService.updateAppObject(); 9038 } 9039 this.router.navigate(['/menu', extraData.slug], { 9040 queryParams: { 9041 markedAsFavourite: this.selectfavouriteRestaurant ? true : false 9042 } 9043 }); 9044 this.close(); 9045 } 9046 // this.appService.getRestaurantBySlug(extraData.slug).then((response) => { 9047 // this.router.navigate(['/menu']); 9048 // this.close(); 9049 // }); 9050 } 9051 else { 9052 this.router.navigate(['/menu', this.appService.appObject.selectedRestaurant]); 9053 this.close(); 9054 } 9055 } 9056 else if (location && location.TYPE && location.TITLE) { 9057 // keep navigation history to navigate backward (just like in angular routing) 9058 // skip recording when user navigate backward with "isBackwardNavigating" condition 9059 // the second condition will prevent user go back to login form after login in to the user profile 9060 if (!isBackwardNavigating && !(location.TYPE === this.POPOVER_TYPES.USER_PROFILE.TYPE && this.type === this.POPOVER_TYPES.LOGIN.TYPE)) { 9061 Object.keys(this.POPOVER_TYPES).map((key) => { 9062 if (this.POPOVER_TYPES[key].TYPE === this.type) { 9063 this.historyStack.push(this.POPOVER_TYPES[key]); 9064 } 9065 }); 9066 } 9067 // this will prevent user go back to registration form after successfuly registered and navigate in to the user profile 9068 // or user came to login page from checkout page and redirected into checkout page after logged in (prevent go back to login ui) 9069 // or user came to checkout page from login > register , and checkout, then prevent go back to registration page 9070 // or user came to order summary from checkout page and prevent go back to checkout page from summary page 9071 // or user came to delivery address select from login page prevent go back to login page 9072 if ((location.TYPE === this.POPOVER_TYPES.USER_PROFILE.TYPE && (this.t
9072ype === this.POPOVER_TYPES.REGISTER.TYPE || this.type === this.POPOVER_TYPES.REGISTER_VIA.TYPE)) 9073 || ((this.type === this.POPOVER_TYPES.LOGIN.TYPE 9074 || this.type === this.POPOVER_TYPES.REGISTER.TYPE 9075 || this.type === this.POPOVER_TYPES.REGISTER_VIA.TYPE) 9076 && location.TYPE === this.POPOVER_TYPES.CHECKOUT.TYPE) 9077 || this.type === this.POPOVER_TYPES.CHECKOUT.TYPE && location.TYPE === this.POPOVER_TYPES.ORDER_SUMMARY.TYPE 9078 || this.type === this.POPOVER_TYPES.LOGIN.TYPE && location.TYPE === this.POPOVER_TYPES.LOCATION_SELECT.TYPE) { 9079 this.historyStack = []; 9080 } 9081 // get existing address from app object each time go to the address select ui or search nearby ui 9082 if (location.TYPE === this.POPOVER_TYPES.LOCATION_SELECT.TYPE || location.TYPE === this.POPOVER_TYPES.FAVOURITE_RESTAURANT_SEARCH.TYPE) { 9083 this.address = this.appService.appObject.myAddress && this.appService.appObject.myAddress.name ? this.appService.appObject.myAddress.name : ''; 9084 } 9085 // if user navigate to location select from checkout page, keep a record that will return from location select page to checkout page any time 9086 if (this.type === this.POPOVER_TYPES.CHECKOUT.TYPE && location.TYPE === this.POPOVER_TYPES.LOCATION_SELECT.TYPE) { 9087 // keep if there is an address already selected 9088 if (this.appService.appObject.myAddress) 9089 this.previousAddressData = Object.assign({}, this.appService.appObject.myAddress); 9090 this.isFromCheckoutToLocationSelect = true; 9091 } 9092 else { 9093 this.isFromCheckoutToLocationSelect = false; 9094 } 9095 this.type = location.TYPE; 9096 this.title = location.TITLE; 9097 // reset history stack if the current page is login, once user reset password successfuly navigate to login 9098 // login is a main page so no need to go back to password reset ui 9099 if (this.type === this.POPOVER_TYPES.LOGIN.TYPE) { 9100 this.historyStack = []; 9101 } 9102 // if next page is for select locations to find restaurants, then initialize google map service 9103 if (location.TYPE === this.POPOVER_TYPES.LOCATION_SELECT.TYPE || location.TYPE === this.POPOVER_TYPES.FAVOURITE_RESTAURANT_SEARCH.TYPE) { 9104 if (!this.isPostalModeEnable) { 9105 if (navigator.geolocation && !this.appService.appObject.isAddressHave) { 9106 this.getCurrentLocation(); 9107 } 9108 else if (!this.appService.appObject.myAddress || !this.appService.appObject.myAddress.name) { 9109 this.address = ''; 9110 } 9111 setTimeout(() => { 9112 this.appService.initGoogle(this.googleaddress); 9113 }, 1000); 9114 } 9115 else { 9116 // set if already has selected postal area in app object 9117 if (this.appService.appObject.postalCodeDetails) { 9118 this.selectedArea = this.appService.appObject.postalCodeDetails; 9119 this.selected_postal = this.selectedArea.code + ' - ' + this.selectedArea.name; 9120 } 9121 } 9122 } 9123 } 9124 }); 9125 } 9126 /** 9127 * Clear selected postal data 9128 */ 9129 clearPostalArea() { 9130 this.selectedArea = null; 9131 this.selected_postal = ''; 9132 this.appService.appObject.postalCodeDetails = null; 9133 this.appService.updateAppObject(); 9134 } 9135 getCurrentLocation() { 9136 this.appService.appObject.isLoading = true; 9137 navigator.geolocation.getCurrentPosition((position) => { 9138 const longitude = position.coords.longitude; 9139 const latitude = position.coords.latitude;
9140 this.httpClient.get("https://maps.googleapis.com/maps/api/geocode/json?latlng=" + latitude + "," + longitude + "&sensor=true&key=" + config.gkey).toPromise().then((response) => { 9141 // console.log('response : ', response) 9142 if (response.status === 'OK') { 9143 let place = null; 9144 let isAddressValid = false; 9145 for (let i = 0; i < response.results.length; i++) { 9146 let validateResult = this.appService.validateAddressComponents(response.results[i].address_components); 9147 // if place is null, then assign one place object to get formatted address 9148 place = !place ? response.results[i] : place; 9149 if (this.appService.isAddressComponentValid(validateResult)) { 9150 isAddressValid = true; 9151 place = response.results[i]; 9152 break; 9153 } 9154 } 9155 // console.log('addressValidating : ' , addressValidating); 9156 if (isAddressValid && place) { 9157 // console.log('place : ' , place); 9158 let postal, city, road = ''; 9159 this.address = ''; 9160 for (let i = 0; i < place['address_components'].length; i++) { 9161 let result = place['address_components'][i]; 9162 if (result['types'][0] == "postal_code") { 9163 postal = result['short_name']; 9164 } 9165 if (result['types'][0] == "locality") { 9166 city = result['short_name']; 9167 } 9168 if (result['types'][0] == "route") { 9169 road = result['short_name']; 9170 } 9171 if (postal && city && road) { 9172 this.address = road + ', ' + postal + ', ' + city; 9173 } 9174 } 9175 this.appService.appObject.isAddressHave = true; 9176 // let address_splited = place.formatted_address.split(','); 9177 // this.address = place.formatted_address; 9178 // let country = address_splited[address_splited.length - 1]; 9179 // if (country.trim() === 'Germany') { 9180 // this.address = this.address.replace(", Germany", ""); 9181 // } 9182 this.appService.appObject.myAddress.name = this.address; 9183 // console.log(this.appService.appObject.myAddress.name); 9184 this.appService.appObject.myAddress.lat = place.geometry.location.lat; 9185 this.appService.appObject.myAddress.lng = place.geometry.location.lng; 9186 this.appService.updateAppObject(); 9187 this.appService.appObject.errors = []; 9188 } 9189 else { 9190 this.address = place.formatted_address; 9191 this.appService.appObject.isAddressHave = false; 9192 this.appService.appObject.myAddress.name = ''; 9193 this.appService.appObject.myAddress.lat = ''; 9194 this.appService.appObject.myAddress.lng = ''; 9195 this.appService.updateAppObject(); 9196 this.appService.appObject.errors['address'] = ['address_is_not_valid']; 9197 } 9198 } 9199 this.appService.appObject.isLoading = false; 9200 }).catch((error) => { 9201 console.log('google location error : ', error); 9202 this.appService.appObject.isLoading = false; 9203 }); 9204 }, (error) => { 9205 this.appService.appObject.isLoading = false; 9206 if (error && error.code == error.PERMISSION_DENIED) {
9207 this.translate.get(['key.please_allow_location_permission_to_get_your_current_location']).toPromise().then((response) => { 9208 this.appService.showToast(response['key.please_allow_location_permission_to_get_your_current_location'] ? response['key.please_allow_location_permission_to_get_your_current_location'] : 'key.please_allow_location_permission_to_get_your_current_location'); 9209 }).catch((error) => { 9210 console.log('error : ', error); 9211 this.appService.showToast('key.please_allow_location_permission_to_get_your_current_location'); 9212 }); 9213 } 9214 }); 9215 } 9216 /** 9217 * This will pass as a callback into login component to trigger once user logged in 9218 * This also used to pass into registration component as a call back to get trigger once user successfuly registered and logged in 9219 * and return login operation response data set 9220 * @param loginResponse after login response object 9221 */ 9222 onLoginSuccess(loginResponse) { 9223 var _a, _b; 9224 return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function* () { 9225 yield this.appService.updateAppObject(); 9226 if (this.appService.appObject.isOrderProcess) { 9227 if (this.appService.appObject.selectedDeliveryMethod === 'delivery' && this.appService.appObject.settings.is_postalcode === 'true' && (!this.appService.appObject.postalCodeDetails || !this.appService.appObject.postalCodeDetails.code)) { 9228 this.navigateTo(this.POPOVER_TYPES.LOCATION_SELECT); 9229 return; 9230 } 9231 if (((_b = (_a = this.appService) === null || _a === void 0 ? void 0 : _a.appObject) === null || _b === void 0 ? void 0 : _b.selectedDeliveryMethod) === 'delivery' && (!this.appService.appObject.myAddress || !this.appService.appObject.myAddress.name 9232 || !this.appService.appObject.myAddress.lat || !this.appService.appObject.myAddress.lng)) { 9233 // this.justSelectDeliveryAddress = true; 9234 if (!this.isPostalModeEnable) 9235 this.navigateTo(this.POPOVER_TYPES.LOCATION_SELECT); 9236 // if postal code mode is on, then redirect strait into checkout page 9237 else 9238 this.navigateTo(this.POPOVER_TYPES.CHECKOUT); 9239 } 9240 else { 9241 // if user came to login page from checkout ui, then redirect into checkout page 9242 this.navigateTo(this.POPOVER_TYPES.CHECKOUT); 9243 } 9244 // make it false once user redirected to the checkout page 9245 this.appService.appObject.isOrderProcess = false; 9246 } 9247 else { 9248 this.navigateTo(this.POPOVER_TYPES.USER_PROFILE); 9249 } 9250 }); 9251 } 9252 /** 9253 * Wll call back when user select create an account option from login page 9254 */ 9255 onRegisterVia() { 9256 this.navigateTo(this.POPOVER_TYPES.REGISTER_VIA); 9257 } 9258 /** 9259 * This will call back when user select register with email option in register page 9260 */ 9261 onRegisterViaEmail() { 9262 this.navigateTo(this.POPOVER_TYPES.REGISTER); 9263 } 9264 /**
9265 * This will call back when user choose forgot password option in login page 9266 */ 9267 onForgotPassword() { 9268 this.navigateTo(this.POPOVER_TYPES.FORGOT_PASSWORD); 9269 } 9270 /** 9271 * This will call back when user reset password successfuly 9272 */ 9273 onPasswordResetSuccess() { 9274 this.navigateTo(this.POPOVER_TYPES.LOGIN); 9275 } 9276 /** 9277 * This will navigate into dynamic pages slug is required 9278 * used for pnp and tnc 9279 * @param slug page slug 9280 */ 9281 onNavigatePages(slug) { 9282 let pages = this.appService && this.appService.appObject && this.appService.appObject.settings && this.appService.appObject.settings.pages ? this.appService.appObject.settings.pages : []; 9283 let page = pages.find((page) => page.slug === slug); 9284 if (page) { 9285 this.slug = page.slug; 9286 this.navigateTo({ TYPE: this.POPOVER_TYPES.PAGES.TYPE, TITLE: page.name }); 9287 } 9288 } 9289 /** 9290 * On user change the delivery address from checkout page 9291 */ 9292 onChangeDeliveryAddress() { 9293 this.navigateTo(this.POPOVER_TYPES.LOCATION_SELECT); 9294 } 9295 /** 9296 * Will trigger when user checkout as a guest user 9297 * @param paymentId payment id of the placed order 9298 */ 9299 onOrderPlaced(paymentId, deliveryType) { 9300 if (paymentId) { 9301 this.uniqueId = paymentId; 9302 this.navigateTo({ TYPE: this.POPOVER_TYPES.ORDER_SUMMARY.TYPE, TITLE: 'key.' + deliveryType }); 9303 } 9304 } 9305 /** 9306 * Will trigger when user select ordering type 9307 * @param orderType selected ordering type 9308 */ 9309 selectOrderType(orderType) { 9310 return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function* () { 9311 let selectedRestaurant = this.appService.appObject.selectedRestaurantDetails; 9312 if (this.origin === 'web-menu' && orderType === 'dine_in') { 9313 if (selectedRestaurant.is_bar_mode === 'true') { 9314 this.appService.appObject.isLoading = true; 9315 yield this.appService.getUserUnpaidActiveOrders(); 9316 } 9317 } 9318 else if (this.appService.appObject.selectedDeliveryMethod === 'dine_in' && selectedRestaurant.is_bar_mode === 'true') { 9319 this.appService.clearCart(); 9320 } 9321 this.appService.appObject.selectedDeliveryMethod = orderType; 9322 this.appService.updateAppObject(); 9323 if (!this.selectedBranch) 9324 yield this.appService.calculateCartAmounts(); 9325 this.appService.appObject.isLoading = false; 9326 // this moved from html template page 9327 if (this.type === this.POPOVER_TYPES.ORDERING_TYPE.TYPE) 9328 this.close(); 9329 }); 9330 } 9331 /** 9332 * Will trigger when user go to question page opening after adding item into cart 9333 * @param categoryData selected category data 9334 */ 9335 openQuestionDishPage(categoryData) { 9336 if (categoryData) 9337 this.selectedQuestionCategory = categoryData; 9338 } 9339 /** 9340 * Will trigger when user click back button from cross selling dishes list page 9341 */ 9342 navigateBackwardFromQuestionPage() { 9343 this.selectedQuestionCategory = null; 9344 this.crossSelling.navigateBackInWebVersion(); 9345 } 9346 /** 9347 * Will trigger when user successfully created a reservation 9348 * @param response response from table reservation form 9349 */ 9350 onReservationSuccess(response) { 9351 if (response) { 9352 this.reservationSuccess = response; 9353 this.title = 'key.reservation_request_submitted'; 9354 // change the hight of the popup container to get nicer look of the success message 9355 let element = document.getElementsByClassName('modal-wrapper'); 9356 // console.log('element : ', element); 9357 if (element && element[0]) { 9358 element[0].classList.add('height-300-px'); 9359 } 9360 } 9361 } 9362 /** 9363 * location select page action button 9364 */ 9365 addressSelectAction() { 9366 if (this.isFromCheckoutToLocationSelect || this.justSelectDeliveryAddress || this.isFavouriteRestaurantDeliverySearch) { 9367 this.addressInputChanged = false;
9368 this.appService.findNearByRestaurants('do-not-redirect', false).then((response) => (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function* () { 9369 if (this.isFromCheckoutToLocationSelect || this.justSelectDeliveryAddress) { 9370 let selectedBranch = this.appService.appObject.restaurants.find((restaurant) => restaurant.id === this.appService.appObject.selectedRestaurantDetails.id); 9371 if (selectedBranch) { 9372 // this.address 9373 yield this.appService.getRestaurantBySlug(selectedBranch.slug); 9374 yield this.appService.calculateCartAmounts(); 9375 if (!this.justSelectDeliveryAddress && this.isFromCheckoutToLocationSelect) 9376 this.navigateBackward(); 9377 else 9378 this.close(); 9379 } 9380 else { 9381 this.appService.clearAddress('selected_restaurant_cannot_delivery_to_selected_address'); 9382 } 9383 } 9384 else if (this.isFavouriteRestaurantDeliverySearch) { // when user from selected favourite restaurant delivery type select 9385 let favouriteBranch = this.appService.appObject.restaurants.find((restaurant) => restaurant.id === this.appService.appObject.favouriteRestaurant.id); 9386 if (favouriteBranch) { 9387 this.router.navigate(['menu', this.appService.appObject.favouriteRestaurant.slug]); 9388 this.close(); 9389 } 9390 else { 9391 this.appService.clearAddress('your_favourite_restaurant_cannot_delivery_to_selected_address'); 9392 } 9393 } 9394 })).catch((error) => { 9395 console.log('error : ', error); 9396 }); 9397 } 9398 else { 9399 this.navigateTo('restaurant-list'); 9400 } 9401 } 9402 /** 9403 * Will trigger when user select a table from table list 9404 * @param selectedTable selected table object 9405 */ 9406 onSelectTable(selectedTable) { 9407 // console.log('selectedTable : ', selectedTable); 9408 this.selectedTable = Object.assign({}, selectedTable); 9409 // console.log('justToSelectATable : ' , ); 9410 this.appService.appObject.orderObject.selectedTable = this.selectedTable; 9411 if (this.justToSelectATable) { 9412 this.close({ status: true }); 9413 } 9414 if (this.selectedRestaurant && this.selectedRestaurant.slug) { 9415 this.appService.updateAppObject(); 9416 this.router.navigate(['/menu', this.selectedRestaurant.slug]); 9417 this.close(); 9418 } 9419 } 9420 /** 9421 * This function will handle when bar mode is enabled and user select dine_in as ordering option 9422 * @param extraData currently selected restaurant data 9423 */ 9424 handleBarModeNavigations(extraData) { 9425 return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function* () { 9426 this.appService.appObject.isLoading = true; 9427 this.selectedRestaurantTableList = []; 9428 this.selectedTable = null; 9429 // get user unpaid orders if availabel to avoid placing orders on table else 9430 yield this.appService.getUserUnpaidActiveOrders(); 9431 // check if user have a pending order in kitchen, otherwise allow user to select a table and procced order 9432 if (this.appService.appObject.orderObject && this.appService.appObject.orderObject.selectedTable) { 9433 // get unpaid order restaurant details 9434 let selectedRestaurant = this.appService.appObject.restaurants.find((rest) => rest.id === this.appService.appObject.orderObject.resturent_id); 9435 // if the current selected restaurant and the previously ordered restaurnt is the same, Then proceed 9436 // otherwise show a message to the user that he has an pending payment order in another restaurant and redirect into that restaurant 9437 if (this.appService.appObject.orderObject.resturent_id === extraData.id) { 9438 this.appService.appObject.selectedRestaurantId = extraData.id; 9439 yield this.appService.updateAppObject(); 9440 this.router.navigate(['/menu', selectedRestaurant.slug]); 9441 this.close(); 9442 } 9443 else if (this.appService.appObject.orderObject.resturent_id === selectedRestaurant.id) { 9444 this.type = this.POPOVER_TYPES.TABLE_SELECT.TYPE; 9445 this.title = this.POPOVER_TYPES.TABLE_SELECT.TIT
9445LE; 9446 this.showPreviousPendingPaymentOrder = true; 9447 this.previousRestaurant = { 9448 name: selectedRestaurant.name, 9449 number: this.appService.appObject.orderObject.selectedTable.number, 9450 countDown: 5, 9451 slug: selectedRestaurant.slug 9452 }; 9453 // clear the history stack, no need to navigate back because user will redirect into the restaurant menu and popup will be closed 9454 this.historyStack = []; 9455 this.appService.appObject.isLoading = false; 9456 let interval = setInterval((int) => { 9457 this.previousRestaurant.countDown--; 9458 // console.log('this.previousRestaurant: ' , this.previousRestaurant.count); 9459 if (this.previousRestaurant.countDown === 0) { 9460 clearInterval(interval); 9461 this.router.navigate(['/menu', this.previousRestaurant.slug]); 9462 this.close(); 9463 } 9464 }, 1000); 9465 } 9466 } 9467 else { 9468 this.historyStack.push(this.POPOVER_TYPES.RESTAURANT_SELECT); 9469 this.type = this.POPOVER_TYPES.TABLE_SELECT.TYPE; 9470 this.title = this.POPOVER_TYPES.TABLE_SELECT.TITLE; 9471 // keep restaurant data to navigate after selecting table 9472 this.selectedRestaurant = extraData; 9473 this.appService.fetchAllTablesOfRestaurant(extraData.id).then((response) => { 9474 // console.log('table data : ' , response); 9475 if (response.status) 9476 this.selectedRestaurantTableList = response.data; 9477 this.appService.appObject.isLoading = false; 9478 }).catch((error) => { 9479 console.log('error while fetching tables : ', error); 9480 this.appService.appObject.isLoading = false; 9481 }); 9482 } 9483 }); 9484 } 9485 /** 9486 * Related to the point system, if user decide to go back and login to account for purchase rewards, this function will call 9487 */ 9488 onBackLoginFromCheckout() { 9489 this.historyStack = []; 9490 this.isOrderProcessing = true; 9491 this.type = this.POPOVER_TYPES.LOGIN.TYPE; 9492 this.title = this.POPOVER_TYPES.LOGIN.TITLE; 9493 } 9494 /** 9495 * Mark selected restaurant as favourite 9496 * @param restaurant selected restaurant object 9497 */ 9498 markRestaurantAsFavourite(restaurant) { 9499 return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function* () { 9500 this.appService.appObject.favouriteRestaurant = restaurant; 9501 yield this.appService.updateAppObject(); 9502 this.modalCtr.dismiss(); 9503 const modal = yield this.modalCtr.create({ 9504 component: ModalPopoverPage_1, 9505 cssClass: 'custom-popup', 9506 componentProps: { 9507 'type': this.POPOVER_TYPES.FAVOURITE_RESTAURANT_SELECTED.TYPE, 9508 'title': this.POPOVER_TYPES.FAVOURITE_RESTAURANT_SELECTED.TITLE 9509 }, 9510 keyboardClose: false 9511 }); 9512 setTimeout(() => (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function* () { 9513 yield modal.present(); 9514 }), 1000); 9515 }); 9516 } 9517 /** 9518 * When user select delivery type from favourite restaurant 9519 * @param option selected option 9520 */ 9521 onFavoriteModeDeliveryMethodSelect(option) { 9522 this.appService.appObject.selectedDeliveryMethod = option; 9523 this.appService.updateAppObject(); 9524 if (option === 'delivery') { 9525 this.isFavouriteRestaurantDeliverySearch = true; 9526 this.navigateTo(this.POPOVER_TYPES.LOCATION_SELECT); 9527 } 9528 else { 9529 this.close(); 9530 this.router.navigate(['menu', this.appService.appObject.favouriteRestaurant.slug]); 9531 } 9532 // if (this.appService.appObject.favouriteRestaurant.is_bar_mode === 'true' && this.appService.appObject.selectedDeliveryMethod === 'dine_in') {
9533 // this.handleBarModeNavigations(this.appService.appObject.favouriteRestaurant); 9534 // }else{ 9535 // this.close(); 9536 // this.router.navigate(['menu',this.appService.appObject.favouriteRestaurant.slug]); 9537 // } 9538 } 9539 /** 9540 * get postal code list 9541 */ 9542 getPostalCodeList() { 9543 return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function* () { 9544 this.postalCodeRestaurantList = []; 9545 this.postalCodeList = []; 9546 this.selectedArea = null; 9547 // this.appService.getAllRestaurants().then((response: any) => { 9548 // if (response.status) { 9549 // this.postalCodeRestaurantList = response.data.filter((restaurant) => restaurant.is_postalcode === 'true'); 9550 // for (let index = 0; index < this.postalCodeRestaurantList.length; index++) { 9551 // const element = this.postalCodeRestaurantList[index]; 9552 // // convert into json object 9553 // element.postal_code_details = element.postal_code_details ? JSON.parse(element.postal_code_details) : [] 9554 // this.postalCodeList = this.postalCodeList.concat(element.postal_code_details); 9555 // } 9556 // // remove duplicated postal codes 9557 // this.postalCodeList = [...new Map(this.postalCodeList.map((m) => [m.code, m])).values()]; 9558 // } 9559 // console.log('this.postalCodeList : ', this.postalCodeList); 9560 // }).catch((error) => { 9561 // console.log('error : ', error); 9562 // }); 9563 this.appService.getAllRestaurants().then((response) => { 9564 if (response.status) { 9565 this.postalCodeRestaurantList = response.data.filter((restaurant) => restaurant.postal_code_details_v2); 9566 for (let index = 0; index < this.postalCodeRestaurantList.length; index++) { 9567 const element = this.postalCodeRestaurantList[index]; 9568 // convert into json object 9569 // element.postal_code_details = element.postal_code_details ? JSON.parse(element.postal_code_details) : [] 9570 element.postal_code_details = element.postal_code_details_v2; 9571 for (let index1 = 0; index1 < element.postal_code_details.length; index1++) { 9572 // get each postal code data and put into postalCodeList global array 9573 // if multiple restaurants deliver to the same postal code, all prices will be available in 9574 // selected postal code object 9575 const postalCodeData = element.postal_code_details[index1]; 9576 let found = this.postalCodeList.find((post) => post.code === postalCodeData.code && post.name === postalCodeData.name); 9577 // to avoid duplicates, check by postal code and prices 9578 if (found) { 9579 found.price.push({ restaurantId: element.id, postalId: postalCodeData.id, cost: postalCodeData.cost, minOrderAmount: postalCodeData.min_order, time_slots: postalCodeData.time_slots }); 9580 } 9581 else { 9582 let postalData = { 9583 code: postalCodeData.code, 9584 name: postalCodeData.name, 9585 price: [{ restaurantId: element.id, postalId: postalCodeData.id, time_slots: postalCodeData.time_slots, cost: postalCodeData.cost, minOrderAmount: postalCodeData.min_order }] 9586 }; 9587 this.postalCodeList.push(postalData); 9588 } 9589 } 9590 } 9591 } 9592 }).catch((error) => { 9593 console.log('error : ', error); 9594 }); 9595 this.isPostalModeEnable = this.appService.appObject.settings.is_franchise === 'true' ? false : this.appService.appObject.settings.is_postalcode == 'true' ? true : false;
9596 }); 9597 } 9598 /** 9599 * 9600 * @param ev event 9601 */ 9602 getPostalItems(ev) { 9603 this.appService.appObject.errors = []; 9604 const val = ev.target.value; 9605 if (val && val.trim() !== '') { 9606 this.isPostalItemAvailable = true; 9607 this.postalFilterItem = this.postalCodeList.filter((item) => item.name.toLowerCase().startsWith(val.toLowerCase()) || item.code.toLowerCase().startsWith(val.toLowerCase())); 9608 // this.postalFilterItem = this.postalFilterItem.slice(0, 2) 9609 } 9610 else { 9611 this.isPostalItemAvailable = false; 9612 this.selectedArea = null; 9613 } 9614 } 9615 /** 9616 * 9617 * @param item selected postal item 9618 */ 9619 selectPostalCode(item) { 9620 this.selectedArea = item; 9621 this.selected_postal = item.code + ' - ' + item.name; 9622 } 9623 /** 9624 * postal code select and click ok btn 9625 */ 9626 onPostalCodeSelect() { 9627 return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function* () { 9628 if (this.selectedArea == null) { 9629 this.appService.appObject.errors['postalCode'] = ['select_postal_code']; 9630 return; 9631 } 9632 this.appService.appObject.postalCodeDetails = this.selectedArea; 9633 yield this.appService.updateAppObject(); 9634 // if user came to just select address area or already decide which branch to visit 9635 if (this.justSelectDeliveryAddress || this.selectedBranch) { 9636 let postalDetails = []; 9637 if (this.justSelectDeliveryAddress) { 9638 postalDetails = this.appService.appObject.selectedRestaurantDetails.postal_code_details_v2 ? this.appService.appObject.selectedRestaurantDetails.postal_code_details_v2 : []; 9639 } 9640 else { 9641 postalDetails = this.selectedBranch.postal_code_details_v2 ? this.selectedBranch.postal_code_details_v2 : []; 9642 } 9643 if (!Array.isArray(postalDetails)) 9644 postalDetails = JSON.parse(postalDetails); 9645 // console.log('postalDetails : ' , postalDetails); 9646 let postalData = postalDetails.find((postal) => postal.code === this.selectedArea.code && postal.name === this.selectedArea.name); 9647 if (!postalData) 9648 this.appService.showToast(this.lang.selected_restaurent_not_delivery_area, 'danger'); 9649 else { 9650 // if branch already selected then redirect into menu page before dismiss the popup 9651 if (this.selectedBranch) 9652 this.router.navigate(['/menu', this.selectedBranch.slug]); 9653 this.modalCtr.dismiss(); 9654 } 9655 return; 9656 } 9657 let restaurent = this.postalCodeRestaurantList.filter((obj) => obj.postal_code_details_v2.some((postal) => postal.code == this.selectedArea.code && postal.name == this.selectedArea.name)); 9658 // when user trying to checkout without login and no address area selected 9659 // once user logged in if there is no address area selected, user will redirect to address area select ui, 9660 // then once user select area do all the validations and move to the checkout page 9661 if (this.isOrderProcessing) { 9662 let postalDetails = this.appService.appObject.selectedRestaurantDetails.postal_code_details_v2 ? this.appService.appObject.selectedRestaurantDetails.postal_code_details_v2 : []; 9663 if (!Array.isArray(postalDetails)) 9664 postalDetails = JSON.parse(postalDetails); 9665 let postalData = postalDetails.find((postal) => postal.code === this.selectedArea.code && postal.name === this.selectedArea.name); 9666 if (!postalData) 9667 this.appService.showToast('selected restaurant won\'t delivery to selected area', 'danger'); 9668 else { 9669 this.type = this.POPOVER_TYPES.CHECKOUT.TYPE; 9670 this.title = this.POPOVER_TYPES.CHECKOUT.TITLE; 9671 } 9672 return; 9673 } 9674 if (restaurent.length == 1) { 9675 this.appService.appObject.selectedRestaurantDetails = restaurent[0]; 9676 this.appService.appObject.selectedRestaurant = restaurent[0].slug; 9677 this.router.navigate(['/menu', this.appService.appObject.selectedRestaurant]); 9678 this.modalCtr.dismiss(); 9679 } 9680 else if (restaurent.length > 1) { 9681 this.appService.appObject.restaurants = restaurent; 9682 this.type = this.POPOVER_TYPES.RESTAURANT_SELECT.TYPE; 9683 this.title = this.POPOVER_TYPES.RESTAURANT_SELECT.TIT
9683LE; 9684 } 9685 else { 9686 console.log("Something wrong with modelpopOver 965"); 9687 } 9688 }); 9689 } 9690 /** 9691 * 9692 * get languages 9693 */ 9694 getLang() { 9695 return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function* () { 9696 yield this.translate.get('key').subscribe(value => { 9697 this.lang = value; 9698 }); 9699 }); 9700 } 9701 closeUnavailableNote() { 9702 return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function* () { 9703 (yield this.modalCtr.getTop()).dismiss(); 9704 }); 9705 } 9706}; 9707ModalPopoverPage.ctorParameters = () => [ 9708 { type: _ionic_angular__WEBPACK_IMPORTED_MODULE_5__.ModalController }, 9709 { type: _api_app_service_service__WEBPACK_IMPORTED_MODULE_2__.AppServiceService }, 9710 { type: _angular_router__WEBPACK_IMPORTED_MODULE_6__.Router }, 9711 { type: _angular_common_http__WEBPACK_IMPORTED_MODULE_7__.HttpClient }, 9712 { type: _angular_platform_browser__WEBPACK_IMPORTED_MODULE_8__.DomSanitizer }, 9713 { type: _ngx_translate_core__WEBPACK_IMPORTED_MODULE_9__.TranslateService } 9714]; 9715ModalPopoverPage.propDecorators = { 9716 googleaddress: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_10__.ViewChild, args: ['googleaddressweb', { read: _ionic_angular__WEBPACK_IMPORTED_MODULE_5__.IonInput },] }], 9717 crossSelling: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_10__.ViewChild, args: ['crossSelling',] }], 9718 name: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_10__.Input }], 9719 type: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_10__.Input }], 9720 title: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_10__.Input }], 9721 slug: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_10__.Input }], 9722 isOrderProcessing: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_10__.Input }], 9723 dishImageURL: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_10__.Input }], 9724 crossSellingProducts: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_10__.Input }], 9725 selectedDishCategory: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_10__.Input }], 9726 isFromCrossSelling: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_10__.Input }], 9727 justSelectDeliveryAddress: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_10__.Input }], 9728 htmlContent: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_10__.Input }], 9729 uniqueId: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_10__.Input }], 9730 selectedBranch: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_10__.Input }], 9731 selectedRestaurantTableList: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_10__.Input }], 9732 justToSelectATable: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_10__.Input }], 9733 origin: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_10__.Input }], 9734 selectfavouriteRestaurant: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_10__.Input }], 9735 justSelectOrderType: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_10__.Input }], 9736 fromFavouriteIcon: [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_10__.Input }] 9737}; 9738ModalPopoverPage = ModalPopoverPage_1 = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__decorate)([ 9739 (0,_angular_core__WEBPACK_IMPORTED_MODULE_10__.Component)({ 9740 selector: 'app-modal-popover', 9741 template: _raw_loader_modal_popover_page_html__WEBPACK_IMPORTED_MODULE_0__.default, 9742 styles: [_modal_popover_page_scss__WEBPACK_IMPORTED_MODULE_1__.default] 9743 }) 9744], ModalPopoverPage); 9745 9746 9747 9748/***/ }), 9749 9750/***/ 92340: 9751/*!*****************************************!*\ 9752 !*** ./src/environments/environment.ts ***! 9753 \*****************************************/ 9754/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 9755 9756"use strict"; 9757__webpack_require__.r(__webpack_exports__); 9758/* harmony export */ __webpack_require__.d(__webpack_exports__, { 9759/* harmony export */ "environment": function() { return /* binding */ environment; } 9760/* harmony export */ }); 9761// This file can be replaced during build by using the `fileReplacements` array. 9762// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. 9763// The list of file replacements can be found in `angular.json`. 9764const environment = { 9765 production: false, 9766 API_URL: 'https://api.toi-euskirchen.de/api/', 9767 BASE_URL: 'https://api.toi-euskirchen.de', 9768 DEFAULT_LANG: 'de', 9769 APP_VERSION: '4.1.2', 9770 GOOGLE_COUNTRIES: ["de"], 9771 GOOGLE_LOGIN_WEB_CLIENT_ID: '65878389371-fevipp0727iamaaimgfrtqtbo20hcnhv0.apps.googleusercontent.com', 9772 FACEBOOK_LOGIN_APP_ID: '10322122325652334', 9773 // theme configuration 9774 DEFAULT_PRIMARY_COLOR: '#cc1fb5', 9775 DEFAULT_PRIMARY_TEXT_COLOR: '#cc8a1f',
9776 // LAST_MADE_CHANGE:'4.1.0 : Support features implemented for new vacation mode + Maintenance mode' 9777 LAST_MADE_CHANGE: '4.1.2 : Display loading spinner while loading restaurants list in postal code select section' 9778}; 9779/* 9780 * For easier debugging in development mode, you can import the following file 9781 * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 9782 * 9783 * This import should be commented out in production mode because it will have a negative impact 9784 * on performance if an error is thrown. 9785 */ 9786// import 'zone.js/dist/zone-error'; // Included with Angular CLI. 9787 9788 9789/***/ }), 9790 9791/***/ 14431: 9792/*!*********************!*\ 9793 !*** ./src/main.ts ***! 9794 \*********************/ 9795/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 9796 9797"use strict"; 9798__webpack_require__.r(__webpack_exports__); 9799/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ 37716); 9800/* harmony import */ var _angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/platform-browser-dynamic */ 24608); 9801/* harmony import */ var _app_app_module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./app/app.module */ 36747); 9802/* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./environments/environment */ 92340); 9803 9804 9805 9806 9807if (_environments_environment__WEBPACK_IMPORTED_MODULE_1__.environment.production) { 9808 (0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.enableProdMode)(); 9809} 9810(0,_angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_3__.platformBrowserDynamic)().bootstrapModule(_app_app_module__WEBPACK_IMPORTED_MODULE_0__.AppModule) 9811 .catch(err => console.log(err)); 9812 9813 9814/***/ }), 9815 9816/***/ 50863: 9817/*!******************************************************************************************************************************************!*\ 9818 !*** ./node_modules/@ionic/core/dist/esm/ lazy ^\.\/.*\.entry\.js$ include: \.entry\.js$ exclude: \.system\.entry\.js$ namespace object ***! 9819 \******************************************************************************************************************************************/ 9820/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 9821 9822var map = { 9823 "./ion-action-sheet.entry.js": [ 9824 47321, 9825 "common", 9826 "node_modules_ionic_core_dist_esm_ion-action-sheet_entry_js" 9827 ], 9828 "./ion-alert.entry.js": [ 9829 36108, 9830 "common", 9831 "node_modules_ionic_core_dist_esm_ion-alert_entry_js" 9832 ], 9833 "./ion-app_8.entry.js": [ 9834 31489, 9835 "common", 9836 "node_modules_ionic_core_dist_esm_ion-app_8_entry_js" 9837 ], 9838 "./ion-avatar_3.entry.js": [ 9839 10305, 9840 "common", 9841 "node_modules_ionic_core_dist_esm_ion-avatar_3_entry_js" 9842 ], 9843 "./ion-back-button.entry.js": [ 9844 15830, 9845 "common", 9846 "node_modules_ionic_core_dist_esm_ion-back-button_entry_js" 9847 ], 9848 "./ion-backdrop.entry.js": [ 9849 37757, 9850 "node_modules_ionic_core_dist_esm_ion-backdrop_entry_js" 9851 ], 9852 "./ion-button_2.entry.js": [ 9853 30392, 9854 "common", 9855 "node_modules_ionic_core_dist_esm_ion-button_2_entry_js" 9856 ], 9857 "./ion-card_5.entry.js": [ 9858 66911, 9859 "common", 9860 "node_modules_ionic_core_dist_esm_ion-card_5_entry_js" 9861 ], 9862 "./ion-checkbox.entry.js": [ 9863 30937, 9864 "common", 9865 "node_modules_ionic_core_dist_esm_ion-checkbox_entry_js" 9866 ], 9867 "./ion-chip.entry.js": [ 9868 78695, 9869 "common", 9870 "node_modules_ionic_core_dist_esm_ion-chip_entry_js" 9871 ], 9872 "./ion-col_3.entry.js": [ 9873 16034, 9874 "node_modules_ionic_core_dist_esm_ion-col_3_entry_js" 9875 ], 9876 "./ion-datetime_3.entry.js": [ 9877 68837, 9878 "common", 9879 "node_modules_ionic_core_dist_esm_ion-datetime_3_entry_js" 9880 ], 9881 "./ion-fab_3.entry.js": [ 9882 34195, 9883 "common", 9884 "node_modules_ionic_core_dist_esm_ion-fab_3_entry_js" 9885 ], 9886 "./ion-img.entry.js": [ 9887 41709, 9888 "node_modules_ionic_core_dist_esm_ion-img_entry_js" 9889 ], 9890 "./ion-infinite-scroll_2.entry.js": [ 9891 33087, 9892 "node_modules_ionic_core_dist_esm_ion-infinite-scroll_2_entry_js" 9893 ], 9894 "./ion-input.entry.js": [ 9895 84513, 9896 "common", 9897 "node_modules_ionic_core_dist_esm_ion-input_entry_js" 9898 ], 9899 "./ion-item-option_3.entry.js": [ 9900 58056, 9901 "common", 9902 "node_modules_ionic_core_dist_esm_ion-item-option_3_entry_js" 9903 ], 9904 "./ion-item_8.entry.js": [ 9905 10862, 9906 "common", 9907 "node_modules_ionic_core_dist_esm_ion-item_8_entry_js" 9908 ], 9909 "./ion-loading.entry.js": [ 9910 7509, 9911 "common", 9912 "node_modules_ionic_core_dist_esm_ion-loading_entry_js" 9913 ], 9914 "./ion-menu_3.entry.js": [ 9915 76272, 9916 "common", 9917 "node_modules_ionic_core_dist_esm_ion-menu_3_entry_js" 9918 ], 9919 "./ion-modal.entry.js": [ 9920 71855, 9921 "common", 9922 "node_modules_ionic_core_dist_esm_ion-modal_entry_js" 9923 ], 9924 "./ion-nav_2.entry.js": [ 9925 38708, 9926 "common", 9927 "node_modules_ionic_core_dist_esm_ion-nav_2_entry_js" 9928 ], 9929 "./ion-popover.entry.js": [ 9930 23527, 9931 "common", 9932 "node_modules_ionic_core_dist_esm_ion-popover_entry_js" 9933 ], 9934 "./ion-progress-bar.entry.js": [ 9935 24694, 9936 "common", 9937 "node_modules_ionic_core_dist_esm_ion-progress-bar_entry_js" 9938 ], 9939 "./ion-radio_2.entry.js": [ 9940 19222, 9941 "common", 9942 "node_modules_ionic_core_dist_esm_ion-radio_2_entry_js" 9943 ], 9944 "./ion-range.entry.js": [
9945 25277, 9946 "common", 9947 "node_modules_ionic_core_dist_esm_ion-range_entry_js" 9948 ], 9949 "./ion-refresher_2.entry.js": [ 9950 39921, 9951 "common", 9952 "node_modules_ionic_core_dist_esm_ion-refresher_2_entry_js" 9953 ], 9954 "./ion-reorder_2.entry.js": [ 9955 83122, 9956 "common", 9957 "node_modules_ionic_core_dist_esm_ion-reorder_2_entry_js" 9958 ], 9959 "./ion-ripple-effect.entry.js": [ 9960 51602, 9961 "node_modules_ionic_core_dist_esm_ion-ripple-effect_entry_js" 9962 ], 9963 "./ion-route_4.entry.js": [ 9964 45174, 9965 "common", 9966 "node_modules_ionic_core_dist_esm_ion-route_4_entry_js" 9967 ], 9968 "./ion-searchbar.entry.js": [ 9969 7895, 9970 "common", 9971 "node_modules_ionic_core_dist_esm_ion-searchbar_entry_js" 9972 ], 9973 "./ion-segment_2.entry.js": [ 9974 76164, 9975 "common", 9976 "node_modules_ionic_core_dist_esm_ion-segment_2_entry_js" 9977 ], 9978 "./ion-select_3.entry.js": [ 9979 20592, 9980 "common", 9981 "node_modules_ionic_core_dist_esm_ion-select_3_entry_js" 9982 ], 9983 "./ion-slide_2.entry.js": [ 9984 27162, 9985 "node_modules_ionic_core_dist_esm_ion-slide_2_entry_js" 9986 ], 9987 "./ion-spinner.entry.js": [ 9988 81374, 9989 "common", 9990 "node_modules_ionic_core_dist_esm_ion-spinner_entry_js" 9991 ], 9992 "./ion-split-pane.entry.js": [ 9993 97896, 9994 "node_modules_ionic_core_dist_esm_ion-split-pane_entry_js" 9995 ], 9996 "./ion-tab-bar_2.entry.js": [ 9997 25043, 9998 "common", 9999 "node_modules_ionic_core_dist_esm_ion-tab-bar_2_entry_js" 10000 ], 10001 "./ion-tab_2.entry.js": [ 10002 77802, 10003 "common", 10004 "node_modules_ionic_core_dist_esm_ion-tab_2_entry_js" 10005 ], 10006 "./ion-text.entry.js": [ 10007 29072, 10008 "common", 10009 "node_modules_ionic_core_dist_esm_ion-text_entry_js" 10010 ], 10011 "./ion-textarea.entry.js": [ 10012 32191, 10013 "common", 10014 "node_modules_ionic_core_dist_esm_ion-textarea_entry_js" 10015 ], 10016 "./ion-toast.entry.js": [ 10017 40801, 10018 "common", 10019 "node_modules_ionic_core_dist_esm_ion-toast_entry_js" 10020 ], 10021 "./ion-toggle.entry.js": [ 10022 67110, 10023 "common", 10024 "node_modules_ionic_core_dist_esm_ion-toggle_entry_js" 10025 ], 10026 "./ion-virtual-scroll.entry.js": [ 10027 10431, 10028 "node_modules_ionic_core_dist_esm_ion-virtual-scroll_entry_js" 10029 ] 10030}; 10031function webpackAsyncContext(req) { 10032 if(!__webpack_require__.o(map, req)) { 10033 return Promise.resolve().then(function() { 10034 var e = new Error("Cannot find module '" + req + "'"); 10035 e.code = 'MODULE_NOT_FOUND'; 10036 throw e; 10037 }); 10038 } 10039 10040 var ids = map[req], id = ids[0]; 10041 return Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() { 10042 return __webpack_require__(id); 10043 }); 10044} 10045webpackAsyncContext.keys = function() { return Object.keys(map); }; 10046webpackAsyncContext.id = 50863; 10047module.exports = webpackAsyncContext; 10048 10049/***/ }), 10050 10051/***/ 43069: 10052/*!************************************!*\ 10053 !*** ./src/app/app.component.scss ***! 10054 \************************************/ 10055/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 10056 10057"use strict"; 10058__webpack_require__.r(__webpack_exports__); 10059/* harmony default export */ __webpack_exports__["default"] = ("ion-tabs,\nion-tab-bar,\nion-tab-button {\n contain: none;\n}\n\n.home-tab {\n height: 130px;\n margin-top: -50px;\n background: transparent;\n}\n\nion-tab-bar {\n height: 84px;\n}\n\nion-icon {\n font-size: 25px;\n}\n\nion-label {\n color: var(--ion-color-custom-black);\n font-size: 11px;\n font-weight: bold;\n margin-top: 10px;\n}\n\n/*menu*/\n\n.mt50 {\n margin-top: 50px;\n}\n\n.background {\n background-image: url(\"/assets/img/menubg.jpg\");\n padding-top: 50px;\n}\n\n.menu-list ion-icon {\n color: var(--ion-color-custom-fou-red);\n font-size: 20px;\n padding-left: 5px;\n margin-bottom: -5px;\n}\n\n.menu-list ion-item {\n --border: 0;\n --inner-border-width: 0;\n --font-size: 12px;\n}\n\n.menu-list .item:first-child {\n margin-top: 50px;\n}\n\n.menu-list .menu-item-text {\n font-size: 15px;\n margin-left: 10px;\n color: var(--ion-color-custom-fou-red);\n font-family: exo;\n font-weight: 600;\n margin-top: -5px;\n}\n\n.menu-item {\n font-size: 12px;\n display: block;\n width: 100%;\n margin-bottom: 25px;\n position: relative;\n z-index: 99;\n text-transform: uppercase;\n}\n\n.item-inner {\n --border: 0;\n}\n\n.zindex {\n position: relative;\n z-index: 99;\n}\n\n.transparent {\n background-color: var(--ion-color-custom-black);\n}\n\n.transparent .item-native {\n background-color: var(--ion-color-custom-red);\n}\n\n#background-content {\n background-color: transparent;\n}
10059\n\nion-content {\n --background: var(--side-menu-bakcground);\n}\n\n.menu-footer {\n position: absolute;\n width: 100%;\n /*padding: 0 10px; in case ayya request */\n bottom: 0px;\n}\n\n.menu-footer img {\n width: 100%;\n}\n\n.close-btn {\n text-align: right;\n font-size: 28px;\n color: var(--ion-color-custom-fou-red);\n position: absolute;\n right: 5px;\n z-index: 100;\n}\n\n.lang-con {\n width: 22px;\n height: 15px;\n display: inline-block;\n background-size: cover;\n background-position: center;\n margin-right: 10px;\n margin-bottom: -2px;\n border-radius: 3px;\n}\n\n.lang-con.de {\n background-image: url(\"/assets/img/languages/de.png\");\n}\n\n.lang-con.en {\n background-image: url(\"/assets/img/languages/en.png\");\n}\n\n.loading-center-full {\n display: block;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) scale(0.9);\n z-index: 2;\n}\n\n.full-loading-wrapper .backdrop {\n opacity: 0.5;\n width: 100%;\n height: 100%;\n background-color: var(--ion-color-custom-black);\n position: absolute;\n}\n\n.footer-menu-gm {\n bottom: 0px;\n position: fixed;\n width: 100%;\n color: var(--ion-color-white);\n background-color: var(--ion-color-custom-footer);\n}\n\n.footer-menu-gm button {\n background-color: transparent;\n width: 33%;\n padding: 10px 0px;\n}\n\n.footer-menu-gm button ion-icon {\n width: 100%;\n color: var(--ion-color-white);\n}\n\n.footer-menu-gm button ion-label {\n color: var(--ion-color-white);\n}\n\n.fotter_hei {\n height: 85px;\n}\n\n.cookies-banner {\n width: 100%;\n position: fixed;\n background: var(--cookie-banner-background);\n color: var(--cookie-banner-text);\n bottom: 0;\n display: flex;\n}\n\n.cookies-banner p {\n display: block;\n flex: 1 1 auto;\n max-width: 100%;\n margin: 12px;\n margin-right: 1em;\n margin-left: 1em;\n}\n\n.cookies-banner p .tnc,\n.cookies-banner p .privacy-policy {\n text-decoration: underline;\n}\n\n.cookies-banner p .tnc:hover,\n.cookies-banner p .privacy-policy:hover {\n cursor: pointer;\n}\n\n.cookies-banner .cookie-banner-buttons {\n display: flex;\n align-items: center;\n align-content: space-between;\n}\n\n.cookies-banner .cookie-banner-buttons .banner-buttons {\n display: block;\n padding: 10px;\n font-size: 0.9em;\n font-weight: 700;\n border-width: 2px;\n border-style: solid;\n text-align: center;\n white-space: nowrap;\n height: 100%;\n}\n\n.cookies-banner .cookie-banner-buttons .dismiss {\n background-color: transparent !important;\n border-color: transparent;\n color: var(--cookie-banner-dismiss-text);\n}\n\n.cookies-banner .cookie-banner-buttons .dismiss:hover {\n text-decoration: underline !important;\n cursor: pointer;\n}\n\n.cookies-banner .cookie-banner-buttons .got-it {\n color: var(--cookie-banner-accept-btn-text) !important;\n border-color: transparent !important;\n background-color: var(--cookie-banner-accept-btn-background);\n}\n\n.cookies-banner .cookie-banner-buttons .got-it:hover {\n text-decoration: underline !important;\n cursor: pointer;\n background-color: var(--cookie-banner-accept-btn-background-hover);\n}\n\n.main-outlet-content {\n height: calc(100% - 85px) !important;\n}\n\n.no-internet {\n z-index: 1;\n text-align: center;\n height: 100%;\n background: white;\n display: inline-grid;\n align-content: center;\n overflow-wrap: anywhere;\n}\n\n.no-internet-icon {\n font-size: 100px;\n}\n\n.no-internet-title {\n color: red;\n font-weight: bold;\n font-size: 30px;\n}\n\n.connection-msg {\n padding: 0px 20px;\n}\n\n.secret-div {\n z-index: 9999;\n position: absolute;\n top: 179px;\n left: 82px;\n width: 250px;\n height: 50px;\n box-shadow: 0 0 0 9999px rgba(9, 9, 9, 0.83);\n border-radius: 10px;\n}\n\n.app-banner {\n width: 100%;\n position: fixed;\n background: var(--get-app-banner-background);\n color: var(--cookie-banner-text);\n bottom: 0;\n display: flex;\n padding: 10px;\n}\n\n.app-banner .app-icon {\n height: 75px;\n width: 75px;\n background-repeat: no-repeat;\n background-size: cover;\n}\n\n.app-banner .text-container {\n padding-left: 15px;\n}\n\n.app-banner .text-container .app-name {\n margin-top: 2px !important;\n font-weight: bold;\n}\n\n.app-banner .close-btn-app-banner {\n position: absolute;\n right: 10px;\n top: -10px;\n background: #f03f3c;\n border: 1px #f03f3c solid;\n border-radius: 50%;\n font-size: 0px;\n}\n\n.app-banner .close-btn-app-banner ion-icon {\n color: white !important;\n font-size: 19px !important;\n}\n\n.app-banner .get-app-btn {\n background-color: var(--get-app-banner-btn);\n font-weight: bold;\n border-radius: 10px;\n color: black;\n height: -webkit-fit-content;\n height: -moz-fit-content;\n height: fit-content;\n padding-left: 10px;\n padding-right: 10px;\n text-transform: uppercase;\n position: absolute;\n right: 6%;\n top: 40%;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0VBR0UsYUFBQTtBQUNGOztBQUVBO0VBQ0UsYUFBQTtFQUNBLGlCQUFBO0VBQ0EsdUJBQUE7QUFDRjs7QUFFQTtFQUNFLFlBQUE7QUFDRjs7QUFFQTtFQUVFLGVBQUE7QUFBRjs7QUFHQTtFQUNFLG9DQUFBO0VBQ0EsZUFBQTtFQUNBLGlCQUFBO0VBQ0EsZ0JBQUE7QUFBRjs7QUFHQSxPQUFBOztBQUVBO0VBQ0UsZ0JBQUE7QUFERjs7QUFJQTtFQUNFLCtD
10059QUFBO0VBQ0EsaUJBQUE7QUFERjs7QUFLRTtFQUNFLHNDQUFBO0VBQ0EsZUFBQTtFQUNBLGlCQUFBO0VBQ0EsbUJBQUE7QUFGSjs7QUFLRTtFQUNFLFdBQUE7RUFDQSx1QkFBQTtFQUNBLGlCQUFBO0FBSEo7O0FBTUU7RUFDRSxnQkFBQTtBQUpKOztBQU9FO0VBQ0UsZUFBQTtFQUNBLGlCQUFBO0VBRUEsc0NBQUE7RUFDQSxnQkFBQTtFQUNBLGdCQUFBO0VBQ0EsZ0JBQUE7QUFOSjs7QUFVQTtFQUNFLGVBQUE7RUFFQSxjQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxXQUFBO0VBQ0EseUJBQUE7QUFSRjs7QUFXQTtFQUNFLFdBQUE7QUFSRjs7QUFXQTtFQUNFLGtCQUFBO0VBQ0EsV0FBQTtBQVJGOztBQVdBO0VBQ0UsK0NBQUE7QUFSRjs7QUFVRTtFQUNFLDZDQUFBO0FBUko7O0FBWUE7RUFDRSw2QkFBQTtBQVRGOztBQVlBO0VBQ0UseUNBQUE7QUFURjs7QUFZQTtFQUNFLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLHlDQUFBO0VBQ0EsV0FBQTtBQVRGOztBQVlFO0VBQ0UsV0FBQTtBQVZKOztBQWNBO0VBQ0UsaUJBQUE7RUFDQSxlQUFBO0VBR0Esc0NBQUE7RUFFQSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxZQUFBO0FBZEY7O0FBaUJBO0VBQ0UsV0FBQTtFQUNBLFlBQUE7RUFDQSxxQkFBQTtFQUNBLHNCQUFBO0VBQ0EsMkJBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7QUFkRjs7QUFnQkU7RUFDRSxxREFBQTtBQWRKOztBQWlCRTtFQUNFLHFEQUFBO0FBZko7O0FBbUJBO0VBQ0UsY0FBQTtFQUNBLGtCQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSwyQ0FBQTtFQUNBLFVBQUE7QUFoQkY7O0FBbUJBO0VBQ0UsWUFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsK0NBQUE7RUFDQSxrQkFBQTtBQWhCRjs7QUFtQ0E7RUFDRSxXQUFBO0VBQ0EsZUFBQTtFQUNBLFdBQUE7RUFDQSw2QkFBQTtFQUNBLGdEQUFBO0FBaENGOztBQW1DQTtFQUNFLDZCQUFBO0VBQ0EsVUFBQTtFQUNBLGlCQUFBO0FBaENGOztBQW1DQTtFQUNFLFdBQUE7RUFDQSw2QkFBQTtBQWhDRjs7QUFtQ0E7RUFDRSw2QkFBQTtBQWhDRjs7QUFtQ0E7RUFDRSxZQUFBO0FBaENGOztBQW1DQTtFQUNFLFdBQUE7RUFDQSxlQUFBO0VBQ0EsMkNBQUE7RUFDQSxnQ0FBQTtFQUNBLFNBQUE7RUFDQSxhQUFBO0FBaENGOztBQWtDRTtFQUNFLGNBQUE7RUFDQSxjQUFBO0VBQ0EsZUFBQTtFQUNBLFlBQUE7RUFDQSxpQkFBQTtFQUNBLGdCQUFBO0FBaENKOztBQWtDSTs7RUFFRSwwQkFBQTtBQWhDTjs7QUFrQ007O0VBQ0UsZUFBQTtBQS9CUjs7QUFvQ0U7RUFDRSxhQUFBO0VBQ0EsbUJBQUE7RUFDQSw0QkFBQTtBQWxDSjs7QUFvQ0k7RUFDRSxjQUFBO0VBQ0EsYUFBQTtFQUNBLGdCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxtQkFBQTtFQUNBLFlBQUE7QUFsQ047O0FBcUNJO0VBQ0Usd0NBQUE7RUFDQSx5QkFBQTtFQUNBLHdDQUFBO0FBbkNOOztBQXFDTTtF
10059QUNFLHFDQUFBO0VBQ0EsZUFBQTtBQW5DUjs7QUF1Q0k7RUFDRSxzREFBQTtFQUNBLG9DQUFBO0VBQ0EsNERBQUE7QUFyQ047O0FBdUNNO0VBQ0UscUNBQUE7RUFDQSxlQUFBO0VBQ0Esa0VBQUE7QUFyQ1I7O0FBMkNBO0VBQ0Usb0NBQUE7QUF4Q0Y7O0FBMkNBO0VBQ0UsVUFBQTtFQUNBLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBO0VBQ0Esb0JBQUE7RUFDQSxxQkFBQTtFQUNBLHVCQUFBO0FBeENGOztBQTJDQTtFQUNFLGdCQUFBO0FBeENGOztBQTJDQTtFQUNFLFVBQUE7RUFDQSxpQkFBQTtFQUNBLGVBQUE7QUF4Q0Y7O0FBMkNBO0VBQ0UsaUJBQUE7QUF4Q0Y7O0FBMkNBO0VBVUUsYUFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLFVBQUE7RUFDQSxZQUFBO0VBQ0EsWUFBQTtFQUNBLDRDQUFBO0VBQ0EsbUJBQUE7QUFqREY7O0FBb0RBO0VBQ0UsV0FBQTtFQUNBLGVBQUE7RUFDQSw0Q0FBQTtFQUNBLGdDQUFBO0VBQ0EsU0FBQTtFQUNBLGFBQUE7RUFDQSxhQUFBO0FBakRGOztBQW1ERTtFQUNFLFlBQUE7RUFDQSxXQUFBO0VBQ0EsNEJBQUE7RUFDQSxzQkFBQTtBQWpESjs7QUFvREU7RUFDRSxrQkFBQTtBQWxESjs7QUFtREk7RUFDRSwwQkFBQTtFQUNBLGlCQUFBO0FBakROOztBQXFERTtFQUNFLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLFVBQUE7RUFDQSxtQkFBQTtFQUNBLHlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxjQUFBO0FBbkRKOztBQXFESTtFQUNFLHVCQUFBO0VBQ0EsMEJBQUE7QUFuRE47O0FBdURFO0VBQ0UsMkNBQUE7RUFDQSxpQkFBQTtFQUNBLG1CQUFBO0VBQ0EsWUFBQTtFQUNBLDJCQUFBO0VBQUEsd0JBQUE7RUFBQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSx5QkFBQTtFQUNBLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFFBQUE7QUFyREoiLCJmaWxlIjoiYXBwLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiaW9uLXRhYnMsXG5pb24tdGFiLWJhcixcbmlvbi10YWItYnV0dG9uIHtcbiAgY29udGFpbjogbm9uZTtcbn1cblxuLmhvbWUtdGFiIHtcbiAgaGVpZ2h0OiAxMzBweDtcbiAgbWFyZ2luLXRvcDogLTUwcHg7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuXG5pb24tdGFiLWJhciB7XG4gIGhlaWdodDogODRweDtcbn1cblxuaW9uLWljb24ge1xuICAvLyBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWN1c3RvbS1yZWQpO1xuICBmb250LXNpemU6IDI1cHg7XG59XG5cbmlvbi1sYWJlbCB7XG4gIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItY3VzdG9tLWJsYWNrKTtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbWFyZ2luLXRvcDogMTBweDtcbn1cblxuLyptZW51Ki9cblxuLm10NTAge1xuICBtYXJnaW4tdG9wOiA1MHB4O1xufVxuXG4uYmFja2dyb3VuZCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL21lbnViZy5qcGdcIik7XG4gIHBhZGRpbmctdG9wOiA1MHB4O1xufVxuXG4ubWVudS1saXN0IHtcbiAgaW9uLWljb24ge1xuICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItY3VzdG9tLWZvdS1yZWQpO1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICBwYWRkaW5nLWxlZnQ6IDVweDtcbiAgICBtYXJnaW4tYm90dG9tOiAtNXB4O1xuICB9XG5cbiAgaW9uLWl0ZW0ge1xuICAgIC0tYm9yZGVyOiAwO1xuICAgIC0taW5uZXItYm9yZGVyLXdpZHRoOiAwO1xuICAgIC0tZm9udC1zaXplOiAxMnB4O1xuICB9XG5cbiAgLml0ZW06Zmlyc3QtY2hpbGQge1xuICAgIG1hcmdpbi10b3A6IDUwcHg7XG4gIH1cblxuICAubWVudS1pdGVtLXRleHQge1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICAvLyBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWN1c3RvbS1ncmF5KTsgIGluIGNhc2UgQXl5YSByZXF1ZXN0XG4gICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1jdXN0b20tZm91LXJlZCk7XG4gICAgZm9udC1mYW1pbHk6IGV4bztcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIG1hcmdpbi10b3A6IC01cHg7XG4gIH1cbn1cblxuLm1lbnUtaXRlbSB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgLy8gdGV4dC1hbGlnbjogY2VudGVyOyBpbiBjYXNlIEF5eWEgcmVxdWVzdFxuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogOTk7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi5pdGVtLWlubmVyIHtcbiAgLS1ib3JkZXI6IDA7XG59XG5cbi56aW5kZXgge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDk5O1xufVxuXG4udHJhbnNwYXJlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItY3VzdG9tLWJsYWNrKTtcblxuICAuaXRlbS1uYXRpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlvbi1jb2xvci1jdXN0b20tcmVkKTtcbiAgfVxufVxuXG4jYmFja2dyb3VuZC1jb250ZW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbmlvbi1jb250ZW50IHtcbiAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1zaWRlLW1lbnUtYmFrY2dyb3VuZCk7XG59XG5cbi5tZW51LWZvb3RlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIC8qcGFkZGluZzogMCAxMHB4OyBpbiBjYXNlIGF5eWEgcmVxdWVzdCAqL1xuICBib3R0b206IDBweDtcbiAgLy8gb3BhY2l0eTogMC45OyBpbiBjYXNlIGF5eWEgcmVxdWVzdFxuXG4gIGltZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cblxuLmNsb3NlLWJ0biB7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xuICBmb250LXNpemU6IDI4cHg7XG4gIC8vIHBhZGRpbmctcmlnaHQ6IDEwcHg7IGluIGNhc2UgYXl5YSByZXF1ZXN0XG4gIC8vY29sb3I6ICMzNTM1MzU7IGluIGNhc2UgYXl5YSByZXF1ZXN0XG4gIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItY3VzdG9tLWZvdS1yZWQpO1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDVweDtcbiAgei1pbmRleDogMTAwO1xufVxuXG4ubGFuZy1jb24ge1xuICB3aWR0aDogMjJweDtcbiAgaGVpZ2h0OiAxNXB4O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICBtYXJnaW4tYm90dG9tOiAtMnB4O1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG5cbiAgJi5kZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvbGFuZ3VhZ2VzL2RlLnBuZ1wiKTtcbiAgfVxuXG4gICYuZW4ge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL2xhbmd1YWdlcy9lbi5wbmdcIik7XG4gIH1cbn1cblxuLmxvYWRpbmctY2VudGVyLWZ1bGwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSBzY2FsZSgwLjkpOyAvLyBVU0UgU0NBTEUgRk9SIFJFIFNJWklOR1xuICB6LWluZGV4OiAyO1xufVxuXG4uZnVsbC1sb2FkaW5nLXdyYXBwZXIgLmJhY2tkcm9wIHtcbiAgb3BhY2l0eTogMC41O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItY3VzdG9tLWJsYWNrKTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuXG4vLyAuZm9vdGVyLW1lbnUtZ217XG4vLyAgIGJvdHRvbTogMHB4O1xuLy8gICBwb3NpdGlvbjogZml4ZWQ7XG4vLyAgIHdpZHRoOiAxMDAlO1xuLy8gICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pb24tY29sb3Itd2hpdGUpO1xuLy8gfVxuXG4vLyAuZm9vdGVyLW1lbnUtZ20gYnV0dG9ue1xuLy8gICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3B
10059hcmVudDtcbi8vICAgd2lkdGg6IDIwJTtcbi8vIH1cblxuLy8gLmZvb3Rlci1tZW51LWdtIGJ1dHRvbiBpb24taWNvbntcbi8vICAgd2lkdGg6IDEwMCU7XG4vLyB9XG5cbi5mb290ZXItbWVudS1nbSB7XG4gIGJvdHRvbTogMHB4O1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHdpZHRoOiAxMDAlO1xuICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXdoaXRlKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWN1c3RvbS1mb290ZXIpO1xufVxuXG4uZm9vdGVyLW1lbnUtZ20gYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIHdpZHRoOiAzMyU7XG4gIHBhZGRpbmc6IDEwcHggMHB4O1xufVxuXG4uZm9vdGVyLW1lbnUtZ20gYnV0dG9uIGlvbi1pY29uIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGNvbG9yOiB2YXIoLS1pb24tY29sb3Itd2hpdGUpO1xufVxuXG4uZm9vdGVyLW1lbnUtZ20gYnV0dG9uIGlvbi1sYWJlbCB7XG4gIGNvbG9yOiB2YXIoLS1pb24tY29sb3Itd2hpdGUpO1xufVxuXG4uZm90dGVyX2hlaSB7XG4gIGhlaWdodDogODVweDtcbn1cblxuLmNvb2tpZXMtYmFubmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29va2llLWJhbm5lci1iYWNrZ3JvdW5kKTtcbiAgY29sb3I6IHZhcigtLWNvb2tpZS1iYW5uZXItdGV4dCk7XG4gIGJvdHRvbTogMDtcbiAgZGlzcGxheTogZmxleDtcblxuICBwIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luOiAxMnB4O1xuICAgIG1hcmdpbi1yaWdodDogMWVtO1xuICAgIG1hcmdpbi1sZWZ0OiAxZW07XG5cbiAgICAudG5jLFxuICAgIC5wcml2YWN5LXBvbGljeSB7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuY29va2llLWJhbm5lci1idXR0b25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuICAgIC5iYW5uZXItYnV0dG9ucyB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgICBmb250LXNpemU6IDAuOWVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIGJvcmRlci13aWR0aDogMnB4O1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgLmRpc21pc3Mge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBjb2xvcjogdmFyKC0tY29va2llLWJhbm5lci1kaXNtaXNzLXRleHQpO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgIWltcG9ydGFudDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5nb3QtaXQge1xuICAgICAgY29sb3I6IHZhcigtLWNvb2tpZS1iYW5uZXItYWNjZXB0LWJ0bi10ZXh0KSAhaW1wb3J0YW50O1xuICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29va2llLWJhbm5lci1hY2NlcHQtYnRuLWJhY2tncm91bmQpO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgIWltcG9ydGFudDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb29raWUtYmFubmVyLWFjY2VwdC1idG4tYmFja2dyb3VuZC1ob3Zlcik7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5tYWluLW91dGxldC1jb250ZW50IHtcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA4NXB4KSAhaW1wb3J0YW50O1xufVxuXG4ubm8taW50ZXJuZXQge1xuICB6LWluZGV4OiAxO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGRpc3BsYXk6IGlubGluZS1ncmlkO1xuICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xufVxuXG4ubm8taW50ZXJuZXQtaWNvbiB7XG4gIGZvbnQtc2l6ZTogMTAwcHhcbn1cblxuLm5vLWludGVybmV0LXRpdGxlIHtcbiAgY29sb3I6IHJlZDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc2l6ZTogMzBweDtcbn1cblxuLmNvbm5lY3Rpb24tbXNnIHtcbiAgcGFkZGluZzogMHB4IDIwcHg7XG59XG5cbi5zZWNyZXQtZGl2IHtcbiAgLy8gaGVpZ2h0OiAxMDAlO1xuICAvLyB3aWR0aDogMTAwJTtcbiAgLy8gYmFja2dyb3VuZDogIzAwMDAwMGFkO1xuICAvLyBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIC8vIHotaW5kZXg6IDk5OTk7XG5cbiAgLy8gLmlubmVye1xuICAvLyAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAvLyB9XG4gIHotaW5kZXg6IDk5OTk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxNzlweDtcbiAgbGVmdDogODJweDtcbiAgd2lkdGg6IDI1MHB4O1xuICBoZWlnaHQ6IDUwcHg7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDk5OTlweCByZ2JhKDksIDksIDksIDAuODMpO1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xufVxuXG4uYXBwLWJhbm5lcntcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYmFja2dyb3VuZDogdmFyKC0tZ2V0LWFwcC1iYW5uZXItYmFja2dyb3VuZCk7XG4gIGNvbG9yOiB2YXIoLS1jb29raWUtYmFubmVyLXRleHQpO1xuICBib3R0b206IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IDEwcHg7XG5cbiAgLmFwcC1pY29ue1xuICAgIGhlaWdodDogNzVweDtcbiAgICB3aWR0aDogNzVweDtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gIH1cblxuICAudGV4dC1jb250YWluZXJ7XG4gICAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICAgIC5hcHAtbmFtZXtcbiAgICAgIG1hcmdpbi10b3A6IDJweCAhaW1wb3J0YW50O1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuICB9XG5cbiAgLmNsb3NlLWJ0bi1hcHAtYmFubmVye1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMTBweDtcbiAgICB0b3A6IC0xMHB4O1xuICAgIGJhY2tncm91bmQ6ICNmMDNmM2M7XG4gICAgYm9yZGVyOiAxcHggI2YwM2YzYyBzb2xpZDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgZm9udC1zaXplOiAwcHg7XG5cbiAgICBpb24taWNvbntcbiAgICAgIGNvbG9yOiB3aGl0ZSAhaW
100591wb3J0YW50O1xuICAgICAgZm9udC1zaXplOiAxOXB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgLmdldC1hcHAtYnRue1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWdldC1hcHAtYmFubmVyLWJ0bik7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICBjb2xvcjogYmxhY2s7XG4gICAgaGVpZ2h0OiBmaXQtY29udGVudDtcbiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gICAgcGFkZGluZy1yaWdodDogMTBweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogNiU7XG4gICAgdG9wOiA0MCU7XG4gIH1cbn0iXX0= */"); 10060 10061/***/ }), 10062 10063/***/ 33420: 10064/*!**************************************************************************!*\ 10065 !*** ./src/app/component/animatedloading/animatedloading.component.scss ***! 10066 \**************************************************************************/ 10067/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 10068 10069"use strict"; 10070__webpack_require__.r(__webpack_exports__); 10071/* harmony default export */ __webpack_exports__["default"] = (".loader07 {\n width: 16px;\n height: 16px;\n border-radius: 50%;\n position: relative;\n -webkit-animation: loader07-u04c322d6 1s linear infinite;\n animation: loader07-u04c322d6 1s linear infinite;\n top: 50%;\n margin: -8px auto 0;\n}\n\n@-webkit-keyframes loader07-u04c322d6 {\n 0% {\n box-shadow: 0 -27px 0 0 rgba(var(--loading-spinner-rgb), 0.05), 19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.1), 27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.2), 19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.3), 0 27px 0 0 rgba(var(--loading-spinner-rgb), 0.4), -19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.6), -27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.8), -19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.9);\n }\n 12.5% {\n box-shadow: 0 -27px 0 0 rgba(var(--loading-spinner-rgb), 0.02), 19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.05), 27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.1), 19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.2), 0 27px 0 0 rgba(var(--loading-spinner-rgb), 0.3), -19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.4), -27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.6), -19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.8);\n }\n 25% {\n box-shadow: 0 -27px 0 0 rgba(var(--loading-spinner-rgb), 0.8), 19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.7), 27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.05), 19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.1), 0 27px 0 0 rgba(var(--loading-spinner-rgb), 0.2), -19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.3), -27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.4), -19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.6);\n }\n 37.5% {\n box-shadow: 0 -27px 0 0 rgba(var(--loading-spinner-rgb), 0.6), 19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.8), 27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.7), 19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.05), 0 27px 0 0 rgba(var(--loading-spinner-rgb), 0.1), -19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.2), -27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.3), -19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.4);\n }\n 50% {\n box-shadow: 0 -27px 0 0 rgba(var(--loading-spinner-rgb), 0.4), 19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.6), 27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.8), 19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.09), 0 27px 0 0 rgba(var(--loading-spinner-rgb), 0.05), -19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.1), -27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.2), -19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.3);\n }\n 62.5% {\n box-shadow: 0 -27px 0 0 rgba(var(--loading-spinner-rgb), 0.3), 19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.4), 27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.6), 19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.8), 0 27px 0 0 rgba(var(--loading-spinner-rgb), 0.9), -19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.05), -27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.1), -19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.2);\n }\n 75% {\n box-shadow: 0 -27px 0 0 rgba(var(--loading-spinner-rgb), 0.2), 19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.3), 27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.4), 19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.6), 0 27px 0 0 rgba(var(--loading-spinner-rgb), 0.8), -19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.9), -27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.05), -19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.1);\n }\n 87.5% {\n box-shadow: 0 -27px 0 0 rgba(var(--loading-spinner-rgb), 0.1), 19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.2), 27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.3), 19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.4), 0 27px 0 0 rgba(var(--loading-spinner-rgb), 0.6), -19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.8), -27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.9), -19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.05);\n }\n 100% {\n box-shadow: 0 -27px 0 0 rgba(var(--loading-spinner-rgb), 0.05), 19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.1), 27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.2), 19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.3), 0 27px 0 0 rgba(var(--loading-spinner-rgb), 0.4), -19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.6), -27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.8), -19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.9);\n }\n}\n\n@keyframes loader07-u04c322d6 {\n 0% {\n box-shadow: 0 -27px 0 0 rgba(var(--loading-spinner-rgb), 0.05), 19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.1), 27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.2), 19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.3), 0 27px 0 0 rgba(var(--loading-spinner-rgb), 0.4), -19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.6), -27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.8), -19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.9);\n }\n 12.5% {\n box-shadow: 0 -27px 0 0 rgba(var(--loading-spinner-rgb), 0.02), 19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.05), 27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.1), 19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.2), 0 27px 0 0 rgba(var(--loading-spinner-rgb), 0.3), -19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.4), -27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.6), -19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.8);\n }\n 25% {\n box-shadow: 0 -27px 0 0 rgba(var(--loading-spinner-rgb), 0.8), 19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.7), 27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.05), 19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.1), 0 27px 0 0 rgba(var(--loading-spinner-rgb), 0.2), -19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.3), -27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.4), -19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.6);\n }\n 37.5% {\n box-shadow: 0 -27px 0 0 rgba(var(--loading-spinner-rgb), 0.6), 19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.8), 27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.7), 19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.05), 0 27px 0 0 rgba(var(--loading-spinner-rgb), 0.1), -19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.2), -27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.3), -19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.4);\n }\n 50% {\n box-shadow: 0 -27px 0 0 rgba(var(--loading-spinner-rgb), 0.4), 19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.6), 27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.8), 19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.09), 0 27px 0 0 rgba(var(--loading-spinner-rgb), 0.05), -19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.1), -27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.2), -19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.3);\n }\n 62.5% {\n box-shadow: 0 -27px 0 0 rgba(var(--loading-spinner-rgb), 0.3), 19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.4), 27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.6), 19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.8), 0 27px 0 0 rgba(var(--loading-spinner-rgb), 0.9), -19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.05), -27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.1), -19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.2);\n }\n 75% {\n box-shadow: 0 -27px 0 0 rgba(var(--loading-spinner-rgb), 0.2), 19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.3), 27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.4), 19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.6), 0 27px 0 0 rgba(var(--loading-spinner-rgb), 0.8), -19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.9), -27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.05), -19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.1);\n }\n 87.5% {\n box-shadow: 0 -27px 0 0 rgba(var(--loading-spinner-rgb), 0.1), 19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.2), 27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.3), 19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.4), 0 27px 0 0 rgba(var(--loading-spinner-rgb), 0.6), -19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.8), -27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.9), -19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.05);\n }\n 100% {\n box-shadow: 0 -27px 0 0 rgba(var(--loading-spinner-rgb), 0.05), 19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.1), 27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.2), 19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.3), 0 27px 0 0 rgba(var(--loading-spinner-rgb), 0.4), -19px 19px 0 0 rgba(var(--loading-spinner-rgb), 0.6), -27px 0 0 0 rgba(var(--loading-spinner-rgb), 0.8), -19px -19px 0 0 rgba(var(--loading-spinner-rgb), 0.9);\n }\n}\n/*# sourceMappingURL=data:application/json;
10071base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFuaW1hdGVkbG9hZGluZy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLFdBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFDQSxrQkFBQTtFQUNBLHdEQUFBO1VBQUEsZ0RBQUE7RUFDQSxRQUFBO0VBQ0EsbUJBQUE7QUFDRjs7QUFFQTtFQUNFO0lBQ0UsNmFBQUE7RUFDRjtFQUVBO0lBQ0UsOGFBQUE7RUFBRjtFQUdBO0lBQ0UsNmFBQUE7RUFERjtFQUlBO0lBQ0UsNmFBQUE7RUFGRjtFQUtBO0lBQ0UsOGFBQUE7RUFIRjtFQU1BO0lBQ0UsNmFBQUE7RUFKRjtFQU9BO0lBQ0UsNmFBQUE7RUFMRjtFQVFBO0lBQ0UsNmFBQUE7RUFORjtFQVNBO0lBQ0UsNmFBQUE7RUFQRjtBQUNGOztBQTVCQTtFQUNFO0lBQ0UsNmFBQUE7RUFDRjtFQUVBO0lBQ0UsOGFBQUE7RUFBRjtFQUdBO0lBQ0UsNmFBQUE7RUFERjtFQUlBO0lBQ0UsNmFBQUE7RUFGRjtFQUtBO0lBQ0UsOGFBQUE7RUFIRjtFQU1BO0lBQ0UsNmFBQUE7RUFKRjtFQU9BO0lBQ0UsNmFBQUE7RUFMRjtFQVFBO0lBQ0UsNmFBQUE7RUFORjtFQVNBO0lBQ0UsNmFBQUE7RUFQRjtBQUNGIiwiZmlsZSI6ImFuaW1hdGVkbG9hZGluZy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5sb2FkZXIwNyB7XG4gIHdpZHRoOiAxNnB4O1xuICBoZWlnaHQ6IDE2cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBhbmltYXRpb246IGxvYWRlcjA3LXUwNGMzMjJkNiAxcyBsaW5lYXIgaW5maW5pdGU7XG4gIHRvcDogNTAlO1xuICBtYXJnaW46IC04cHggYXV0byAwO1xufVxuXG5Aa2V5ZnJhbWVzIGxvYWRlcjA3LXUwNGMzMjJkNiB7XG4gIDAlIHtcbiAgICBib3gtc2hhZG93OiAwIC0yN3B4IDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjA1KSwgMTlweCAtMTlweCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC4xKSwgMjdweCAwIDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjIpLCAxOXB4IDE5cHggMCAwIHJnYmEodmFyKC0tbG9hZGluZy1zcGlubmVyLXJnYiksIDAuMyksIDAgMjdweCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC40KSwgLTE5cHggMTlweCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC42KSwgLTI3cHggMCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC44KSwgLTE5cHggLTE5cHggMCAwIHJnYmEodmFyKC0tbG9hZGluZy1zcGlubmVyLXJnYiksMC45KTtcbiAgfVxuXG4gIDEyLjUlIHtcbiAgICBib3gtc2hhZG93OiAwIC0yN3B4IDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjAyKSwgMTlweCAtMTlweCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC4wNSksIDI3cHggMCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC4xKSwgMTlweCAxOXB4IDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjIpLCAwIDI3cHggMCAwIHJnYmEodmFyKC0tbG9hZGluZy1zcGlubmVyLXJnYiksIDAuMyksIC0xOXB4IDE5cHggMCAwIHJnYmEodmFyKC0tbG9hZGluZy1zcGlubmVyLXJnYiksIDAuNCksIC0yN3B4IDAgMCAwIHJnYmEodmFyKC0tbG9hZGluZy1zcGlubmVyLXJnYiksIDAuNiksIC0xOXB4IC0xOXB4IDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjgpO1xuICB9XG5cbiAgMjUlIHtcbiAgICBib3gtc2hhZG93OiAwIC0yN3B4IDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjgpLCAxOXB4IC0xOXB4IDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLDAuNyksIDI3cHggMCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC4wNSksIDE5cHggMTlweCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC4xKSwgMCAyN3B4IDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjIpLCAtMTlweCAxOXB4IDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjMpLCAtMjdweCAwIDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjQpLCAtMTlweCAtMTlweCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC42KTtcbiAgfVxuXG4gIDM3LjUlIHtcbiAgICBib3gtc2hhZG93OiAwIC0yN3B4IDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjYpLCAxOXB4IC0xOXB4IDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjgpLCAyN3B4IDAgMCAwIHJnYmEodmFyKC0tbG9hZGluZy1zcGlubmVyLXJnYiksIDAuNyksIDE5cHggMTlweCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC4wNSksIDAgMjdweCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC4xKSwgLTE5cHggMTlweCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC4yKSwgLTI3cHggMCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC4zKSwgLTE5cHggLTE5cHggMCAwIHJnYmEodmFyKC0tbG9hZGluZy1zcGlubmVyLXJnYiksIDAuNCk7XG4gIH1cblxuICA1MCUge1xuICAgIGJveC1zaGFkb3c6IDAgLTI3cHggMCAwIHJnYmEodmFyKC0tbG9hZGluZy1zcGlubmVyLXJnYiksIDAuNCksIDE5cHggLTE5cHggMCAwIHJnYmEodmFyKC0tbG9hZGluZy1zcGlubmVyLXJnYiksIDAuNiksIDI3cHggMCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC44KSwgMTlweCAxOXB4IDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjA5KSwgMCAyN3B4IDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjA1KSwgLTE5cHggMTlweCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC4xKSwgLTI3cHggMCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC4yKSwgLTE5cHggLTE5cHggMCAwIHJnYmEodmFyKC0tbG9hZGluZy1zcGlubmVyLXJnYiksIDAuMyk7XG4gIH1cblxuICA2Mi41JSB7XG4gICAgYm94LXNoYWRvdzogMCAtMjdweCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC4zKSwgMTlweCAtMTlweCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC40KSwgMjdweCAwIDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjYpLCAxOXB4IDE5cHggMCAwIHJnYmEodmFyKC0tbG9hZGluZy1zcGlubmVyLXJnYiksIDAuOCksIDAgMjdweCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC45KSwgLTE5cHggMTlweCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC4wNSksIC0yN3B4IDAgMCAwIHJnYmEodmFyKC0tbG9hZGluZy1zcGlubmVyLXJnYiksIDAuMSksIC0xOXB4IC0xOXB4IDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjIpO1xuICB9XG5cbiAgNzUlIHtcbiAgICBib3gtc2hhZG93OiAwIC0yN3B4IDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjIpLCAxOXB4IC0xOXB4IDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjMpLCAyN3B4IDAgMCAwIHJnYmEodmFyKC0tbG9hZGluZy1zcGlubmVyLXJnYiksIDAuNCksIDE5cHggMTlweCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC42KSwgMCAyN3B4IDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjgpLCAtMTlweCAxOXB4IDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjkpLCAtMjdweCAwIDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjA1KSwgLTE5cHggLTE5cHggMCAwIHJnYmEodmFyKC0tbG9hZGluZy1zcGlubmVyLXJnYiksIDAuMSk7XG4gIH1cblxuICA4Ny41JSB7XG4gICAgYm94LXNoYWRvdzogMCAtMjdweCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC4xKSwgMTlweCAtMTlweCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC4yKSwgMjdweCAwIDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjMpLCAxOXB4IDE5cHggMCAwIHJnYmEodmFyKC0tbG9hZGluZy1zcGlubmVyLXJnYiksIDAuNCksIDAgMjdweCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC42KSwgLTE5cHggMTlweCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC44KSwgLTI3cHggMCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC45KSwgLTE5cHggLTE5cHggMCAwIHJnYmEodmFyKC0tbG9hZGluZy1zcGlubmVyLXJnYiksIDAuMDUpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgYm94LXNoYWRvdzogMCAtMjdweCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC4wNSksIDE5cHggLTE5cHggMCAwIHJnYmEodmFyKC0tbG9hZGluZy1zcGlubmVyLXJnYiksIDAuMSksIDI3cHggMCAwIDAgcmdiYSh2YXIoLS1sb2FkaW5nLXNwaW5uZXItcmdiKSwgMC4yKSwgMTlweCAxOXB4IDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjMpLCAwIDI3cHggMCAwIHJnYmEodmFyKC0tbG9hZGluZy1zcGlubmVyLXJnYiksIDAuNCksIC0xOXB4IDE5cHggMCAwIHJnYmEodmFyKC0tbG9hZGluZy1zcGlubmVyLXJnYiksIDAuNiksIC0yN3B4IDAgMCAwIHJnYmEodmFyKC0tbG9hZGluZy1zcGlubmVyLXJnYiksIDAuOCksIC0xOXB4IC0xOXB4IDAgMCByZ2JhKHZhcigtLWxvYWRpbmctc3Bpbm5lci1yZ2IpLCAwLjkpO1xuICB9XG59Il19 */"); 10072 10073/***/ }), 10074 10075/***/ 70022: 10076/*!****************************************************!*\ 10077 !*** ./src/app/views/modals/alert/alert.page.scss ***! 10078 \****************************************************/ 10079/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 10080 10081"use strict"; 10082__webpack_require__.r(__webpack_exports__); 10083/* harmony default export */ __webpack_exports__["default"] = ("#background-content {\n background-color: transparent;\n}\n\nion-content {\n --background: rgba(0, 0, 0, 0);\n}\n\n.popup-container {\n width: 100%;\n height: 100vh;\n}\n\n.popup-container .popup-container-inner {\n box-shadow: 0 3px 5px 0px #484848;\n width: 80%;\n min-width: 300px;\n background: var(--ion-color-white);\n margin: auto;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n}\n\n.popup-container .popup-container-inner ul {\n list-style: none;\n padding: 0;\n}\n\n.popup-container .popup-container-inner .text {\n font-size: 12px;\n font-family: \"roboto\";\n color: #7d7d7d;\n padding-bottom: 10px;\n}\n\n.popup-container .popup-container-inner .text div {\n font-style: italic;\n}\n\n.popup-container .popup-container-inner h3 {\n margin: 0;\n font-size: 15px;\n margin-bottom: 5px;\n margin-top: 5px;\n font-weight: bold;\n}\n\n.line-top {\n height: 2px;\n width: 100px;\n display: block;\n}\n\n.error .alert-icon,\n.error .success-icon {\n display: none;\n}\n\n.error .popup-container-inner {\n border-top: 5px solid #dc0000;\n}\n\n.error .close-icon {\n color: #dc0000;\n}\n\n.error .icon {\n color: #dc0000;\n font-size: 28px;\n}
10083\n\n.error h3 {\n color: #dc0000;\n}\n\n.alert .error-icon,\n.alert .success-icon {\n display: none;\n}\n\n.alert .popup-container-inner {\n border-top: 5px solid #3498db;\n}\n\n.alert .close-icon {\n color: #3498db;\n}\n\n.alert .icon {\n color: #3498db;\n font-size: 28px;\n}\n\n.alert h3 {\n color: #3498db;\n}\n\n.success .error-icon,\n.success .alert-icon {\n display: none;\n}\n\n.success .popup-container-inner {\n border-top: 5px solid #2ecc71;\n}\n\n.success .close-icon {\n color: #2ecc71;\n}\n\n.success .icon {\n color: #2ecc71;\n font-size: 28px;\n}\n\n.success h3 {\n color: #2ecc71;\n}\n\n.message-text {\n font-size: 16px !important;\n font-style: unset !important;\n}\n\n.alergy-info-title {\n font-size: 14px !important;\n}\n\n.alergy-info-container {\n max-height: 650px !important;\n overflow: auto !important;\n width: 100%;\n}\n\n.image-preview-dish-close {\n position: absolute;\n right: -8px;\n top: -8px;\n background: var(--ion-color-custom-red);\n border-radius: 50%;\n width: 18px;\n height: 17px;\n font-size: 16px;\n color: var(--ion-color-white);\n}\n\n.image-container {\n padding: 10px;\n}\n\n#pointer {\n position: relative;\n background: red;\n}
10083\n\n#pointer:after {\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 0;\n width: 0;\n height: 0;\n border-left: 10px solid white;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n}\n\n#pointer:before {\n content: \"\";\n position: absolute;\n right: -30px;\n bottom: 0;\n width: 0;\n height: 0;\n border-left: 10px solid transparent;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n}\n\n.favorite-restaurant-marked-container .favourite-message {\n display: inline-flex;\n padding: 10px;\n}\n\n.favorite-restaurant-marked-container .favourite-message span {\n font-size: 14px;\n}\n\n.favorite-restaurant-marked-container .favourite-message span ion-icon {\n font-size: 34px;\n}\n\n.favorite-restaurant-marked-container .you-can-change-this {\n font-size: 10px;\n}\n\n.favorite-restaurant-marked-container .btn-ok {\n padding: 5px;\n}\n\n.favorite-restaurant-marked-container .btn-ok span {\n padding: 3px 10px;\n background: #4b90e2;\n color: white;\n font-size: 12px;\n border-radius: 4px;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFsZXJ0LnBhZ2Uuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLDZCQUFBO0FBQ0o7O0FBRUE7RUFDSSw4QkFBQTtBQUNKOztBQUVBO0VBQ0ksV0FBQTtFQUNBLGFBQUE7QUFDSjs7QUFDSTtFQUNJLGlDQUFBO0VBQ0EsVUFBQTtFQUNBLGdCQUFBO0VBQ0Esa0NBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFDQSxRQUFBO0VBQ0EsU0FBQTtFQUNBLGdDQUFBO0VBQ0Esa0JBQUE7QUFDUjs7QUFDUTtFQUNJLGdCQUFBO0VBQ0EsVUFBQTtBQUNaOztBQUVRO0VBQ0ksZUFBQTtFQUNBLHFCQUFBO0VBQ0EsY0FBQTtFQUNBLG9CQUFBO0FBQVo7O0FBRVk7RUFDSSxrQkFBQTtBQUFoQjs7QUFJUTtFQUNJLFNBQUE7RUFDQSxlQUFBO0VBQ0Esa0JBQUE7RUFDQSxlQUFBO0VBQ0EsaUJBQUE7QUFGWjs7QUFPQTtFQUNJLFdBQUE7RUFDQSxZQUFBO0VBQ0EsY0FBQTtBQUpKOztBQVNJOztFQUVJLGFBQUE7QUFOUjs7QUFTSTtFQUNJLDZCQUFBO0FBUFI7O0FBVUk7RUFDSSxjQUFBO0FBUlI7O0FBV0k7RUFDSSxjQUFBO0VBQ0EsZUFBQTtBQVRSOztBQVlJO0VBQ0ksY0FBQTtBQVZSOztBQWdCSTs7RUFFSSxhQUFBO0FBYlI7O0FBZ0JJO0VBQ0ksNkJBQUE7QUFkUjs7QUFpQkk7RUFDSSxjQUFBO0FBZlI7O0FBa0JJO0VBQ0ksY0FBQTtFQUNBLGVBQUE7QUFoQlI7O0FBbUJJO0VBQ0ksY0FBQTtBQWpCUjs7QUF1Qkk7O0VBRUksYUFBQTtBQXBCUjs7QUF1Qkk7RUFDSSw2QkFBQTtBQXJCUjs7QUF3Qkk7RUFDSSxjQUFBO0FBdEJSOztBQXlCSTtFQUNJLGNBQUE7RUFDQSxlQUFBO0FBdkJSOztBQTBCSTtFQUNJLGNBQUE7QUF4QlI7O0FBNEJBO0VBQ0ksMEJBQUE7RUFDQSw0QkFBQTtBQXpCSjs7QUE0QkE7RUFDSSwwQkFBQTtBQXpCSjs7QUE0QkE7RUFDSSw0QkFBQTtFQUNBLHlCQUFBO0VBQ0EsV0FBQTtBQXpCSjs7QUE0QkE7RUFDSSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxTQUFBO0VBQ0EsdUNBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZUFBQTtFQUNBLDZCQUFBO0FBekJKOztBQTRCQTtFQUNJLGFBQUE7QUF6Qko7O0FBOEJBO0VBQ0ksa0JBQUE7RUFDQSxlQUFBO0FBM0JKOztBQThCQTtFQUNJLFdBQUE7RUFDQSxrQkFBQTtFQUNBLE9BQUE7RUFDQSxTQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSw2QkFBQTtFQUNBLGtDQUFBO0VBQ0EscUNBQUE7QUEzQko7O0FBOEJBO0VBQ0ksV0FBQTtFQUNBLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLFNBQUE7RUFDQSxRQUFBO0VBQ0EsU0FBQTtFQUNBLG1DQUFBO0VBQ0Esa0NBQUE7RUFDQSxxQ0FBQTtBQTNCSjs7QUErQkk7RUFDSSxvQkFBQTtFQUNBLGFBQUE7QUE1QlI7O0FBOEJRO0VBQ0ksZUFBQTtBQTVCWjs7QUE4Qlk7RUFDSSxlQUFBO0FBNUJoQjs7QUFpQ0k7RUFDSSxlQUFBO0FBL0JSOztBQWtDSTtFQUNJLFlBQUE7QUFoQ1I7O0FBa0NRO0VBQ0ksaUJBQUE7RUFDQSxtQkFBQTtFQUNBLFlBQUE7RUFDQSxlQUFBO0VBQ0Esa0JBQUE7QUFoQ1oiLCJmaWxlIjoiYWxlcnQucGFnZS5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiI2JhY2tncm91bmQtY29udGVudCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbmlvbi1jb250ZW50IHtcbiAgICAtLWJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMCk7XG59XG5cbi5wb3B1cC1jb250YWluZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwdmg7XG5cbiAgICAucG9wdXAtY29udGFpbmVyLWlubmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCAzcHggNXB4IDBweCAjNDg0ODQ4O1xuICAgICAgICB3aWR0aDogODAlO1xuICAgICAgICBtaW4td2lkdGg6IDMwMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itd2hpdGUpO1xuICAgICAgICBtYXJnaW46IGF1dG87XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICB1bCB7XG4gICAgICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC50ZXh0IHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBcInJvYm90b1wiO1xuICAgICAgICAgICAgY29sb3I6ICM3ZDdkN2Q7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcblxuICAgICAgICAgICAgZGl2IHtcbiAgICAgICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgICAgICB9XG4gICAgICAgI
10083H1cblxuICAgICAgICBoMyB7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmxpbmUtdG9wIHtcbiAgICBoZWlnaHQ6IDJweDtcbiAgICB3aWR0aDogMTAwcHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5lcnJvciB7XG5cbiAgICAuYWxlcnQtaWNvbixcbiAgICAuc3VjY2Vzcy1pY29uIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAucG9wdXAtY29udGFpbmVyLWlubmVyIHtcbiAgICAgICAgYm9yZGVyLXRvcDogNXB4IHNvbGlkICNkYzAwMDA7XG4gICAgfVxuXG4gICAgLmNsb3NlLWljb24ge1xuICAgICAgICBjb2xvcjogI2RjMDAwMDtcbiAgICB9XG5cbiAgICAuaWNvbiB7XG4gICAgICAgIGNvbG9yOiAjZGMwMDAwO1xuICAgICAgICBmb250LXNpemU6IDI4cHg7XG4gICAgfVxuXG4gICAgaDMge1xuICAgICAgICBjb2xvcjogI2RjMDAwMDtcbiAgICB9XG59XG5cbi5hbGVydCB7XG5cbiAgICAuZXJyb3ItaWNvbixcbiAgICAuc3VjY2Vzcy1pY29uIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAucG9wdXAtY29udGFpbmVyLWlubmVyIHtcbiAgICAgICAgYm9yZGVyLXRvcDogNXB4IHNvbGlkICMzNDk4ZGI7XG4gICAgfVxuXG4gICAgLmNsb3NlLWljb24ge1xuICAgICAgICBjb2xvcjogIzM0OThkYjtcbiAgICB9XG5cbiAgICAuaWNvbiB7XG4gICAgICAgIGNvbG9yOiAjMzQ5OGRiO1xuICAgICAgICBmb250LXNpemU6IDI4cHg7XG4gICAgfVxuXG4gICAgaDMge1xuICAgICAgICBjb2xvcjogIzM0OThkYjtcbiAgICB9XG59XG5cbi5zdWNjZXNzIHtcblxuICAgIC5lcnJvci1pY29uLFxuICAgIC5hbGVydC1pY29uIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAucG9wdXAtY29udGFpbmVyLWlubmVyIHtcbiAgICAgICAgYm9yZGVyLXRvcDogNXB4IHNvbGlkICMyZWNjNzE7XG4gICAgfVxuXG4gICAgLmNsb3NlLWljb24ge1xuICAgICAgICBjb2xvcjogIzJlY2M3MTtcbiAgICB9XG5cbiAgICAuaWNvbiB7XG4gICAgICAgIGNvbG9yOiAjMmVjYzcxO1xuICAgICAgICBmb250LXNpemU6IDI4cHg7XG4gICAgfVxuXG4gICAgaDMge1xuICAgICAgICBjb2xvcjogIzJlY2M3MTtcbiAgICB9XG59XG5cbi5tZXNzYWdlLXRleHQge1xuICAgIGZvbnQtc2l6ZTogMTZweCAhaW1wb3J0YW50O1xuICAgIGZvbnQtc3R5bGU6IHVuc2V0ICFpbXBvcnRhbnQ7XG59XG5cbi5hbGVyZ3ktaW5mby10aXRsZSB7XG4gICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5hbGVyZ3ktaW5mby1jb250YWluZXIge1xuICAgIG1heC1oZWlnaHQ6IDY1MHB4ICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGF1dG8gIWltcG9ydGFudDtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLmltYWdlLXByZXZpZXctZGlzaC1jbG9zZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAtOHB4O1xuICAgIHRvcDogLThweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItY3VzdG9tLXJlZCk7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIHdpZHRoOiAxOHB4O1xuICAgIGhlaWdodDogMTdweDtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci13aGl0ZSk7XG59XG5cbi5pbWFnZS1jb250YWluZXIge1xuICAgIHBhZGRpbmc6IDEwcHg7XG59XG5cblxuXG4jcG9pbnRlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJhY2tncm91bmQ6IHJlZDtcbn1cblxuI3BvaW50ZXI6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgICBib3JkZXItbGVmdDogMTBweCBzb2xpZCB3aGl0ZTtcbiAgICBib3JkZXItdG9wOiAxMHB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1ib3R0b206IDEwcHggc29saWQgdHJhbnNwYXJlbnQ7XG59XG5cbiNwb2ludGVyOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IC0zMHB4O1xuICAgIGJvdHRvbTogMDtcbiAgICB3aWR0aDogMDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgYm9yZGVyLWxlZnQ6IDEwcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXRvcDogMTBweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItYm90dG9tOiAxMHB4IHNvbGlkIHRyYW5zcGFyZW50O1xufVxuXG4uZmF2b3JpdGUtcmVzdGF1cmFudC1tYXJrZWQtY29udGFpbmVyIHtcbiAgICAuZmF2b3VyaXRlLW1lc3NhZ2Uge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgcGFkZGluZzogMTBweDtcblxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcblxuICAgICAgICAgICAgaW9uLWljb24ge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMzRweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC55b3UtY2FuLWNoYW5nZS10aGlzIHtcbiAgICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgIH1cblxuICAgIC5idG4tb2sge1xuICAgICAgICBwYWRkaW5nOiA1cHg7XG5cbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICBwYWRkaW5nOiAzcHggMTBweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICM0YjkwZTI7XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIH1cbiAgICB9XG59Il19 */"); 10084 10085/***/ }), 10086 10087/***/ 3760: 10088/*!**************************************************!*\ 10089 !*** ./src/app/views/modals/cart/cart.page.scss ***! 10090 \**************************************************/ 10091/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 10092 10093"use strict"; 10094__webpack_require__.r(__webpack_exports__); 10095/* harmony default export */ __webpack_exports__["default"] = ("#background-content {\n background-color: transparent;\n}\n\nion-content {\n --background: rgba(0, 0, 0, 0);\n}\n\n.popup-container {\n width: 100%;\n height: 100vh;\n}\n\n.popup-container .popup-container-inner {\n border-radius: 5px;\n box-shadow: 0 3px 5px 0px #484848;\n width: 80%;\n min-width: 300px;\n min-height: 200px;\n background: var(--ion-color-white);\n margin: auto;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n}\n\n.popup-container .popup-container-inner.heighOk {\n top: 20px;\n left: 50%;\n transform: translate(-50%, 0);\n}\n\n.popup-container .popup-container-inner ul {\n list-style: none;\n padding: 0;\n}\n\n.popup-container .popup-container-inner .cart-button {\n top: 0;\n left: 0;\n transform: rotate(0deg) translate(-30%, -30%);\n}\n\n.title {\n display: block;\n width: 100%;\n position: relative;\n}\n\n.title .close-btn {\n font-size: 25px;\n position: absolute;\n top: 0;\n right: 3px;\n color: #5d5d5d;\n}\n\n.cart-list {\n padding: 0;\n display: flex;\n flex-flow: column;\n}\n\n.cart-list .first-flex {\n flex: 1;\n overflow-y: auto;\n position: relative;\n overflow-x: hidden;\n margin-top: 30px;\n max-height: 300px;\n min-height: 200px;\n}\n\n.cart-list .first-flex ion-grid:nth-child(3)::before {\n content: \" \";\n width: 100%;\n display: block;\n height: 30px;\n position: fixed;\n bottom: 0;\n background: linear-gradient(0deg, rgba(153, 153, 153, 0.6166667351) 0%, rgba(255, 255, 255, 0) 100%);\n z-index: 9;\n opacity: 0.5;\n}\n\n.cart-list .second-flex {\n border-top: 3px solid #dfdfdf;\n padding-bottom: 10px;\n}\n\n.cart-list .counter div {\n display: block;\n text-align: center;\n font-size: 20px;\n float: left;\n}\n\n.cart-list .counter .number {\n font-size: 13px;\n text-align: center;
10095\n color: #333;\n padding-top: 2px;\n font-weight: bold;\n margin: 0 8px;\n}\n\n.cart-list .counter .clear {\n clear: both;\n}\n\n.cart-list .counter ion-icon {\n font-size: 14px;\n padding: 3px 8px;\n background: #f0f0f0;\n box-shadow: 0 0 3px #ccc;\n border-radius: 3px;\n}\n\n.cart-list .counter ion-icon:active, .cart-list .counter ion-icon:focus {\n box-shadow: none;\n}\n\n.cart-list .edit {\n text-align: right;\n}\n\n.cart-list .edit ion-icon {\n font-size: 20px;\n}\n\n.cart-list .edit ion-icon:first-child {\n margin-right: 10px;\n}\n\n.cart-list .price {\n text-align: right;\n font-size: 13px;\n padding: 0 5px;\n}\n\n.cart-list .text {\n padding: 0 5px;\n}\n\n.cart-list .text .title {\n font-size: 13px;\n font-weight: bold;\n color: #535353;\n}\n\n.cart-list .text .sub {\n font-size: 13px;\n margin-left: 5px;\n margin-top: 5px;\n color: #626262;\n}\n\n.cart-list .text .sub-sm {\n font-size: 10px;\n opacity: 0.5;\n font-style: italic;\n}\n\n.cart-list ion-grid:last-child .border-bottom {\n border-bottom: none;\n}\n\n.cart-list .border-bottom {\n border-bottom: 2px solid #eee;\n padding-bottom: 5px;\n}\n\n.text-right {\n text-align: right;\n}\n\n.cart-title {\n text-align: center;\n font-size: 17px;\n}\n\n.cart-title ion-icon {\n color: var(--ion-color-custom-red);\n font-size: 20px;\n margin-bottom: -3px;\n}\n\n.cart-footer {\n font-size: 12px;\n}\n\n.cart-footer ion-col {\n padding: 3px;\n font-size: 13px;\n font-weight: bold;\n color: #535353;\n}\n\n.cart-footer ion-item {\n --padding-start: 0;\n --inner-padding-start: 0;\n}\n\n.cart-footer .submit {\n text-align: center;\n font-size: 12px;\n font-family: exo;\n}\n\n.cart-footer .submit button {\n font-size: 12px;\n}\n\n.cart-footer .somethig {\n font-size: 14px;\n --min-height: 0;\n border-radius: 5px;\n --inner-padding-start: 5px;\n border: 1px solid #d5d5d5;\n}\n\n.cart-footer .somethig ion-label {\n font-size: 13px;\n font-weight: bold;\n color: #535353;\n}\n\n.cart-footer .somethig ion-input {\n padding-left: 10px !important;\n}\n\n.cart-footer .somethig ion-icon {\n font-size: 18px;\n margin-bottom: -4px;\n}\n\n.cart-footer ion-input {\n /*--padding-top:0;\n --padding-bottom:0;*/\n}\n\n.cart-footer ion-input input {\n padding: 5px;\n}\n\n.cart-footer .coupon-accept {\n /*position: absolute;\n left: 50%;\n bottom: 15px;\n font-size: 25px;\n transform: translateX(-50%);*/\n color: var(--ion-color-custom-green);\n}\n\n.cart-footer .coupon-accept.disabled {\n color: var(--ion-color-custom-red);\n}\n\n.comment {\n font-size: 10px;\n}\n\n.cart-header {\n background: #ececec;\n color: #959595;\n margin-bottom: 10px;\n}\n\n.border-bottom ion-item {\n --padding-start: 0;\n --inner-padding-start: 0;\n --padding-end: 0;\n --inner-padding-end: 0;\n width: 100%;\n}\n\n.border-bottom .doted-border {\n border-bottom: 2px dotted #c8c8c8;\n}\n\n.comment {\n font-style: italic;\n color: #b0b0b0;\n margin-left: 10px;\n}\n\nion-item:not(.item-label) .sc-ion-textarea-md-h {\n --padding-start: 0;\n border: 2px dashed #bbb6b6;\n border-radius: 5px;\n padding: 0 5px;\n margin-bottom: 10px;\n}\n\n.coupon-accept {\n font-size: 25px !important;\n}\n\n.footer-comment ion-item {\n --inner-padding-end: 0;\n}\n\n.submit ion-button {\n --background: rgba(231, 76, 60, 0.4);\n color: #c0392b;\n --box-shadow: none;\n font-weight: bold;\n --border-radius: 6px;\n font-size: 12px;\n --padding-start: 20px;\n --padding-end: 20px;\n --padding-top: 10px;\n --padding-bottom: 10px;\n --background-activated: green;\n}\n\n.cart-list .counter .number {\n font-size: 15px;\n}\n\n.cart-list .text .title {\n font-size: 15px;\n}\n\n.cart-list .text .sub-sm {\n font-size: 12px;\n}\n\n.cart-list .price {\n font-size: 15px;\n}\n\n.cart-footer ion-col {\n font-size: 15px;\n}\n\n.error-box,\n.success-box {\n font-size: 15px;\n}\n\n.cart-footer ion-col {\n font-size: 15px;\n}\n\n.cart-footer .submit button {\n font-size: 14px;\n}\n\n.fs12 {\n font-size: 12px;\n}\n\n.cart-comment-editing {\n background: #00a900;\n color: var(--ion-color-white);\n border-radius: 5px;\n}\n\n.font-size-18 {\n font-size: 18px !important;\n}\n\n.bar-mode-btns {\n padding: 10px !important;\n font-size: 12px !important;\n}\n\n.bar-mode-btns ion-icon {\n font-size: 17px !important;\n}\n\n.send-to-kitchen {\n width: 50%;\n border-top-right-radius: unset;\n border-bottom-right-radius: unset;\n}\n\n.send-to-kitchen-disabled {\n background: gray !important;\n}\n\n.pay {\n width: 50%;\n border-top-left-radius: unset;\n border-bottom-left-radius: unset;\n}\n\n.order-preparation-time {\n margin-bottom: 5px;\n}\n\n.order-preparation-time label {\n background: red;\n padding: 5px;\n border-radius: 10px;\n color: white;\n}\n\n.custom-prep {\n background: red;\n padding: 5px;\n border-radius: 10px;\n color: white;\n}\n\n.price-line-through {\n font-size: 10px;\n text-decoration: line-through;\n color: #ff0e00;\n}\n\n.dish-not-available {\n width: 100%;\n height: 75px;\n background: #ffadadbd;\n margin-bottom: 10px !important;\n z-index: 9;\n margin: -5px;\n border-radius: 5px;\n color: #2d2b2b;\n justify-content: center;\n align-items: center;\n display: flex;\n text-align: center;\n margin-left: 0px;\n font-family: cursive;\n}\n\n.highlight {\n background: url(\"/assets/brush.svg\");\n padding-bottom: 5px;\n padding-top: 15px;\n padding-left: 50px;\n padding-right: 30px;\n font-size: 14px;\n font-weight: bold;\n display: flex;\n}\n\n.highlight ion-icon {\n cursor: pointer;
10095\n color: red;\n}\n\n.trash-container {\n display: flex;\n justify-content: center;\n align-items: center;\n padding-left: 20px;\n font-size: 20px;\n}\n\n.highlight-unavailable {\n border: 3px dotted red;\n border-radius: 5px;\n background: #ffcaca;\n margin-top: 5px;\n}\n\n.hightlight-spec {\n padding: 0px 10px;\n}\n\n.margin-top-5 {\n margin-top: 5px;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhcnQucGFnZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksNkJBQUE7QUFDSjs7QUFFQTtFQUNJLDhCQUFBO0FBQ0o7O0FBRUE7RUFDSSxXQUFBO0VBQ0EsYUFBQTtBQUNKOztBQUNJO0VBQ0ksa0JBQUE7RUFDQSxpQ0FBQTtFQUNBLFVBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQUFBO0VBQ0Esa0NBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFDQSxRQUFBO0VBQ0EsU0FBQTtFQUNBLGdDQUFBO0FBQ1I7O0FBQ1E7RUFDSSxTQUFBO0VBQ0EsU0FBQTtFQUNBLDZCQUFBO0FBQ1o7O0FBRVE7RUFDSSxnQkFBQTtFQUNBLFVBQUE7QUFBWjs7QUFHUTtFQUNJLE1BQUE7RUFDQSxPQUFBO0VBQ0EsNkNBQUE7QUFEWjs7QUFNQTtFQUNJLGNBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7QUFISjs7QUFLSTtFQUNJLGVBQUE7RUFDQSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxVQUFBO0VBQ0EsY0FBQTtBQUhSOztBQU9BO0VBQ0ksVUFBQTtFQUNBLGFBQUE7RUFDQSxpQkFBQTtBQUpKOztBQU1JO0VBQ0ksT0FBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0VBQ0EsaUJBQUE7RUFDQSxpQkFBQTtBQUpSOztBQVFnQjtFQUNJLFlBQUE7RUFDQSxXQUFBO0VBQ0EsY0FBQTtFQUNBLFlBQUE7RUFDQSxlQUFBO0VBQ0EsU0FBQTtFQUNBLG9HQUFBO0VBQ0EsVUFBQTtFQUNBLFlBQUE7QUFOcEI7O0FBWUk7RUFDSSw2QkFBQTtFQUNBLG9CQUFBO0FBVlI7O0FBY1E7RUFDSSxjQUFBO0VBRUEsa0JBQUE7RUFDQSxlQUFBO0VBQ0EsV0FBQTtBQWJaOztBQWdCUTtFQUNJLGVBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQUFBO0VBQ0EsYUFBQTtBQWRaOztBQWlCUTtFQUNJLFdBQUE7QUFmWjs7QUFrQlE7RUFDSSxlQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLHdCQUFBO0VBQ0Esa0JBQUE7QUFoQlo7O0FBa0JZO0VBRUksZ0JBQUE7QUFqQmhCOztBQXNCSTtFQUNJLGlCQUFBO0FBcEJSOztBQXNCUTtFQUNJLGVBQUE7QUFwQlo7O0FBc0JZO0VBQ0ksa0JBQUE7QUFwQmhCOztBQXlCSTtFQUNJLGlCQUFBO0VBQ0EsZUFBQTtFQUNBLGNBQUE7QUF2QlI7O0FBMEJJO0VBQ0ksY0FBQTtBQXhCUjs7QUEwQlE7RUFDSSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxjQUFBO0FBeEJaOztBQTJCUTtFQUNJLGVBQUE7RUFFQSxnQkFBQTtFQUNBLGVBQUE7RUFDQSxjQUFBO0FBMUJaOztBQTZCUTtFQUNJLGVBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7QUEzQlo7O0FBaUNZO0VBQ0ksbUJBQUE7QUEvQmhCOztBQW9DSTtFQUNJLDZCQUFBO0VBQ0EsbUJBQUE7QUFsQ1I7O0FBc0NBO0VBQ0ksaUJBQUE7QUFuQ0o7O0FBc0NBO0VBQ0ksa0JBQUE7RUFDQSxlQUFBO0FBbkNKOztBQXFDSTtFQUNJLGtDQUFBO0VBQ0EsZUFBQTtFQUNBLG1CQUFBO0FBbkNSOztBQXVDQTtFQUNJLGVBQUE7QUFwQ0o7O0FBc0NJO0VBQ0ksWUFBQTtFQUNBLGVBQUE7RUFDQSxpQkFBQTtFQUNBLGNBQUE7QUFwQ1I7O0FBdUNJO0VBQ0ksa0JBQUE7RUFDQSx3QkFBQTtBQXJDUjs7QUF3Q0k7RUFDSSxrQkFBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtBQXRDUjs7QUF3Q1E7RUFDSSxlQUFBO0FBdENaOztBQTBDSTtFQUNJLGVBQUE7RUFDQSxlQUFBO0VBQ0Esa0JBQUE7RUFDQSwwQkFBQTtFQUNBLHlCQUFBO0FBeENSOztBQTBDUTtFQUNJLGVBQUE7RUFDQSxpQkFBQTtFQUNBLGNBQUE7QUF4Q1o7O0FBMkNRO0VBQ0ksNkJBQUE7QUF6Q1o7O0FBNENRO0VBQ0ksZUFBQTtFQUNBLG1CQUFBO0FBMUNaOztBQThDSTtFQUVJO3NCQUFBO0FBNUNSOztBQThDUTtFQUNJLFlBQUE7QUE1Q1o7O0FBZ0RJO0VBQ0k7Ozs7K0JBQUE7RUFLQSxvQ0FBQTtBQTlDUjs7QUFnRFE7RUFDSSxrQ0FBQTtBQTlDWjs7QUFtREE7RUFDSSxlQUFBO0FBaERKOztBQW9EQTtFQUNJLG1CQUFBO0VBQ0EsY0FBQTtFQUNBLG1CQUFBO0FBakRKOztBQXFESTtFQUNJLGtCQUFBO0VBQ0Esd0JBQUE7RUFDQSxnQkFBQTtFQUNBLHNCQUFBO0VBQ0EsV0FBQTtBQWxEUjs7QUFxREk7RUFDSSxpQ0FBQTtBQW5EUjs7QUF1REE7RUFDSSxrQkFBQTtFQUNBLGNBQUE7RUFDQSxpQkFBQTtBQXBESjs7QUF1REE7RUFDSSxrQkFBQTtFQUNBLDBCQUFBO0VBQ0Esa0JBQUE7RUFDQSxjQUFBO0VBQ0EsbUJBQUE7QUFwREo7O0FBdURBO0VBQ0ksMEJBQUE7QUFwREo7O0FBd0RJO0VBQ0ksc0JBQUE7QUFyRFI7O0FBMERJO0VBQ0ksb0NBQUE7RUFDQSxjQUFBO0VBQ0Esa0JBQUE7RUFDQSxpQkFBQTtFQUNBLG9CQUFBO0VBQ0EsZUFBQTtFQUNBLHFCQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtFQUNBLHNCQUFBO0VBQ0EsNkJBQUE7QUF2RFI7O0FBMkRBO0VBQ0ksZUFBQTtBQXhESjs7QUEyREE7RUFDSSxlQUFBO0FBeERKOztBQTJEQTtFQUNJLGVBQUE7QUF4REo7O0FBMkRBO0VBQ0ksZUFBQTtBQXhESjs7QUEyREE7RUFDSSxlQUFBO0FBeERKOztBQTJEQTs7RUFFSSxlQUFBO0FBeERKOztBQTJEQTtFQUNJLGVBQUE7QUF4REo7O0FBMkRBO0VBQ0ksZUFBQTtBQXhESjs7QUEyREE7RUFDSSxlQUFBO0FBeERKOztBQTJEQTtFQUNJLG1CQUFBO0VBQ0EsNkJBQUE7RUFDQSxrQkFBQTtBQXhESjs7QUEyREE7RUFDSSwwQkFBQTtBQXhESjs7QUEyREE7RUFDSSx3QkFBQTtFQUNBLDBCQUFBO0FBeERKOztBQTBESTtFQUNJLDBCQUFBO0FBeERSOztBQTREQTtFQUNJLFVBQUE7RUFDQSw4QkFBQTtFQUNBLGlDQUFBO0FBekRKOztBQTREQTtFQUNJLDJCQU
10095FBO0FBekRKOztBQTREQTtFQUNJLFVBQUE7RUFDQSw2QkFBQTtFQUNBLGdDQUFBO0FBekRKOztBQTREQTtFQUNJLGtCQUFBO0FBekRKOztBQTJESTtFQUNJLGVBQUE7RUFDQSxZQUFBO0VBQ0EsbUJBQUE7RUFDQSxZQUFBO0FBekRSOztBQTZEQTtFQUNJLGVBQUE7RUFDQSxZQUFBO0VBQ0EsbUJBQUE7RUFDQSxZQUFBO0FBMURKOztBQTZEQTtFQUNJLGVBQUE7RUFDQSw2QkFBQTtFQUNBLGNBQUE7QUExREo7O0FBNkRBO0VBQ0ksV0FBQTtFQUNBLFlBQUE7RUFDQSxxQkFBQTtFQUNBLDhCQUFBO0VBQ0EsVUFBQTtFQUNBLFlBQUE7RUFDQSxrQkFBQTtFQUNBLGNBQUE7RUFDQSx1QkFBQTtFQUNBLG1CQUFBO0VBQ0EsYUFBQTtFQUNBLGtCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxvQkFBQTtBQTFESjs7QUE2REU7RUFDRSxvQ0FBQTtFQUVBLG1CQUFBO0VBQ0EsaUJBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0VBQ0EsZUFBQTtFQUNBLGlCQUFBO0VBQ0EsYUFBQTtBQTNESjs7QUE2REk7RUFDRSxlQUFBO0VBQ0EsVUFBQTtBQTNETjs7QUErREU7RUFDRSxhQUFBO0VBQ0EsdUJBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsZUFBQTtBQTVESjs7QUErREU7RUFDRSxzQkFBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxlQUFBO0FBNURKOztBQStERTtFQUNFLGlCQUFBO0FBNURKOztBQStERTtFQUNFLGVBQUE7QUE1REoiLCJmaWxlIjoiY2FydC5wYWdlLnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIjYmFja2dyb3VuZC1jb250ZW50IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuaW9uLWNvbnRlbnQge1xuICAgIC0tYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwKTtcbn1cblxuLnBvcHVwLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDB2aDtcblxuICAgIC5wb3B1cC1jb250YWluZXItaW5uZXIge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgM3B4IDVweCAwcHggIzQ4NDg0ODtcbiAgICAgICAgd2lkdGg6IDgwJTtcbiAgICAgICAgbWluLXdpZHRoOiAzMDBweDtcbiAgICAgICAgbWluLWhlaWdodDogMjAwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci13aGl0ZSk7XG4gICAgICAgIG1hcmdpbjogYXV0bztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcblxuICAgICAgICAmLmhlaWdoT2sge1xuICAgICAgICAgICAgdG9wOiAyMHB4O1xuICAgICAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCk7XG4gICAgICAgIH1cblxuICAgICAgICB1bCB7XG4gICAgICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jYXJ0LWJ1dHRvbiB7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZykgdHJhbnNsYXRlKC0zMCUsIC0zMCUpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4udGl0bGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIC5jbG9zZS1idG4ge1xuICAgICAgICBmb250LXNpemU6IDI1cHg7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICByaWdodDogM3B4O1xuICAgICAgICBjb2xvcjogIzVkNWQ1ZDtcbiAgICB9XG59XG5cbi5jYXJ0LWxpc3Qge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbjtcblxuICAgIC5maXJzdC1mbGV4IHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbi10b3A6IDMwcHg7XG4gICAgICAgIG1heC1oZWlnaHQ6IDMwMHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiAyMDBweDtcblxuICAgICAgICBpb24tZ3JpZCB7XG4gICAgICAgICAgICAmOm50aC1jaGlsZCgzKSB7XG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDBkZWcsIHJnYmEoMTUzLCAxNTMsIDE1MywgMC42MTY2NjY3MzUwNTMzOTYzKSAwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAxMDAlKTtcbiAgICAgICAgICAgICAgICAgICAgei1pbmRleDogOTtcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMC41O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zZWNvbmQtZmxleCB7XG4gICAgICAgIGJvcmRlci10b3A6IDNweCBzb2xpZCAjZGZkZmRmO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgICB9XG5cbiAgICAuY291bnRlciB7XG4gICAgICAgIGRpdiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIC8vd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5udW1iZXIge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgY29sb3I6ICMzMzM7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMnB4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICBtYXJnaW46IDAgOHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNsZWFyIHtcbiAgICAgICAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgaW9uLWljb24ge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgcGFkZGluZzogM3B4IDhweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmMGYwZjA7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgM3B4ICNjY2M7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG5cbiAgICAgICAgICAgICY6YWN0aXZlLFxuICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgI
10095H1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5lZGl0IHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG5cbiAgICAgICAgaW9uLWljb24ge1xuICAgICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuXG4gICAgICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucHJpY2Uge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICBwYWRkaW5nOiAwIDVweDtcbiAgICB9XG5cbiAgICAudGV4dCB7XG4gICAgICAgIHBhZGRpbmc6IDAgNXB4O1xuXG4gICAgICAgIC50aXRsZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIGNvbG9yOiAjNTM1MzUzO1xuICAgICAgICB9XG5cbiAgICAgICAgLnN1YiB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgICAgICAvL29wYWNpdHk6IDAuNTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgICAgICAgICBjb2xvcjogIzYyNjI2MjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zdWItc20ge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgICAgICAgb3BhY2l0eTogMC41O1xuICAgICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW9uLWdyaWQge1xuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgLmJvcmRlci1ib3R0b20ge1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYm9yZGVyLWJvdHRvbSB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjZWVlO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogNXB4O1xuICAgIH1cbn1cblxuLnRleHQtcmlnaHQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4uY2FydC10aXRsZSB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMTdweDtcblxuICAgIGlvbi1pY29uIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1jdXN0b20tcmVkKTtcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAtM3B4O1xuICAgIH1cbn1cblxuLmNhcnQtZm9vdGVyIHtcbiAgICBmb250LXNpemU6IDEycHg7XG5cbiAgICBpb24tY29sIHtcbiAgICAgICAgcGFkZGluZzogM3B4O1xuICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBjb2xvcjogIzUzNTM1MztcbiAgICB9XG5cbiAgICBpb24taXRlbSB7XG4gICAgICAgIC0tcGFkZGluZy1zdGFydDogMDtcbiAgICAgICAgLS1pbm5lci1wYWRkaW5nLXN0YXJ0OiAwO1xuICAgIH1cblxuICAgIC5zdWJtaXQge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgZm9udC1mYW1pbHk6IGV4bztcblxuICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnNvbWV0aGlnIHtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAtLW1pbi1oZWlnaHQ6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgLS1pbm5lci1wYWRkaW5nLXN0YXJ0OiA1cHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkNWQ1ZDU7XG5cbiAgICAgICAgaW9uLWxhYmVsIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgY29sb3I6ICM1MzUzNTM7XG4gICAgICAgIH1cblxuICAgICAgICBpb24taW5wdXQge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpb24taWNvbiB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAtNHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW9uLWlucHV0IHtcblxuICAgICAgICAvKi0tcGFkZGluZy10b3A6MDtcbiAgICAtLXBhZGRpbmctYm90dG9tOjA7Ki9cbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgcGFkZGluZzogNXB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvdXBvbi1hY2NlcHQge1xuICAgICAgICAvKnBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgYm90dG9tOiAxNXB4O1xuICAgIGZvbnQtc2l6ZTogMjVweDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7Ki9cbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1jdXN0b20tZ3JlZW4pO1xuXG4gICAgICAgICYuZGlzYWJsZWQge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1jdXN0b20tcmVkKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmNvbW1lbnQge1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbn1cblxuLy8gRURESVRFRCBIRVJFXG4uY2FydC1oZWFkZXIge1xuICAgIGJhY2tncm91bmQ6ICNlY2VjZWM7XG4gICAgY29sb3I6ICM5NTk1OTU7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cblxuLmJvcmRlci1ib3R0b20ge1xuICAgIGlvbi1pdGVtIHtcbiAgICAgICAgLS1wYWRkaW5nLXN0YXJ0OiAwO1xuICAgICAgICAtLWlubmVyLXBhZGRpbmctc3RhcnQ6IDA7XG4gICAgICAgIC0tcGFkZGluZy1lbmQ6IDA7XG4gICAgICAgIC0taW5uZXItcGFkZGluZy1lbmQ6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5kb3RlZC1ib3JkZXIge1xuICAgICAgICBib3JkZXItYm90dG9tOiAycHggZG90dGVkICNjOGM4Yzg7XG4gICAgfVxufVxuXG4uY29tbWVudCB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGNvbG9yOiAjYjBiMGIwO1xuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xufVxuXG5pb24taXRlbTpub3QoLml0ZW0tbGFiZWwpIC5zYy1pb24tdGV4dGFyZWEtbWQtaCB7XG4gICAgLS1wYWRkaW5nLXN0YXJ0OiAwO1xuICAgIGJvcmRlcjogMnB4IGRhc2hlZCAjYmJiNmI2O1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICBwYWRkaW5nOiAwIDVweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuXG4uY291cG9uLWFjY2VwdCB7XG4gICAgZm9udC1zaXplOiAyNXB4ICFpbXBvcnRhbnQ7XG59XG5cbi5mb290ZXItY29tbWVudCB7XG4gICAgaW9uLWl0ZW0ge1xuICAgICAgICAtLWlubmVyLXBhZGRpbmctZW5kOiAwO1xuICAgIH1cbn1cblxuLnN1Ym1pdCB7XG4gICAgaW9uLWJ1dHRvbiB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogcmdiYSgyMzEsIDc2LCA2MCwgMC40KTtcbiAgICAgICAgY29sb3I6IHJnYmEoMTkyLCA1NywgNDMsIDEuMCk7XG4gICAgICAgIC0tYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIC0tYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIC0tcGFkZGluZy1zdGFydDogMjBweDtcbiAgICAgICAgLS1wYWRkaW5nLWVuZDogMjBweDtcbiAgICAgICAgLS1wYWRkaW5nLXRvcDogMTBweDtcbiAgICAgICAgLS1wYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgICAgICAgLS1iYWNrZ3JvdW5kLWFjdGl2YXRlZDogZ3JlZW47XG4gICAgfVxufVxuXG4uY2FydC1saXN0IC5jb3VudGVyIC5udW1iZXIge1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbn1cblxuLmNhcnQtbGlzdCAudGV4dCAudGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbn1cblxuLmNhcnQtbGlzdCAudGV4dCAuc3ViLXNtIHtcbiAgICBmb250LXNpemU6IDEycHg7XG59XG5cbi5jYXJ0LWxpc3QgLnByaWNlIHtcbiAgICBmb250LXNpemU6IDE1cHg7XG59XG5cbi5jYXJ0LWZvb3RlciBpb24tY29sIHtcbiAgICBmb250LXNpemU6IDE1cHg7XG59XG5cbi5lcnJvci1ib3gsXG4uc3VjY2Vzcy1ib3gge1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbn1cblxuLmNhcnQtZm9vdGVyIGlvbi1jb2wge1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbn1cblxuLmNhcnQtZm9vdGVyIC5zdWJtaXQgYnV0dG9uIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG59XG5cbi5mczEyIHtcbiAgICBmb250LXNpemU6IDEycHg7XG59XG5cbi5jYXJ0LWNvbW1lbnQtZWRpdGluZyB7XG4gICAgYmFja2dyb3VuZDogIzAwYTkwMDtcbiAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXdoaXRlKTtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG59XG5cbi5mb250LXNpemUtMTgge1xuICAgIGZvbnQtc2l6ZTogMThweCAhaW1wb3J0YW50O1xufVxuXG4uYmFyLW1vZGUtYnRucyB7XG4gICAgcGFkZGluZzogMTBweCAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMTJweCAhaW1wb3J0YW50O1xuXG4gICAgaW9uLWljb24ge1xuICAgICAgICBmb250LXNpemU6IDE3cHggIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi5zZW5kLXRvLWtpdGNoZW4ge1xuICAgIHdpZHRoOiA1MCU7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IHVuc2V0O1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiB1bnNldDtcbn1cblxuLnNlbmQtdG8ta2l0Y2hlbi1kaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZDogZ3JheSAhaW1wb3J0YW50O1xufVxuXG4ucGF5IHtcbiAgICB3aWR0aDogNTAlO1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IHVuc2V0O1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IHVuc2V0O1xufVxuXG4ub3JkZXItcHJlcGFyYXRpb24tdGltZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuXG4gICAgbGFiZWwge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZWQ7XG4gICAgICAgI
10095HBhZGRpbmc6IDVweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgIH1cbn1cblxuLmN1c3RvbS1wcmVwe1xuICAgIGJhY2tncm91bmQ6IHJlZDtcbiAgICBwYWRkaW5nOiA1cHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICBjb2xvcjogd2hpdGU7XG59XG5cbi5wcmljZS1saW5lLXRocm91Z2gge1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcbiAgICBjb2xvcjogI2ZmMGUwMDtcbn1cblxuLmRpc2gtbm90LWF2YWlsYWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiA3NXB4O1xuICAgIGJhY2tncm91bmQ6ICNmZmFkYWRiZDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4ICFpbXBvcnRhbnQ7XG4gICAgei1pbmRleDogOTtcbiAgICBtYXJnaW46IC01cHg7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIGNvbG9yOiAjMmQyYjJiO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLWxlZnQ6IDBweDtcbiAgICBmb250LWZhbWlseTogY3Vyc2l2ZTtcbiAgfVxuICBcbiAgLmhpZ2hsaWdodCB7XG4gICAgYmFja2dyb3VuZDogdXJsKFwiL2Fzc2V0cy9icnVzaC5zdmdcIik7XG4gICAgLy8gcGFkZGluZzogMTBweCAzMHB4O1xuICAgIHBhZGRpbmctYm90dG9tOiA1cHg7XG4gICAgcGFkZGluZy10b3A6IDE1cHg7XG4gICAgcGFkZGluZy1sZWZ0OiA1MHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDMwcHg7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIFxuICAgIGlvbi1pY29ue1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgY29sb3I6IHJlZDtcbiAgICB9XG4gIH1cbiAgXG4gIC50cmFzaC1jb250YWluZXJ7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmctbGVmdDogMjBweDtcbiAgICBmb250LXNpemU6IDIwcHg7XG4gIH1cblxuICAuaGlnaGxpZ2h0LXVuYXZhaWxhYmxle1xuICAgIGJvcmRlcjogM3B4IGRvdHRlZCByZWQ
100957XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIGJhY2tncm91bmQ6ICNmZmNhY2E7XG4gICAgbWFyZ2luLXRvcDo1cHg7XG4gIH1cblxuICAuaGlnaHRsaWdodC1zcGVje1xuICAgIHBhZGRpbmc6IDBweCAxMHB4O1xuICB9XG5cbiAgLm1hcmdpbi10b3AtNXtcbiAgICBtYXJnaW4tdG9wOiA1cHg7XG4gIH0iXX0= */"); 10096 10097/***/ }), 10098 10099/***/ 9698: 10100/*!********************************************************************!*\ 10101 !*** ./src/app/views/modals/cross-selling/cross-selling.page.scss ***! 10102 \********************************************************************/ 10103/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 10104 10105"use strict"; 10106__webpack_require__.r(__webpack_exports__); 10107/* harmony default export */ __webpack_exports__["default"] = ("#background-content {\n background-color: transparent;\n}\n\nion-content {\n --background: rgba(0, 0, 0, 0);\n font-family: \"roboto\";\n}\n\n.popup-container {\n width: 100%;\n height: 100vh;\n}\n\n.popup-container .popup-container-inner {\n border-radius: 5px;\n box-shadow: 0 3px 5px 0px #484848;\n width: 80%;\n min-width: 300px;\n min-height: 200px;\n background: var(--ion-color-white);\n margin: auto;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n padding-bottom: 70px;\n}\n\n.popup-container .popup-container-inner ul {\n list-style: none;\n padding: 0;\n margin: 0;\n}\n\n.title {\n display: block;\n width: 100%;\n position: relative;\n border-bottom: 1px solid #e3e3e3;\n color: #535353;\n font-family: exo;\n text-transform: uppercase;\n box-shadow: 0 1px 2px 0px #dfdfdf;\n}\n\n.title .close-btn {\n font-size: 25px;\n position: absolute;\n top: 0;\n right: 3px;\n color: #5d5d5d;\n}\n\n.topping-radio {\n --border-color-checked: #e32d2d;\n --background-checked: #e32d2d;\n background: #d9d9d9;\n color: var(--ion-color-white);\n box-sizing: revert;\n border-radius: 100%;\n transition: 1s;\n --color-checked: var(--ion-color-white);\n}\n\n.topping-radio.checkbox-checked {\n background: #e32d2d;\n}\n\n.radio-group ion-item,\n.checkboxgroup ion-item {\n --min-height: 10px;\n}\n\n.radio-group ion-item ion-label,\n.checkboxgroup ion-item ion-label {\n font-size: 13px;\n}\n\n.radio-group ion-item ion-label.label-2,\n.checkboxgroup ion-item ion-label.label-2 {\n font-size: 12px;\n color: #797979;\n}\n\n.radio-group ion-item ion-label.label-1,\n.checkboxgroup ion-item ion-label.label-1 {\n color: #535353;\n font-weight: bold;\n}\n\n.radio-group ion-item ion-icon,\n.checkboxgroup ion-item ion-icon {\n font-size: 20px;\n}\n\n.dropdown ion-item {\n --inner-padding-start: 0;\n --padding-start: 0;\n padding: 0;\n font-size: 14px;\n color: #535353;\n}\n\n.dropdown ion-item ion-label {\n padding-left: 15px;\n font-weight: bold;\n}\n\n.dropdown ion-select {\n color: #ef1b32b3;\n font-size: 12px;\n font-weight: bold;\n}\n\n.checkboxgroup ion-item {\n /*--min-height: 40px;*/\n}\n\n.checkboxgroup ion-checkbox {\n --background: #d9d9d9;\n --background-checked: #e32d2d;\n --border-width: 5px;\n --size: 22px;\n --border-color-checked: #e32d2d;\n --border-color: #d9d9d9;\n --checkmark-width: 5px;\n margin: 5px 10px 10px 0;\n}\n\n.checkboxgroup .min-max {\n padding-bottom: 5px;\n padding-bottom: 5px;\n position: absolute;\n right: 10px;\n z-index: 5;\n}\n\n.checkboxgroup .min-max button {\n color: #9f9f9f;\n font-weight: bold;\n background: #f2f2f2;\n border-radius: 3px;\n transform: translateY(3px);\n margin: 0 3px;\n padding: 5px 6px;\n}\n\n.checkboxgroup .min-max button ion-icon {\n font-size: 14px;\n}\n\n.checkboxgroup .min-max span {\n color: #5e5e5e;\n font-size: 13px;\n padding: 3px 8px;\n border-radius: 5px;\n font-weight: bold;\n}\n\n.radio-title {\n padding: 0;\n}\n\n.radio-title ion-label {\n position: relative;\n margin: 0;\n}\n\n.radio-title ion-label span {\n z-index: 5555;\n position: relative;\n background: var(--ion-color-white);\n margin-left: 20px;\n font-size: 14px;\n font-family: exo;\n color: #d4d4d4;\n padding: 10px;\n font-weight: 600;\n}\n\n.radio-title ion-label i {\n position: absolute;\n height: 1px;\n width: 100%;\n display: block;\n background: #d4d4d463;\n bottom: 40%;\n}\n\n.red {\n color: var(--ion-color-custom-thr-red);\n}\n\n.toping-body {\n height: 500px;\n overflow-y: auto;\n}\n\n.toping-body-web {\n height: 470px !important;\n}\n\n.submit-buttons {\n margin-bottom: 20px;\n}\n\n.footer-box {\n position: absolute;\n bottom: 10px;\n width: 100%;\n}\n\n.error {\n color: #f91010;\n font-size: 13px;\n padding: 5px;\n}\n\n.toping_required {\n color: #f91010 !important;\n}\n\n.warning-message {\n font-size: 12px;\n color: #d4d4d4;\n}\n\n.select-label {\n padding-left: 16px;\n font-weight: bold;\n}\n\n.question-container {\n padding: 10px;\n max-height: 500px;\n overflow-x: auto;\n}\n\n.question-container .question-card {\n width: 100%;\n}\n\n.question-container .question-card .question-btn {\n width: 100%;\n font-size: 18px !important;\n}\n\n.skip-btn a {\n color: #f91010 !important;\n}\n\n.order-list {\n padding: 0;\n margin: 0;\n}\n\n.order-list li.order-list-li {\n list-style: none;\n border-bottom: 1px solid #e5e5e5;\n padding: 5px 5px 5px 5px;\n}\n\n.order-list li.order-list-li h3 {\n margin: 0;\n margin-bottom: 0px;\n font-size: 14px;\n margin-bottom: 3px;\n color: #262626;\n font-size: 17px;\n}\n\n.order-list li.order-list-li h3 ion-icon {\n color: #848484;\n margin-bottom: -2px;\n}\n\n.order-list-img {\n text-align: center;\n position: relative;\n}\n\n.order-list-img .price {\n position: absolute;\n left: 50%;\n transform: translate(-50%, 30%);\n bottom: 0;\n background: #ebebeb;\n padding: 5px 8px;\n font-weight: bold;\n color: var(--ion-color-custom-thr-red);\n border-radius: 5px;\n box-shadow: 0 0 5px #aeadad;\n width: 60px;\n font-size: 10px;\n font-family: roboto;\n}\n\n.order-list-img .img {\n border-radius: 10px;\n height: 60px;\n width: 50px;\n}\n\n.ion-item-order-list-start {\n margin-right: 10px;\n}\n\n.order-list-price {\n font-weight: bold;\n margin-left: 10px;\n}\n\n.ion-item-order-list,\n.ion-item-order-list-item {\n --inner-padding-bottom: 0;\n --inner-padding-end: 0;\n --inner-padding-start: 0;\n --inner-padding-top: 0;\n --outer-padding-start: 0;\n --padding-start: 0;\n --padding-end: 0;\n}\n\n.font-size-20 {\n font-size: 20px !important;\n}\n\n.btn-size-80 {\n width: 90% !important;\n}\n\n.done-cross-selling {\n float: right;\n margin-top: 10px;\n font-size: 28px;\n color: #96d741;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNyb3NzLXNlbGxpbmcucGFnZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksNkJBQUE7QUFDSjs7QUFFQTtFQUNJLDhCQUFBO0VBQ0EscUJBQUE7QUFDSjs7QUFFQTtFQUNJLFdBQUE7RUFDQSxhQUFBO0FBQ0o7O0FBQUk7RUFDSSxrQkFBQTtFQUNBLGlDQUFBO0VBQ0EsVUFBQTtFQUNBLGdCQUFBO0VBQ0EsaUJBQUE7RUFDQSxrQ0FBQTtFQUNBLFlBQUE7
10107RUFDQSxrQkFBQTtFQUNBLFFBQUE7RUFDQSxTQUFBO0VBQ0EsZ0NBQUE7RUFDQSxvQkFBQTtBQUVSOztBQURRO0VBQ0ksZ0JBQUE7RUFDQSxVQUFBO0VBQ0EsU0FBQTtBQUdaOztBQUVBO0VBQ0ksY0FBQTtFQUNBLFdBQUE7RUFDQSxrQkFBQTtFQUNBLGdDQUFBO0VBQ0EsY0FBQTtFQUNBLGdCQUFBO0VBQ0EseUJBQUE7RUFDQSxpQ0FBQTtBQUNKOztBQUFJO0VBQ0ksZUFBQTtFQUNBLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLFVBQUE7RUFDQSxjQUFBO0FBRVI7O0FBRUE7RUFLSSwrQkFBQTtFQUNBLDZCQUFBO0VBRUEsbUJBQUE7RUFDQSw2QkFBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxjQUFBO0VBQ0EsdUNBQUE7QUFKSjs7QUFSSTtFQUNJLG1CQUFBO0FBVVI7O0FBTUk7O0VBQ0ksa0JBQUE7QUFGUjs7QUFHUTs7RUFDSSxlQUFBO0FBQVo7O0FBQ1k7O0VBQ0ksZUFBQTtFQUNBLGNBQUE7QUFFaEI7O0FBQVk7O0VBQ0ksY0FBQTtFQUNBLGlCQUFBO0FBR2hCOztBQUFROztFQUNJLGVBQUE7QUFHWjs7QUFHSTtFQUNJLHdCQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBO0VBQ0EsZUFBQTtFQUNBLGNBQUE7QUFBUjs7QUFDUTtFQUNJLGtCQUFBO0VBQ0EsaUJBQUE7QUFDWjs7QUFFSTtFQUNJLGdCQUFBO0VBQ0EsZUFBQTtFQUNBLGlCQUFBO0FBQVI7O0FBS0k7RUFDSSxzQkFBQTtBQUZSOztBQUtJO0VBQ0kscUJBQUE7RUFDQSw2QkFBQTtFQUNBLG1CQUFBO0VBQ0EsWUFBQTtFQUNBLCtCQUFBO0VBQ0EsdUJBQUE7RUFDQSxzQkFBQTtFQUVBLHVCQUFBO0FBSlI7O0FBTUk7RUFDSSxtQkFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxXQUFBO0VBQ0EsVUFBQTtBQUpSOztBQUtRO0VBQ0ksY0FBQTtFQUNBLGlCQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLDBCQUFBO0VBQ0EsYUFBQTtFQUNBLGdCQUFBO0FBSFo7O0FBSVk7RUFDSSxlQUFBO0FBRmhCOztBQUtRO0VBQ0ksY0FBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsaUJBQUE7QUFIWjs7QUFRQTtFQUNJLFVBQUE7QUFMSjs7QUFNSTtFQUNJLGtCQUFBO0VBQ0EsU0FBQTtBQUpSOztBQUtRO0VBQ0ksYUFBQTtFQUNBLGtCQUFBO0VBQ0Esa0NBQUE7RUFDQSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtFQUVBLGNBQUE7RUFDQSxhQUFBO0VBQ0EsZ0JBQUE7QUFKWjs7QUFNUTtFQUNJLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLFdBQUE7RUFDQSxjQUFBO0VBRUEscUJBQUE7RUFDQSxXQUFBO0FBTFo7O0FBV0E7RUFDSSxzQ0FBQTtBQVJKOztBQVdBO0VBQ0ksYUFBQTtFQUNBLGdCQUFBO0FBUko7O0FBV0E7RUFDSSx3QkFBQTtBQVJKOztBQVdBO0VBQ0ksbUJBQUE7QUFSSjs7QUFXQTtFQUNJLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLFdBQUE7QUFSSjs7QUFXQTtFQUNJLGNBQUE7RUFDQSxlQUFBO0VBQ0EsWUFBQTtBQVJKOztBQVdBO0VBQ0kseUJBQUE7QUFSSjs7QUFXQTtFQUNJLGVBQUE7RUFDQSxjQUFBO0FBUko7O0FBV0E7RUFDSSxrQkFBQTtFQUNBLGlCQUFBO0FBUko7O0FBV0E7RUFDSSxhQUFBO0VBQ0EsaUJBQUE7RUFDQSxnQkFBQTtBQVJKOztBQVVJO0VBQ0ksV0FBQTtBQVJSOztBQVVRO0VBQ0ksV0FBQTtFQUNBLDBCQUFBO0FBUlo7O0FBY0k7RUFDSSx5QkFBQTtBQVhSOztBQWVBO0VBQ0ksVUFBQTtFQUNBLFNBQUE7QUFaSjs7QUFjSTtFQUNJLGdCQUFBO0VBQ0EsZ0NBQUE7RUFDQSx3QkFBQTtBQVpSOztBQWFRO0VBQ0ksU0FBQTtFQUNBLGtCQUFBO0VBQ0EsZUFBQTtFQUNBLGtCQUFBO0VBQ0EsY0FBQTtFQUNBLGVBQUE7QUFYWjs7QUFhWTtFQUNJLGNBQUE7RUFDQSxtQkFBQTtBQVhoQjs7QUFpQkE7RUFDSSxrQkFBQTtFQUNBLGtCQUFBO0FBZEo7O0FBZUk7RUFDSSxrQkFBQTtFQUNBLFNBQUE7RUFDQSwrQkFBQTtFQUNBLFNBQUE7RUFDQSxtQkFBQTtFQUNBLGdCQUFBO0VBRUEsaUJBQUE7RUFDQSxzQ0FBQTtFQUNBLGtCQUFBO0VBQ0EsMkJBQUE7RUFDQSxXQUFBO0VBQ0EsZUFBQTtFQUNBLG1CQUFBO0FBZFI7O0FBaUJJO0VBQ0ksbUJBQUE7RUFFQSxZQUFBO0VBQ0EsV0FBQTtBQWhCUjs7QUFvQkE7RUFDSSxrQkFBQTtBQWpCSjs7QUFvQkE7RUFDSSxpQkFBQTtFQUNBLGlCQUFBO0FBakJKOztBQW9CQTs7RUFFSSx5QkFBQTtFQUNBLHNCQUFBO0VBQ0Esd0JBQUE7RUFDQSxzQkFBQTtFQUNBLHdCQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtBQWpCSjs7QUFvQkE7RUFDSSwwQkFBQTtBQWpCSjs7QUFvQkE7RUFDSSxxQkFBQTtBQWpCSjs7QUFvQkE7RUFDSSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxlQUFBO0VBQ0EsY0FBQTtBQWpCSiIsImZpbGUiOiJjcm9zcy1zZWxsaW5nLnBhZ2Uuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIiNiYWNrZ3JvdW5kLWNvbnRlbnQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG5pb24tY29udGVudCB7XG4gICAgLS1iYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDApO1xuICAgIGZvbnQtZmFtaWx5OiBcInJvYm90b1wiO1xufVxuXG4ucG9wdXAtY29udGFpbmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIC5wb3B1cC1jb250YWluZXItaW5uZXIge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgM3B4IDVweCAwcHggIzQ4NDg0ODtcbiAgICAgICAgd2lkdGg6IDgwJTtcbiAgICAgICAgbWluLXdpZHRoOiAzMDBweDtcbiAgICAgICAgbWluLWhlaWdodDogMjAwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci13aGl0ZSk7XG4gICAgICAgIG1hcmdpbjogYXV0bztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDcwcHg7XG4gICAgICAgIHVsIHtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4udGl0bGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UzZTNlMztcbiAgICBjb2xvcjogIzUzNTM1MztcbiAgICBmb250LWZhbWlseTogZXhvO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgYm94LXNoYWRvdzogMCAxcHggMnB4IDBweCAjZGZkZmRmO1xuICAgIC5jbG9zZS1idG4ge1xuICAgICAgICBmb250LXNpemU6IDI1cHg7XG4gICAgICAgI
10107HBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICByaWdodDogM3B4O1xuICAgICAgICBjb2xvcjogIzVkNWQ1ZDtcbiAgICB9XG59XG5cbi50b3BwaW5nLXJhZGlvIHtcbiAgICAmLmNoZWNrYm94LWNoZWNrZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZTMyZDJkO1xuICAgIH1cblxuICAgIC0tYm9yZGVyLWNvbG9yLWNoZWNrZWQ6ICNlMzJkMmQ7XG4gICAgLS1iYWNrZ3JvdW5kLWNoZWNrZWQ6ICNlMzJkMmQ7XG5cbiAgICBiYWNrZ3JvdW5kOiAjZDlkOWQ5O1xuICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3Itd2hpdGUpO1xuICAgIGJveC1zaXppbmc6IHJldmVydDtcbiAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICAgIHRyYW5zaXRpb246IDFzO1xuICAgIC0tY29sb3ItY2hlY2tlZDogdmFyKC0taW9uLWNvbG9yLXdoaXRlKTtcbn1cblxuLnJhZGlvLWdyb3VwLFxuLmNoZWNrYm94Z3JvdXAge1xuICAgIGlvbi1pdGVtIHtcbiAgICAgICAgLS1taW4taGVpZ2h0OiAxMHB4O1xuICAgICAgICBpb24tbGFiZWwge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICAgICAgJi5sYWJlbC0yIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICM3OTc5Nzk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLmxhYmVsLTEge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjNTM1MzUzO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlvbi1pY29uIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmRyb3Bkb3duIHtcbiAgICBpb24taXRlbSB7XG4gICAgICAgIC0taW5uZXItcGFkZGluZy1zdGFydDogMDtcbiAgICAgICAgLS1wYWRkaW5nLXN0YXJ0OiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIGNvbG9yOiAjNTM1MzUzO1xuICAgICAgICBpb24tbGFiZWwge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaW9uLXNlbGVjdCB7XG4gICAgICAgIGNvbG9yOiAjZWYxYjMyYjM7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxufVxuXG4uY2hlY2tib3hncm91cCB7XG4gICAgaW9uLWl0ZW0ge1xuICAgICAgICAvKi0tbWluLWhlaWdodDogNDBweDsqL1xuICAgIH1cbiAgICAvLyBUSElTRURJVEVEXG4gICAgaW9uLWNoZWNrYm94IHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiAjZDlkOWQ5O1xuICAgICAgICAtLWJhY2tncm91bmQtY2hlY2tlZDogI2UzMmQyZDtcbiAgICAgICAgLS1ib3JkZXItd2lkdGg6IDVweDtcbiAgICAgICAgLS1zaXplOiAyMnB4O1xuICAgICAgICAtLWJvcmRlci1jb2xvci1jaGVja2VkOiAjZTMyZDJkO1xuICAgICAgICAtLWJvcmRlci1jb2xvcjogI2Q5ZDlkOTtcbiAgICAgICAgLS1jaGVja21hcmstd2lkdGg6IDVweDtcbiAgICAgICAgLy8gbWFyZ2luLXRvcDogLTNweDsgUkVNT1ZFRFxuICAgICAgICBtYXJnaW46IDVweCAxMHB4IDEwcHggMDsgLy9BRERFRFxuICAgIH1cbiAgICAubWluLW1heCB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiA1cHg7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiA1cHg7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDEwcHg7XG4gICAgICAgIHotaW5kZXg6IDU7XG4gICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICBjb2xvcjogIzlmOWY5ZjtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI2YyZjJmMjtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzcHgpO1xuICAgICAgICAgICAgbWFyZ2luOiAwIDNweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDVweCA2cHg7XG4gICAgICAgICAgICBpb24taWNvbiB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgY29sb3I6ICM1ZTVlNWU7XG4gICAgICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgICAgICBwYWRkaW5nOiAzcHggOHB4O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5yYWRpby10aXRsZSB7XG4gICAgcGFkZGluZzogMDtcbiAgICBpb24tbGFiZWwge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICB6LWluZGV4OiA1NTU1O1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXdoaXRlKTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IGV4bztcbiAgICAgICAgICAgIC8vY29sb3I6ICM0ZDRkNGQ7XG4gICAgICAgICAgICBjb2xvcjogI2Q0ZDRkNDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICB9XG4gICAgICAgIGkge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgLy9iYWNrZ3JvdW5kOiAjY2VjZWNlO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI2Q0ZDRkNDYzO1xuICAgICAgICAgICAgYm90dG9tOiA0MCU7XG4gICAgICAgICAgICAvL2JveC1zaGFkb3c6IDAgLTFweCAwcHggMC41cHggI2UxZTFlMTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnJlZCB7XG4gICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1jdXN0b20tdGhyLXJlZCk7XG59XG5cbi50b3BpbmctYm9keSB7XG4gICAgaGVpZ2h0OiA1MDBweDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4udG9waW5nLWJvZHktd2ViIHtcbiAgICBoZWlnaHQ6IDQ3MHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5zdWJtaXQtYnV0dG9ucyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cblxuLmZvb3Rlci1ib3gge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDEwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5lcnJvciB7XG4gICAgY29sb3I6ICNmOTEwMTA7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIHBhZGRpbmc6IDVweDtcbn1cblxuLnRvcGluZ19yZXF1aXJlZCB7XG4gICAgY29sb3I6ICNmOTEwMTAgIWltcG9ydGFudDtcbn1cblxuLndhcm5pbmctbWVzc2FnZSB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGNvbG9yOiAjZ
10107DRkNGQ0O1xufVxuXG4uc2VsZWN0LWxhYmVsIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDE2cHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5xdWVzdGlvbi1jb250YWluZXIge1xuICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgbWF4LWhlaWdodDogNTAwcHg7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcblxuICAgIC5xdWVzdGlvbi1jYXJkIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgLnF1ZXN0aW9uLWJ0biB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uc2tpcC1idG4ge1xuICAgIGEge1xuICAgICAgICBjb2xvcjogI2Y5MTAxMCAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLm9yZGVyLWxpc3Qge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAwO1xuXG4gICAgbGkub3JkZXItbGlzdC1saSB7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlNWU1O1xuICAgICAgICBwYWRkaW5nOiA1cHggNXB4IDVweCA1cHg7XG4gICAgICAgIGgzIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDBweDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDNweDtcbiAgICAgICAgICAgIGNvbG9yOiAjMjYyNjI2O1xuICAgICAgICAgICAgZm9udC1zaXplOiAxN3B4O1xuXG4gICAgICAgICAgICBpb24taWNvbiB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICM4NDg0ODQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogLTJweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm9yZGVyLWxpc3QtaW1nIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIC5wcmljZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAzMCUpO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIGJhY2tncm91bmQ6ICNlYmViZWI7XG4gICAgICAgIHBhZGRpbmc6IDVweCA4cHg7XG4gICAgICAgIC8vIGVkaXRlZCBoZXJlXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWN1c3RvbS10aHItcmVkKTsgLy9yZ2IoMzksIDE3NCwgOTYpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCA1cHggI2FlYWRhZDtcbiAgICAgICAgd2lkdGg6IDYwcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICAgICAgZm9udC1mYW1pbHk6IHJvYm90bztcbiAgICB9XG5cbiAgICAuaW1nIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgICAgLy9ib3gtc2hhZG93OiAwIDJweCAzcHggMHB4ICNjMWMxYzE7XG4gICAgICAgIGhlaWdodDogNjBweDtcbiAgICAgICAgd2lkdGg6IDUwcHg7XG4gICAgfVxufVxuXG4uaW9uLWl0ZW0tb3JkZXItbGlzdC1zdGFydCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xufVxuXG4ub3JkZXItbGlzdC1wcmljZSB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG59XG5cbi5pb24taXRlbS1vcmRlci1saXN0LFxuLmlvbi1pdGVtLW9yZGVyLWxpc3QtaXRlbSB7XG4gICAgLS1pbm5lci1wYWRkaW5nLWJvdHRvbTogMDtcbiAgICAtLWlubmVyLXBhZGRpbmctZW5kOiAwO1xuICAgIC0taW5uZXItcGFkZGluZy1zdGFydDogMDtcbiAgICAtLWlubmVyLXBhZGRpbmctdG9wOiAwO1xuICAgIC0tb3V0ZXItcGFkZGluZy1zdGFydDogMDtcbiAgICAtLXBhZGRpbmctc3RhcnQ6IDA7XG4gICAgLS1wYWRkaW5nLWVuZDogMDtcbn1cblxuLmZvbnQtc2l6ZS0yMCB7XG4gICAgZm9udC1zaXplOiAyMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5idG4tc2l6ZS04MCB7XG4gICAgd2lkdGg6IDkwJSAhaW1wb3J0YW50O1xufVxuXG4uZG9uZS1jcm9zcy1zZWxsaW5nIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICBmb250LXNpemU6IDI4cHg7XG4gICAgY29sb3I6ICM5NmQ3NDE7XG59XG4iXX0= */"); 10108 10109/***/ }), 10110 10111/***/ 30822: 10112/*!**********************************************************************!*\ 10113 !*** ./src/app/views/modals/delivery-times/delivery-times.page.scss ***! 10114 \**********************************************************************/ 10115/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 10116 10117"use strict"; 10118__webpack_require__.r(__webpack_exports__); 10119/* harmony default export */ __webpack_exports__["default"] = (".tour-container {\n padding: 10px;\n font-size: 12px;\n text-align: center;\n}\n.tour-container .btn-ok {\n background: #0b8fed;\n color: #ffffff;\n padding: 1px 5px;\n border-radius: 5px;\n}\n.times-header {\n font-size: 10px;\n display: flex;\n justify-content: space-between;\n background: #414040;\n padding: 5px;\n border-radius: 5px;\n margin-bottom: 2px;\n color: white;\n}\n.times-card {\n display: flex;\n justify-content: space-between;\n background: #dfdfdf;\n padding: 5px;\n border-radius: 5px;\n font-weight: 600;\n margin-bottom: 2px;\n}\n.times-card .time {\n border-right: 1px solid black;\n padding-right: 10px;\n}\n.active-t {\n background: #ffb11e;\n color: #3f3f3f;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRlbGl2ZXJ5LXRpbWVzLnBhZ2Uuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLGFBQUE7RUFDQSxlQUFBO0VBQ0Esa0JBQUE7QUFDSjtBQUNJO0VBQ0ksbUJBQUE7
10119RUFDQSxjQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtBQUNSO0FBR0E7RUFDSSxlQUFBO0VBQ0EsYUFBQTtFQUNBLDhCQUFBO0VBQ0EsbUJBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFDQSxrQkFBQTtFQUNBLFlBQUE7QUFBSjtBQUdBO0VBQ0ksYUFBQTtFQUNBLDhCQUFBO0VBQ0EsbUJBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0FBQUo7QUFFSTtFQUNJLDZCQUFBO0VBQ0EsbUJBQUE7QUFBUjtBQUlBO0VBQ0ksbUJBQUE7RUFDQSxjQUFBO0FBREoiLCJmaWxlIjoiZGVsaXZlcnktdGltZXMucGFnZS5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnRvdXItY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAuYnRuLW9rIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzBiOGZlZDtcbiAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgIHBhZGRpbmc6IDFweCA1cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICB9XG59XG5cbi50aW1lcy1oZWFkZXIge1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBiYWNrZ3JvdW5kOiAjNDE0MDQwO1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMnB4O1xuICAgIGNvbG9yOiB3aGl0ZTtcbn1cblxuLnRpbWVzLWNhcmQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGJhY2tncm91bmQ6ICNkZmRmZGY7XG4gICAgcGFkZGluZzogNXB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIG1hcmdpbi1ib3R0b206IDJweDtcblxuICAgIC50aW1lIHtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgYmxhY2s7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG4gICAgfVxufVxuXG4uYWN0aXZlLXQge1xuICAgIGJhY2tncm91bmQ6ICNmZmIxMWU7XG4gICAgY29sb3I6ICMzZjNmM2Y7XG59Il19 */"); 10120 10121/***/ }), 10122 10123/***/ 64054: 10124/*!****************************************************!*\ 10125 !*** ./src/app/views/modals/popup/popup.page.scss ***! 10126 \****************************************************/ 10127/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 10128 10129"use strict"; 10130__webpack_require__.r(__webpack_exports__); 10131/* harmony default export */ __webpack_exports__["default"] = ("#background-content {\n background-color: transparent;\n}\n\nion-content {\n --background: var(--ion-color-custom-black);\n}\n\n.popup-container {\n width: 100%;\n height: 100vh;\n}\n\n.popup-container .popup-container-inner {\n border-radius: 5px;\n box-shadow: 0 3px 5px 0px #484848;\n width: 80%;\n min-width: 300px;\n background: var(--ion-color-white);\n margin: auto;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n}\n\n.popup-container .popup-container-inner ul {\n list-style: none;\n padding: 0;\n}\n\n.title {\n display: block;\n width: 100%;\n position: relative;\n background: var(--ion-color-custom-six-red);\n color: var(--ion-color-white);\n font-weight: 600;\n /*border-top-left-radius: 10px;\n border-top-right-radius: 10px;*/\n}\n\n.title .close-btn {\n font-size: 25px;\n position: absolute;\n top: 0;\n right: 3px;\n color: var(--ion-color-white);\n}\n\n.lang-con {\n width: 22px;\n height: 15px;\n display: inline-block;\n background-size: cover;\n background-position: center;\n margin-bottom: -2px;\n border-radius: 3px;\n}\n\n.lang-con.de {\n background-image: url(\"/assets/img/languages/de.png\");\n}\n\n.lang-con.en {\n background-image: url(\"/assets/img/languages/en.png\");\n}\n\nion-item {\n --highlight-color-valid: transparent;\n --highlight-color-invalid: transparent;\n --highlight-color-focused: var(--ion-color-light);\n}\n\n.select-restaurant-btn {\n text-align: center;\n padding: 10px;\n}\n\n.select-restaurant-btn .btn {\n padding: 3px 10px;\n background: #4a8fe1;\n border-radius: 5px;\n font-size: 14px;\n}\n\n.select-restaurant-alert {\n padding: 10px;\n font-size: 14px;\n display: inline-flex;\n}\n\n.icon-container {\n font-size: 30px;\n margin-right: 16px;\n}\n\n.btn-link {\n cursor: pointer;\n margin-left: 10px;\n font-size: 12px;\n text-decoration: underline;\n}\n\n.unable-to-process-order-alert {\n padding: 5px 10px;\n font-size: 14px;\n display: inline-flex;\n justify-content: center;\n width: 100%;\n align-items: center;\n text-align: center;\n background: #ff071c;\n color: white;\n margin-bottom: 15px;\n}
10131\n\n.unavailable-menu-list .unavailable-menu-card-details {\n margin: 10px 10px;\n border: 1px dotted #ff071c;\n border-top: 5px solid #ff071c;\n padding: 6px;\n border-radius: 7px;\n font-size: 12px;\n}\n\n.unavailable-menu-list .unavailable-menu-card-details .available-times {\n margin-left: 15px;\n background: #ffe1e4;\n padding: 5px 20px;\n border-radius: 5px;\n font-size: 12px;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n}\n\n.unavailable-title {\n font-size: 14px;\n}\n\n.unavailable-close-btn-container {\n display: flex;\n justify-content: center;\n font-size: 14px;\n}\n\n.unavailable-close-btn-container span {\n border-radius: 5px;\n background: #e00f21;\n color: white;\n padding: 3px 10px;\n margin: 10px;\n}\n\n.icon-container-unavailable {\n font-size: 40px;\n margin-right: 10px;\n height: 40px;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBvcHVwLnBhZ2Uuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLDZCQUFBO0FBQ0Y7O0FBRUE7RUFDRSwyQ0FBQTtBQUNGOztBQUVBO0VBQ0UsV0FBQTtFQUNBLGFBQUE7QUFDRjs7QUFDRTtFQUNFLGtCQUFBO0VBQ0EsaUNBQUE7RUFDQSxVQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQ0FBQTtFQUNBLFlBQUE7RUFDQSxrQkFBQTtFQUNBLFFBQUE7RUFDQSxTQUFBO0VBQ0EsZ0NBQUE7QUFDSjs7QUFDSTtFQUNFLGdCQUFBO0VBQ0EsVUFBQTtBQUNOOztBQU1BO0VBQ0UsY0FBQTtFQUNBLFdBQUE7RUFDQSxrQkFBQTtFQUNBLDJDQUFBO0VBQ0EsNkJBQUE7RUFDQSxnQkFBQTtFQUVBO2lDQUFBO0FBSEY7O0FBS0U7RUFDRSxlQUFBO0VBQ0Esa0JBQUE7RUFDQSxNQUFBO0VBQ0EsVUFBQTtFQUNBLDZCQUFBO0FBSEo7O0FBUUE7RUFDRSxXQUFBO0VBQ0EsWUFBQTtFQUNBLHFCQUFBO0VBQ0Esc0JBQUE7RUFDQSwyQkFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7QUFMRjs7QUFPRTtFQUNFLHFEQUFBO0FBTEo7O0FBUUU7RUFDRSxxREFBQTtBQU5KOztBQVdBO0VBQ0Usb0NBQUE7RUFDQSxzQ0FBQTtFQUNBLGlEQUFBO0FBUkY7O0FBV0E7RUFRRSxrQkFBQTtFQUNBLGFBQUE7QUFmRjs7QUFpQkU7RUFDRSxpQkFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxlQUFBO0FBZko7O0FBbUJBO0VBQ0UsYUFBQTtFQUNBLGVBQUE7RUFDQSxvQkFBQTtBQWhCRjs7QUFtQkE7RUFDRSxlQUFBO0VBQ0Esa0JBQUE7QUFoQkY7O0FBbUJBO0VBQ0UsZUFBQTtFQUNBLGlCQUFBO0VBQ0EsZUFBQTtFQUNBLDBCQUFBO0FBaEJGOztBQW9CQTtFQUNFLGlCQUFBO0VBQ0EsZUFBQTtFQUNBLG9CQUFBO0VBQ0EsdUJBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0VBQ0EsWUFBQTtFQUNBLG1CQUFBO0FBakJGOztBQXFCRTtFQUNFLGlCQUFBO0VBQ0EsMEJBQUE7RUFDQSw2QkFBQTtFQUNBLFlBQUE7RUFDQSxrQkFBQTtFQUNBLGVBQUE7QUFsQko7O0FBb0JJO0VBQ0UsaUJBQUE7RUFDQSxtQkFBQTtFQUNBLGlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxlQUFBO0VBQ0Esb0JBQUE7RUFDQSx1QkFBQTtFQUNBLG1CQUFBO0FBbEJOOztBQXVCQTtFQUNFLGVBQUE7QUFwQkY7O0FBdUJBO0VBQ0UsYUFBQTtFQUNBLHVCQUFBO0VBQ0EsZUFBQTtBQXBCRjs7QUFzQkU7RUFDRSxrQkFBQTtFQUNBLG1CQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBO0VBQ0EsWUFBQTtBQXBCSjs7QUF3QkE7RUFDRSxlQUFBO0VBQ0Esa0JBQUE7RUFDQSxZQUFBO0FBckJGIiwiZmlsZSI6InBvcHVwLnBhZ2Uuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIiNiYWNrZ3JvdW5kLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuaW9uLWNvbnRlbnQge1xuICAtLWJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1jdXN0b20tYmxhY2spO1xufVxuXG4ucG9wdXAtY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwdmg7XG5cbiAgLnBvcHVwLWNvbnRhaW5lci1pbm5lciB7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIGJveC1zaGFkb3c6IDAgM3B4IDVweCAwcHggIzQ4NDg0ODtcbiAgICB3aWR0aDogODAlO1xuICAgIG1pbi13aWR0aDogMzAwcHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXdoaXRlKTtcbiAgICBtYXJnaW46IGF1dG87XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcblxuICAgIHVsIHtcbiAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICB9XG59XG5cblxuLnRpdGxlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1jdXN0b20tc2l4LXJlZCk7XG4gIGNvbG9yOiB2YXIoLS1pb24tY29sb3Itd2hpdGUpO1xuICBmb250LXdlaWdodDogNjAwO1xuXG4gIC8qYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMTBweDtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDEwcHg7Ki9cbiAgLmNsb3NlLWJ0biB7XG4gICAgZm9udC1zaXplOiAyNXB4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDNweDtcbiAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXdoaXRlKTtcbiAgfVxufVxuXG5cbi5sYW5nLWNvbiB7XG4gIHdpZHRoOiAyMnB4O1xuICBoZWlnaHQ6IDE1cHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiAtMnB4O1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG5cbiAgJi5kZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiL2Fzc2V0cy9pbWcvbGFuZ3VhZ2VzL2RlLnBuZ1wiKTtcbiAgfVxuXG4gICYuZW4ge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi9hc3NldHMvaW1nL2xhbmd1YWdlcy9lbi5wbmdcIik7XG4gIH1cbn1cblxuXG5pb24taXRlbSB7XG4gIC0taGlnaGxpZ2h0LWNvbG9yLXZhbGlkOiB0cmFuc3B
10131hcmVudDtcbiAgLS1oaWdobGlnaHQtY29sb3ItaW52YWxpZDogdHJhbnNwYXJlbnQ7XG4gIC0taGlnaGxpZ2h0LWNvbG9yLWZvY3VzZWQ6IHZhcigtLWlvbi1jb2xvci1saWdodCk7XG59XG5cbi5zZWxlY3QtcmVzdGF1cmFudC1idG4ge1xuICAvLyBwYWRkaW5nOiA1cHg7XG4gIC8vIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgLy8gYmFja2dyb3VuZDogIzRhOGZlMTtcbiAgLy8gYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNXB4O1xuICAvLyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNXB4O1xuICAvLyBjb2xvcjogd2hpdGU7XG4gIC8vIGZvbnQtc2l6ZTogMTVweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAxMHB4O1xuXG4gIC5idG4ge1xuICAgIHBhZGRpbmc6IDNweCAxMHB4O1xuICAgIGJhY2tncm91bmQ6ICM0YThmZTE7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgfVxufVxuXG4uc2VsZWN0LXJlc3RhdXJhbnQtYWxlcnQge1xuICBwYWRkaW5nOiAxMHB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xufVxuXG4uaWNvbi1jb250YWluZXIge1xuICBmb250LXNpemU6IDMwcHg7XG4gIG1hcmdpbi1yaWdodDogMTZweDtcbn1cblxuLmJ0bi1saW5rIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBtYXJnaW4tbGVmdDogMTBweDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuXG4udW5hYmxlLXRvLXByb2Nlc3Mtb3JkZXItYWxlcnQge1xuICBwYWRkaW5nOiA1cHggMTBweDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQ6ICNmZjA3MWM7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgbWFyZ2luLWJvdHRvbTogMTVweDtcbn1cblxuLnVuYXZhaWxhYmxlLW1lbnUtbGlzdCB7XG4gIC51bmF2YWlsYWJsZS1tZW51LWNhcmQtZGV0YWlscyB7XG4gICAgbWFyZ2luOiAxMHB4IDEwcHg7XG4gICAgYm9yZGVyOiAxcHggZG90dGVkICNmZjA3MWM7XG4gICAgYm9yZGVyLXRvcDogNXB4IHNvbGlkICNmZjA3MWM7XG4gICAgcGFkZGluZzogNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDdweDtcbiAgICBmb250LXNpemU6IDEycHg7XG5cbiAgICAuYXZhaWxhYmxlLXRpbWVzIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAxNXB4O1xuICAgICAgYmFja2dyb3VuZDogI2ZmZTFlNDtcbiAgICAgIHBhZGRpbmc6IDVweCAyMHB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuICB9XG59XG5cbi51bmF2YWlsYWJsZS10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbn1cblxuLnVuYXZhaWxhYmxlLWNsb3NlLWJ0bi1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxNHB4O1xuXG4gIHNwYW4ge1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2IoMjI0LCAxNSwgMzMpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAzcHggMTBweDtcbiAgICBtYXJnaW46IDEwcHg7XG4gIH1cbn1cblxuLmljb24tY29udGFpbmVyLXVuYXZhaWxhYmxlIHtcbiAgZm9udC1zaXplOiA0MHB4O1xuICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gIGhlaWdodDogNDBweDtcbn0iXX0= */"); 10132 10133/***/ }), 10134 10135/***/ 3858: 10136/*!****************************************************************************!*\ 10137 !*** ./src/app/views/modals/select-order-type/select-order-type.page.scss ***! 10138 \****************************************************************************/ 10139/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 10140 10141"use strict"; 10142__webpack_require__.r(__webpack_exports__); 10143/* harmony default export */ __webpack_exports__["default"] = ("#background-content {\n background-color: transparent;\n}\n\nion-content {\n --background: rgba(0, 0, 0, 0);\n font-family: \"roboto\";\n}\n\n.popup-container {\n width: 100%;\n height: 100vh;\n}\n\n.popup-container .popup-container-inner {\n border-radius: 5px;\n box-shadow: 0 3px 5px 0px #484848;\n width: 80%;\n min-width: 300px;\n min-height: 200px;\n background: var(--ion-color-white);\n margin: auto;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n padding-bottom: 10px;\n}\n\n.popup-container .popup-container-inner ul {\n list-style: none;\n padding: 0;\n margin: 0;\n}\n\n.title {\n display: block;\n width: 100%;\n position: relative;\n border-bottom: 1px solid #e3e3e3;\n color: #535353;\n font-family: exo;\n text-transform: uppercase;\n box-shadow: 0 1px 2px 0px #dfdfdf;\n}\n\n.title .close-btn {\n font-size: 25px;\n position: absolute;\n top: 0;\n right: 3px;\n color: #5d5d5d;\n}\n\n.form-container {\n padding: 10px;\n max-height: 500px;\n overflow-x: auto;\n}\n\n.form-container .question-card {\n width: 100%;\n}\n\n.form-container .question-card .question-btn {\n width: 100%;\n font-size: 18px !important;\n}\n\n.red {\n color: var(--ion-color-custom-thr-red);\n}\n\nh1 {\n color: var(--ion-color-custom-sec-gray);\n font-size: 32px;\n font-weight: bold;\n}\n\n.epit-container {\n background-color: var(--ion-color-sec-white);\n min-height: 100%;\n}\n\nh4 {\n color: #808080;\n font-size: 18px;\n}\n\n.searchbar {\n margin-top: 10px;\n position: relative;\n}\n\n.searchbar ion-label {\n color: var(--ion-color-fiv-white);\n font-size: 14px;\n}\n\n.searchbar .input {\n border-bottom: 1px solid var(--ion-color-fiv-white);\n color: var(--ion-color-custom-sec-gray);\n font-size: 18px;\n padding-right: 40px !important;\n}\n\n.searchbar ion-icon.closeicon {\n position: absolute;\n top: 30px;\n right: 10px;\n font-size: 22px;\n z-index: 2;\n}\n\n.searchbar .search-drop {\n max-height: 300px;\n width: 100%;\n position: absolute;\n background: var(--ion-color-sec-white);\n z-index: 300;\n padding: 0 10px;\n border-bottom-left-radius: 10px;\n border-bottom-right-radius: 10px;\n box-shadow: 0 6px 5px 0px #8c8c8c;\n}\n\n.searchbar .search-drop ul {\n list-style: none;\n padding: 0;\n}\n\n.searchbar .search-drop ul li {\n padding: 10px 0;\n color: #7b7979;\n}\n\n.searchbar .search-drop ul li .li-text {\n display: inline-block;\n margin-top: -20px;\n transform: translateY(-8px);\n margin-left: 10px;\n font-size: 15px;\n}\n\n.searchbar .search-drop ul li .li-text span {\n color: var(--ion-color-custom-sec-gray);\n font-weight: bold;\n}\n\n.searchbar .search-drop .dark {\n color: var(--ion-color-custom-sec-gray);\n}\n\n.alert div {\n text-align: right;\n font-size: 12px;\n color: var(--ion-color-custom-six-red);\n margin-top: 3px;\n}\n\n.btn-row {\n text-align: center;\n margin-bottom: 10px;\n}\n\n.findMe {\n text-align: center;\n padding-top: 5px;\n}\n\n.table-container {\n padding: 10px !important;\n max-height: 350px;\n overflow: auto;\n}\n\n.table-container .table-select-row {\n padding: 10px;\n border-bottom: 1px #e4e4e4 solid;\n}\n\n.table-container .table-select-row ion-icon {\n float: right;\n color: gray;\n}\n\n.table-container .selected {\n color: red;\n}\n\n.table-container .selected ion-icon {\n color: red;\n}\n\n.no-pb {\n padding-bottom: 0px !important;\n}\n\n.btn-footer {\n display: flex;\n}\n\n.btn-footer div {\n padding: 5px;\n text-align: center;\n}\n\n.btn-footer .cancel {\n width: 50%;\n background: #333333;\n color: white;\n border-bottom-left-radius: 5px;\n}\n\n.btn-footer .select {\n width: 50%;\n background: #e30519;\n color: white;\n border-bottom-right-radius: 5px;\n}\n\n.table-msg-container {\n text-align: center;\n font-size: 14px;\n color: #e30519;\n padding: 10px;\n}\n\n.timer {\n font-size: 25px;\n width: 100%;\n}\n\n.restaurant-details-card {\n margin: 10px;\n padding: 15px 5px;\n text-align: center;\n background: #ddeed6;\n border-radius: 5px;\n}\n\n.go-now {\n text-align: center;\n}\n\n.go-now .change-favourite {\n font-size: 12px;\n}\n\n.spinner-container {\n min-height: 150px;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.change-favourite {\n font-size: 12px;\n}\n\n.delivery-area-select {\n width: 100% !important;\n}\n\n.postal-code-input {\n border: 2px dashed darkgray;\n border-radius: 10px;\n}\n\n.container {\n padding: 10px;\n}\n\n.postal-code-list {\n max-height: 250px;\n overflow: auto;\n}\n\n.not-found-postals {\n text-align: center;\n margin-top: 5px;\n font-size: 14px;\n color: var(--ion-color-custom-medium-gray);\n}\n\n.not-found-postals p {\n margin: 5px;\n}\n\n.not-found-postals ion-icon {\n font-size: 24px;\n}\n\n.spinner-container-postal-code {\n min-height: 150px;\n align-items: center;\n display: flex;\n justify-content: center;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNlbGVjdC1vcmRlci10eXBlLnBhZ2Uuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLDZCQUFBO0FBQ0o7O0FBRUE7RUFDSSw4QkFBQTtFQUNBLHFCQUFBO0FBQ0o7O0FBRUE7RUFDSSxXQUFBO0VBQ0EsYUFBQTtBQUNKOztBQUNJO0VBQ0ksa0JBQUE7RUFDQSxpQ0FBQTtFQUNBLFVBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQUFBO0VBQ0Esa0NBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFDQSxRQUFBO0VBQ0EsU0FBQTtFQUNBLGdDQUFBO0VBQ0Esb0JBQUE7QUFDUjs7QUFDUTtFQUNJLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLFNBQUE7QUFDWjs7QUFJQTtFQUNJLGNBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQ0FBQTtFQUNBLGNBQUE7RUFDQSxnQkFBQTtFQUNBLHlCQUFBO0VBQ0EsaUNBQUE7QUFESjs7QUFHSTtFQUNJLGVBQUE7RUFDQSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxVQUFBO0VBQ0EsY0FBQTtBQURSOztBQUtBO0VBQ0ksYUFBQTtFQUNBLGlCQUFBO0VBQ0EsZ0JBQUE7QUFGSjs7QUFJSTtFQUNJLFdBQUE7QUFGUjs7QUFJUTtFQUNJLFdBQUE7RUFDQSwwQkFBQTtBQUZaOztBQU9BO0VBQ0ksc0NBQUE7QUFKSjs7QUFRQTtFQUNJLHVDQUFBO0VBQ0EsZUFBQTtFQUNBLGlCQUFBO0FBTEo7O0FBUUE7RUFDSSw0Q0FBQTtFQUNBLGdCQUFBO0FBTEo7O0FBUUE7RUFDSSxjQUFBO0VBQ0EsZUFBQTtBQUxKOztBQVFBO0VBQ0ksZ0JBQUE7RUFDQSxrQkFBQTtBQUxKOztBQU9JO0VBQ0ksaUNBQUE7RUFDQSxlQUFBO0FBTFI7O0FBUUk7RUFDSSxtREFBQTtFQUNBLHVDQUFBO0VBQ0EsZUFBQTtFQUNBLDhCQUFBO0FBTlI7O0FBU0k7RUFDSSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxXQUFBO0VBQ0EsZUFBQTtFQUNBLFVBQUE7QUFQUjs7QUFVSTtFQUNJLGlCQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0Esc0NBQUE7RUFDQSxZQUFBO0VBQ0EsZUFBQTtFQUNBLCtCQUFBO0VBQ0EsZ0NBQUE7RUFDQSxpQ0FBQTtBQVJSOztBQVVRO0VBQ0ksZ0JBQUE7RUFDQSxVQUFBO0FBUlo7O0F
10143BVVk7RUFDSSxlQUFBO0VBQ0EsY0FBQTtBQVJoQjs7QUFVZ0I7RUFDSSxxQkFBQTtFQUNBLGlCQUFBO0VBQ0EsMkJBQUE7RUFDQSxpQkFBQTtFQUNBLGVBQUE7QUFScEI7O0FBVW9CO0VBQ0ksdUNBQUE7RUFDQSxpQkFBQTtBQVJ4Qjs7QUFjUTtFQUNJLHVDQUFBO0FBWlo7O0FBa0JJO0VBQ0ksaUJBQUE7RUFDQSxlQUFBO0VBQ0Esc0NBQUE7RUFDQSxlQUFBO0FBZlI7O0FBbUJBO0VBQ0ksa0JBQUE7RUFDQSxtQkFBQTtBQWhCSjs7QUFtQkE7RUFDSSxrQkFBQTtFQUNBLGdCQUFBO0FBaEJKOztBQW1CQTtFQUNJLHdCQUFBO0VBQ0EsaUJBQUE7RUFDQSxjQUFBO0FBaEJKOztBQWtCSTtFQUNJLGFBQUE7RUFDQSxnQ0FBQTtBQWhCUjs7QUFrQlE7RUFDSSxZQUFBO0VBQ0EsV0FBQTtBQWhCWjs7QUFvQkk7RUFDSSxVQUFBO0FBbEJSOztBQW9CUTtFQUNJLFVBQUE7QUFsQlo7O0FBdUJBO0VBQ0ksOEJBQUE7QUFwQko7O0FBdUJBO0VBQ0ksYUFBQTtBQXBCSjs7QUFzQkk7RUFDSSxZQUFBO0VBQ0Esa0JBQUE7QUFwQlI7O0FBdUJJO0VBQ0ksVUFBQTtFQUNBLG1CQUFBO0VBQ0EsWUFBQTtFQUNBLDhCQUFBO0FBckJSOztBQXdCSTtFQUNJLFVBQUE7RUFDQSxtQkFBQTtFQUNBLFlBQUE7RUFDQSwrQkFBQTtBQXRCUjs7QUEwQkE7RUFDSSxrQkFBQTtFQUNBLGVBQUE7RUFDQSxjQUFBO0VBQ0EsYUFBQTtBQXZCSjs7QUEwQkE7RUFDSSxlQUFBO0VBQ0EsV0FBQTtBQXZCSjs7QUEwQkE7RUFDSSxZQUFBO0VBQ0EsaUJBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7QUF2Qko7O0FBMEJBO0VBQ0ksa0JBQUE7QUF2Qko7O0FBeUJJO0VBQ0ksZUFBQTtBQXZCUjs7QUEyQkE7RUFDSSxpQkFBQTtFQUNBLGFBQUE7RUFDQSx1QkFBQTtFQUNBLG1CQUFBO0FBeEJKOztBQTJCQTtFQUNJLGVBQUE7QUF4Qko7O0FBMkJBO0VBQ0ksc0JBQUE7QUF4Qko7O0FBMkJBO0VBQ0ksMkJBQUE7RUFDQSxtQkFBQTtBQXhCSjs7QUEyQkE7RUFDSSxhQUFBO0FBeEJKOztBQTJCQTtFQUNJLGlCQUFBO0VBQ0EsY0FBQTtBQXhCSjs7QUEyQkE7RUFDSSxrQkFBQTtFQUNBLGVBQUE7RUFDQSxlQUFBO0VBQ0EsMENBQUE7QUF4Qko7O0FBMEJJO0VBQ0ksV0FBQTtBQXhCUjs7QUEyQkk7RUFDSSxlQUFBO0FBekJSOztBQTZCQTtFQUNJLGlCQUFBO0VBQ0EsbUJBQUE7RUFDQSxhQUFBO0VBQ0EsdUJBQUE7QUExQkoiLCJmaWxlIjoic2VsZWN0LW9yZGVyLXR5cGUucGFnZS5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiI2JhY2tncm91bmQtY29udGVudCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbmlvbi1jb250ZW50IHtcbiAgICAtLWJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMCk7XG4gICAgZm9udC1mYW1pbHk6IFwicm9ib3RvXCI7XG59XG5cbi5wb3B1cC1jb250YWluZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwdmg7XG5cbiAgICAucG9wdXAtY29udGFpbmVyLWlubmVyIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICBib3gtc2hhZG93OiAwIDNweCA1cHggMHB4ICM0ODQ4NDg7XG4gICAgICAgIHdpZHRoOiA4MCU7XG4gICAgICAgIG1pbi13aWR0aDogMzAwcHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIwMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itd2hpdGUpO1xuICAgICAgICBtYXJnaW46IGF1dG87XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuXG4gICAgICAgIHVsIHtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4udGl0bGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UzZTNlMztcbiAgICBjb2xvcjogIzUzNTM1MztcbiAgICBmb250LWZhbWlseTogZXhvO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgYm94LXNoYWRvdzogMCAxcHggMnB4IDBweCAjZGZkZmRmO1xuXG4gICAgLmNsb3NlLWJ0biB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjVweDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHJpZ2h0OiAzcHg7XG4gICAgICAgIGNvbG9yOiAjNWQ1ZDVkO1xuICAgIH1cbn1cblxuLmZvcm0tY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICAgIG1heC1oZWlnaHQ6IDUwMHB4O1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG5cbiAgICAucXVlc3Rpb24tY2FyZCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgIC5xdWVzdGlvbi1idG4ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBmb250LXNpemU6IDE4cHggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnJlZCB7XG4gICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1jdXN0b20tdGhyLXJlZCk7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5oMSB7XG4gICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1jdXN0b20tc2VjLWdyYXkpO1xuICAgIGZvbnQtc2l6ZTogMzJweDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLmVwaXQtY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pb24tY29sb3Itc2VjLXdoaXRlKTtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xufVxuXG5oNCB7XG4gICAgY29sb3I6ICM4MDgwODA7XG4gICAgZm9udC1zaXplOiAxOHB4O1xufVxuXG4uc2VhcmNoYmFyIHtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIGlvbi1sYWJlbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZml2LXdoaXRlKTtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgIH1cblxuICAgIC5pbnB1dCB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1pb24tY29sb3ItZml2LXdoaXRlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1jdXN0b20tc2VjLWdyYXkpO1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgI
10143HBhZGRpbmctcmlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBpb24taWNvbi5jbG9zZWljb24ge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMzBweDtcbiAgICAgICAgcmlnaHQ6IDEwcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMjJweDtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICB9XG5cbiAgICAuc2VhcmNoLWRyb3Age1xuICAgICAgICBtYXgtaGVpZ2h0OiAzMDBweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXNlYy13aGl0ZSk7XG4gICAgICAgIHotaW5kZXg6IDMwMDtcbiAgICAgICAgcGFkZGluZzogMCAxMHB4O1xuICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAxMHB4O1xuICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMTBweDtcbiAgICAgICAgYm94LXNoYWRvdzogMCA2cHggNXB4IDBweCAjOGM4YzhjO1xuXG4gICAgICAgIHVsIHtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMTBweCAwO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjN2I3OTc5O1xuXG4gICAgICAgICAgICAgICAgLmxpLXRleHQge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IC0yMHB4O1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCk7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE1cHg7XG5cbiAgICAgICAgICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWN1c3RvbS1zZWMtZ3JheSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5kYXJrIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItY3VzdG9tLXNlYy1ncmF5KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmFsZXJ0IHtcbiAgICBkaXYge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWN1c3RvbS1zaXgtcmVkKTtcbiAgICAgICAgbWFyZ2luLXRvcDogM3B4O1xuICAgIH1cbn1cblxuLmJ0bi1yb3cge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuXG4uZmluZE1lIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZy10b3A6IDVweDtcbn1cblxuLnRhYmxlLWNvbnRhaW5lciB7XG4gICAgcGFkZGluZzogMTBweCAhaW1wb3J0YW50O1xuICAgIG1heC1oZWlnaHQ6IDM1MHB4O1xuICAgIG92ZXJmbG93OiBhdXRvO1xuXG4gICAgLnRhYmxlLXNlbGVjdC1yb3cge1xuICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggI2U0ZTRlNCBzb2xpZDtcblxuICAgICAgICBpb24taWNvbiB7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICBjb2xvcjogZ3JheTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zZWxlY3RlZCB7XG4gICAgICAgIGNvbG9yOiByZWQ7XG5cbiAgICAgICAgaW9uLWljb24ge1xuICAgICAgICAgICAgY29sb3I6IHJlZDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm5vLXBiIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5idG4tZm9vdGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgZGl2IHtcbiAgICAgICAgcGFkZGluZzogNXB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmNhbmNlbCB7XG4gICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6ICMzMzMzMzM7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNXB4O1xuICAgIH1cblxuICAgIC5zZWxlY3Qge1xuICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZTMwNTE5O1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1cHg7XG4gICAgfVxufVxuXG4udGFibGUtbXNnLWNvbnRhaW5lciB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBjb2xvcjogI2UzMDUxOTtcbiAgICBwYWRkaW5nOiAxMHB4O1xufVxuXG4udGltZXIge1xuICAgIGZvbnQtc2l6ZTogMjVweDtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLnJlc3RhdXJhbnQtZGV0YWlscy1jYXJkIHtcbiAgICBtYXJnaW46IDEwcHg7XG4gICAgcGFkZGluZzogMTVweCA1cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJhY2tncm91bmQ6ICNkZGVlZDY7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xufVxuXG4uZ28tbm93IHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAuY2hhbmdlLWZhdm91cml0ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICB9XG59XG5cbi5zcGlubmVyLWNvbnRhaW5lciB7XG4gICAgbWluLWhlaWdodDogMTUwcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uY2hhbmdlLWZhdm91cml0ZSB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xufVxuXG4uZGVsaXZlcnktYXJlYS1zZWxlY3Qge1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG59XG5cbi5wb3N0YWwtY29kZS1pbnB1dCB7XG4gICAgYm9yZGVyOiAycHggZGFzaGVkIGRhcmtncmF5O1xuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG59XG5cbi5jb250YWluZXIge1xuICAgIHBhZGRpbmc6IDEwcHg7XG59XG5cbi5wb3N0YWwtY29kZS1saXN0IHtcbiAgICBtYXgtaGVpZ2h0OiAyNTBweDtcbiAgICBvdmVyZmxvdzogYXV0bztcbn1cblxuLm5vdC1mb3VuZC1wb3N0YWxzIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLXRvcDogNXB4O1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWN1c3RvbS1tZWRpdW0tZ3JheSk7XG5cbiAgICBwe1xuICAgICAgICBtYXJnaW46IDVweDtcbiAgICB9XG5cbiAgICBpb24taWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICB9XG59XG5cbi5zcGlubmVyLWNvbnRhaW5lci1wb3N0YWwtY29kZSB7XG4gICAgbWluLWhlaWdodDogMTUwcHg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufSJdfQ== */"); 10144 10145/***/ }), 10146 10147/***/ 75423: 10148/*!**********************************************************!*\ 10149 !*** ./src/app/views/modals/toppings/toppings.page.scss ***! 10150 \**********************************************************/ 10151/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 10152 10153"use strict"; 10154__webpack_require__.r(__webpack_exports__); 10155/* harmony default export */ __webpack_exports__["default"] = ("#background-content {\n background-color: transparent;\n}\n\nion-content {\n --background: rgba(0, 0, 0, 0);\n font-family: \"roboto\";\n}\n\n.popup-container {\n width: 100%;\n height: 100vh;\n}\n\n.popup-container .popup-container-inner {\n border-radius: 5px;\n box-shadow: 0 3px 5px 0px #484848;\n width: 80%;\n min-width: 300px;\n min-height: 200px;\n background: var(--ion-color-white);\n margin: auto;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n}\n\n.popup-container .popup-container-inner ul {\n list-style: none;\n padding: 0;\n margin: 0;\n}\n\n.title {\n display: block;\n width: 100%;\n position: relative;\n border-bottom: 1px solid #e3e3e3;\n color: #535353;\n font-family: exo;\n text-transform: uppercase;\n box-shadow: 0 1px 2px 0px #dfdfdf;\n}\n\n.title .close-btn {\n font-size: 25px;\n position: absolute;\n top: 0;\n right: 3px;\n color: #5d5d5d;\n}\n\n.topping-radio {\n --border-color-checked: #e32d2d;\n --background-checked: #e32d2d;\n background: #d9d9d9;\n color: var(--ion-color-white);\n box-sizing: revert;\n border-radius: 100%;\n transition: 1s;\n --color-checked: var(--ion-color-white);\n}\n\n.topping-radio.checkbox-checked {\n background: #e32d2d;\n}\n\n.radio-group ion-item,\n.checkboxgroup ion-item {\n --min-height: 10px;\n}\n\n.radio-group ion-item ion-label,\n.checkboxgroup ion-item ion-label {\n font-size: 13px;\n}\n\n.radio-group ion-item ion-label.label-2,\n.checkboxgroup ion-item ion-label.label-2 {\n font-size: 12px;\n color: #797979;\n}\n\n.radio-group ion-item ion-label.label-1,\n.checkboxgroup ion-item ion-label.label-1 {\n color: #535353;\n font-weight: bold;\n}\n\n.radio-group ion-item ion-icon,\n.checkboxgroup ion-item ion-icon {\n font-size: 20px;\n}\n\n.dropdown ion-item {\n --inner-padding-start: 0;\n --padding-start: 0;\n padding: 0;\n font-size: 14px;\n color: #535353;\n}\n\n.dropdown ion-item ion-label {\n padding-left: 15px;\n font-weight: bold;\n}\n\n.dropdown ion-select {\n color: #ef1b32b3;\n font-size: 12px;\n font-weight: bold;\n}\n\n.checkboxgroup ion-item {\n /*--min-height: 40px;*/\n}\n\n.checkboxgroup ion-checkbox {\n --background: #d9d9d9;\n --background-checked: #e32d2d;\n --border-width: 5px;\n --size: 22px;\n --border-color-checked: #e32d2d;\n --border-color: #d9d9d9;\n --checkmark-width: 5px;\n margin: 5px 10px 10px 0;\n}\n\n.checkboxgroup .min-max {\n padding-bottom: 5px;\n padding-bottom: 5px;\n position: absolute;\n right: 10px;\n z-index: 5;\n}\n\n.checkboxgroup .min-max button {\n color: #9f9f9f;\n font-weight: bold;\n background: #f2f2f2;\n border-radius: 3px;\n transform: translateY(3px);\n margin: 0 3px;\n padding: 5px 6px;\n}\n\n.checkboxgroup .min-max button ion-icon {\n font-size: 14px;\n}\n\n.checkboxgroup .min-max span {\n /*\n REMOVE\n color: #5e5e5e;\n font-size: 15px;\n padding: 3px 8px;\n background: #e8e8e8;\n border-radius: 5px;\n box-shadow: 0 0 3px #acacac inset;*/\n color: #5e5e5e;\n font-size: 13px;\n padding: 3px 8px;\n /* background: #e8e8e8; */\n border-radius: 5px;\n /* box-shadow: 0 0 3px #acacac inset; */\n font-weight: bold;\n}\n\n.radio-title {\n padding: 0;\n}\n\n.radio-title ion-label {\n position: relative;\n margin: 0;\n}\n\n.radio-title ion-label span {\n z-index: 5555;\n position: relative;\n background: var(--ion-color-white);\n margin-left: 20px;\n font-size: 14px;\n font-family: exo;\n color: #d4d4d4;\n padding: 10px;\n font-weight: 600;\n}\n\n.radio-title ion-label i {\n position: absolute;\n height: 1px;\n width: 100%;\n display: block;\n background: #d4d4d463;\n bottom: 40%;\n}\n\n.red {\n color: var(--ion-color-custom-thr-red);\n}\n\n.submit-buttons {\n margin-bottom: 20px;\n}\n\n.footer-box {\n position: absolute;\n bottom: 0;\n width: 100%;\n z-index: 9999;\n background-color: #ffffff;\n padding-top: 10px;\n}\n\n.error {\n color: #f91010;\n font-size: 13px;\n padding: 5px;\n}\n\n.toping_required {\n color: #f91010 !important;\n}\n\n.warning-message {\n font-size: 12px;\n color: #d4d4d4;\n}\n\n.select-label {\n padding-left: 16px;\n font-weight: bold;\n}\n\n.toping-container {\n height: 82%;\n overflow-y: auto;\n}\n\n.toping-container-mobile {\n max-height: 80vh;\n overflow-y: auto;\n padding-bottom: 100px;\n}\n\n.size-radio-list {\n padding: 5px 10px;\n max-height: 150px;\n overflow: auto;\n}\n\n.size-radio-list ion-radio-group ion-item {\n --min-height: 20px !important;\n}\n\n.size-radio-list ion-radio-group ion-item ion-label,\n.size-radio-list ion-radio-group ion-item ion-icon {\n margin: 3px 0;\n}\n\n.size-radio-list ion-radio-group ion-item ion-radio {\n margin-bottom: 3px !important;\n margin-top: 3px !important;\n}\n\nion-radio {\n --color: var(--radio-color);\n --color-checked: var(--radio-color);\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvcHBpbmdzLnBhZ2Uuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLDZCQUFBO0FBQ0o7O0FBRUE7RUFDSSw4QkFBQTtFQUNBLHFCQUFBO0FBQ0o7O0FBRUE7RUFDSSxXQUFBO0VBQ0EsYUFBQTtBQUNKOztBQUNJO0VBQ0ksa0JBQUE7RUFDQSxpQ0FBQTtFQUNBLFVBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQUFBO0VBQ0Esa0NBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFDQSxRQUFBO0VBQ0EsU0FBQTtFQUNBLGdDQUFBO0FBQ1I7O0FBRVE7RUFDSSxnQkFBQTtFQUNBLFVBQUE7RUFDQSxTQUFBO0FBQVo7O0FBS0E7RUFDSSxjQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsZ0NBQUE7RUFDQSxjQUFBO0VBQ0EsZ0JBQUE7RUFDQSx5QkFBQTtFQUNBLGlDQUFBO0FBRko7O0FBSUk7RUFDSSxlQUFBO0VBQ0Esa0JBQUE7RUFDQSxNQUFBO0VBQ0EsVUFBQTtFQUNBLGNBQUE7QUFGUjs7QUFNQTtFQUtJLCtCQUFBO0VBQ0EsNkJBQUE7RUFFQSxtQkFBQTtFQUNBLDZCQUFBO0VBQ0Esa0JBQUE7RUFDQSxtQk
10155FBQTtFQUNBLGNBQUE7RUFDQSx1Q0FBQTtBQVJKOztBQUpJO0VBQ0ksbUJBQUE7QUFNUjs7QUFVSTs7RUFDSSxrQkFBQTtBQU5SOztBQVFROztFQUNJLGVBQUE7QUFMWjs7QUFPWTs7RUFDSSxlQUFBO0VBQ0EsY0FBQTtBQUpoQjs7QUFPWTs7RUFDSSxjQUFBO0VBQ0EsaUJBQUE7QUFKaEI7O0FBUVE7O0VBQ0ksZUFBQTtBQUxaOztBQVdJO0VBQ0ksd0JBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxlQUFBO0VBQ0EsY0FBQTtBQVJSOztBQVVRO0VBQ0ksa0JBQUE7RUFDQSxpQkFBQTtBQVJaOztBQVlJO0VBQ0ksZ0JBQUE7RUFDQSxlQUFBO0VBQ0EsaUJBQUE7QUFWUjs7QUFlSTtFQUNJLHNCQUFBO0FBWlI7O0FBZ0JJO0VBQ0kscUJBQUE7RUFDQSw2QkFBQTtFQUNBLG1CQUFBO0VBQ0EsWUFBQTtFQUNBLCtCQUFBO0VBQ0EsdUJBQUE7RUFDQSxzQkFBQTtFQUVBLHVCQUFBO0FBZlI7O0FBa0JJO0VBQ0ksbUJBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLFVBQUE7QUFoQlI7O0FBa0JRO0VBS0ksY0FBQTtFQUNBLGlCQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLDBCQUFBO0VBQ0EsYUFBQTtFQUNBLGdCQUFBO0FBcEJaOztBQXNCWTtFQUNJLGVBQUE7QUFwQmhCOztBQXdCUTtFQUVJOzs7Ozs7O3FDQUFBO0VBUUEsY0FBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtFQUNBLHlCQUFBO0VBQ0Esa0JBQUE7RUFDQSx1Q0FBQTtFQUNBLGlCQUFBO0FBdkJaOztBQTRCQTtFQUNJLFVBQUE7QUF6Qko7O0FBMkJJO0VBQ0ksa0JBQUE7RUFDQSxTQUFBO0FBekJSOztBQTJCUTtFQUNJLGFBQUE7RUFDQSxrQkFBQTtFQUNBLGtDQUFBO0VBQ0EsaUJBQUE7RUFDQSxlQUFBO0VBQ0EsZ0JBQUE7RUFFQSxjQUFBO0VBQ0EsYUFBQTtFQUNBLGdCQUFBO0FBMUJaOztBQTZCUTtFQUNJLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLFdBQUE7RUFDQSxjQUFBO0VBRUEscUJBQUE7RUFDQSxXQUFBO0FBNUJaOztBQWtDQTtFQUNJLHNDQUFBO0FBL0JKOztBQTJDQTtFQUNJLG1CQUFBO0FBeENKOztBQTJDQTtFQUNJLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFdBQUE7RUFDQSxhQUFBO0VBQ0EseUJBQUE7RUFDQSxpQkFBQTtBQXhDSjs7QUE0Q0E7RUFDSSxjQUFBO0VBQ0EsZUFBQTtFQUNBLFlBQUE7QUF6Q0o7O0FBNENBO0VBQ0kseUJBQUE7QUF6Q0o7O0FBNENBO0VBQ0ksZUFBQTtFQUNBLGNBQUE7QUF6Q0o7O0FBNENBO0VBQ0ksa0JBQUE7RUFDQSxpQkFBQTtBQXpDSjs7QUE0Q0E7RUFDSSxXQUFBO0VBQ0EsZ0JBQUE7QUF6Q0o7O0FBNkNBO0VBQ0ksZ0JBQUE7RUFDQSxnQkFBQTtFQUNBLHFCQUFBO0FBMUNKOztBQTZDQTtFQUNJLGlCQUFBO0VBQ0EsaUJBQUE7RUFDQSxjQUFBO0FBMUNKOztBQTZDUTtFQUNJLDZCQUFBO0FBM0NaOztBQTZDWTs7RUFFSSxhQUFBO0FBM0NoQjs7QUE4Q1k7RUFDSSw2QkFBQTtFQUNBLDBCQUFBO0FBNUNoQjs7QUFrREE7RUFDSSwyQkFBQTtFQUNBLG1DQUFBO0FBL0NKIiwiZmlsZSI6InRvcHBpbmdzLnBhZ2Uuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIiNiYWNrZ3JvdW5kLWNvbnRlbnQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG5pb24tY29udGVudCB7XG4gICAgLS1iYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDApO1xuICAgIGZvbnQtZmFtaWx5OiBcInJvYm90b1wiO1xufVxuXG4ucG9wdXAtY29udGFpbmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuXG4gICAgLnBvcHVwLWNvbnRhaW5lci1pbm5lciB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgYm94LXNoYWRvdzogMCAzcHggNXB4IDBweCAjNDg0ODQ4O1xuICAgICAgICB3aWR0aDogODAlO1xuICAgICAgICBtaW4td2lkdGg6IDMwMHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiAyMDBweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXdoaXRlKTtcbiAgICAgICAgbWFyZ2luOiBhdXRvO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuXG4gICAgICAgIC8vcGFkZGluZy1ib3R0b206IDcwcHg7XG4gICAgICAgIHVsIHtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4udGl0bGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UzZTNlMztcbiAgICBjb2xvcjogIzUzNTM1MztcbiAgICBmb250LWZhbWlseTogZXhvO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgYm94LXNoYWRvdzogMCAxcHggMnB4IDBweCAjZGZkZmRmO1xuXG4gICAgLmNsb3NlLWJ0biB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjVweDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHJpZ2h0OiAzcHg7XG4gICAgICAgIGNvbG9yOiAjNWQ1ZDVkO1xuICAgIH1cbn1cblxuLnRvcHBpbmctcmFkaW8ge1xuICAgICYuY2hlY2tib3gtY2hlY2tlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNlMzJkMmQ7XG4gICAgfVxuXG4gICAgLS1ib3JkZXItY29sb3ItY2hlY2tlZDogI2UzMmQyZDtcbiAgICAtLWJhY2tncm91bmQtY2hlY2tlZDogI2UzMmQyZDtcblxuICAgIGJhY2tncm91bmQ6ICNkOWQ5ZDk7XG4gICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci13aGl0ZSk7XG4gICAgYm94LXNpemluZzogcmV2ZXJ0O1xuICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gICAgdHJhbnNpdGlvbjogMXM7XG4gICAgLS1jb2xvci1jaGVja2VkOiB2YXIoLS1pb24tY29sb3Itd2hpdGUpO1xufVxuXG4ucmFkaW8tZ3JvdXAsXG4uY2hlY2tib3hncm91cCB7XG4gICAgaW9uLWl0ZW0ge1xuICAgICAgICAtLW1pbi1oZWlnaHQ6IDEwcHg7XG5cbiAgICAgICAgaW9uLWxhYmVsIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDtcblxuICAgICAgICAgICAgJi5sYWJlbC0yIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICM3OTc5Nzk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYubGFiZWwtMSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICM1MzUzNTM7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgI
10155H1cblxuICAgICAgICBpb24taWNvbiB7XG4gICAgICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5kcm9wZG93biB7XG4gICAgaW9uLWl0ZW0ge1xuICAgICAgICAtLWlubmVyLXBhZGRpbmctc3RhcnQ6IDA7XG4gICAgICAgIC0tcGFkZGluZy1zdGFydDogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBjb2xvcjogIzUzNTM1MztcblxuICAgICAgICBpb24tbGFiZWwge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpb24tc2VsZWN0IHtcbiAgICAgICAgY29sb3I6ICNlZjFiMzJiMztcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG59XG5cbi5jaGVja2JveGdyb3VwIHtcbiAgICBpb24taXRlbSB7XG4gICAgICAgIC8qLS1taW4taGVpZ2h0OiA0MHB4OyovXG4gICAgfVxuXG4gICAgLy8gVEhJU0VESVRFRFxuICAgIGlvbi1jaGVja2JveCB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogI2Q5ZDlkOTtcbiAgICAgICAgLS1iYWNrZ3JvdW5kLWNoZWNrZWQ6ICNlMzJkMmQ7XG4gICAgICAgIC0tYm9yZGVyLXdpZHRoOiA1cHg7XG4gICAgICAgIC0tc2l6ZTogMjJweDtcbiAgICAgICAgLS1ib3JkZXItY29sb3ItY2hlY2tlZDogI2UzMmQyZDtcbiAgICAgICAgLS1ib3JkZXItY29sb3I6ICNkOWQ5ZDk7XG4gICAgICAgIC0tY2hlY2ttYXJrLXdpZHRoOiA1cHg7XG4gICAgICAgIC8vIG1hcmdpbi10b3A6IC0zcHg7IFJFTU9WRURcbiAgICAgICAgbWFyZ2luOiA1cHggMTBweCAxMHB4IDA7IC8vQURERURcbiAgICB9XG5cbiAgICAubWluLW1heCB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiA1cHg7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiA1cHg7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDEwcHg7XG4gICAgICAgIHotaW5kZXg6IDU7XG5cbiAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgIC8vY29sb3I6ICM0YTRhNGE7XG4gICAgICAgICAgICAvL2JhY2tncm91bmQ6ICNkOWQ5ZDk7XG4gICAgICAgICAgICAvLyBtYXJnaW4tbGVmdDogNXB4O1xuICAgICAgICAgICAgLy8vIEVESVRFRCBIRVJFXG4gICAgICAgICAgICBjb2xvcjogIzlmOWY5ZjtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI2YyZjJmMjtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzcHgpO1xuICAgICAgICAgICAgbWFyZ2luOiAwIDNweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDVweCA2cHg7XG5cbiAgICAgICAgICAgIGlvbi1pY29uIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIC8vIEVESVRFRCBIRVJFXG4gICAgICAgICAgICAvKlxuICAgICAgUkVNT1ZFXG4gICAgICBjb2xvcjogIzVlNWU1ZTtcbiAgICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICAgIHBhZGRpbmc6IDNweCA4cHg7XG4gICAgICBiYWNrZ3JvdW5kOiAjZThlOGU4O1xuICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgYm94LXNoYWRvdzogMCAwIDNweCAjYWNhY2FjIGluc2V0OyovXG4gICAgICAgICAgICBjb2xvcjogIzVlNWU1ZTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDNweCA4cHg7XG4gICAgICAgICAgICAvKiBiYWNrZ3JvdW5kOiAjZThlOGU4OyAqL1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICAgICAgLyogYm94LXNoYWRvdzogMCAwIDNweCAjYWNhY2FjIGluc2V0OyAqL1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5yYWRpby10aXRsZSB7XG4gICAgcGFkZGluZzogMDtcblxuICAgIGlvbi1sYWJlbCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgei1pbmRleDogNTU1NTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci13aGl0ZSk7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMjBweDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBleG87XG4gICAgICAgICAgICAvL2NvbG9yOiAjNGQ0ZDRkO1xuICAgICAgICAgICAgY29sb3I6ICNkNGQ0ZDQ7XG4gICAgICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGkge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgLy9iYWNrZ3JvdW5kOiAjY2VjZWNlO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI2Q0ZDRkNDYzO1xuICAgICAgICAgICAgYm90dG9tOiA0MCU7XG4gICAgICAgICAgICAvL2JveC1zaGFkb3c6IDAgLTFweCAwcHggMC41cHggI2UxZTFlMTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnJlZCB7XG4gICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1jdXN0b20tdGhyLXJlZCk7XG59XG5cbi8vIC50b3BpbmctYm9keSB7XG4vLyAgICAgaGVpZ2h0OiA1MDBweDtcbi8vICAgICBvdmVyZmxvdy15OiBhdXRvO1xuLy8gfVxuXG4vLyAudG9waW5nLWJvZHktd2ViIHtcbi8vICAgICBoZWlnaHQ6IDQ3MHB4ICFpbXBvcnRhbnQ7XG4vLyB9XG5cbi5zdWJtaXQtYnV0dG9ucyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cblxuLmZvb3Rlci1ib3gge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgei1pbmRleDogOTk5OTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICAgIHBhZGRpbmctdG9wOiAxMHB4O1xuXG59XG5cbi5lcnJvciB7XG4gICAgY29sb3I6ICNmOTEwMTA7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIHBhZGRpbmc6IDVweDtcbn1cblxuLnRvcGluZ19yZXF1aXJlZCB7XG4gICAgY29sb3I6ICNmOTEwMTAgIWltcG9ydGFudDtcbn1cblxuLndhcm5pbmctbWVzc2FnZSB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGNvbG9yOiAjZ
10155DRkNGQ0O1xufVxuXG4uc2VsZWN0LWxhYmVsIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDE2cHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi50b3BpbmctY29udGFpbmVyIHtcbiAgICBoZWlnaHQ6IDgyJTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG5cbi50b3BpbmctY29udGFpbmVyLW1vYmlsZSB7XG4gICAgbWF4LWhlaWdodDogODB2aDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHBhZGRpbmctYm90dG9tOiAxMDBweDtcbn1cblxuLnNpemUtcmFkaW8tbGlzdCB7XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgbWF4LWhlaWdodDogMTUwcHg7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG5cbiAgICBpb24tcmFkaW8tZ3JvdXAge1xuICAgICAgICBpb24taXRlbSB7XG4gICAgICAgICAgICAtLW1pbi1oZWlnaHQ6IDIwcHggIWltcG9ydGFudDtcblxuICAgICAgICAgICAgaW9uLWxhYmVsLFxuICAgICAgICAgICAgaW9uLWljb24ge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogM3B4IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlvbi1yYWRpbyB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogM3B4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogM3B4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmlvbi1yYWRpbyB7XG4gICAgLS1jb2xvcjogdmFyKC0tcmFkaW8tY29sb3IpO1xuICAgIC0tY29sb3ItY2hlY2tlZDogdmFyKC0tcmFkaW8tY29sb3IpO1xufSJdfQ== */"); 10156 10157/***/ }), 10158 10159/***/ 47167: 10160/*!******************************************************************************!*\ 10161 !*** ./src/app/views/web-views/shared/modal-popover/modal-popover.page.scss ***! 10162 \******************************************************************************/ 10163/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 10164 10165"use strict"; 10166__webpack_require__.r(__webpack_exports__); 10167/* harmony default export */ __webpack_exports__["default"] = (".modal-toolbar {\n text-align: center;\n color: var(--ion-color-custom-sev-red);\n}\n.modal-toolbar ion-title {\n font-size: 22px;\n font-weight: bold;\n}\n.modal-toolbar .modal-close {\n color: #acaaaa;\n font-size: 25px;\n margin-right: 10px;\n}\n.dilivary-addrss-container {\n text-align: center;\n margin-top: 20px;\n}\n.dilivary-addrss-container .dilivary-addrss-input-container {\n margin: 20px 80px;\n position: relative;\n}\n.dilivary-addrss-container .dilivary-addrss-input-container input {\n width: 100%;\n font-size: 25px;\n color: #959595;\n padding: 10px;\n padding-right: 35px;\n border: 1px solid #d5d5d5;\n border-radius: 3px;\n outline: none !important;\n}\n.dilivary-addrss-container .dilivary-addrss-input-container span.icon {\n position: absolute;\n right: 5px;\n font-size: 40px;\n top: 50%;\n transform: translateY(-40%);\n color: #717171;\n}\n.red-button {\n background: var(--ion-color-custom-sev-red);\n padding: 15px 20px;\n border-radius: 5px;\n color: var(--ion-color-white);\n font-size: 22px;\n transform: scale(1);\n transition: 0.2s;\n}\n.red-button:active {\n transform: scale(0.9);\n}\n.notfication-container {\n padding: 0 50px;\n}\n.notfication-container .error-box {\n display: inline-block;\n background: #ffd6d6;\n font-size: 18px;\n padding: 10px;\n color: #d20f0f;\n}\n.dilivary-method-container {\n text-align: center;\n}\n.dilivary-method-container .btn-container {\n margin-top: 20px;\n}\n.dilivary-method-container .btn-container .red-button {\n font-size: 20px;\n padding: 12px 34px;\n}\n.dilivary-method-container .btn-container .red-button ion-icon {\n font-size: 25px;\n margin-right: 10px;\n margin-bottom: -5px;\n}\n.dilivary-method-container .btn-container .red-button span {\n margin-top: -5px;\n}\n.searchbar {\n margin-top: 30px;\n position: relative;\n padding: 10px;\n}\n.searchbar ion-label {\n color: var(--ion-color-fiv-white);\n font-size: 14px;\n}\n.searchbar .input {\n border-bottom: 1px solid var(--ion-color-fiv-white);\n color: var(--ion-color-custom-sec-gray);\n font-size: 18px;\n padding-right: 40px !important;\n}\n.searchbar ion-icon.closeicon {\n position: absolute;\n top: 30px;\n right: 10px;\n font-size: 22px;\n z-index: 2;\n}\n.searchbar .search-drop {\n max-height: 300px;\n width: 100%;\n position: absolute;\n background: var(--ion-color-sec-white);\n z-index: 300;\n padding: 0 10px;\n border-bottom-left-radius: 10px;\n border-bottom-right-radius: 10px;\n box-shadow: 0 6px 5px 0px #8c8c8c;\n}\n.searchbar .search-drop ul {\n list-style: none;\n padding: 0;\n}\n.searchbar .search-drop ul li {\n padding: 10px 0;\n color: #7b7979;\n}\n.searchbar .search-drop ul li .li-text {\n display: inline-block;\n margin-top: -20px;\n transform: translateY(-8px);\n margin-left: 10px;\n font-size: 15px;\n}\n.searchbar .search-drop ul li .li-text span {\n color: var(--ion-color-custom-sec-gray);\n font-weight: bold;\n}\n.searchbar .search-drop .dark {\n color: var(--ion-color-custom-sec-gray);\n}\n.restaurant-card {\n background-color: var(--ion-color-custom-sev-red);\n border-radius: 10px;\n color: var(--ion-color-sec-white);\n margin: 15px;\n cursor: pointer;\n}\n.restaurant-card .branches-title {\n font-weight: bold;\n font-size: 18px;\n}\n.restaurant-card .branches-addrs {\n font-size: 18px;\n}\n.no-restaurants {\n color: var(--ion-color-custom-sev-red);\n justify-content: center;\n}\n.back-btn {\n margin-left: 5px !important;\n}\n.alert {\n padding-right: 10px;\n}\n.alert div {\n text-align: right;\n font-size: 12px;\n color: var(--ion-color-custom-six-red);\n margin-top: 3px;\n}\n.popover-header {\n margin-top: 0px !important;\n}\n.padding-5px {\n padding: 5px;\n}
10167\n.close:hover {\n color: var(--ion-color-custom-six-red) !important;\n}\n.reservation-success-msg-container {\n text-align: center;\n padding: 20px;\n}\n.reservation-success-msg-container ion-icon {\n font-size: 64px !important;\n color: #75c72f;\n}\n.allergy-content div {\n padding: 0 20px;\n}\n.get-current-address {\n text-align: center;\n}\n.get-current-address a {\n color: var(--common-used-red-color);\n}\n.get-current-address a:hover {\n cursor: pointer;\n text-decoration: underline;\n}\n.restaurant-table-card {\n width: 100%;\n padding: 15px;\n margin: 5px;\n border-left: 7px solid #3f3f3f;\n padding-right: 20px;\n}\n.restaurant-table-card:hover {\n background-color: #d7d5d5;\n cursor: pointer;\n}\n.restaurant-table-card ion-icon {\n float: right;\n}\n.restaurant-table-card-checked {\n border-left: 7px solid var(--ion-color-danger) !important;\n}\n.restaurant-table-card-checked ion-icon {\n color: var(--ion-color-danger);\n}\n.table-msg-container {\n text-align: center;\n font-size: 20px;\n color: #e30519;\n padding: 15px;\n}\n.timer {\n font-size: 25px;\n width: 100%;\n}\n.restaurant-details-card {\n margin: 10px;\n padding: 15px 5px;\n text-align: center;\n background: #ddeed6;\n border-radius: 5px;\n}\n.go-now {\n text-align: center;\n}\n.go-now button {\n margin-top: 20px;\n}\n.spinner-container {\n min-height: 150px;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.select-restaurant-alert {\n padding: 10px;\n font-size: 14px;\n display: inline-flex;\n}\n.unable-to-process-order-alert {\n padding: 10px;\n font-size: 18px;\n display: inline-flex;\n justify-content: center;\n width: 100%;\n align-items: center;\n text-align: center;\n background: #ff071c;\n color: white;\n margin-bottom: 15px;\n padding-top: 0px;\n}\n.unavailable-menu-list .unavailable-menu-card-details {\n margin: 10px 20px;\n border: 1px dotted #ff071c;\n border-top: 15px solid #ff071c;\n padding: 11px;\n border-radius: 7px;\n}\n.unavailable-menu-list .unavailable-menu-card-details .available-times {\n margin-left: 15px;\n background: #ffe1e4;\n padding: 5px 20px;\n border-radius: 5px;\n font-size: 14px;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n}\n.unavailable-close-btn {\n position: absolute;\n left: 45%;\n bottom: 10px;\n}\n.icon-container-unavailable {\n font-size: 56px;\n margin-right: 16px;\n height: 56px;\n}\n.icon-container {\n font-size: 40px;\n margin-right: 16px;\n}\n.btn-link {\n cursor: pointer;\n margin-left: 10px;\n font-size: 12px;\n text-decoration: underline;\n}\n.btn-sm-alert {\n font-size: 14px;\n padding: 5px;\n border-radius: 7px;\n cursor: pointer;\n}\n.favorite-restaurant-marked-container .favourite-message {\n display: inline-flex;\n padding: 10px;\n}\n.favorite-restaurant-marked-container .favourite-message span {\n font-size: 14px;\n}\n.favorite-restaurant-marked-container .favourite-message span ion-icon {\n font-size: 40px;\n}\n.favorite-restaurant-marked-container .you-can-change-this {\n font-size: 10px;\n}\n.favorite-restaurant-marked-container .btn-ok {\n padding: 5px;\n}\n.favorite-restaurant-marked-container .btn-ok span {\n padding: 3px 10px;\n background: #4b90e2;\n color: white;\n font-size: 12px;\n border-radius: 4px;\n cursor: pointer;\n}\n.change-favourite {\n font-size: 14px;\n text-decoration: underline;\n cursor: pointer;\n}\n.mt-15px {\n margin-top: 15px;\n}\n.postal-code-input {\n border: 2px dashed darkgray;\n border-radius: 10px;\n}\n.container {\n padding: 20px;\n}\n.postal-code-list {\n max-height: 250px;\n overflow: auto;\n}\n.not-found-postals {\n width: 80%;\n text-align: center;\n margin-top: 15px;\n margin-left: 10%;\n margin-right: 10%;\n font-size: 20px;\n color: var(--ion-color-custom-medium-gray);\n}\n.not-found-postals ion-icon {\n font-size: 40px;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vZGFsLXBvcG92ZXIucGFnZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQUE7RUFDQSxzQ0FBQTtBQUNGO0FBQ0U7RUFDRSxlQUFBO0VBQ0EsaUJBQUE7QUFDSjtBQUVFO0VBQ0UsY0FBQTtFQUNBLGVBQUE7RUFDQSxrQkFBQTtBQUFKO0FBSUE7RUFDRSxrQkFBQTtFQUNBLGdCQUFBO0FBREY7QUFHRTtFQUNFLGlCQUFBO0VBQ0Esa0JBQUE7QUFESjtBQUdJO0VBQ0UsV0FBQTtFQUNBLGVBQUE7RUFDQSxjQUFBO0VBQ0EsYUFBQTtFQUNBLG1CQUFBO0VBQ0EseUJBQUE7RUFDQSxrQkFBQTtFQUNBLHdCQUFBO0FBRE47QUFJSTtFQUNFLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLGVBQUE7RUFDQSxRQUFBO0VBQ0EsMkJBQUE7RUFDQSxjQUFBO0FBRk47QUFPQTtFQUNFLDJDQUFBO0VBQ0Esa0JBQUE7RUFDQSxrQkFBQTtFQUNBLDZCQUFBO0VBQ0EsZUFBQTtFQUNBLG1CQUFBO0VBQ0EsZ0JBQUE7QUFKRjtBQU1FO0VBQ0UscUJBQUE7QUFKSjtBQVFBO0VBQ0UsZUFBQTtBQUxGO0FBT0U7RUFDRSxxQkFBQTtFQUNBLG1CQUFBO0VBQ0EsZUFBQTtFQUNBLGFBQUE7RUFDQSxjQUFBO0FBTEo7QUFVQTtFQUNFLGtCQUFBO0FBUEY7QUFTRTtFQUNFLGdCQUFBO0FBUEo7QUFTSTtFQUNFLGVBQUE7RUFDQSxrQkFBQTtBQVBOO0FBU007RUFDRSxlQUFBO0VBQ0Esa0JBQUE7RUFDQSxtQk
10167FBQTtBQVBSO0FBVU07RUFDRSxnQkFBQTtBQVJSO0FBZUE7RUFDRSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsYUFBQTtBQVpGO0FBY0U7RUFDRSxpQ0FBQTtFQUNBLGVBQUE7QUFaSjtBQWVFO0VBQ0UsbURBQUE7RUFDQSx1Q0FBQTtFQUNBLGVBQUE7RUFDQSw4QkFBQTtBQWJKO0FBZ0JFO0VBQ0Usa0JBQUE7RUFDQSxTQUFBO0VBQ0EsV0FBQTtFQUNBLGVBQUE7RUFDQSxVQUFBO0FBZEo7QUFpQkU7RUFDRSxpQkFBQTtFQUNBLFdBQUE7RUFDQSxrQkFBQTtFQUNBLHNDQUFBO0VBQ0EsWUFBQTtFQUNBLGVBQUE7RUFDQSwrQkFBQTtFQUNBLGdDQUFBO0VBQ0EsaUNBQUE7QUFmSjtBQWlCSTtFQUNFLGdCQUFBO0VBQ0EsVUFBQTtBQWZOO0FBaUJNO0VBQ0UsZUFBQTtFQUNBLGNBQUE7QUFmUjtBQWlCUTtFQUNFLHFCQUFBO0VBQ0EsaUJBQUE7RUFDQSwyQkFBQTtFQUNBLGlCQUFBO0VBQ0EsZUFBQTtBQWZWO0FBaUJVO0VBQ0UsdUNBQUE7RUFDQSxpQkFBQTtBQWZaO0FBcUJJO0VBQ0UsdUNBQUE7QUFuQk47QUF3QkE7RUFDRSxpREFBQTtFQUNBLG1CQUFBO0VBQ0EsaUNBQUE7RUFDQSxZQUFBO0VBQ0EsZUFBQTtBQXJCRjtBQXVCRTtFQUNFLGlCQUFBO0VBQ0EsZUFBQTtBQXJCSjtBQXdCRTtFQUNFLGVBQUE7QUF0Qko7QUEwQkE7RUFDRSxzQ0FBQTtFQUNBLHVCQUFBO0FBdkJGO0FBMEJBO0VBQ0UsMkJBQUE7QUF2QkY7QUEwQkE7RUFDRSxtQkFBQTtBQXZCRjtBQXlCRTtFQUNFLGlCQUFBO0VBQ0EsZUFBQTtFQUNBLHNDQUFBO0VBQ0EsZUFBQTtBQXZCSjtBQTJCQTtFQUNFLDBCQUFBO0FBeEJGO0FBMkJBO0VBQ0UsWUFBQTtBQXhCRjtBQTRCRTtFQUNFLGlEQUFBO0FBekJKO0FBNkJBO0VBQ0Usa0JBQUE7RUFDQSxhQUFBO0FBMUJGO0FBNEJFO
101670VBQ0UsMEJBQUE7RUFDQSxjQUFBO0FBMUJKO0FBK0JFO0VBQ0UsZUFBQTtBQTVCSjtBQWdDQTtFQUNFLGtCQUFBO0FBN0JGO0FBK0JFO0VBQ0UsbUNBQUE7QUE3Qko7QUErQkk7RUFDRSxlQUFBO0VBQ0EsMEJBQUE7QUE3Qk47QUFrQ0E7RUFDRSxXQUFBO0VBQ0EsYUFBQTtFQUNBLFdBQUE7RUFDQSw4QkFBQTtFQUNBLG1CQUFBO0FBL0JGO0FBaUNFO0VBQ0UseUJBQUE7RUFDQSxlQUFBO0FBL0JKO0FBa0NFO0VBQ0UsWUFBQTtBQWhDSjtBQW9DQTtFQUNFLHlEQUFBO0FBakNGO0FBbUNFO0VBQ0UsOEJBQUE7QUFqQ0o7QUFxQ0E7RUFDRSxrQkFBQTtFQUNBLGVBQUE7RUFDQSxjQUFBO0VBQ0EsYUFBQTtBQWxDRjtBQXFDQTtFQUNFLGVBQUE7RUFDQSxXQUFBO0FBbENGO0FBcUNBO0VBQ0UsWUFBQTtFQUNBLGlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0FBbENGO0FBcUNBO0VBQ0Usa0JBQUE7QUFsQ0Y7QUFvQ0U7RUFJRSxnQkFBQTtBQXJDSjtBQTZDQTtFQUNFLGlCQUFBO0VBQ0EsYUFBQTtFQUNBLHVCQUFBO0VBQ0EsbUJBQUE7QUExQ0Y7QUE2Q0E7RUFDRSxhQUFBO0VBQ0EsZUFBQTtFQUNBLG9CQUFBO0FBMUNGO0FBNkNBO0VBQ0UsYUFBQTtFQUNBLGVBQUE7RUFDQSxvQkFBQTtFQUNBLHVCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7RUFFQSxtQkFBQTtFQUNBLFlBQUE7RUFDQSxtQkFBQTtFQUNBLGdCQUFBO0FBM0NGO0FBK0NFO0VBQ0UsaUJBQUE7RUFDQSwwQkFBQTtFQUNBLDhCQUFBO0VBQ0EsYUFBQTtFQUNBLGtCQUFBO0FBNUNKO0FBOENJO0VBQ0UsaUJBQUE7RUFDQSxtQkFBQTtFQUNBLGlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxlQUFBO0VBRUEsb0JBQUE7RUFDQSx1QkFBQTtFQUNBLG1CQUFBO0FBN0NOO0FBa0RBO0VBQ0Usa0JBQUE7RUFDQSxTQUFBO0VBQ0EsWUFBQTtBQS9DRjtBQWtEQTtFQUNFLGVBQUE7RUFDQSxrQkFBQTtFQUNBLFlBQUE7QUEvQ0Y7QUFrREE7RUFDRSxlQUFBO0VBQ0Esa0JBQUE7QUEvQ0Y7QUFrREE7RUFDRSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxlQUFBO0VBQ0EsMEJBQUE7QUEvQ0Y7QUFrREE7RUFDRSxlQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0VBQ0EsZUFBQTtBQS9DRjtBQW1ERTtFQUNFLG9CQUFBO0VBQ0EsYUFBQTtBQWhESjtBQWtESTtFQUNFLGVBQUE7QUFoRE47QUFrRE07RUFDRSxlQUFBO0FBaERSO0FBcURFO0VBQ0UsZUFBQTtBQW5ESjtBQXNERTtFQUNFLFlBQUE7QUFwREo7QUFzREk7RUFDRSxpQkFBQTtFQUNBLG1CQUFBO0VBQ0EsWUFBQTtFQUNBLGVBQUE7RUFDQSxrQkFBQTtFQUNBLGVBQUE7QUFwRE47QUF5REE7RUFDRSxlQUFBO0VBQ0EsMEJBQUE7RUFDQSxlQUFBO0FBdERGO0FBeURBO0VBQ0UsZ0JBQUE7QUF0REY7QUF5REE7RUFDRSwyQkFBQTtFQUNBLG1CQUFBO0FBdERGO0FBeURBO0VBQ0UsYUFBQTtBQXRERjtBQXlEQTtFQUNFLGlCQUFBO0VBQ0EsY0FBQTtBQXRERjtBQXlEQTtFQUNFLFVBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLGVBQUE7RUFDQSwwQ0FBQTtBQXRERjtBQXdERTtFQUNFLGVBQUE7QUF0REoiLCJmaWxlIjoibW9kYWwtcG9wb3Zlci5wYWdlLnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIubW9kYWwtdG9vbGJhciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1jdXN0b20tc2V2LXJlZCk7XG5cbiAgaW9uLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDIycHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cblxuICAubW9kYWwtY2xvc2Uge1xuICAgIGNvbG9yOiAjYWNhYWFhO1xuICAgIGZvbnQtc2l6ZTogMjVweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gIH1cbn1cblxuLmRpbGl2YXJ5LWFkZHJzcy1jb250YWluZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi10b3A6IDIwcHg7XG5cbiAgLmRpbGl2YXJ5LWFkZHJzcy1pbnB1dC1jb250YWluZXIge1xuICAgIG1hcmdpbjogMjBweCA4MHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIGlucHV0IHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgZm9udC1zaXplOiAyNXB4O1xuICAgICAgY29sb3I6ICM5NTk1OTU7XG4gICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgcGFkZGluZy1yaWdodDogMzVweDtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkNWQ1ZDU7XG4gICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgc3Bhbi5pY29uIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHJpZ2h0OiA1cHg7XG4gICAgICBmb250LXNpemU6IDQwcHg7XG4gICAgICB0b3A6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNDAlKTtcbiAgICAgIGNvbG9yOiAjNzE3MTcxO1xuICAgIH1cbiAgfVxufVxuXG4ucmVkLWJ1dHRvbiB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1jdXN0b20tc2V2LXJlZCk7XG4gIHBhZGRpbmc6IDE1cHggMjBweDtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXdoaXRlKTtcbiAgZm9udC1zaXplOiAyMnB4O1xuICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB0cmFuc2l0aW9uOiAwLjJzO1xuXG4gICY6YWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOSk7XG4gIH1cbn1cblxuLm5vdGZpY2F0aW9uLWNvbnRhaW5lciB7XG4gIHBhZGRpbmc6IDAgNTBweDtcblxuICAuZXJyb3ItYm94IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgYmFja2dyb3VuZDogI2ZmZDZkNjtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgcGFkZGluZzogMTBweDtcbiAgICBjb2xvcjogI2QyMGYwZjtcbiAgfVxufVxuXG4vLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG4uZGlsaXZhcnktbWV0aG9kLWNvbnRhaW5lciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAuYnRuLWNvbnRhaW5lciB7XG4gICAgbWFyZ2luLXRvcDogMjBweDtcblxuICAgIC5yZWQtYnV0dG9uIHtcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgIHBhZGRpbmc6IDEycHggMzRweDtcblxuICAgICAgaW9uLWljb24ge1xuICAgICAgICBmb250LXNpemU6IDI1cHg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogLTVweDtcbiAgICAgIH1cblxuICAgICAgc3B
10167hbiB7XG4gICAgICAgIG1hcmdpbi10b3A6IC01cHg7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vICBHb29nbGUgcGxhY2UgaW5wdXQgc3R5bGVzXG4uc2VhcmNoYmFyIHtcbiAgbWFyZ2luLXRvcDogMzBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nOiAxMHB4O1xuXG4gIGlvbi1sYWJlbCB7XG4gICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1maXYtd2hpdGUpO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgfVxuXG4gIC5pbnB1dCB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWlvbi1jb2xvci1maXYtd2hpdGUpO1xuICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItY3VzdG9tLXNlYy1ncmF5KTtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgcGFkZGluZy1yaWdodDogNDBweCAhaW1wb3J0YW50O1xuICB9XG5cbiAgaW9uLWljb24uY2xvc2VpY29uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAzMHB4O1xuICAgIHJpZ2h0OiAxMHB4O1xuICAgIGZvbnQtc2l6ZTogMjJweDtcbiAgICB6LWluZGV4OiAyO1xuICB9XG5cbiAgLnNlYXJjaC1kcm9wIHtcbiAgICBtYXgtaGVpZ2h0OiAzMDBweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXNlYy13aGl0ZSk7XG4gICAgei1pbmRleDogMzAwO1xuICAgIHBhZGRpbmc6IDAgMTBweDtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAxMHB4O1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAxMHB4O1xuICAgIGJveC1zaGFkb3c6IDAgNnB4IDVweCAwcHggIzhjOGM4YztcblxuICAgIHVsIHtcbiAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICBsaSB7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMDtcbiAgICAgICAgY29sb3I6ICM3Yjc5Nzk7XG5cbiAgICAgICAgLmxpLXRleHQge1xuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICBtYXJnaW4tdG9wOiAtMjBweDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCk7XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgICAgICAgZm9udC1zaXplOiAxNXB4O1xuXG4gICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWN1c3RvbS1zZWMtZ3JheSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAuZGFyayB7XG4gICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWN1c3RvbS1zZWMtZ3JheSk7XG4gICAgfVxuICB9XG59XG5cbi5yZXN0YXVyYW50LWNhcmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItY3VzdG9tLXNldi1yZWQpO1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXNlYy13aGl0ZSk7XG4gIG1hcmdpbjogMTVweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gIC5icmFuY2hlcy10aXRsZSB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICB9XG5cbiAgLmJyYW5jaGVzLWFkZHJzIHtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gIH1cbn1cblxuLm5vLXJlc3RhdXJhbnRzIHtcbiAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1jdXN0b20tc2V2LXJlZCk7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4uYmFjay1idG4ge1xuICBtYXJnaW4tbGVmdDogNXB4ICFpbXBvcnRhbnQ7XG59XG5cbi5hbGVydCB7XG4gIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG5cbiAgZGl2IHtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1jdXN0b20tc2l4LXJlZCk7XG4gICAgbWFyZ2luLXRvcDogM3B4O1xuICB9XG59XG5cbi5wb3BvdmVyLWhlYWRlciB7XG4gIG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50O1xufVxuXG4ucGFkZGluZy01cHgge1xuICBwYWRkaW5nOiA1cHg7XG59XG5cbi5jbG9zZSB7XG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItY3VzdG9tLXNpeC1yZWQpICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLnJlc2VydmF0aW9uLXN1Y2Nlc3MtbXNnLWNvbnRhaW5lciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZzogMjBweDtcblxuICBpb24taWNvbiB7XG4gICAgZm9udC1zaXplOiA2NHB4ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICM3NWM3MmY7XG4gIH1cbn1cblxuLmFsbGVyZ3ktY29udGVudCB7XG4gIGRpdiB7XG4gICAgcGFkZGluZzogMCAyMHB4O1xuICB9XG59XG5cbi5nZXQtY3VycmVudC1hZGRyZXNzIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gIGEge1xuICAgIGNvbG9yOiB2YXIoLS1jb21tb24tdXNlZC1yZWQtY29sb3IpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG4gIH1cbn1cblxuLnJlc3RhdXJhbnQtdGFibGUtY2FyZCB7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAxNXB4O1xuICBtYXJnaW46IDVweDtcbiAgYm9yZGVyLWxlZnQ6IDdweCBzb2xpZCAjM2YzZjNmO1xuICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNkN2Q1ZDU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5cbiAgaW9uLWljb24ge1xuICAgIGZsb2F0OiByaWdodDtcbiAgfVxufVxuXG4ucmVzdGF1cmFudC10YWJsZS1jYXJkLWNoZWNrZWQge1xuICBib3JkZXItbGVmdDogN3B4IHNvbGlkIHZhcigtLWlvbi1jb2xvci1kYW5nZXIpICFpbXBvcnRhbnQ7XG5cbiAgaW9uLWljb24ge1xuICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyKTtcbiAgfVxufVxuXG4udGFibGUtbXNnLWNvbnRhaW5lciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBjb2xvcjogI2UzMDUxOTtcbiAgcGFkZGluZzogMTVweDtcbn1cblxuLnRpbWVyIHtcbiAgZm9udC1zaXplOiAyNXB4O1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnJlc3RhdXJhbnQtZGV0YWlscy1jYXJk
10167IHtcbiAgbWFyZ2luOiAxMHB4O1xuICBwYWRkaW5nOiAxNXB4IDVweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kOiAjZGRlZWQ2O1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG59XG5cbi5nby1ub3cge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgYnV0dG9uIHtcbiAgICAvLyBwYWRkaW5nOiA1cHg7XG4gICAgLy8gbWluLXdpZHRoOiAxMDBweDtcbiAgICAvLyBmb250LXNpemU6IDE0cHg7XG4gICAgbWFyZ2luLXRvcDogMjBweDtcbiAgfVxuXG4gIC8vIC5jaGFuZ2UtZmF2b3VyaXRle1xuICAvLyAgICAgZm9udC1zaXplOiAxMnB4O1xuICAvLyB9XG59XG5cbi5zcGlubmVyLWNvbnRhaW5lciB7XG4gIG1pbi1oZWlnaHQ6IDE1MHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLnNlbGVjdC1yZXN0YXVyYW50LWFsZXJ0IHtcbiAgcGFkZGluZzogMTBweDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbn1cblxuLnVuYWJsZS10by1wcm9jZXNzLW9yZGVyLWFsZXJ0IHtcbiAgcGFkZGluZzogMTBweDtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgYmFja2dyb3VuZDogI2ZmMDcxYztcbiAgY29sb3I6IHdoaXRlO1xuICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICBwYWRkaW5nLXRvcDogMHB4O1xufVxuXG4udW5hdmFpbGFibGUtbWVudS1saXN0IHtcbiAgLnVuYXZhaWxhYmxlLW1lbnUtY2FyZC1kZXRhaWxzIHtcbiAgICBtYXJnaW46IDEwcHggMjBweDtcbiAgICBib3JkZXI6IDFweCBkb3R0ZWQgI2ZmMDcxYztcbiAgICBib3JkZXItdG9wOiAxNXB4IHNvbGlkICNmZjA3MWM7XG4gICAgcGFkZGluZzogMTFweDtcbiAgICBib3JkZXItcmFkaXVzOiA3cHg7XG5cbiAgICAuYXZhaWxhYmxlLXRpbWVzIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAxNXB4O1xuICAgICAgYmFja2dyb3VuZDogI2ZmZTFlNDtcbiAgICAgIHBhZGRpbmc6IDVweCAyMHB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgZm9udC1zaXplOiAxNHB4O1xuXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG4gIH1cbn1cblxuLnVuYXZhaWxhYmxlLWNsb3NlLWJ0biB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogNDUlO1xuICBib3R0b206IDEwcHg7XG59XG5cbi5pY29uLWNvbnRhaW5lci11bmF2YWlsYWJsZSB7XG4gIGZvbnQtc2l6ZTogNTZweDtcbiAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xuICBoZWlnaHQ6IDU2cHg7XG59XG5cbi5pY29uLWNvbnRhaW5lciB7XG4gIGZvbnQtc2l6ZTogNDBweDtcbiAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xufVxuXG4uYnRuLWxpbmsge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICBmb250LXNpemU6IDEycHg7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4uYnRuLXNtLWFsZXJ0IHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBwYWRkaW5nOiA1cHg7XG4gIGJvcmRlci1yYWRpdXM6IDdweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uZmF2b3JpdGUtcmVzdGF1cmFudC1tYXJrZWQtY29udGFpbmVyIHtcbiAgLmZhdm91cml0ZS1tZXNzYWdlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBwYWRkaW5nOiAxMHB4O1xuXG4gICAgc3BhbiB7XG4gICAgICBmb250LXNpemU6IDE0cHg7XG5cbiAgICAgIGlvbi1pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiA0MHB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC55b3UtY2FuLWNoYW5nZS10aGlzIHtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gIH1cblxuICAuYnRuLW9rIHtcbiAgICBwYWRkaW5nOiA1cHg7XG5cbiAgICBzcGFuIHtcbiAgICAgIHBhZGRpbmc6IDNweCAxMHB4O1xuICAgICAgYmFja2dyb3VuZDogIzRiOTBlMjtcbiAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG4gIH1cbn1cblxuLmNoYW5nZS1mYXZvdXJpdGUge1xuICBmb250LXNpemU6IDE0cHg7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5tdC0xNXB4IHtcbiAgbWFyZ2luLXRvcDogMTVweDtcbn1cblxuLnBvc3RhbC1jb2RlLWlucHV0IHtcbiAgYm9yZGVyOiAycHggZGFzaGVkIGRhcmtncmF5O1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xufVxuXG4uY29udGFpbmVyIHtcbiAgcGFkZGluZzogMjBweDtcbn1cblxuLnBvc3RhbC1jb2RlLWxpc3Qge1xuICBtYXgtaGVpZ2h0OiAyNTBweDtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi5ub3QtZm91bmQtcG9zdGFscyB7XG4gIHdpZHRoOiA4MCU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLXRvcDogMTVweDtcbiAgbWFyZ2luLWxlZnQ6IDEwJTtcbiAgbWFyZ2luLXJpZ2h0OiAxMCU7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1jdXN0b20tbWVkaXVtLWdyYXkpO1xuXG4gIGlvbi1pY29uIHtcbiAgICBmb250LXNpemU6IDQwcHg7XG4gIH1cbn0iXX0= */"); 10168 10169/***/ }), 10170 10171/***/ 91106: 10172/*!**************************************************************************!*\ 10173 !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/app.component.html ***! 10174 \**************************************************************************/ 10175/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 10176 10177"use strict"; 10178__webpack_require__.r(__webpack_exports__); 10179/* harmony default export */ __webpack_exports__["default"] = ("<ion-app>\n <div class=\"secret-div\" id=\"secret-div\" *ngIf=\"appService.tourModeOn\">\n <div class=\"inner\"></div>\n </div>\n <div class=\"no-internet\" *ngIf=\"!internetConnection\">\n <div>\n <ion-icon class=\"no-internet-icon\" name=\"cloud-offline-outline\"></ion-icon>\n <h4 class=\"no-internet-title\">{{ noInternet?.woops }}</h4>\n <p class=\"connection-msg\">{{ noInternet?.msg }}</p>\n </div>\n </div>\n <ion-split-pane contentId=\"main-content\">\n <ion-menu contentId=\"main-content\" side=\"start\" menuId=\"sidemenu\" *ngIf=\"appService?.isSideMenu\">\n <ion-content class=\"background\">\n <div class=\"close-btn\">\n <ion-icon (click)=\"appService.closeMenu()\" name=\"close\"></ion-icon>\n </div>\n <ion-menu-toggle auto-hide=\"false\" class=\"menu-list transparent zindex\">\n <ion-item *ngIf=\"appService?.appObject?.isAuthed\" [routerLink]=\"['/inbox']\" routerDirection=\"root\"\n class=\"transparent pointer\" color=\"none\" lines=\"none\"\n [ngStyle]=\"{'background' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.background : ''}\">
10179\n <span class=\"menu-item-text\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">\n <div class=\"menu-item\">\n <ion-icon name=\"mail\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">\n </ion-icon>\n <span class=\"menu-item-text\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">{{'key.inbox'\n |\n translate\n }}\n </span>\n </div>\n </span>\n </ion-item>\n <ion-item *ngIf=\"appService?.appObject?.isAuthed\" [routerLink]=\"['/profile']\" routerDirection=\"root\"\n class=\"transparent pointer\" color=\"none\" lines=\"none\"\n [ngStyle]=\"{'background' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.background : ''}\">\n <div class=\"menu-item\">\n <ion-icon name=\"person\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">\n </ion-icon><span class=\"menu-item-text\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">{{'key.PROFILE'\n | translate\n }}</span>\n </div>\n </ion-item>\n <ion-item [routerLink]=\"['/my-orders']\" routerDirection=\"root\" class=\"transparent pointer\"\n color=\"none\" lines=\"none\"\n [ngStyle]=\"{'background' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.background : ''}\">\n <div class=\"menu-item\">\n <ion-icon name=\"cart\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">\n </ion-icon>\n <span class=\"menu-item-text\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">{{'key.MY_ORDERS'\n | translate\n }}</span>\n </div>\n </ion-item>\n\n <ion-item routerDirection=\"root\" [routerLink]=\"['/additives-and-substances']\"\n class=\"transparent pointer\" color=\"none\" lines=\"none\"\n [ngStyle]=\"{'background' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.background : ''}\">\n <div class=\"menu-item\">\n <ion-icon name=\"alert-circle\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">\n </ion-icon>
10179\n <span class=\"menu-item-text\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">{{'key.additives_and_substances'\n |\n translate }}</span>\n </div>\n </ion-item>\n <ion-item *ngIf=\"appService.appObject.settings?.app_configuration?.has_multiple_restaurants\"\n routerDirection=\"root\" [routerLink]=\"['/restaurant-list']\" class=\"transparent pointer\"\n color=\"none\" lines=\"none\"\n [ngStyle]=\"{'background' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.background : ''}\">\n <div class=\"menu-item\">\n <ion-icon name=\"book\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">\n </ion-icon>\n <span class=\"menu-item-text\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">{{'key.BRANCHES'\n | translate\n }}</span>\n </div>\n </ion-item>\n <ion-item routerDirection=\"root\"\n [routerLink]=\"['/imprint/'+( appService.appObject.selectedRestaurant != null ? appService.appObject.selectedRestaurant : appService?.appObject?.promotions?.resturent?.show_on_list[0]?.slug )]\"\n class=\"transparent pointer\" color=\"none\" lines=\"none\"\n [ngStyle]=\"{'background' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.background : ''}\">\n <div class=\"menu-item\">\n <ion-icon name=\"settings\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">\n </ion-icon>\n <span class=\"menu-item-text\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">{{'key.IMPRESSUIM'\n |\n translate\n }}</span>\n </div>\n </ion-item>\n\n\n <!--pages-->\n <ion-item *ngFor=\"let page of appService?.appObject?.sideMenuPages\" class=\"transparent pointer\"\n color=\"none\" lines=\"none\" [routerLink]=\"['/pages/' + page.slug]\"\n [ngStyle]=\"{'background' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.background : ''}\">\n <!-- [routerLink]=\"['find-near-by-me']\" -->\n <div class=\"menu-item\">\n <ion-icon [name]=\"page.icon\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">\n </ion-icon>\n <span class=\"menu-item-text\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">{{\n page.name }}</span>\n </div>\n </ion-item>\n <!--end pages-->\n\n <ion-item routerDirection=\"root\" class=\"transparent pointer\" color=\"none\" lines=\"none\"\n [ngStyle]=\"{'background' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.background : ''}\">\n <div class=\"menu-item\" (click)=\"call()\">\n <ion-icon name=\"call\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">\n </ion-icon>
10179\n <span class=\"menu-item-text\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">{{'key.CALL_US'\n | translate\n }}</span>\n </div>\n </ion-item>\n\n <ion-item routerDirection=\"root\" *ngIf=\"appService?.appObject?.isAuthed\" class=\"transparent pointer\"\n color=\"none\" lines=\"none\"\n [ngStyle]=\"{'background' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.background : ''}\">\n <div class=\"menu-item\" (click)=\"appService.logOut()\">\n <ion-icon name=\"log-out\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">\n </ion-icon>\n <span class=\"menu-item-text\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">{{'key.LOGOUT'\n | translate\n }}</span>\n </div>\n </ion-item>\n <ion-item routerDirection=\"root\" *ngIf=\"!appService?.appObject?.isAuthed\"\n class=\"transparent pointer\" color=\"none\" lines=\"none\" [routerLink]=\"['login']\"\n [ngStyle]=\"{'background' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.background : ''}\">\n <div class=\"menu-item\">\n <ion-icon name=\"log-out\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">\n </ion-icon>\n <span class=\"menu-item-text\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">{{'key.LOGIN'\n | translate\n }}</span>\n </div>\n </ion-item>\n <ion-item routerDirection=\"root\" class=\"transparent pointer\" color=\"none\" lines=\"none\"\n [ngStyle]=\"{'background' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.background : ''}\">\n <div class=\"menu-item\" (click)=\"appService.showLanguage()\">\n <ion-icon name=\"language\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">\n </ion-icon><span class=\"menu-item-text\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.sideMenu ? appService.appObject.theme[appService.themeConfigFor]?.sideMenu.textColor : ''}\">{{'key.CHANGE_LANGUAGE'\n |\n translate\n }}</span>\n </div>\n </ion-item>\n </ion-menu-toggle>\n\n <div class=\"menu-footer\">\n <!--<img src=\"/assets/css/menu-footer.png\" />-->\n <img\n [src]=\"baseURL+'/images/restaurant-sidemenu-app-img/'+appService?.appObject?.settings?.main_restaurant?.id\" />\n </div>
10179\n\n <span class=\"app-version-no\" *ngIf=\"appVersion\">v{{appVersion}}</span>\n </ion-content>\n </ion-menu>\n\n <ion-router-outlet id=\"main-content\" class=\"{{!appService.isWebVersion ? 'main-outlet-content' : ''}}\">\n </ion-router-outlet>\n\n\n <!-- <ion-footer class=\"footer-menu-gm\" *ngIf=\"appService?.isFooterMenu\">\n\n\n <ion-buttons>\n <button ion-button routerDirection=\"root\" [routerLink]=\"['/home']\">\n <ion-icon name=\"home\"></ion-icon>\n <ion-label>{{'key.HOME' | translate }}</ion-label>\n </button>\n <button ion-button>\n <ion-icon name=\"pricetag\" routerDirection=\"root\" [routerLink]=\"['/actions']\"></ion-icon>\n <ion-label>{{'key.ACTION' | translate }}</ion-label>\n </button>\n <button ion-button class=\"home-tab\" (click)=\"appService.routeToOrder()\">\n <img src=\"/assets/img/logo-red.png\">\n <ion-label>{{'key.ORDER' | translate }}</ion-label>\n </button>\n <button ion-button [routerLink]=\"['/coupons']\">\n <ion-icon name=\"bag-handle\"></ion-icon>\n <ion-label>{{'key.COUPON' | translate }}</ion-label>\n </button>\n <button ion-button (click)=\"appService.openSideMenu()\">\n <ion-icon name=\"ellipsis-horizontal\"></ion-icon>\n <ion-label>{{'key.MORE' | translate }}</ion-label>\n </button>\n </ion-buttons>\n\n\n\n </ion-footer> -->\n\n <ion-footer class=\"footer-menu-gm\" *ngIf=\"appService?.isFooterMenu\"\n [ngStyle]=\"{'background-color': (appService.appObject.theme ? appService.appObject.theme[appService.themeConfigFor]?.footerMenuBackground : '')}\">\n <ion-buttons class=\"fotter_hei\">\n <button ion-button routerDirection=\"root\" [routerLink]=\"['/home']\" (click)=\"triggerHomeRefresh()\">\n <ion-icon name=\"home\"\n [ngStyle]=\"{'color' : appService.appObject.theme ? appService.appObject.theme[appService.themeConfigFor]?.footerMenuText : ''}\">\n </ion-icon>\n <ion-label\n [ngStyle]=\"{'color' : appService.appObject.theme ? appService.appObject.theme[appService.themeConfigFor]?.footerMenuText : ''}\">\n {{'key.HOME' | translate }}</ion-label>\n </button>\n <button ion-button>\n <ion-icon name=\"pricetag\" routerDirection=\"root\" (click)=\"appService.navigateToOrderingPage()\"\n [ngStyle]=\"{'color' : appService.appObject.theme ? appService.appObject.theme[appService.themeConfigFor]?.footerMenuText : ''}\">\n </ion-icon>\n <ion-label\n [ngStyle]=\"{'color' : appService.appObject.theme ? appService.appObject.theme[appService.themeConfigFor]?.footerMenuText : ''}\">\n {{'key.MENU' | translate }}</ion-label>\n </button>\n <button ion-button [routerLink]=\" [appService?.appObject?.isAuthed ? '/profile' : '/login']\">\n <ion-icon name=\"bag-handle\"\n [ngStyle]=\"{'color' : appService.appObject.theme ? appService.appObject.theme[appService.themeConfigFor]?.footerMenuText : ''}\">\n </ion-icon>\n <ion-label\n [ngStyle]=\"{'color' : appService.appObject.theme ? appService.appObject.theme[appService.themeConfigFor]?.footerMenuText : ''}\">\n {{'key.MY-ACCOUNT' | translate }}</ion-label>\n </button>\n <button ion-button (click)=\"appService.openSideMenu()\">\n <ion-icon name=\"ellipsis-horizontal\"\n [ngStyle]=\"{'color' : appService.appObject.theme ? appService.appObject.theme[appService.themeConfigFor]?.footerMenuText : ''}\">\n </ion-icon>\n </button>\n </ion-buttons>\n </ion-footer>\n\n </ion-split-pane>\n\n</ion-app>\n\n<ion-backdrop class=\"ion-back-opacity\" tappable=\"true\" *ngIf=\"appService.animationDrop\" visible=\"true\"></ion-backdrop>\n\n<div class=\"cart-button vvv\" [class]=\"appService.className + appService.className2\"\n *ngIf=\"!appService.isWebVersion && !appService.hideCartButton && appService.appObject.orderObject.cart_summery.net_total > 0 && (!appService.closenotice || (appService.closenotice && appService.isPreOrderAccept))\"\n (click)=\"appService.openCart()\"\n [ngStyle]=\"{'background': (appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.floatingCartButton : appService.appObject.theme[appService.themeConfigFor]?.primaryColor),\n 'color' : appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.floatingCartButtonText : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor}\">\n\n <ion-icon name=\"cart-outline\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? (appService.appObject.theme[appService.themeConfigFor]?.advanced.floatingCartButtonText + ' !important') : (appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor + ' !important')}\">\n </ion-icon>\n <span>\n {{ appService.appObject.orderObject.cart_summery.gross_total | price:\n appService.appObject.settings.currency_symbol\n :\n appService.appObject.settings.currency_position : appService.appObject.selectedDeliveryMethod}}\n </span>\n\n</div>\n\n<div *ngIf=\"appService?.appObject?.isLoading\" class=\"full-loading-wrapper\">\n <div class=\"backdrop\"></div>\n <div class=\"loading-center-full\">\n <app-animatedloading></app-animatedloading>\n </div>\n</div>\n\n<div class=\"cookies-banner\" id=\"cookies-banner\" *ngIf=\"displayCookieBanner()\">\n <p>{{'key.cookie_message' | translate}}
10179. <span\n *ngIf=\"displayLinks(TERMS_AND_CONDITIONS_SLUG) || displayLinks(PRIVACY_POLICY_SLUG)\">{{'key.our' |\n translate}} </span>\n <span *ngIf=\"displayLinks(PRIVACY_POLICY_SLUG)\" class=\"privacy-policy\"\n (click)=\"openSlug(PRIVACY_POLICY_SLUG,pages.pnp.name || 'Privacy Policy' )\">{{'key.privacy_policy' |\n translate}}</span>\n <span *ngIf=\"displayLinks(TERMS_AND_CONDITIONS_SLUG) && displayLinks(PRIVACY_POLICY_SLUG)\"> {{'key.and' |\n translate}}\n </span>\n <span *ngIf=\"displayLinks(TERMS_AND_CONDITIONS_SLUG)\" class=\"tnc\"\n (click)=\"openSlug(TERMS_AND_CONDITIONS_SLUG,pages.tnc.name || 'Terms and Conditions' )\">{{'key.terms_and_conditions'\n |\n translate}}</span>\n </p>\n <div class=\"cookie-banner-buttons\">\n <a aria-label=\"deny cookies\" role=\"button\" tabindex=\"0\" class=\"banner-buttons dismiss\"\n (click)=\"cookiesBannerDismissed()\">{{'key.cookie_dismiss' | translate}}</a>\n <a aria-label=\"allow cookies\" role=\"button\" tabindex=\"0\" class=\"banner-buttons got-it\"\n [ngStyle]=\"{'background-color': appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.gotItButton : appService.appObject.theme[appService.themeConfigFor]?.primaryColor}\"\n (click)=\"cookiesAccepted()\">{{'key.cookie_got_it' | translate}}</a>\n </div>\n</div>\n\n<!-- <div class=\"app-banner\" id=\"app-download-banner\" *ngIf=\"isCookieBannerClosed && displayAppDownloadBanner()\">\n <div class=\"app-icon\"></div>\n <div class=\"text-container\">\n <p class=\"app-name\">Takeaway</p>\n <p class=\"description\">{{'key.available_on_the' | translate}} {{(platform.is('android') ? 'key.play_store' : 'key.app_store') | translate}}</p>\n </div>\n <span class=\"close-btn-app-banner\" (click)=\"getAppBannerDismissed()\"><ion-icon name=\"close\"></ion-icon></span>\n <span class=\"get-app-btn\" (click)=\"getAppInstalled()\">{{(platform.is('android') ? 'key.install' : 'key.get') | translate}}</span>\n</div> -->\n<div class=\"app-banner\" id=\"app-download-banner\"\n [ngStyle]=\"{'background-color': appService.appObject.theme[appService.themeConfigFor]?.downloadAppBannerBackgroundColor, 'color': appService.appObject.theme[appService.themeConfigFor]?.downloadAppBannerTextColor}\"\n *ngIf=\"isCookieBannerClosed && displayAppDownloadBanner()\">\n <ion-grid class=\"no-padding\">\n <ion-row>\n <ion-col size=\"auto\">\n <div class=\"app-icon\" [ngStyle]=\"{'background-image' : 'url('+ appIcon +')'}\"></div>\n </ion-col>\n <ion-col>\n <div class=\"text-container\">\n <span class=\"app-name\">{{appName}}</span>\n <br>\n <span class=\"description\">{{'key.available_on_the' | translate}} {{(platform.is('android') ?\n 'key.play_store' : 'key.app_store') | translate}}</span>\n </div>\n </ion-col>\n <ion-col size=\"2\"><span class=\"get-app-btn\" (click)=\"getAppInstalled()\">{{(platform.is('android') ?\n 'key.install' : 'key.get') | translate}}</span></ion-col>\n </ion-row>\n <span class=\"close-btn-app-banner\" (click)=\"getAppBannerDismissed()\">\n <ion-icon name=\"close\"></ion-icon>\n </span>\n </ion-grid>\n</div>"); 10180 10181/***/ }), 10182 10183/***/ 80628: 10184/*!****************************************************************************************************************!*\ 10185 !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/component/animatedloading/animatedloading.component.html ***! 10186 \****************************************************************************************************************/ 10187/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 10188 10189"use strict"; 10190__webpack_require__.r(__webpack_exports__); 10191/* harmony default export */ __webpack_exports__["default"] = ("<div class=\"loader07\"></div>"); 10192 10193/***/ }), 10194 10195/***/ 90602: 10196/*!******************************************************************************************!*\ 10197 !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/views/modals/alert/alert.page.html ***! 10198 \******************************************************************************************/ 10199/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 10200 10201"use strict"; 10202__webpack_require__.r(__webpack_exports__); 10203/* harmony default export */ __webpack_exports__["default"] = ("<ion-content *ngIf=\"type !== '
10203image-preview'\">\n\n <div class=\"{{((type === 'success' || type === 'reservation-success') ? 'success ' : 'error ') + 'popup-container'}} \"\n *ngIf=\"type === 'reservation-success' || type === 'success' || type === 'error'\">\n <div class=\"popup-container-inner\"\n [ngStyle]=\"{'border-top': appService.appObject.theme[appService.themeConfigFor]?.primaryColor ? ('5px solid ' + appService.appObject.theme[appService.themeConfigFor]?.primaryColor) : ''}\">\n\n <div class=\"line-top\"></div>\n <ion-item>\n <div slot=\"start\" class=\"icon\">\n <ion-icon class=\"error-icon\" name=\"alert-circle-outline\"></ion-icon>\n <ion-icon class=\"alert-icon\" name=\"document-text-outline\"></ion-icon>\n <ion-icon class=\"success-icon\" name=\"checkmark-outline\"></ion-icon>\n </div>\n\n <div class=\"text\" *ngIf=\"type !== 'reservation-success'\">\n <h3>{{ title | translate}}</h3>\n <div class=\"message-text {{ message === 'closeNote' ? ' text-red ' : ''}}\">{{(message === 'closeNote' ?\n 'key.close_note' : message) | translate}}</div>\n </div>\n\n <div class=\"text\" *ngIf=\"type === 'reservation-success'\">\n <h3>{{ title | translate}}</h3>\n <div class=\"message-text\" [innerHtml]=\"sanitizer.bypassSecurityTrustHtml(message)\"></div>\n </div>\n\n <div class=\"close-icon\" slot=\"end\">\n <ion-icon class=\"\" name=\"close-outline\" (click)=\"close()\"></ion-icon>\n </div>\n </ion-item>\n </div>\n </div>\n\n <!-- Only display when type is alergy-info -->\n <div class=\"popup-container error\" *ngIf=\"type === 'alergy-info' || type === 'error-detailed-info'\">\n <div class=\"popup-container-inner\"\n [ngStyle]=\"{'border-top': appService.appObject.theme[appService.themeConfigFor]?.primaryColor ? ('5px solid ' + appService.appObject.theme[appService.themeConfigFor]?.primaryColor) : ''}\">\n <div class=\"line-top\"></div>\n <p class=\"m-0 alergy-info-title\"><strong>{{title | translate}}</strong>\n <ion-icon class=\"float-right pointer\" name=\"close-outline\" (click)=\"modalController.dismiss()\"></ion-icon>\n </p>\n <ion-item>\n <div class=\"text alergy-info-container\" [innerHtml]=\"sanitizer.bypassSecurityTrustHtml(message)\"\n *ngIf=\"message\">\n </div>\n <div class=\"text alergy-info-container text-center\" *ngIf=\"!message\">\n {{'key.no_allergies_and_additives_data_to_display' | translate}}\n </div>\n </ion-item>\n </div>\n </div>\n\n <!-- Only display when type is alergy-info -->\n <div class=\"popup-container error\" *ngIf=\"type === 'favourite-restaurant'\">\n <div class=\"popup-container-inner favorite-restaurant-marked-container\"\n [ngStyle]=\"{'border-top': appService.appObject.theme[appService.themeConfigFor]?.primaryColor ? ('5px solid ' + appService.appObject.theme[appService.themeConfigFor]?.primaryColor) : ''}\">\n <div class=\"line-top\"></div>\n <div class=\"favourite-message\">\n <span\n [ngStyle]=\"{'color': appService.appObject.theme[appService.themeConfigFor]?.primaryColor ? appService.appObject.theme[appService.themeConfigFor]?.primaryColor : ''}\">\n <ion-icon name=\"checkmark-circle\"></ion-icon>\n </span>\n <span>{{'key.you_ve_selected' | translate}} <strong\n [ngStyle]=\"{'color': appService.appObject.theme[appService.themeConfigFor]?.primaryColor ? appService.appObject.theme[appService.themeConfigFor]?.primaryColor : ''}\">{{appService.appObject.favouriteRestaurant.name}}</strong> {{'key.as_your_favourite_restaurant'\n | translate }}.</span>\n </div>
10203\n <span class=\"you-can-change-this\">{{'key.you_can_change_this_at_any_time' | translate}}.</span>\n <div class=\"btn-ok\">\n <span (click)=\"modalController.dismiss()\">{{'key.ok' | translate}}</span>\n </div>\n </div>\n </div>\n</ion-content>\n\n<ion-content *ngIf=\"type === 'image-preview'\">\n <div class=\"popup-container\">\n <div class=\"popup-container-inner image-container\">\n <div class=\"line-top\"></div>\n <label class=\"image-preview-dish-close\">\n <ion-icon class=\"\" name=\"close-outline\" (click)=\"modalController.dismiss()\"></ion-icon>\n </label>\n <img [src]=\"message\" alt=\"\">\n </div>\n </div>\n</ion-content>"); 10204 10205/***/ }), 10206 10207/***/ 84410: 10208/*!****************************************************************************************!*\ 10209 !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/views/modals/cart/cart.page.html ***! 10210 \****************************************************************************************/ 10211/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 10212 10213"use strict"; 10214__webpack_require__.r(__webpack_exports__); 10215/* harmony default export */ __webpack_exports__["default"] = ("<ion-content>\n\n <div class=\"popup-container\" (click)=\"isheight()\">\n <div class=\"popup-container-inner\" [class.heighOk]=\"!isheighok\">\n <div class=\"title\">\n <ion-grid>\n <ion-row>\n <ion-col size=\"11\" class=\"cart-title\">\n <ion-icon name=\"cart\"\n [ngStyle]=\"{'color': appService.appObject.theme[appService.themeConfigFor]?.primaryColor ? appService.appObject.theme[appService.themeConfigFor]?.primaryColor : ''}\">\n </ion-icon> {{ 'key.your_cart' | translate }}\n (x{{appService.appObject.orderObject.cart_summery.total_dish_count}})\n </ion-col>\n <ion-col size=\"1\">\n <ion-icon class=\"close-btn\" name=\"close-outline\" (click)=\"dismiss()\"></ion-icon>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n\n <div class=\"cart-button\"\n [ngStyle]=\"{'background': (appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.floatingCartButton : appService.appObject.theme[appService.themeConfigFor]?.primaryColor),\n 'color' : appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.floatingCartButtonText : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor}\">\n\n <ion-icon name=\"cart-outline\"></ion-icon>\n <span>\n {{ appService.appObject.orderObject.cart_summery.gross_total | price:\n appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position : appService.appObject.selectedDeliveryMethod}}\n </span>\n\n </div>\n\n </div>\n\n\n <div>\n <div class=\"cart-list\" *ngIf=\"appService?.appObject?.orderObject?.cart\">\n <div class=\"first-flex {{highlightUnavailableDishes ? 'hightlight-spec' : ''}}\">\n <!--edited here -->\n <ng-container *ngFor=\"let dish of appService.appObject.orderObject.cart; let i = index\">\n <ion-grid *ngIf=\"dish.not_available\">\n <ion-row class=\"cart-header\">\n <ion-col size=\"12\" class=\"counter\">\n <div class=\"number\">{{ dish.name }}</div>\n </ion-col>\n\n </ion-row>\n <ion-row class=\"dish-not-available\">\n <div class=\"highlight\">\n <div>\n {{'key.not_available_for' | translate}}\n <br>\n {{('key.'+appService.appObject.selectedDeliveryMethod) | translate}}\n </div>\n <div class=\"trash-container\">\n <ion-icon name=\"trash\" (click)=\"remove(i)\"></ion-icon>\n </div>\n </div>\n </ion-row>\n </ion-grid>\n <ion-grid *ngIf=\"!dish.not_available\" class=\"{{highlightUnavailableDishes && unavailableDishesIds.includes(dish.dish_id) ? 'highlight-unavailable' : ''}}\">\n <ion-row class=\"cart-header\">\n <ion-col size=\"6\" class=\"counter\">\n <div *ngIf=\"i >= (appService.appObject.orderObject.save_items ? appService.appObject.orderObject.save_items : 0)\"\n class=\"minu
10215s\">\n <ion-icon *ngIf=\"dish.count > 1\" (click)=\"decDish(dish)\" name=\"remove\">\n </ion-icon>\n </div>\n <div class=\"number\">{{ dish.count }}</div>\n <span *ngIf=\"i < appService.appObject.orderObject.save_items\">x</span>\n <div *ngIf=\"i >= (appService.appObject.orderObject.save_items ? appService.appObject.orderObject.save_items : 0)\"\n class=\"plus\">\n <ion-icon (click)=\"incDish(dish)\" name=\"add\"></ion-icon>\n </div>\n <div class=\"clear\"></div>\n </ion-col>\n <ion-col\n *ngIf=\"i >= (appService.appObject.orderObject.save_items ? appService.appObject.orderObject.save_items : 0)\"\n size=\"6\" class=\"edit\">\n <!--<ion-icon *ngIf=\"dish?.size_info\" (click)=\"edit(i,dish)\" name=\"pencil\"></ion-icon>-->\n <ion-icon (click)=\"remove(i)\" name=\"trash\" class=\"red-color\"></ion-icon>\n <!-- red color added -->\n </ion-col>\n\n </ion-row>\n\n <ion-row>\n <ion-col class=\"text\" size=\"9\">\n <div class=\"title\">\n {{ dish.name }} \n <sup *ngIf=\"dish.discount && dish.discount[0] && dish.discount[0].amount\"\n class=\"text-red\">\n -{{dish.discount[0].amount}}{{dish.discount[0].type === 'percentage' ?\n '%' :\n ''}}\n </sup>\n </div>\n <div *ngIf=\"dish?.size_info\">\n <div class=\"sub\" *ngFor=\"let toping of dish.size_info.topping_info\">\n {{ toping.name }} x{{ toping.count }} {{ toping.total | price:\n appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position :\n appService.appObject.selectedDeliveryMethod}}\n\n </div>\n </div>\n </ion-col>\n <ion-col size=\"3\" class=\"price\">\n\n <!-- {{ dish.gross_total_with_discount | price:\n appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position :\n appService.appObject.selectedDeliveryMethod}} -->\n <span>\n <span class=\"price-line-through\" *ngIf=\"dish.total_discount\">\n {{ dish.net_total | price:\n appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position :\n appService.appObject.selectedDeliveryMethod}}\n </span>\n <br *ngIf=\"dish.total_discount\">\n {{ dish.gross_total_with_discount | price:\n appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position :\n appService.appObject.selectedDeliveryMethod}}\n\n </span>\n </ion-col>\n </ion-row>\n <!-------- EDDITED : START -->\n <ion-row class=\"border-bottom margin-top-5\"\n *ngIf=\"appService.appObject.selectedRestaurantDetails?.is_winorder === 'false'\">\n <ion-item lines=\"none\">\n <ion-textarea\n *ngIf=\"dish.comment_editing && i >= (appService.appObject.orderObject.save_items ? appService.appObject.orderObject.save_items : 0)\"\n class=\"comment\" [(ngModel)]=\"dish.comment\"\n placeholder=\"{{ 'key.comment' | translate }}\">\n </ion-textarea>\n <p class=\"comment\" *ngIf=\"!dish.comment_editing\"\n (click)=\"(i >= (appService.appObject.orderObject.save_items ? appService.appObject.orderObject.save_items : 0)) ? dish.comment_editing = !dish.comment_editing : ''\">
10215\n <span *ngIf=\"dish.comment == ''\">\n {{ 'key.please_enter_your_comment' | translate }}\n </span> {{dish.comment !='' ? dish.comment : ''}}\n </p>\n\n\n\n <ion-icon slot=\"end\" class=\"coupon-accept cart-comment-editing\"\n (click)=\"dish.comment_editing = !dish.comment_editing;\"\n *ngIf=\"dish.comment_editing && (i >= (appService.appObject.orderObject.save_items ? appService.appObject.orderObject.save_items : 0))\"\n name=\"checkmark\"></ion-icon>\n <ion-icon slot=\"end\" class=\"coupon-accept green-color\"\n (click)=\"dish.comment_editing = !dish.comment_editing;\"\n *ngIf=\"!dish.comment_editing && (i >= (appService.appObject.orderObject.save_items ? appService.appObject.orderObject.save_items : 0))\"\n name=\"create-outline\"></ion-icon>\n </ion-item>\n </ion-row>\n <!-- EDDITED :END ---->\n\n </ion-grid>\n </ng-container>\n\n </div>\n <!-- edited here-->\n <div class=\"second-flex\">\n <!-- edited here -->\n <ion-grid class=\"cart-footer\">\n <ion-row>\n <ion-col size=\"9\">{{ 'key.net_total' | translate }}\n <div class=\"sub-sm fs12\">({{ 'key.tax_and_discount_included' | translate }})</div>\n </ion-col>\n <ion-col size=\"3\" class=\"text-right\">{{\n appService.appObject.orderObject.cart_summery.dish_net_total_with_discount | price:\n appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position :\n appService.appObject.selectedDeliveryMethod}}\n </ion-col>\n </ion-row>\n <ion-row *ngIf=\"appService.appObject.orderObject.cart_summery.coupon_details\">\n <ion-col size=\"9\">{{ 'key.coupon' | translate }} - {{ appService.appObject.orderObject.cart_summery.coupon_details.name }}\n <div class=\"sub-sm fs12\">({{'key.applied_amount' | translate}} {{ appService.appObject.orderObject.cart_summery.coupon_discount\n | price: appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position :\n appService.appObject.selectedDeliveryMethod}})</div>\n </ion-col>\n <ion-col size=\"3\" class=\"text-right\">\n <span *ngIf=\"appService.appObject.orderObject.cart_summery.coupon_details.type == 'percentage'\">\n -{{ appService.appObject.orderObject.cart_summery.coupon_details.amount }}%\n </span>\n <span *ngIf=\"appService.appObject.orderObject.cart_summery.coupon_details.type == 'fixed'\">\n -{{ appService.appObject.orderObject.cart_summery.coupon_discount\n | price: appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position :\n appService.appObject.selectedDeliveryMethod}}\n </span>\n </ion-col>\n </ion-row>\n\n <!-- <ion-row *ngFor=\"let tax of appService.appObject.orderObject.order_tax\">\n <ion-col size=\"9\">{{ tax.name }}</ion-col>\n <ion-col size=\"3\" class=\"text-right\"> +{{ tax.amount | tax:\n appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position :\n appService.appObject.selectedDeliveryMethod : tax.type }}</ion-col>\n </ion-row> -->\n\n\n <!-- <ion-row *ngFor=\"let discount of appService.appObject.orderObject.discounts\">\n <ion-col size=\"9\" *ngIf=\"!discount?.discount_id\">{{ 'key.discount' | translate }}\n </ion-col>\n <ion-col size=\"9\" *ngIf=\"discount?.discount_id\">{{ 'key.special_discount' | translate }}\n </ion-col>\n <ion-col size=\"3\" class=\"text-right\"> -{{ discount.amount | tax:\n appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position :\n appService.appObject.selectedDeliveryMethod : discount.type }}</ion-col>\n </ion-row> -->\n\n <ion-row *ngIf=\"appService.appObject.selectedDeliveryMethod =='delivery' \">\n <ion-col size=\"9\" style=\"display: flex;align-items: center;\">\n {{ 'key.delivery_cost' | translate }}
10215\n <span *ngIf=\"appService.appObject.postalCodeDetails\" (click)=\"openDeliveryTimeSlotDetails($event,true)\"><ion-icon style=\"margin-top: 3px;margin-left: 5px;\" name=\"alarm-outline\" [ngStyle]=\"{color: appService.appObject.theme[appService.themeConfigFor]?.primaryColor}\"></ion-icon></span>\n <!-- <span *ngIf=\"!appService.appObject.tourEndDeliveryMobile && appService.appObject.postalCodeDetails\" (click)=\"openDeliveryTimeSlotDetails($event)\" id=\"open-tour-delivery\"><ion-icon style=\"margin-top: 3px;margin-left: 5px;\" name=\"alarm-outline\" [ngStyle]=\"{color: appService.appObject.theme[appService.themeConfigFor]?.primaryColor}\"></ion-icon></span> -->\n </ion-col>\n <ion-col size=\"3\" class=\"text-right\">\n <!-- +{{\n appService.appObject.orderObject.cart_summery.delivery_cost | price:\n appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position :\n appService.appObject.selectedDeliveryMethod }} -->\n\n <span>\n <span class=\"price-line-through\"\n *ngIf=\"appService.appObject.orderObject?.specialFreeDeliveryApplied\">\n +{{ appService?.appObject?.orderObject?.deliveryCostWas | price:\n appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position :\n appService.appObject.selectedDeliveryMethod}}\n </span>\n <br *ngIf=\"appService.appObject.orderObject?.specialFreeDeliveryApplied\">\n +{{ appService.appObject.orderObject.cart_summery.delivery_cost | price:\n appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position :\n appService.appObject.selectedDeliveryMethod}}\n\n </span>\n\n </ion-col>\n </ion-row>\n\n\n <ion-row>\n <ion-col size=\"9\" class=\"font-size-18\">{{ 'key.gross_total' | translate }}</ion-col>\n <ion-col size=\"3\" class=\"text-right font-size-18\"> {{\n appService.appObject.orderObject.cart_summery.gross_total | price:\n appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position :\n appService.appObject.selectedDeliveryMethod }}\n </ion-col>\n </ion-row>\n\n <ion-row>\n\n </ion-row>\n\n </ion-grid>\n\n <ion-grid *ngIf=\"!highlightUnavailableDishes\">\n <ion-row class=\"cart-footer\">\n\n\n <!-- EDDITED start -->\n <ion-col size=\"12\" class=\"\" *ngIf=\"!isBarModeEnabled || makePayment\">\n <ion-item lines=\"none\" class=\"somethig item-has-focus\">\n <ion-label position=\"floating\">\n <ion-icon name=\"bookmark-outline\"></ion-icon> {{ 'key.COUPON' | translate }}\n </ion-label>\n <ion-input placeholder=\"eg : XYUVSAD\" [(ngModel)]=\"coupon\" autofocus\n [autofocus]=\"true\">\n </ion-input>\n\n\n <div class=\"ion-text-right\" slot=\"end\">\n <ion-spinner name=\"crescent\" class=\"text-red\"\n *ngIf=\"isCouponStatusChecking\"></ion-spinner>\n <ion-icon class=\"coupon-accept\" (click)=\"addCoupon()\"\n *ngIf=\"!couponAdded && !isCouponStatusChecking\" name=\"checkmark\">\n </ion-icon>\n <ion-icon class=\"coupon-accept disabled\" (click)=\"removeCoupon()\"\n *ngIf=\"couponAdded && !isCouponStatusChecking\" name=\"close-outline\">\n </ion-icon>\n </div>\n </ion-item>\n </ion-col>\n\n <!-- EDITED end -->\n\n <ion-col size=\"12\"\n *ngIf=\"appService.appObject.orderObject.cart_summery.min_reached && appService.appObject.orderObject.cart_summery.min_amount > 0\">\n <div class=\"success-box\">\n <ion-icon name=\"checkmark-outline\"></ion-icon>{{ 'key.minimum_order_amount_' |\n translate }} {{ appService.appObject.orderObject.cart_summery.min_amount |\n price: appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position\n : appService.appObject.selectedDeliveryMethod}} {{ 'key.is_reached' | translate\n }}\n </div>\n </ion-col>\n\n\n <ion-col size=\"12\"\n *ngIf=\"!appService.appObject.orderObject.cart_summery.min_reached && appService.appObject.orderObject.cart_summery.min_amount > 0\">\n <div class=\"error-box\">\n <ion-icon name=\"alert-outline\"></ion-icon>{{ 'key.minimum_order_amount_' |\n translate }} {{ appService.appObject.orderObject.cart_summery.min_amount |\n price: appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position\n : appService.appObject.selectedDeliveryMethod}} {{ 'key.is_not_reached' |\n translate }}\n </div>\n </ion-col>\n\n <ion-col size=\"12\" *ngIf=\"makePayment\">\n <ion-row>\n <ion-col size=\"12\" class=\"footer-comment\">\n <!-------EDITED HERE------------->\n <ion-item lines=\"none\">\n <ion-textarea class=\"comment\"\n [(ngModel)]=\"appService.appObject.orderObject.cart_summery.remarks\"\n placeholder=\"{{ 'key.order_remarks' | translate }}\"></ion-textarea>\n\n </ion-item>\n </ion-col>\n\n <ion-col *ngIf=\"false\" size=\"2\">\n <!-------EDITED HERE HAVE TO REMOVE THIS COL ------------>\n\n\n <ion-icon class=\"coupon-accept\"\n (click)=\"appService.appObject.orderObject.cart_summery.remarks_editing = !appService.appObject.orderObject.cart_summery.remarks_editing;\"\n *ngIf=\"appService.appObject.orderObject.cart_summery.remarks_editing\"\n name=\"checkmark\">\n </ion-icon>\n <ion-icon class=\"coupon-accept disabled\"\n (click)=\"appService.appObject.orderObject.cart_summery.remarks_editing = !appService.appObject.orderObject.cart_summery.remarks_editing;\"\n *ngIf=\"!appService.appObject.orderObject.cart_summery.remarks_editing\"\n name=\"pencil\"></ion-icon>\n </ion-col>\n </ion-row>\n </ion-col>\n <ion-col size=\"12\" class=\"submit order-preparation-time\"\n *ngIf=\"appService.appObject.selectedRestaurantDetails && appService.appObject.selectedRestaurantDetails[appService.appObject.selectedDeliveryMethod+'_prepare_time']\">\n <div class=\"custom-prep\">\n {{'key.estimated_order_preparation_time_is' | translate}} \n <strong>{{appService.appObject.selectedRestaurantDetails[appService.appObject.selectedDeliveryMethod+\n '_prepare_time']}}</strong> \n {{'key.minutes' | translate}}\n </div>\n </ion-col>\n <ion-col size=\"12\" class=\"submit\"\n *ngIf=\"(!isBarModeEnabled || appService.appObject.selectedDeliveryMethod !== 'dine_in') || makePayment\">\n <!--<button class=\"red-button\">Ballestine $2,55</button>-->\n <!-- [disabled]=\"!(appService.appObject.orderObject.cart_summery.min_reached)\" -->\n <button class=\"submit-buttons\"\n (click)=\"appService.appObject.orderObject?.cart_summery?.min_reached || (!appService.appObject.orderObject?.cart_summery?.min_reached && appService.appObject.postalCodeDetails && appService.appObject.settings.is_postalcode === 'true') ? appService.checkout() : ''\"\n [ngStyle]=\"{'background': (appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.checkoutButton : appService.appObject.theme[appService.themeConfigFor]?.primaryColor),\n 'color' : appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.checkoutButtonText : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor}\">\n <ion-icon name=\"wallet-outline\"></ion-icon>\n {{ (isBarModeEnabled ? 'key.checkout' : 'key.order') | translate }} {{\n appService.appObject.orderObject.cart_summery.gross_total | price:\n appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position :\n appService.appObject.selectedDeliveryMethod }}\n </button>\n <!-- EDITED HERE : REMOVE COLOR-->\n </ion-col>\n\n <ion-col size=\"12\" class=\"submit\"\n *ngIf=\"(isBarModeEnabled && appService.appObject.selectedDeliveryMethod === 'dine_in') && !makePayment\">\n <!--<button class=\"red-button\">Ballestine $2,55</button>-->\n <button\n class=\"submit-buttons bar-mode-btns send-to-kitchen {{!appService.hasNewDishesInCart() ? ' send-to-kitchen-disabled' : ''}}\"\n (click)=\"appService.appObject.orderObject?.cart_summery?.min_reached ? \n (appService.appObject.orderObject?.save_items && appService.appObject.orderObject?.table_order_id ? appService.updateKitchenOrder() : appService.sendToKitchen()) \n : ''\"\n [disabled]=\"!(appService.appObject.orderObject.cart_summery.min_reached)\">\n <ion-icon name=\"send-outline\"></ion-icon>\n {{ 'key.send_to_kitchen' | translate }}\n </button>\n <button class=\"submit-buttons bar-mode-btns pay\" (click)=\"makeFinalPayment()\"\n [disabled]=\"!(appService.appObject.orderObject.cart_summery.min_reached)\">\n <ion-icon name=\"wallet-outline\"></ion-icon>\n {{ 'key.pay' | translate }}\n </button>\n <!-- EDITED HERE : REMOVE COLOR-->\n </ion-col>\n\n\n </ion-row>\n\n </ion-grid>\n </div>\n </div>\n\n\n </div>\n\n\n </div>\n </div>\n\n</ion-content>"); 10216 10217/***/ }), 10218 10219/***/ 69665: 10220/*!**********************************************************************************************************!*\ 10221 !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/views/modals/cross-selling/cross-selling.page.html ***! 10222 \**********************************************************************************************************/ 10223/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 10224 10225"use strict"; 10226__webpack_require__.r(__webpack_exports__); 10227/* harmony default export */ __webpack_exports__["default"] = ("<ion-content *ngIf=\"!appService.isWebVersion\">\n\n <div class=\"popup-container\">\n <div class=\"popup-container-inner\">\n <div class=\"title\">\n <ion-grid>\n <ion-row>\n <ion-col size=\"1\">\n <ion-icon *ngIf=\"currentUI === 'questions'\" name=\"extension-puzzle\" class=\"red\"></ion-icon>\n <ion-icon (click)=\"currentUI = 'questions'\" *ngIf=\"currentUI !== 'questions'\" name=\"arrow-back-outline\"\n class=\"red font-size-20\"></ion-icon>\n </ion-col>\n <ion-col size=\"10\">\n {{ title + (currentUI !== 'questions' ? ' + ' + selectedQuestion.category.name : '') }}\n </ion-col>\n <ion-col size=\"1\">\n <ion-icon class=\"close-btn\" name=\"close-outline\" (click)=\"dismiss()\"></ion-icon>\n </ion-col>\n </ion-row>\n </ion-grid>\n </div>\n <ng-template [ngTemplateOutlet]=\"crosssellingcontent\"></ng-template>\n </div>\n </div>\n</ion-content>\n\n<div *ngIf=\"appService.isWebVersion\">\n <ng-template [ngTemplateOutlet]=\"crosssellingcontent\"></ng-template>\n</div>\n\n<ng-template #crosssellingcontent>\n <div class=\"question-container\" *ngIf=\"currentUI === 'questions'\">\n <div *ngFor=\"let questi
10227on of crossSellingProducts;\">\n <div class=\"question-card\" *ngIf=\"question?.category?.count\">\n <button class=\"submit-buttons question-btn {{question.done ? ' btn-size-80' : ''}}\"\n (click)=\"fetchProductList(question.category); selectedQuestion = question;\">\n {{question[appService.appObject.currentLang]}}\n </button>\n <strong *ngIf=\"question.done\">\n <ion-icon name=\"checkmark-circle-outline\" class=\"done-cross-selling\"></ion-icon>\n </strong>\n </div>\n </div>\n </div>\n\n <div class=\"question-container\" *ngIf=\"currentUI === 'dishes'\">\n <ul class=\"order-list\" *ngFor=\"let dish of dishes; let di = index\">\n <li class=\"order-list-li\">\n <ion-item lines=\"none\" class=\"ion-item-order-list-item\">\n <div class=\"ion-item-order-list-item-left\">\n <h3> {{dish.name}}\n <!-- <ion-icon name=\"help-circle\" (click)=\"appService.displayAlergies(dish)\"></ion-icon> -->\n </h3>\n <div *ngIf=\"true\" size=\"12\">\n <ion-item lines=\"none\" class=\"ion-item-order-list\">\n <div class=\"ion-item-order-list-start\" slot=\"start\">\n <div class=\"order-list-img\" id=\"{{'dishimage-' + dish.id + '-container'}}\"\n (click)=\"appService.showAlert('image-preview', '', appService?.appObject?.baseUrl+'/images/restaurant/dish/'+dish.id , false);\">\n <img class=\"img\" id=\"{{'dishimage-' + dish.id}}\"\n src=\"{{ appService?.appObject?.baseUrl+'/images/restaurant/dish/'+dish.id }}\"\n style=\"background-size: cover; \"\n onerror=\"if(event.srcElement && event.srcElement.id ) {document.getElementById(event.srcElement.id + '-container') ? document.getElementById(event.srcElement.id + '-container').remove() : ''}\" />\n <!-- background-image: url('{{ appService?.appObject?.baseUrl+'/images/restaurant/dish/'+dish.id }}'); -->\n </div>\n </div>\n <div>\n <div class=\"sub-items\" [innerHtml]=\"dish.description\">\n </div>\n </div>\n </ion-item>\n </div>\n </div>\n <div slot=\"end\" class=\"order-list-price pointer\"\n *ngIf=\"dish.is_customise == 'false' && dish.is_size == 'false'\" (click)=\"addToCart(dish)\">\n {{ dish | dishprice:\n appService.appObject.settings.currency_symbol : appService.appObject.settings.currency_position :\n appService.appObject.selectedDeliveryMethod }}\n </div>\n\n <div slot=\"end\" class=\"order-list-price pointer\" *ngIf=\"dish.is_customise == 'true' || dish.is_size == 'true'\"\n (click)=\"openToppingPopUp(dish)\">\n <span>{{ 'key.from' |\n translate }}</span> {{ dish | dishprice: appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position : appService.appObject.selectedDeliveryMethod }}\n </div>\n </ion-item>\n </li>\n </ul>\n </div>\n\n <div class=\"text-center footer-box skip-btn\">\n <a class=\"pointer\" (click)=\"dismiss()\">{{ (currentUI === 'questions' ? 'key.skip' : 'key.close') | translate }}</a>\n </div>\n</ng-template>"); 10228 10229/***/ }), 10230 10231/***/ 79201: 10232/*!************************************************************************************************************!*\ 10233 !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/views/modals/delivery-times/delivery-times.page.html ***! 10234 \************************************************************************************************************/ 10235/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 10236 10237"use strict"; 10238__webpack_require__.r(__webpack_exports__); 10239/* harmony default export */ __webpack_exports__["default"] = ("<ion-content>\n <div class=\"tour-container\" style=\"padding: 5px !important;\">\n <div class=\"times-header\">
10239\n <span style=\"padding-right: 10px;\">{{'key.time' | translate}}</span>\n <span>{{'key.min_amount' | translate}} - {{'key.delivery_cost' | translate}}</span>\n </div>\n <div *ngFor=\"let price of prices\" class=\"times-card {{ currentSlotId === price.id ? ' active-t' : ''}}\">\n <span class=\"time\">{{price.time_from}} <ng-container *ngIf=\"price.time_from !== 'All Day'\">- {{price.time_to}}</ng-container></span>\n <span>\n {{ price.min_order\n | price: appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position :\n appService.appObject.selectedDeliveryMethod}}\n -\n {{ price.cost\n | price: appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position :\n appService.appObject.selectedDeliveryMethod}}\n </span>\n </div>\n <!-- <div class=\"ok-btn-container\">\n <span class=\"btn-ok\" (click)=\"dismiss()\"\n [ngStyle]=\"{'background': (appService.appObject.theme[appService.themeConfigFor]?.primaryColor ? appService.appObject.theme[appService.themeConfigFor]?.primaryColor : ''),\n 'color' : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor ? appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor : ''}\">Ok</span>\n </div> -->\n </div>\n</ion-content>"); 10240 10241/***/ }), 10242 10243/***/ 75814: 10244/*!******************************************************************************************!*\ 10245 !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/views/modals/popup/popup.page.html ***! 10246 \******************************************************************************************/ 10247/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 10248 10249"use strict"; 10250__webpack_require__.r(__webpack_exports__); 10251/* harmony default export */ __webpack_exports__["default"] = ("<ion-content>\n\n <div class=\"popup-container\">\n <div class=\"popup-container-inner\">\n <div *ngIf=\"currentUI !== 'unable-to-complete-order'\" class=\"title\" [ngStyle]=\"{'background': appService.appObject.theme[appService.themeConfigFor]?.primaryColor,\n 'color' : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor}\">\n <ion-grid>\n <ion-row>\n <ion-col size=\"11\">{{(currentUI === 'lang' ? 'key.SELECT_LANGUAGE' : 'key.FAVOURITE_RESTAURANT') |\n translate}}\n </ion-col>\n <ion-col size=\"1\">\n <ion-icon class=\"close-btn\" name=\"close\" (click)=\"dismiss()\"></ion-icon>\n </ion-col>\n </ion-row>\n </ion-grid>\n </div>\n\n <div *ngIf=\"currentUI === 'lang'\">\n <ion-radio-group [(ngModel)]=\"appService.appObject.currentLang\" mode=\"ios\" (ionChange)=\"langSelect($event)\"\n value=\"language\">\n <ion-item *ngFor=\"let lang of appService?.appObject?.langList\">\n <ion-label><span [ngClass]=\"'lang-con '+ lang.code\"></span> {{lang.name}}</ion-label>\n <ion-radio slot=\"end\" color=\"primary\" [value]=\"lang.code\"></ion-radio>\n </ion-item>\n </ion-radio-group>\n </div>\n\n <div *ngIf=\"currentUI === 'favourite-restaurant'\">\n <div class=\"select-restaurant-alert\">\n <div class=\"icon-container\">\n <ion-icon name=\"information-circle\"></ion-icon>\n </div>\n <div>\n {{'key.to_get_start_select_favourite_restaurant' | translate}}\n </div>\n </div>\n <div class=\"select-restaurant-btn\">\n <span (click)=\"chooseFavouriteRestaurant()\" class=\"btn\" [ngStyle]=\"{'background': appService.appObject.theme[appService.themeConfigFor]?.primaryColor,\n 'color' : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor}\">\n {{'key.choose_restaurant' | translate}}\n </span>\n\n <span (click)=\"dismiss()\" class=\"btn-link\"\n [ngStyle]=\"{'color': appService.appObject.theme[appService.themeConfigFor]?.primaryColor}\">\n {{'key.may_be_later' | translate}}\n </span>\n </div>\n </div>\n\n <div *ngIf=\"currentUI === 'unable-to-complete-order'\">\n <!-- <div\n [ngStyle]=\"{'background' : appService.appObject.theme[appService.themeConfigFor]?.primaryColor, 'height' : '20px'}\">\n </div> -->
10251\n <div class=\"unable-to-process-order-alert\">\n <div class=\"icon-container-unavailable\">\n <ion-icon name=\"information-circle\"></ion-icon>\n </div>\n <div>\n {{'key.selected_menu_categories_are_not_available_at_the_selected_time_slot' | translate}}\n </div>\n </div>\n <div class=\"text-center unavailable-title\">\n {{'key.available_times_for' | translate}} <strong>{{appService.tempDeliveryDate}}</strong>\n </div>\n <div class=\"unavailable-menu-list\">\n <div class=\"unavailable-menu-card-details\"\n [ngStyle]=\"{'border-color' : appService.appObject.theme[appService.themeConfigFor]?.primaryColor}\"\n *ngFor=\"let menu of appService.menusNotAvailable\">\n <strong>{{menu.name}}</strong> :\n <span class=\"available-times\">\n <ion-icon name=\"alarm-outline\"></ion-icon> \n {{menu.visibility.isActive ? (menu.visibility.timeSlot?.from !== 'All Day' ?\n (menu.visibility.timeSlot?.from\n + ' - ' + menu.visibility.timeSlot?.to) : 'All Day') : 'Not Available'}}</span>\n </div>\n </div>\n <div class=\"unavailable-close-btn-container\">\n <span (click)=\"closeUnavailableNote()\" class=\"btn-sm-alert\" [ngStyle]=\"{'background': appService.appObject.theme[appService.themeConfigFor]?.primaryColor,\n 'color' : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor}\">\n {{'key.close' | translate}}\n </span>\n </div>\n </div>\n\n </div>\n </div>\n\n</ion-content>"); 10252 10253/***/ }), 10254 10255/***/ 69081: 10256/*!******************************************************************************************************************!*\ 10257 !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/views/modals/select-order-type/select-order-type.page.html ***! 10258 \******************************************************************************************************************/ 10259/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 10260 10261"use strict"; 10262__webpack_require__.r(__webpack_exports__); 10263/* harmony default export */ __webpack_exports__["default"] = ("<ion-content *ngIf=\"!appService.isWebVersion\">\n\n <div class=\"popup-container\">\n <div class=\"popup-container-inner {{ currentUI === 'select-table' ? ' no-pb' : ''}}\">\n <div class=\"title\">\n <ion-grid>\n <ion-row>\n <ion-col size=\"1\">\n <ion-icon\n *ngIf=\"(currentUI === 'delivery-address' || currentUI === 'pickup-address' || currentUI === 'dinein-address' || currentUI === 'select-postalcode') && !just_select_address\"\n name=\"arrow-back-outline\" class=\"red\" (click)=\"currentUI = 'order-type'\"\n [ngStyle]=\"{'color': (appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.popupTitleIcon : appService.appObject.theme[appService.themeConfigFor]?.primaryColor)}\">\n </ion-icon>\n <ion-icon *ngIf=\"currentUI === 'delivery-address' && just_select_address\" name=\"location-outline\"\n class=\"red\"\n [ngStyle]=\"{'color': (appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.popupTitleIcon : appService.appObject.theme[appService.themeConfigFor]?.primaryColor)}\">\n </ion-icon>\n <ion-icon *ngIf=\"currentUI === 'select-table'\" name=\"fast-food-outline\" class=\"red\"\n [ngStyle]=\"{'color': (appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.popupTitleIcon : appService.appObject.theme[appService.themeConfigFor]?.primaryColor)}\">\n </ion-icon>\n <ion-icon *ngIf=\"currentUI === 'order-type'\" name=\"cog-outline\" class=\"red\"\n [ngStyle]=\"{'color': (appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.popupTitleIcon : appService.appObject.theme[appService.themeConfigFor]?.primaryColor)}\">\n </ion-icon>\n </ion-col>\n <ion-col size=\"10\">\n {{(currentUI === 'order-type' ? 'key.select_order_type' : (currentUI ==='select-table' ?\n 'key.select_a_table' : (currentUI === 'pickup-address' ? 'key.select_pickup_area' : (currentUI ===\n 'dinein-address' ? 'key.select_dinein_area' : (currentUI === 'redirect-to_favourite' ?\n 'key.your_favourite_restaurant' : (currentUI === 'select-postalcode' ? 'key.select_delivery_area' :\n 'key.select_delivery_address')))))) | translate}}\n </ion-col>\n <ion-col size=\"1\">\n <ion-icon class=\"close-btn\" name=\"close-outline\"\n (click)=\"currentUI === 'redirect-to_favourite' ? clearRedirectInterval(true) : dismiss();\"></ion-icon>\n </ion-col>\n </ion-row>\n </ion-grid>\n </div>\n <ng-template *ngIf=\"currentUI !== 'select-table'\" [ngTemplateOutlet]=\"selectdeliveryaddress\"></ng-template>\n <ng-template *ngIf=\"currentUI === 'select-table'\" [ngTemplateOutlet]=\"selectTable\"></ng-template>\n </div>\n </div>\n</ion-content>\n\n<div *ngIf=\"appService.isWebVersion\">\n <ng-template [ngTemplateOutlet]=\"selectdeliveryaddress\"></ng-template>\n</div>\n\n<ng-template #selectdeliveryaddress>\n <div *ngIf=\"currentUI === 'delivery-address' || currentUI === 'pickup-address' || currentUI === 'dinein-address'\">\n <div class=\"form-container\">\n <div class=\"searchbar\">\n <ion-label position=\"stacked\">{{ 'key.location' | translate }}</ion-label>\n <ion-input [(ngModel)]=\"appService.appObject.myAddress.name\" #googleaddress id=\"googleaddressid\" class=\"input\">\n </ion-input>\n <ion-icon (click)=\"appService.clearAddress()\" class=\"closeicon pointer\" name=\"close-circle-outline\"></ion-icon>\n\n </div>\n\n <div class=\"alert\" *ngIf=\"appService?.appObject?.errors?.address\">\n <div *ngFor=\"let error of appService?.appObject?.errors?.address | keyvalue\">\n {{ 'key.'+ error.value | translate }}\n </div>\n </div>\n </div>\n\n <div class=\"text-center\">\n <button class=\"red-button\" type=\"button\"\n (click)=\"selectTypeAsDelivery(currentUI === 'delivery-address' ? 'delivery' : (currentUI === 'pickup-address' ? 'pickup' : (currentUI === 'dinein-address' ? 'dine_in' : '')))\"\n [ngStyle]=\"{'background': (appService.appObject.theme[appService.themeConfigFor]?.primaryColor ? appService.appObject.theme[appService.themeConfigFor]?.primaryColor : ''),\n 'color' : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor ? appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor : ''}\">\n {{ 'key.choose_address' | translate }} </button>\n </div>\n\n <div class=\"text-center\">\n <button class=\"find-my-location-btn\" type=\"button\" (click)=\"appService.getCurrentLocation()\"> {{\n 'key.find_my_location' | translate }} </button>\n </div>\n\n </div>\n\n <div *ngIf=\"currentUI === 'location-for-favourite'\">\n <div class=\"form-container\">\n <div class=\"searchbar\">\n <ion-label position=\"stacked\">{{ 'key.location' | translate }}</ion-label>\n <ion-input [(ngModel)]=\"appService.appObject.myAddress.name\" #googleaddress id=\"googleaddressid\" class=\"input\">\n </ion-input>\n <ion-icon (click)=\"appService.clearAddress()\" class=\"closeicon pointer\" name=\"close-circle-outline\"></ion-icon>\n\n </div>\n\n <div class=\"alert\" *ngIf=\"appService?.appObject?.errors?.address\">\n <div *ngFor=\"let error of appService?.appObject?.errors?.address | keyvalue\">\n {{ 'key.'+ error.value | translate }}\n </div>\n </div>\n </div>\n\n <div class=\"text-center\">\n <button class=\"red-button\" type=\"button\" (click)=\"goToNearby
10263RestaurantList()\"\n [ngStyle]=\"{'background': (appService.appObject.theme[appService.themeConfigFor]?.primaryColor ? appService.appObject.theme[appService.themeConfigFor]?.primaryColor : ''),\n 'color' : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor ? appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor : ''}\">\n {{ 'key.find_restaurants' | translate }} </button>\n </div>\n\n <div class=\"text-center\">\n <button class=\"find-my-location-btn\" type=\"button\" (click)=\"appService.getCurrentLocation()\"> {{\n 'key.find_my_location' | translate }} </button>\n </div>\n\n </div>\n\n <div *ngIf=\"currentUI === 'redirect-to_favourite'\">\n <div *ngIf=\"appService.appObject.favouriteRestaurant && !loadingFavourite\">\n <div class=\"restaurant-details-card\"\n [ngStyle]=\"{'background' : (appService.appObject.favouriteRestaurant.openDetails.current_status === 'closed' ? '#fce0e3' : '#ddeed6') }\">\n <strong>{{appService.appObject.favouriteRestaurant.name}}</strong>\n <br>\n <p *ngIf=\"appService.appObject.favouriteRestaurant.openDetails.current_status === 'open'\">\n {{ 'key.favourite_restaurant_open' | translate }}\n </p>\n\n <p\n *ngIf=\"appService.appObject.favouriteRestaurant.openDetails.current_status === 'closed' && !appService.appObject.favouriteRestaurant.openDetails.is_pre_order\">\n {{ 'key.close_note' | translate }}\n </p>\n\n <p\n *ngIf=\"appService.appObject.favouriteRestaurant.openDetails.current_status === 'closed' && appService.appObject.favouriteRestaurant.openDetails.is_pre_order\">\n {{ 'key.restaurant_is_closed_but_preorder' | translate }}\n </p>\n\n <div class=\"open-time-note\"\n *ngIf=\"appService.appObject.favouriteRestaurant.openDetails?.text != '' || appService.appObject.favouriteRestaurant.openDetails.text_delivery != ''\">\n {{ appService.appObject.favouriteRestaurant.openDetails?.text }}\n {{ appService.appObject.favouriteRestaurant.openDetails?.text != \"\" &&\n appService.appObject.favouriteRestaurant.openDetails?.text_delivery != \"\" ? '|' : ''}}\n {{ appService.appObject.favouriteRestaurant.openDetails?.text_delivery }}\n\n </div>\n </div>\n <div class=\"go-now\">\n <div class=\"form-container\">\n <div class=\"btn-row\"\n *ngFor=\"let option of (!this.selected_branch && appService.appObject.settings?.is_franchise === 'true' ? availableDeliveryMethodsFranchise : appService.availableDeliveryMethods)\">\n <button class=\"red-button\" type=\"button\" (click)=\"onFavoriteModeDeliveryMethodSelect(option)\"\n [ngStyle]=\"{'background': (appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.deliveryMethodTypeButton : appService.appObject.theme[appService.themeConfigFor]?.primaryColor),\n 'color' : appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.deliveryMethodTypeButtonText : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor}\">\n <ion-icon name=\"footsteps-outline\" *ngIf=\"option === 'pickup'\"></ion-icon>\n <ion-icon name=\"fast-food-outline\" *ngIf=\"option === 'dine_in'\"></ion-icon>\n <ion-icon name=\"bicycle-outline\" *ngIf=\"option === 'delivery'\"></ion-icon>\n \n {{ 'key.'+option | translate }}\n </button>\n </div>\n </div>\n <br>\n <span (click)=\"changeFavouriteRestaurant()\" class=\"change-favourite\"\n [ngStyle]=\"{'color' : (appService.appObject.theme[appService.themeConfigFor]?.primaryColor ? appService.appObject.theme[appService.themeConfigFor]?.primaryColor : '')}\">{{ 'key.chanage_your_favorite_restaurant' | translate }}</span>\n </div>\n </div>\n\n <div *ngIf=\"loadingFavourite\" class=\"spinner-container\">\n <ion-spinner name=\"crescent\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.primaryColor ? appService.appObject.theme[appService.themeConfigFor]?.primaryColor : ''}\">\n </ion-spinner>\n </div>\n </div>\n\n <div *ngIf=\"currentUI === 'order-type'\">\n <div class=\"form-container\">\n <div class=\"btn-row\"\n *ngFor=\"let option of (!this.selected_branch && appService.appObject.settings?.is_franchise === 'true' ? availableDeliveryMethodsFranchise : appService.availableDeliveryMethods)\">\n <button class=\"red-button\" type=\"button\" (click)=\"selectOrderType(option)\"\n [ngStyle]=\"{'background': (appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.deliveryMethodTypeButton : appService.appObject.theme[appService.themeConfigFor]?.primaryColor),\n 'color' : appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.deliveryMethodTypeButtonText : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor}\">\n <ion-icon name=\"footsteps-outline\" *ngIf=\"option === 'pickup'\"></ion-icon>\n <ion-icon name=\"fast-food-outline\" *ngIf=\"option === 'dine_in'\"></ion-icon>\n <ion-icon name=\"bicycle-outline\" *ngIf=\"option === 'delivery'\"></ion-icon>\n \n {{ 'key.'+option | translate }}\n </button>\n </div>\n\n <div class=\"text-center\"\n *ngIf=\"!selected_branch && !just_select_order_type && appService.appObject.settings?.is_franchise === 'true'\">
10263\n <span (click)=\"changeFavouriteRestaurant()\" class=\"change-favourite\"\n [ngStyle]=\"{'color' : (appService.appObject.theme[appService.themeConfigFor]?.primaryColor ? appService.appObject.theme[appService.themeConfigFor]?.primaryColor : '')}\">\n {{(appService.appObject.favouriteRestaurant ? 'key.change_favourite_restaurant' :\n 'key.set_favourite_restaurant') | translate}}\n </span>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"currentUI === 'select-postalcode'\">\n <div class=\"form-container\" *ngIf=\"!displaySpinnerSection\">\n <div class=\"container\">\n <!-- <ion-searchbar type=\"text\" debounce=\"500\" (ionChange)=\"getPostalItems($event)\" [value]=\"selectedArea?.code ? selectedArea?.code + ' - ' + selectedArea?.name : ''\"></ion-searchbar> -->\n <ion-input placeholder=\"{{ 'key.select_delivery_area' | translate }}\" class=\"postal-code-input\" type=\"text\" debounce=\"500\" (ionChange)=\"getPostalItems($event)\" [(ngModel)]=\"selected_postal\" (click)=\"clearPostalArea()\"></ion-input>\n <ion-list *ngIf=\"postalFilterItem && postalFilterItem.length\" class=\"postal-code-list\">\n <ion-item [ngStyle]=\"{'border-left': '5px solid' + (appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.deliveryMethodTypeButton : appService.appObject.theme[appService.themeConfigFor]?.primaryColor)}\" lines=\"none\" class=\"postal-item\" (click)=\"selectPostalCode(item)\" *ngFor=\"let item of postalFilterItem\">{{ item.code }} - {{item.name }}</ion-item>\n </ion-list>\n\n <div class=\"alert\" *ngIf=\"appService?.appObject?.errors?.postalCode\">\n <div *ngFor=\"let error of appService?.appObject?.errors?.postalCode | keyvalue\">\n {{ 'key.'+ error.value | translate }}\n </div>\n </div>\n\n <div *ngIf=\"!postalFilterItem.length && selected_postal && !selectedArea\" class=\"not-found-postals\">\n <ion-icon name=\"sad-outline\"></ion-icon>\n <!-- <p>{{ 'key.sorry_restaurants_not_found' | translate }}</p> -->\n <p>{{'key.sorry_we_re_not_delivering_to_this_location' | translate}}</p>\n </div>\n\n </div>\n \n <div class=\"text-center\">\n <button class=\"red-button\"\n [ngStyle]=\"{'background': (appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.deliveryMethodTypeButton : appService.appObject.theme[appService.themeConfigFor]?.primaryColor),\n 'color' : appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.deliveryMethodTypeButtonText : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor}\"\n (click)=\"onPostalCodeSelect()\">{{'key.order_now' | translate}}</button>\n </div>\n </div>\n\n <div class=\"form-container spinner-container-postal-code\" *ngIf=\"displaySpinnerSection\">\n <ion-spinner name=\"crescent\" [ngStyle]=\"{'color' : (appService.appObject.theme[appService.themeConfigFor]?.primaryColor ? appService.appObject.theme[appService.themeConfigFor]?.primaryColor : '')}\">\n </ion-spinner>\n </div>\n </div>\n</ng-template>\n\n<ng-template #selectTable>\n <div *ngIf=\"!appService.appObject.orderObject?.selectedTable?.saved\">\n <div class=\"table-container\">\n <div *ngFor=\"let table of tableListOfRestaurant\" (click)=\"selectedTable = table;\"\n class=\"table-select-row {{selectedTable && selectedTable.id === table.id ? ' selected' : ''}}\">\n <span>{{'key.table' | translate}} {{table.number}}</span>\n <ion-icon name=\"checkmark-circle\"></ion-icon>\n </div>\n </div>\n <div class=\"btn-footer\">\n <div class=\"cancel\" (click)=\"cancelTableSelect()\">\n {{'key.cancel' | translate}}\n </div>\n <div class=\"select\" (click)=\"selectedTable ? selectATable() : ''\">\n {{'key.select' | translate}}\n </div>\n </div>\n </div>\n <div *ngIf=\"appService.appObject.orderObject?.selectedTable?.saved\" class=\"table-msg-container\">\n <div>\n <img src=\"../../../../assets/img/pending_order.jpg\" alt=\"vector4free\" srcset=\"\" style=\"max-height: 200px;\">\n </div>\n <span *ngIf=\"!previousRestaurant\">{{'key.you_have_an_active_order_on' | translate}} <br> <strong>{{'key.table' |\n translate}}\n #{{appService.appObject.orderObject.selectedTable.number}}</strong></span>\n <span *ngIf=\"previousRestaurant\">\n {{'key.you_have_an_active_order_on_restaurant' | translate}} <br>\n <strong>{{previousRestaurant}}<br>\n {{'key.table' | translate}} #{{appService.appObject.orderObject.selectedTable.number}}</strong>\n </span>\n <br>\n <a (click)=\"dismiss()\" *ngIf=\"tableSelectRestaurant.slug\"\n [routerLink]=\"['restaurant',tableSelectRestaurant.slug]\">{{'key.go_to_menu' | translate}}</a>\n <br>\n <label class=\"timer\">{{remaningTime}}</label>\n </div>\n</ng-template>"); 10264 10265/***/ }), 10266 10267/***/ 2614: 10268/*!************************************************************************************************!*\ 10269 !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/views/modals/toppings/toppings.page.html ***! 10270 \************************************************************************************************/ 10271/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 10272 10273"use strict"; 10274__webpack_require__.r(__webpack_exports__); 10275/* harmony default export */ __webpack_exports__["default"] = ("<ion-content *ngIf=\"!appService.isWebVersion\">\n\n <div class=\"popup-container\">\n <div class=\"popup-container-inner\">\n <div class=\"title\">\n <ion-grid>\n <ion-row>\n <ion-col size=\"11\">\n <ion-icon name=\"extension-puzzle\" class=\"red\"\n [ngStyle]=\"{'color': (appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.popupTitleIcon : appService.appObject.theme[appService.themeConfigFor]?.primaryColor)}\">\n </ion-icon> {{\n this.appService.selectedDish.fullDishInfo.name }}\n </ion-col>\n <ion-col size=\"1\">\n <ion-icon class=\"close-btn\" name=\"close-outline\" (click)=\"dismiss()\"></ion-icon>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n\n </div>\n\n <div\n [ngClass]=\"{'toping-container toping-containerWeb': appService.isWebVersion === true, 'toping-container toping-container-mobile' : appService.isWebVersion === false }\">\n <ng-template [ngTemplateOutlet]=\"toppingcontent\"></ng-template>\n </div>\n\n\n </div>\n\n\n </div>\n\n</ion-content>\n\n<div *ngIf=\"appService.isWebVersion\" class=\"toping-container\">\n <ng-template [ngTemplateOutlet]=\"toppingcontent\"></ng-template>\n</div>\n\n\n<ng-template #toppingcontent>\n\n <div class=\"error\"\n *ngIf=\"appService?.appObject?.errors?.mandatory_toping_should_be_selected || appService?.appObject?.errors?.size_select\">\n {{ (appService?.appObject?.errors?.size_select ? 'key.please_select_a_size' :\n 'key.please_select_required_topings_to_proceed') | translate }}\n </div>\n\n\n <form class=\"toping-body {{appService.isWebVersion ? ' toping-body-web' : ''}}\">\n <ul *ngIf=\"appService.selectedDish.fullDishInfo.is_size == 'true'\">\n <li class=\"dropdown\">\n <ion-label class=\"select-label warning-message\">{{ 'key.select_size' | translate }}</ion-label>\n <!-- <ion-item lines=\"none\" class=\"error\" *ngIf=\"appService?.appObject?.errors['size_select']\">\n {{appService?.appObject?.errors['size_select']}}\n </ion-item> -->\n <ion-item lines=none *ngIf=\"appService.appObject.selectedRestaurantDetails.sizes_as_buttons === 'false' || !appService.appObject.selectedRestaurantDetails.sizes_as_buttons\">\n <!--<ion-label>{{ 'key.select_size' | translate }}</ion-label>-->\n <ion-select style=\"width: 100%; padding-left: 16px; padding-top: 0px;\"\n (ionChange)=\"appService.setSelectedSize($event)\" value=\"{{appService.selectedDish.size_index}}\"\n interface=\"action-sheet\" mode=\"md\" placeholder=\"{{ 'key.select_size' | translate }}\"\n cancelText=\"{{'key.close' | translate}}\">\n <ion-select-option *ngFor=\"let size of appService.selectedDish.fullDishInfo.sizes; let i = index\"\n value=\"{{ i }}\">{{size.name}} ({{ size | sizeprice: appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position : appService.appObject.selectedDeliveryMethod }})\n </ion-select-option>\n </ion-select>\n </ion-item>\n\n <ion-list class=\"size-radio-list\" *ngIf=\"appService.appObject.selectedRestaurantDetails.sizes_as_buttons === 'true'\">\n <ion-radio-group value=\"{{appService.selectedDish.size_index}}\" (ionChange)=\"appService.setSelectedSize($event)\">\n <ion-item lines=none *ngFor=\"let size of appService.selectedDish.fullDishInfo.sizes; let i = index\">\n <ion-label>{{size.name}} ({{ size | sizeprice: appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position : appService.appObject.selectedDeliveryMethod }})</ion-label>\n <ion-radio slot=\"start\" value=\"{{ i }}\"></ion-radio>\n </ion-item>\n </ion-radio-group>\n </ion-list>\n </li>\n\n <ng-container *ngIf=\"appService.selectedDish.size_index !== null\">\n <li\n *ngFor=\"let scenario of getActiveScenarios(appService.selectedDish.fullDishInfo.sizes[appService.selectedDish.size_index].scenarios); let sindex = index\">\n <div *ngIf=\"scenario.btn_type == 'optional'\" class=\"checkboxgroup\">\n <ion-list-header class=\"radio-title\">\n <ion-label><span>{{ scenario.name }}</span><i></i></ion-label>\n </ion-list-header>\n\n <ion-item lines=\"none\" class=\"warning-message\" *ngIf=\"scenario.is_mandatory == 'true'\">
10275\n <span *ngIf=\"scenario.min_toping_count == scenario.max_toping_count\">\n ({{'key.please_select_at_leaset' | translate }} {{ scenario.min_toping_count }} {{'key.toping_from_here'\n |\n translate }})\n </span>\n <span *ngIf=\"scenario.min_toping_count != scenario.max_toping_count\">\n ({{'key.please_select' | translate }} {{ scenario.min_toping_count }} {{'key.to' | translate }} {{\n scenario.max_toping_count }} {{'key.toping_from_here' | translate }})\n </span>\n\n </ion-item>\n\n <ion-item lines=\"none\" class=\"error\"\n *ngIf=\"appService?.appObject?.errors['error_in_scenario_'+scenario.id]\">\n <span *ngIf=\"scenario.min_toping_count == scenario.max_toping_count\">\n ({{'key.you_should_select_at_leaset' | translate }} {{ scenario.min_toping_count }}\n {{'key.toping_from_here' | translate }})\n </span>\n <span *ngIf=\"scenario.min_toping_count != scenario.max_toping_count\">\n ({{'key.you_should_select' | translate }} {{ scenario.min_toping_count }} {{'key.to' | translate }} {{\n scenario.max_toping_count }} {{'key.toping_from_here' | translate }})\n </span>\n </ion-item>\n\n <!-- Removed select list by Sanj order by Pumayk26 at 2024-07-24 -->\n <!-- *ngIf=\"scenario.is_mandatory == 'true' && !(scenario.min_toping_count == 1 && scenario.max_toping_count == 1)\" -->\n <span *ngIf=\"appService.getSelectedRestaurantSingleOptionSelectCondition() ? true : (scenario.is_mandatory == 'true' && !(scenario.min_toping_count == 1 && scenario.max_toping_count == 1))\">\n <ion-item lines=\"none\" *ngFor=\"let toping of getActiveToppings(scenario.topings); let tindex = index\">\n <ion-checkbox [disabled]=\"!toping.checked && scenario.disable_rest\" (click)=\"appService.selectTopingAddon($event,toping,scenario,tindex)\" mode=\"md\"\n slot=\"start\">\n </ion-checkbox>\n <div class=\"\" slot=\"\">\n <ion-label class=\"label-1\"\n [ngClass]=\" toping.is_mandatory == 'true' && appService?.appObject?.errors['shoud_select_toping_'+toping.id] ? 'toping_required' : '' \">\n {{ (toping.is_mandatory == 'true' ? \"* \":\"\")+toping.name }}</ion-label>\n <ion-label class=\"label-2\">({{ toping | topingprice: appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position : appService.appObject.selectedDeliveryMethod }})\n </ion-label>\n\n </div>\n <div slot=\"end\" class=\"min-max\" *ngIf=\"toping.checked && (!scenario.limit_topping_qty || scenario.limit_topping_qty > 1)\">\n <button (click)=\"appService.topingDec($event,toping,sindex,tindex)\"\n *ngIf=\"toping.count_selected && toping.count_selected > 1\">\n <ion-icon name=\"remove\"></ion-icon>\n </button>\n <span>{{toping.count_selected ? toping.count_selected : 1}}</span>\n <button *ngIf=\"!scenario.disable_rest && (!scenario.limit_topping_qty || scenario.limit_topping_qty > toping.count_selected)\" (click)=\"appService.topingInc($event,toping,sindex,tindex)\">\n <ion-icon name=\"add\"></ion-icon>\n </button>\n </div>\n\n </ion-item>\n </span>\n\n <span\n *ngIf=\"!appService.getSelectedRestaurantSingleOptionSelectCondition() ? (scenario.is_mandatory == 'false' || (scenario.is_mandatory == 'true' && scenario.min_toping_count == 1 && scenario.max_toping_count == 1)) : false\">\n <ion-item lines=none>\n <em\n *ngIf=\"!(appService.appObject.selectedRestaurantDetails.is_toping_auto_select === 'true' && (scenario.is_mandatory == 'true' && scenario.min_toping_count == 1 && scenario.max_toping_count == 1))\">{{\n addFirstToping((getActiveToppings(scenario.topings))[0].id,scenario) }}</em>\n <ion-select style=\"width: 100%;\"\n value=\"{{ appService.appObject.selectedRestaurantDetails.is_toping_auto_
10275select === 'true' && (scenario.is_mandatory == 'true' && scenario.min_toping_count == 1 && scenario.max_toping_count == 1) ? '' : (getActiveToppings(scenario.topings))[0].id }}\"\n (ionChange)=\"appService.selectTopingOp2($event,scenario)\" interface=\"action-sheet\" mode=\"md\"\n placeholder=\"{{ 'key.select_toping' | translate }}\" cancelText=\"{{'key.close' | translate}}\">\n <ion-select-option *ngFor=\"let toping of getActiveToppings(scenario.topings); let tindex = index\"\n value=\"{{ toping.id }}\">\n {{toping.name}} ({{ toping | topingprice: appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position : appService.appObject.selectedDeliveryMethod }})\n </ion-select-option>\n </ion-select>\n </ion-item>\n\n </span>\n\n </div>\n\n <div *ngIf=\"scenario.btn_type == 'add-on'\" class=\"checkboxgroup\">\n\n <ion-list-header class=\"radio-title\">\n <ion-label><span>{{ scenario.name }}</span><i></i></ion-label>\n </ion-list-header>\n\n\n <ion-item lines=\"none\" class=\"warning-message\" *ngIf=\"scenario.is_mandatory == 'true'\">\n\n ({{'key.please_select_at_leaset' | translate }} {{ scenario.min_toping_count }} {{'key.toping_from_here' |\n translate }})\n\n </ion-item>\n\n <ion-item lines=\"none\" class=\"error\"\n *ngIf=\"appService?.appObject?.errors['error_in_scenario_'+scenario.id]\">\n\n ({{'key.you_should_select_at_leaset' | translate }} {{ scenario.min_toping_count }}\n {{'key.toping_from_here'\n | translate }})\n\n </ion-item>\n\n <ion-item lines=\"none\" *ngFor=\"let toping of getActiveToppings(scenario.topings); let tindex = index\">\n <ion-checkbox (click)=\"appService.selectTopingAddon($event,toping,scenario,tindex)\" mode=\"md\"\n slot=\"start\">\n </ion-checkbox>\n <div class=\"\" slot=\"\">\n <ion-label class=\"label-1\"\n [ngClass]=\" toping.is_mandatory == 'true' && appService?.appObject?.errors['shoud_select_toping_'+toping.id] ? 'toping_required' : '' \">\n {{ (toping.is_mandatory == 'true' ? \"* \":\"\")+toping.name }}</ion-label>\n <ion-label class=\"label-2\">({{ toping | topingprice: appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position : appService.appObject.selectedDeliveryMethod }})\n </ion-label>\n\n </div>\n <div slot=\"end\" class=\"min-max\" *ngIf=\"toping.checked && (!scenario.limit_topping_qty || scenario.limit_topping_qty > 1)\">\n <button (click)=\"appService.topingDec($event,toping,sindex,tindex)\"\n *ngIf=\"toping.count_selected && toping.count_selected > 1\">\n <ion-icon name=\"remove\"></ion-icon>\n </button>\n <span>{{toping.count_selected ? toping.count_selected : 1}}</span>\n <button *ngIf=\"!scenario.disable_rest && (!scenario.limit_topping_qty || scenario.limit_topping_qty > toping.count_selected)\" (click)=\"appService.topingInc($event,toping,sindex,tindex)\">\n <ion-icon name=\"add\"></ion-icon>\n </button>\n </div>\n\n </ion-item>\n </div>\n\n </li>\n\n </ng-container>\n </ul>\n\n\n <ul *ngIf=\"appService.selectedDish.fullDishInfo.is_customise == 'true'\">\n\n <li\n *ngFor=\"let scenario of getActiveScenarios(appService.selectedDish.fullDishInfo.scenarios); let sindex = index\">\n\n <div *ngIf=\"scenario.btn_type == 'optional'\" class=\"checkboxgroup\">\n <ion-list-header class=\"radio-title\">\n <ion-label><span>{{ scenario.name }}</span><i></i></ion-label>\n </ion-list-header>\n\n <ion-item lines=\"none\" class=\"warning-message\" *ngIf=\"scenario.is_mandatory == 'true'\">
10275\n <span *ngIf=\"scenario.min_toping_count == scenario.max_toping_count\">\n ({{'key.please_select_at_leaset' | translate }} {{ scenario.min_toping_count }} {{'key.toping_from_here' |\n translate }})\n </span>\n <span *ngIf=\"scenario.min_toping_count != scenario.max_toping_count\">\n ({{'key.please_select' | translate }} {{ scenario.min_toping_count }} {{'key.to' | translate }} {{\n scenario.max_toping_count }} {{'key.toping_from_here' | translate }})\n </span>\n\n </ion-item>\n\n <ion-item lines=\"none\" class=\"error\" *ngIf=\"appService?.appObject?.errors['error_in_scenario_'+scenario.id]\">\n <span *ngIf=\"scenario.min_toping_count == scenario.max_toping_count\">\n ({{'key.you_should_select_at_leaset' | translate }} {{ scenario.min_toping_count }}\n {{'key.toping_from_here' | translate }})\n </span>\n <span *ngIf=\"scenario.min_toping_count != scenario.max_toping_count\">\n ({{'key.you_should_select' | translate }} {{ scenario.min_toping_count }} {{'key.to' | translate }} {{\n scenario.max_toping_count }} {{'key.toping_from_here' | translate }})\n </span>\n </ion-item>\n\n <!-- Removed select list by Sanj order by Pumayk26 at 2024-07-24 -->\n <!-- *ngIf=\"scenario.is_mandatory == 'true' && !(scenario.min_toping_count == 1 && scenario.max_toping_count == 1)\" -->\n <span *ngIf=\"appService.getSelectedRestaurantSingleOptionSelectCondition() ? true : (scenario.is_mandatory == 'true' && !(scenario.min_toping_count == 1 && scenario.max_toping_count == 1))\">\n <ion-item lines=\"none\" *ngFor=\"let toping of getActiveToppings(scenario.topings); let tindex = index\">\n <ion-checkbox [id]=\"'topping-' + toping.id + '-' + scenario.id \" [disabled]=\"!toping.checked && scenario.disable_rest\" (click)=\"appService.selectTopingAddon($event,toping,scenario,tindex)\" mode=\"md\"\n slot=\"start\">\n </ion-checkbox>\n <div class=\"\" slot=\"\">\n <ion-label class=\"label-1\"\n [ngClass]=\" toping.is_mandatory == 'true' && appService?.appObject?.errors['shoud_select_toping_'+toping.id] ? 'toping_required' : '' \">\n {{ (toping.is_mandatory == 'true' ? \"* \":\"\")+toping.name }}</ion-label>\n <ion-label class=\"label-2\">({{ toping | topingprice: appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position : appService.appObject.selectedDeliveryMethod }})\n </ion-label>\n\n </div>\n <div slot=\"end\" class=\"min-max\" *ngIf=\"toping.checked && (!scenario.limit_topping_qty || scenario.limit_topping_qty > 1)\">\n <button (click)=\"appService.topingDec($event,toping,sindex,tindex)\"\n *ngIf=\"toping.count_selected && toping.count_selected > 1\">\n <ion-icon name=\"remove\"></ion-icon>\n </button>\n <span>{{toping.count_selected ? toping.count_selected : 1}}</span>\n <button *ngIf=\"!scenario.disable_rest && (!scenario.limit_topping_qty || scenario.limit_topping_qty > toping.count_selected)\" (click)=\"appService.topingInc($event,toping,sindex,tindex)\">\n <ion-icon name=\"add\"></ion-icon>\n </button>\n </div>\n </ion-item>\n </span>\n\n\n <span\n *ngIf=\"!appService.getSelectedRestaurantSingleOptionSelectCondition() ? (scenario.is_mandatory == 'false' || (scenario.is_mandatory == 'true' && scenario.min_toping_count == 1 && scenario.max_toping_count == 1)) : false\">\n <ion-item lines=none>\n <em\n *ngIf=\"!(appService.appObject.selectedRestaurantDetails.is_toping_auto_select === 'true' && (scenario.is_mandatory == 'true' && scenario.min_toping_count == 1 && scenario.max_toping_count == 1))\">{{\n addFirstToping((getActiveToppings(scenario.topings))[0].id,scenario) }}</em>\n <ion-select style=\"width: 100%;\"\n value=\"{{ appService.appObject.selectedRestaurantDetails.is_toping_auto_
10275select === 'true' && (scenario.is_mandatory == 'true' && scenario.min_toping_count == 1 && scenario.max_toping_count == 1) ? '' : (getActiveToppings(scenario.topings))[0].id }}\"\n (ionChange)=\"appService.selectTopingOp2($event,scenario)\" interface=\"action-sheet\" mode=\"md\"\n placeholder=\"{{ 'key.select_toping' | translate }}\" cancelText=\"{{'key.close' | translate}}\">\n <ion-select-option *ngFor=\"let toping of getActiveToppings(scenario.topings); let tindex = index\"\n value=\"{{ toping.id }}\">\n {{toping.name}} ({{ toping | topingprice: appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position : appService.appObject.selectedDeliveryMethod }})\n </ion-select-option>\n </ion-select>\n </ion-item>\n </span>\n\n\n </div>\n\n <div *ngIf=\"scenario.btn_type == 'add-on'\" class=\"checkboxgroup\">\n\n <ion-list-header class=\"radio-title\">\n <ion-label><span>{{ scenario.name }}</span><i></i></ion-label>\n </ion-list-header>\n\n <ion-item lines=\"none\" class=\"warning-message\" *ngIf=\"scenario.is_mandatory == 'true'\">\n\n ({{'key.please_select_at_leaset' | translate }} {{ scenario.min_toping_count }} {{'key.toping_from_here' |\n translate }})\n\n </ion-item>\n\n <ion-item lines=\"none\" class=\"error\" *ngIf=\"appService?.appObject?.errors['error_in_scenario_'+scenario.id]\">\n\n ({{'key.you_should_select_at_leaset' | translate }} {{ scenario.min_toping_count }} {{'key.toping_from_here'\n | translate }})\n\n </ion-item>\n\n <ion-item lines=\"none\" *ngFor=\"let toping of getActiveToppings(scenario.topings); let tindex = index\">\n <ion-checkbox (click)=\"appService.selectTopingAddon($event,toping,scenario,tindex)\" mode=\"md\" slot=\"start\">\n </ion-checkbox>\n <div class=\"\" slot=\"\">\n <ion-label class=\"label-1\"\n [ngClass]=\" toping.is_mandatory == 'true' && appService?.appObject?.errors['shoud_select_toping_'+toping.id] ? 'toping_required' : '' \">\n {{ (toping.is_mandatory == 'true' ? \"* \":\"\")+toping.name }}</ion-label>\n <ion-label class=\"label-2\">({{ toping | topingprice: appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position : appService.appObject.selectedDeliveryMethod }})\n </ion-label>\n\n </div>\n <div slot=\"end\" class=\"min-max\" *ngIf=\"toping.checked && (!scenario.limit_topping_qty || scenario.limit_topping_qty > 1)\">\n <button (click)=\"appService.topingDec($event,toping,sindex,tindex)\"\n *ngIf=\"toping.count_selected && toping.count_selected > 1\">\n <ion-icon name=\"remove\"></ion-icon>\n </button>\n <span>{{toping.count_selected ? toping.count_selected : 1}}</span>\n <button *ngIf=\"!scenario.disable_rest && (!scenario.limit_topping_qty || scenario.limit_topping_qty > toping.count_selected)\" (click)=\"appService.topingInc($event,toping,sindex,tindex)\">\n <ion-icon name=\"add\"></ion-icon>\n </button>\n </div>\n </ion-item>\n\n </div>\n\n </li>\n\n </ul>\n </form>\n\n <div class=\"text-center footer-box\">\n\n <button class=\"submit-buttons\" (click)=\"appService.addSizeToCart(isFromCrossSelling)\"\n [ngStyle]=\"{'background': (appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.addToCartButton : appService.appObject.theme[appService.themeConfigFor]?.primaryColor),\n 'color' : (appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.addToCartButtonText : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor)}\">\n\n <ion-icon name=\"cart-outline\"></ion-icon>\n {{ 'key.add_to_cart' | translate }} ({{ appService.selectedDish.total | price:\n appService.appObject.settings.currency_symbol :\n appService.appObject.settings.currency_position : appService.appObject.selectedDeliveryMethod}})\n </button>\n </div>\n</ng-template>"); 10276 10277/***/ }), 10278 10279/***/ 10167: 10280/*!********************************************************************************************************************!*\ 10281 !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/views/web-views/shared/modal-popover/modal-popover.page.html ***! 10282 \********************************************************************************************************************/ 10283/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 10284 10285"use strict"; 10286__webpack_require__.r(__webpack_exports__); 10287/* harmony default export */ __webpack_exports__["default"] = ("<ion-header class=\"popover-header\" *ngIf=\"type !== POPOVER_TYPES.FAVOURITE_RESTAURANT_SELECT.TYPE \n && type !== POPOVER_TYPES.FAVOURITE_RESTAURANT_SELECTED.TYPE\n && type !== POPOVER_TYPES.UNABLE_TO_COMPLETE_ORDER.TYPE\">\n <ion-toolbar class=\"modal-toolbar\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.popupTitleText : appService.appObject.theme[appService.themeConfigFor]?.primaryColor}\"\n [style.--background]=\"(appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.popupTitleBackgroun
10287d : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor)\">\n <div slot=\"start\" class=\"modal-close\" *ngIf=\"historyStack.length\">\n <ion-icon (click)=\"navigateBackward()\" name=\"arrow-back-outline\" class=\"pointer back-btn\"></ion-icon>\n </div>\n <div slot=\"start\" class=\"modal-close\" *ngIf=\"selectedQuestionCategory\">\n <ion-icon (click)=\"navigateBackwardFromQuestionPage()\" name=\"arrow-back-outline\" class=\"pointer back-btn\">\n </ion-icon>\n </div>\n <!-- always send the title as language key -->\n <ion-title>\n <ion-icon name=\"extension-puzzle\" class=\"red\" *ngIf=\"type === POPOVER_TYPES.TOPPINGS.TYPE\"></ion-icon> {{title |\n translate}} {{ uniqueId && type === POPOVER_TYPES.ORDER_SUMMARY.TYPE ? ' - ' + uniqueId : ''}} {{\n selectedQuestionCategory ? ' + ' + selectedQuestionCategory.name : ''}}\n </ion-title>\n <div slot=\"end\" class=\"modal-close\">\n <ion-icon class=\"pointer close\"\n (click)=\"type === POPOVER_TYPES.FAVOURITE_RESTAURANT.TYPE ? clearRedirectInterval(true) : close()\"\n name=\"close-outline\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.popupTitleText : appService.appObject.theme[appService.themeConfigFor]?.primaryColor}\">\n </ion-icon>\n </div>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n\n <div *ngIf=\"type === POPOVER_TYPES.FAVOURITE_RESTAURANT_SELECT.TYPE\">\n <div\n [ngStyle]=\"{'background' : appService.appObject.theme[appService.themeConfigFor]?.primaryColor, 'height' : '20px'}\">\n </div>\n <div class=\"select-restaurant-alert\">\n <div class=\"icon-container\">\n <ion-icon name=\"information-circle\"></ion-icon>\n </div>\n <div>\n {{'key.to_get_start_select_favourite_restaurant' | translate}}\n </div>\n </div>\n <div class=\"select-restaurant-btn text-center\">
10287\n <span (click)=\"chooseFavouriteRestaurant()\" class=\"btn-sm-alert\" [ngStyle]=\"{'background': appService.appObject.theme[appService.themeConfigFor]?.primaryColor,\n 'color' : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor}\">\n {{'key.choose_restaurant' | translate}}\n </span>\n\n <span (click)=\"modalCtr.dismiss()\" class=\"btn-link\"\n [ngStyle]=\"{'color': appService.appObject.theme[appService.themeConfigFor]?.primaryColor}\">\n {{'key.may_be_later' | translate}}\n </span>\n </div>\n </div>\n\n <div *ngIf=\"type === POPOVER_TYPES.FAVOURITE_RESTAURANT_SELECTED.TYPE\" class=\"text-center\">\n <div\n [ngStyle]=\"{'background' : appService.appObject.theme[appService.themeConfigFor]?.primaryColor, 'height' : '20px'}\">\n </div>\n <div class=\"popup-container-inner favorite-restaurant-marked-container\"\n [ngStyle]=\"{'border-top': appService.appObject.theme[appService.themeConfigFor]?.primaryColor ? ('5px solid ' + appService.appObject.theme[appService.themeConfigFor]?.primaryColor) : ''}\">\n <div class=\"line-top\"></div>\n <div class=\"favourite-message\">\n <span\n [ngStyle]=\"{'color': appService.appObject.theme[appService.themeConfigFor]?.primaryColor ? appService.appObject.theme[appService.themeConfigFor]?.primaryColor : ''}\">\n <ion-icon name=\"checkmark-circle\"></ion-icon>\n </span>\n <span>{{'key.you_ve_selected' | translate}} <strong\n [ngStyle]=\"{'color': appService.appObject.theme[appService.themeConfigFor]?.primaryColor ? appService.appObject.theme[appService.themeConfigFor]?.primaryColor : ''}\">{{appService.appObject.favouriteRestaurant.name}}</strong> {{'key.as_your_favourite_restaurant'\n | translate }}.</span>\n </div>
10287\n <span class=\"you-can-change-this\">{{'key.you_can_change_this_at_any_time' | translate}}.</span>\n <div class=\"btn-ok\">\n <span (click)=\"modalCtr.dismiss()\" [ngStyle]=\"{'background': appService.appObject.theme[appService.themeConfigFor]?.primaryColor,\n 'color' : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor}\">\n {{'key.ok' | translate}}\n </span>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"type === POPOVER_TYPES.FAVOURITE_RESTAURANT_SEARCH.TYPE\">\n <div class=\"searchbar\">\n <ion-label position=\"stacked\">{{ 'key.location' | translate }}</ion-label>\n <ion-input (ngModelChange)=\"addressInputChanged = true;\" [(ngModel)]=\"address\" #googleaddressweb class=\"input\">\n </ion-input>\n <ion-icon (click)=\"appService.clearAddress()\" class=\"closeicon pointer\" name=\"close-circle-outline\"></ion-icon>\n\n </div>\n\n <div class=\"alert\" *ngIf=\"appService?.appObject?.errors?.address\">\n <div *ngFor=\"let error of appService?.appObject?.errors?.address | keyvalue\">\n {{ 'key.'+ error.value | translate }}\n </div>\n </div>\n <div class=\"dilivary-method-container\">\n <div class=\"btn-container\">\n <button class=\"red-button\" (click)=\"appService?.appObject?.errors?.address ? '' : favouriteRestaurantSearch()\"\n [ngStyle]=\"{'background': (appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.deliveryMethodTypeButton : appService.appObject.theme[appService.themeConfigFor]?.primaryColor),\n 'color' : appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.deliveryMethodTypeButtonText : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor}\">\n <span>{{(isFromCheckoutToLocationSelect ? 'key.choose_address' : 'key.find_restaurants') | translate}}</span>\n </button>\n </div>\n <div class=\"text-center\">\n <button class=\"find-my-location-btn\" type=\"button\" (click)=\"getCurrentLocation()\"> {{ 'key.find_my_location' |\n translate }} </button>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"type === POPOVER_TYPES.UNABLE_TO_COMPLETE_ORDER.TYPE\">\n <div\n [ngStyle]=\"{'background' : appService.appObject.theme[appService.themeConfigFor]?.primaryColor, 'height' : '20px'}\">\n </div>\n <div class=\"unable-to-process-order-alert\">\n <div class=\"icon-container-unavailable\">\n <ion-icon name=\"information-circle\"></ion-icon>\n </div>\n <div>\n {{'key.selected_menu_categories_are_not_available_at_the_selected_time_slot' | translate}}\n </div>\n </div>\n <div class=\"text-center\">\n {{'key.available_times_for' | translate}} <strong>{{appService.tempDeliveryDate}}</strong>\n </div>\n <div class=\"unavailable-menu-list\">\n <div class=\"unavailable-menu-card-details\"\n [ngStyle]=\"{'border-color' : appService.appObject.theme[appService.themeConfigFor]?.primaryColor}\"\n *ngFor=\"let menu of appService.menusNotAvailable\">\n <strong>{{menu.name}}</strong> :\n <span class=\"available-times\">\n <ion-icon name=\"alarm-outline\"></ion-icon> \n {{menu.visibility.isActive ? (menu.visibility.timeSlot?.from !== 'All Day' ?\n (menu.visibility.timeSlot?.from\n + ' - ' + menu.visibility.timeSlot?.to) : 'All Day') : 'Not Available'}}</span>\n </div>\n </div>\n <div class=\"\">
10287\n <span (click)=\"closeUnavailableNote()\" class=\"btn-sm-alert unavailable-close-btn\" [ngStyle]=\"{'background': appService.appObject.theme[appService.themeConfigFor]?.primaryColor,\n 'color' : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor}\">\n {{'key.close' | translate}}\n </span>\n </div>\n </div>\n\n <div class=\"dilivary-method-container\"\n *ngIf=\"type === POPOVER_TYPES.DELIVERY_TYPE.TYPE || type === POPOVER_TYPES.ORDERING_TYPE.TYPE\">\n\n <div class=\"btn-container\"\n *ngFor=\"let option of ((!selectedBranch && appService.appObject.settings?.is_franchise === 'true') || justSelectOrderType ? availableDeliveryMethodsFranchise : appService.availableDeliveryMethods)\">\n <button class=\"red-button\"\n [ngStyle]=\"{'background': (appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.deliveryMethodTypeButton : appService.appObject.theme[appService.themeConfigFor]?.primaryColor),\n 'color' : appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.deliveryMethodTypeButtonText : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor}\"\n (click)=\"tempSelectedOrderType = option; selectOrderType(option); type === POPOVER_TYPES.ORDERING_TYPE.TYPE ? '' : ((option === 'delivery' || selectfavouriteRestaurant || (appService.appObject.settings?.is_franchise === 'true' && !selectedBranch)) ? navigateTo(POPOVER_TYPES.LOCATION_SELECT): navigateTo((selectedBranch ? 'menu-page' : 'restaurant-list'),(selectedBranch ? selectedBranch : 'all')))\">\n <ion-icon *ngIf=\"option === 'delivery'\" name=\"fast-food-outline\"></ion-icon>\n <ion-icon *ngIf=\"option === 'pickup'\" name=\"footsteps-outline\"></ion-icon>\n <ion-icon *ngIf=\"option === 'dine_in'\" name=\"restaurant-outline\"></ion-icon>\n <span>{{('key.'+ option) | translate}}</span>\n </button>\n </div>\n\n <div class=\"text-center mt-15px\"\n *ngIf=\"!selectedBranch && this.appService.appObject.settings?.is_franchise === 'true'\">
10287\n <span (click)=\"changeFavouriteRestaurant()\" class=\"change-favourite\"\n *ngIf=\"appService.appObject.settings?.is_franchise === 'true'\"\n [ngStyle]=\"{'color' : (appService.appObject.theme[appService.themeConfigFor]?.primaryColor ? appService.appObject.theme[appService.themeConfigFor]?.primaryColor : '')}\">\n <strong> {{(appService.appObject.favouriteRestaurant ? 'key.change_favourite_restaurant' :\n 'key.set_favourite_restaurant') | translate}}</strong>\n </span>\n </div>\n </div>\n\n <div *ngIf=\"type === POPOVER_TYPES.LOCATION_SELECT.TYPE\">\n <span *ngIf=\"!isPostalModeEnable\">\n <div class=\"searchbar\">\n <ion-label position=\"stacked\">{{ 'key.location' | translate }}</ion-label>\n <ion-input (ngModelChange)=\"addressInputChanged = true;\" [(ngModel)]=\"address\" #googleaddressweb class=\"input\">\n </ion-input>\n <ion-icon (click)=\"appService.clearAddress()\" class=\"closeicon pointer\" name=\"close-circle-outline\"></ion-icon>\n\n </div>\n\n <div class=\"alert\" *ngIf=\"appService?.appObject?.errors?.address\">\n <div *ngFor=\"let error of appService?.appObject?.errors?.address | keyvalue\">\n {{ 'key.'+ error.value | translate }}\n </div>\n </div>\n\n <!-- <div class=\"dilivary-method-container\">\n <div class=\"btn-container\">\n <button class=\"red-button\"\n (click)=\"justSelectDeliveryAddress ? navigateTo(POPOVER_TYPES.CHECKOUT) : navigateTo('restaurant-list')\">\n <span>{{(justSelectDeliveryAddress ? 'key.checkout' : 'key.find_restaurants') | translate}}</span>\n </button>\n </div>\n </div> -->\n <div class=\"dilivary-method-container\">\n <div class=\"btn-container\">\n <button class=\"red-button\" (click)=\"appService?.appObject?.errors?.address ? '' : addressSelectAction()\"\n [ngStyle]=\"{'background': (appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.deliveryMethodTypeButton : appService.appObject.theme[appService.themeConfigFor]?.primaryColor),\n 'color' : appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.deliveryMethodTypeButtonText : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor}\">\n <span>{{(isFromCheckoutToLocationSelect ? 'key.choose_address'\n : ((appService.appObject.settings.is_franchise === 'true' && !isFavouriteRestaurantDeliverySearch) ||\n (!appService.appObject.settings.is_franchise || appService.appObject.settings.is_franchise === 'false') ?\n 'key.find_a_restaurant_web'\n : 'key.order_now_web')) | translate}}</span>\n </button>\n </div>\n <!-- <div class=\"get-current-address\">\n <a (click)=\"getCurrentLocation()\">{{'key.get_current_address' | translate}}</a>d\n </div> -->\n <div class=\"text-center\">\n <button class=\"find-my-location-btn\" type=\"button\" (click)=\"getCurrentLocation()\"> {{ 'key.find_my_location' |\n translate }} </button>\n </div>\n </div>\n </span>\n <!-- postal searchbar -->\n <div class=\"form-container\" *ngIf=\"isPostalModeEnable\">\n <div class=\"container\">\n <ion-input placeholder=\"{{ 'key.select_delivery_area' | translate }}\" class=\"postal-code-input\" type=\"text\"\n debounce=\"500\" (ionChange)=\"getPostalItems($event)\" [(ngModel)]=\"selected_postal\" (click)=\"clearPostalArea()\">\n </ion-input>\n <ion-list *ngIf=\"postalFilterItem.length\" class=\"postal-code-list\">\n <ion-item\n [ngStyle]=\"{'border-left': '5px solid' + (appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.deliveryMethodTypeButton : appService.appObject.theme[appService.themeConfigFor]?.primaryColor)}\"\n lines=\"none\" class=\"postal-item\" (click)=\"selectPostalCode(item)\" *ngFor=\"let item of postalFilterItem\">{{\n item.code }} - {{item.name\n }}</ion-item>\n </ion-list>\n\n <div class=\"alert\" *ngIf=\"appService?.appObject?.errors?.postalCode\">\n <div *ngFor=\"let error of appService?.appObject?.errors?.postalCode | keyvalue\">\n {{ 'key.'+ error.value | translate }}\n </div>\n </div>\n\n <div *ngIf=\"!postalFilterItem.length && selected_postal && !selectedArea\" class=\"not-found-postals\">\n <ion-icon name=\"sad-outline\"></ion-icon>\n <!-- <p>{{ 'key.sorry_restaurants_not_found' | translate }}</p> -->\n <p>{{'key.sorry_we_re_not_delivering_to_this_location' | translate}}</p>\n </div>\n\n </div>\n\n\n <div class=\"text-center\">\n <button class=\"red-button\"\n [ngStyle]=\"{'background': (appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.deliveryMethodTypeButton : appService.appObject.theme[appService.themeConfigFor]?.primaryColor),\n 'color' : appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.deliveryMethodTypeButtonText : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor}\"\n (click)=\"onPostalCodeSelect()\">{{'key.order_now' | translate}}</button>\n </div>\n </div>\n\n </div>\n\n <div *ngIf=\"type === POPOVER_TYPES.RESTAURANT_SELECT.TYPE\">\n <ion-row class=\"no-restaurants\" *ngIf=\"!appService?.appObject?.restaurants?.length\">\n <h4><strong>{{'key.there_are_no_any_restaurants_at_the_moment' | translate}}...!</strong></h4>\n </ion-row>\n <ion-grid *ngFor=\"let restaurant of appService.appObject.restaurants;\" class=\"restaurant-card\"\n (click)=\"selectfavouriteRestaurant ? markRestaurantAsFavourite(restaurant) : navigateTo('menu-page',restaurant)\"\n [ngStyle]=\"{'background': (appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.restaurantListCardBackgroun
10287d : appService.appObject.theme[appService.themeConfigFor]?.primaryColor),\n 'color' : appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.restaurantListCardText : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor}\">\n <ion-row>\n <ion-col size=\"10\">\n <div class=\"branches-title\">{{ restaurant.name }}</div>\n </ion-col>\n </ion-row>\n <ion-row class=\"branches-addrs\">\n <ion-col size=\"12\">\n <ion-icon name=\"location\"></ion-icon><span>{{ restaurant.address }}</span>\n </ion-col>\n </ion-row>\n </ion-grid>\n </div>\n\n <div *ngIf=\"type === POPOVER_TYPES.TABLE_SELECT.TYPE\">\n <div *ngIf=\"selectedRestaurantTableList.length && !previousRestaurant\">\n <div *ngFor=\"let table of selectedRestaurantTableList\"\n class=\"restaurant-table-card {{selectedTable && selectedTable.id === table.id ? ' restaurant-table-card-checked' : ''}}\"\n (click)=\"onSelectTable(table)\">\n <span>{{'key.table' | translate}} <strong>{{table.number}}</strong></span>\n <ion-icon name=\"checkmark-circle\"></ion-icon>\n </div>\n </div>\n <div *ngIf=\"previousRestaurant && previousRestaurant.name\" class=\"table-msg-container\">\n <div>\n <img src=\"../../../../../assets/img/pending_order.jpg\" alt=\"vector4free\" srcset=\"\" style=\"max-height: 200px;\">\n </div>
10287\n <span>\n {{'key.you_have_an_active_order_on_restaurant' | translate}} <br>\n <strong>{{previousRestaurant.name}}<br>\n {{'key.table' | translate}} #{{previousRestaurant.number}}</strong>\n </span>\n <br>\n <!-- <a *ngIf=\"previousRestaurant.slug\"\n [routerLink]=\"['menu',previousRestaurant.slug]\">go to menu</a>\n <br> -->\n <label class=\"timer\">{{previousRestaurant.countDown}}</label>\n </div>\n <!-- <ion-row class=\"no-restaurants\" *ngIf=\"!appService?.appObject?.restaurants?.length\">\n <h4><strong>{{'key.there_are_no_any_restaurants_at_the_moment' | translate}}...!</strong></h4>\n </ion-row>\n <ion-grid *ngFor=\"let restaurant of appService.appObject.restaurants;\" class=\"restaurant-card\"\n (click)=\"navigateTo('menu-page',restaurant)\">\n <ion-row>\n <ion-col size=\"10\">\n <div class=\"branches-title\">{{ restaurant.name }}</div>\n </ion-col>\n </ion-row>\n <ion-row class=\"branches-addrs\">\n <ion-col size=\"12\">\n <ion-icon name=\"location\"></ion-icon><span>{{ restaurant.address }}</span>\n </ion-col>\n </ion-row>\n </ion-grid> -->\n </div>\n\n <div *ngIf=\"type === POPOVER_TYPES.OPEN_HOURS.TYPE\">\n <app-open-hours restaurantId=\"{{appService.appObject?.selectedRestaurantId}}\"></app-open-hours>\n </div>\n\n <div *ngIf=\"type === POPOVER_TYPES.PAGES.TYPE\">\n <app-pages slug=\"{{slug}}\"></app-pages>\n </div>\n\n <!-- <div *ngIf=\"type === POPOVER_TYPES.LOGIN.TYPE\">\n <app-login (onLoginSuccess)=\"onLoginSuccess($event[0])\"></app-login>\n </div> -->\n <app-login [isOrderProcessing]=\"isOrderProcessing\" (onForgotPassword)=\"onForgotPassword()\"\n (onRegisterClick)=\"onRegisterVia()\" *ngIf=\"type === POPOVER_TYPES.LOGIN.TYPE\"\n (onLoginSuccess)=\"onLoginSuccess($event[0])\">\n </app-login>\n\n <!-- <div *ngIf=\"type === POPOVER_TYPES.USER_PROFILE.TYPE\">\n <app-profile-update ></app-profile-update>\n </div> -->\n <app-profile-update *ngIf=\"type === POPOVER_TYPES.USER_PROFILE.TYPE\"></app-profile-update>\n\n\n <app-register-via (onLoginSuccess)=\"onLoginSuccess(null)\" (onRegisterViaEmail)=\"onRegisterViaEmail()\"\n *ngIf=\"type === POPOVER_TYPES.REGISTER_VIA.TYPE\"></app-register-via>\n\n <app-register (onNavigatePages)=\"onNavigatePages($event[0])\" (onRegistrationSuccess)=\"onLoginSuccess(null)\"\n *ngIf=\"type === POPOVER_TYPES.REGISTER.TYPE\"></app-register>\n\n <app-forgot-password (onPasswordResetSuccess)=\"onPasswordResetSuccess()\"\n *ngIf=\"type === POPOVER_TYPES.FORGOT_PASSWORD.TYPE\"></app-forgot-password>\n\n <app-toppings [isFromCrossSelling]=\"isFromCrossSelling\" *ngIf=\"type === POPOVER_TYPES.TOPPINGS.TYPE\"></app-toppings>\n\n <app-checkout (onOrderPlaced)=\"onOrderPlaced($event[0], $event[1])\"\n (onChangeDeliveryAddress)=\"onChangeDeliveryAddress()\" (onNavigatePages)=\"onNavigatePages($event[0])\"\n *ngIf=\"type === POPOVER_TYPES.CHECKOUT.TYPE\" (onBackLoginFromCheckout)=\"onBackLoginFromCheckout()\"\n [backFromAddressSelect]=\"isFromCheckoutToLocationSelect\">\n </app-checkout>\n\n <app-order-summery *ngIf=\"type === POPOVER_TYPES.ORDER_SUMMARY.TYPE\" webUniqueId=\"{{uniqueId}}\">\n </app-order-summery>\n\n <app-past-order (onOrderSelect)=\"onOrderPlaced($event[0], $event[1])\" *ngIf=\"type === POPOVER_TYPES.PAST_ORDERS.TYPE\">\n </app-past-order>\n\n <div *ngIf=\"type === POPOVER_TYPES.DISH_IMAGE_PREVIEW.TYPE && dishImageURL\" class=\"text-center padding-5px\">\n <img src=\"{{dishImageURL}}\" alt=\"\">\n </div>\n\n <app-cross-selling #crossSelling (openQuestionDishPage)=\"openQuestionDishPage($event[0])\"\n [crossSellingProducts]=\"crossSellingProducts\" [selectedDishCategory]=\"selectedDishCategory\"\n *ngIf=\"type === POPOVER_TYPES.CROSS_SELLING.TYPE\"></app-cross-selling>\n\n <app-table-reservation (onReservationSuccess)=\"onReservationSuccess($event[0])\"\n *ngIf=\"type === POPOVER_TYPES.TABLE_RESERVATION.TYPE && !reservationSuccess\"></app-table-reservation>\n\n <div *ngIf=\"type === POPOVER_TYPES.TABLE_RESERVATION.TYPE && reservationSuccess\">\n <div class=\"reservation-success-msg-container\">\n <ion-icon name=\"checkmark-circle\"></ion-icon>\n <div [innerHtml]=\"sanitizer.bypassSecurityTrustHtml(reservationSuccess)\">\n </div>\n </div>\n </div>\n\n <div *ngIf=\"type === POPOVER_TYPES.ALLERGY.TYPE\" class=\"allergy-content\">\n <div *ngIf=\"htmlContent\" [innerHtml]=\"htmlContent\">\n </div>\n </div>\n\n <div *ngIf=\"type === POPOVER_TYPES.FAVOURITE_RESTAURANT.TYPE\">\n <div *ngIf=\"appService.appObject.favouriteRestaurant && !loadingFavourite\">\n <div class=\"restaurant-details-card\" *ngIf=\"!fromFavouriteIcon\"\n [ngStyle]=\"{'background' : (appService.appObject.favouriteRestaurant.openDetails.current_status === 'closed' ? '#fce0e3' : '#ddeed6') }\">\n <strong>{{appService.appObject.favouriteRestaurant.name}}</strong>\n <br>\n <p *ngIf=\"appService.appObject.favouriteRestaurant.openDetails.current_status === 'open'\">\n {{ 'key.favourite_restaurant_open' | translate }}\n </p>\n\n <p\n *ngIf=\"appService.appObject.favouriteRestaurant.openDetails.current_status === 'closed' && !appService.appObject.favouriteRestaurant.openDetails.is_pre_order\">\n {{ 'key.close_note' | translate }}\n </p>\n\n <p\n *ngIf=\"appService.appObject.favouriteRestaurant.openDetails.current_status === 'closed' && appService.appObject.favouriteRestaurant.openDetails.is_pre_order\">\n {{ 'key.restaurant_is_closed_but_preorder' | translate }}\n </p>\n\n <div class=\"open-time-note\"\n *ngIf=\"appService.appObject.favouriteRestaurant.openDetails?.text != '' || appService.appObject.favouriteRestaurant.openDetails.text_delivery != ''\">\n {{ appService.appObject.favouriteRestaurant.openDetails?.text }}\n {{ appService.appObject.favouriteRestaurant.openDetails?.text != \"\" &&\n appService.appObject.favouriteRestaurant.openDetails?.text_delivery != \"\" ? '|' : ''}}\n {{ appService.appObject.favouriteRestaurant.openDetails?.text_delivery }}\n\n </div>\n </div>\n <div class=\"go-now\">\n <!-- <button class=\"red-button\" type=\"button\" (click)=\"redirectTofavouriteRestaurant()\"\n [ngStyle]=\"{'background': (appService.appObject.theme[appService.themeConfigFor]?.primaryColor ? appService.appObject.theme[appService.themeConfigFor]?.primaryColor : ''),\n 'color' : (appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor ? appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor : '')}\">\n <strong>Go Now</strong> <span>({{favouriteRedirectCountDown}})</span>\n </button> -->\n <div class=\"btn-container\" *ngFor=\"let option of favouriteRestaurantDeliveryMethods\">\n <button class=\"red-button\"\n [ngStyle]=\"{'background': (appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.deliveryMethodTypeButton : appService.appObject.theme[appService.themeConfigFor]?.primaryColor),\n 'color' : appService.appObject.theme[appService.themeConfigFor]?.advance === true || appService.appObject.theme[appService.themeConfigFor]?.advance === 'true' ? appService.appObject.theme[appService.themeConfigFor]?.advanced.deliveryMethodTypeButtonText : appService.appObject.theme[appService.themeConfigFor]?.primaryTextColor}\"\n (click)=\"onFavoriteModeDeliveryMethodSelect(option)\">\n <ion-icon *ngIf=\"option === 'delivery'\" name=\"fast-food-outline\"></ion-icon>\n <ion-icon *ngIf=\"option === 'pickup'\" name=\"footsteps-outline\"></ion-icon>\n <ion-icon *ngIf=\"option === 'dine_in'\" name=\"restaurant-outline\"></ion-icon>\n <span>{{('key.'+ option) | translate}}</span>\n </button>\n </div>\n <br>
10287\n <span (click)=\"changeFavouriteRestaurant()\" class=\"change-favourite\"\n [ngStyle]=\"{'color' : (appService.appObject.theme[appService.themeConfigFor]?.primaryColor ? appService.appObject.theme[appService.themeConfigFor]?.primaryColor : '')}\">Change\n your favorite restaurant</span>\n </div>\n </div>\n\n <div *ngIf=\"loadingFavourite\" class=\"spinner-container\">\n <ion-spinner name=\"crescent\"\n [ngStyle]=\"{'color' : appService.appObject.theme[appService.themeConfigFor]?.primaryColor ? appService.appObject.theme[appService.themeConfigFor]?.primaryColor : ''}\">\n </ion-spinner>\n </div>\n </div>\n <div *ngIf=\"type === POPOVER_TYPES.ALLERGIES_AND_ADDITIVES.TYPE\">\n <app-additives-and-substances></app-additives-and-substances>\n </div>\n</ion-content>\n\n<!-- <app-login *ngIf=\"type === POPOVER_TYPES.LOGIN.TYPE\" (onLoginSuccess)=\"onLoginSuccess($event[0])\">\n</app-login> -->"); 10288 10289/***/ }), 10290 10291/***/ 20991: 10292/*!********************************************************!*\ 10293 !*** ./src/app/views/web-views/shared/constatnts.json ***! 10294 \********************************************************/ 10295/***/ (function(module) { 10296 10297"use strict"; 10298module.exports = JSON.parse('{"POPOVER_TYPES":{"DELIVERY_TYPE":{"TYPE":"delivery-type","TITLE":"key.select_order_type"},"BRANCH_SELECT":{"TYPE":"branch-select","TITLE":"key.select_a_restaurant"},"LOCATION_SELECT":{"TYPE":"location-select","TITLE":"key.select_delivery_address"},"RESTAURANT_SELECT":{"TYPE":"restaurant-select","TITLE":"key.select_a_restaurant"},"OPEN_HOURS":{"TYPE":"open-hours","TITLE":"key.open_hours"},"PAGES":{"TYPE":"pages","TITLE":""},"LOGIN":{"TYPE":"login","TITLE":"key.user_account"},"USER_PROFILE":{"TYPE":"user-profile","TITLE":"key.profile"},"REGISTER_VIA":{"TYPE":"register-via","TITLE":"key.user_account_register"},"REGISTER":{"TYPE":"register","TITLE":"key.register"},"FORGOT_PASSWORD":{"TYPE":"forgot-password","TITLE":"key.forgot_password"},"TOPPINGS":{"TYPE":"toppings","TITLE":""},"CHECKOUT":{"TYPE":"checkout","TITLE":"key.checkout"},"FIND_NEAR_BY":{"TYPE":"find-near-by","TITLE":"key.find_restaurant_near_by"},"ORDER_SUMMARY":{"TYPE":"order-summary","TITLE":""},"PAST_ORDERS":{"TYPE":"past-orders","TITLE":"key.my_orders_web"},"ORDERING_TYPE":{"TYPE":"ordering-type","TITLE":"key.select_order_type"},"DISH_IMAGE_PREVIEW":{"TYPE":"dish-image-preview","TITLE":""},"CROSS_SELLING":{"TYPE":"cross-selling","TITLE":""},"TABLE_RESERVATION":{"TYPE":"table-reservation","TITLE":"key.reserve_table"},"ALLERGY":{"TYPE":"allergy","TITLE":"key.allergies_and_additives"},"TABLE_SELECT":{"TYPE":"table-select","TITLE":"key.select_a_table"},"FAVOURITE_RESTAURANT":{"TYPE":"favourite_restaurant","TITLE":"key.favourite_restaurant"},"FAVOURITE_RESTAURANT_SELECT":{"TYPE":"favourite_restaurant_select","TITLE":"key.select_favourite_restaurant"},"FAVOURITE_RESTAURANT_SEARCH":{"TYPE":"favourite_restaurant_search","TITLE":"key.search_restaurants_nearby"},"FAVOURITE_RESTAURANT_SELECTED":{"TYPE":"favourite_restaurant_selected","TITLE":"key.select_favourite_restaurant"},"ALLERGIES_AND_ADDITIVES":{"TYPE":"allergies_and_additives","TITLE":"key.allergies_and_additives"},"UNABLE_TO_COMPLETE_ORDER":{"TYPE":"unable_to_complete_order","TITLE":"key.unable_to_complete_order_process"}}}'); 10299 10300/***/ }) 10301 10302}, 10303/******/ function(__webpack_require__) { // webpackRuntimeModules 10304/******/ "use strict"; 10305/******/ 10306/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); } 10307/******/ __webpack_require__.O(0, ["vendor"], function() { return __webpack_exec__(14431); }); 10308/******/ var __webpack_exports__ = __webpack_require__.O(); 10309/******/ } 10310]); 10311//# sourceMappingURL=main-es2015.js.map
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.