{"version":3,"sources":["components/Feature/GenericContent/ObjectBlock/index.js","assets/img/placeholders/thumbnailPlaceholder.png","assets/img/placeholders/transparent.png","assets/img/placeholders/gray.png","components/Base/BaseComponent/index.js","assets/icons/png/22px/confirmed.png","assets/themes lazy /^/.*/.css$/ groupOptions: {} namespace object","components/Common/Animations/RiseAndFade/index.js","components/Common/Animations/SearchSkeleton/index.js","components/Common/Helper/GetAncestorElement/index.js","components/Common/Details/index.js","components/Common/Tiles/FeaturedLifestyle/index.js","components/Common/Tiles/FeaturedRecipe/index.js","components/Feature/Blog/BlogDetails/index.js","components/Feature/Campaign/CampaignDetails/index.js","components/Feature/Campaign/CampaignTitle/index.js","components/Common/GrayBanner/index.js","helper/Animations.js","components/Feature/Category/RelatedSubcategory/index.js","components/Feature/CentreServices/CentreServicesHighlight/index.js","components/Feature/CentreServices/CentreServicesListInlineImage/index.js","components/Feature/CentreServices/CentreServicesListLeftImage/index.js","components/Feature/CentreServices/FeaturedServicesHighlight/index.js","components/Feature/Cinema/NowShowing/index.js","components/Feature/ConsumerArticle/ArticleDetails/index.js","components/Feature/ConsumerHeader/Header/index.js","components/Common/Subnav/index.js","helper/ArrayHelper.js","components/Feature/ConsumerNavigation/HeaderSubNav/index.js","components/Feature/Craft/CraftDetails/index.js","components/Feature/Craft/CraftQuickLinksMenu/index.js","components/Common/Badge/index.js","components/Feature/FeaturedRetailer/FeaturedRetailer/index.js","components/Feature/Forms/ContactUsInputFields/index.js","components/Feature/Forms/ContactUs/index.js","components/Common/Checkbox/index.js","components/Common/CustomDropdown/index.js","components/Common/RadioButton/index.js","components/Common/EmailPreference/Interest.js","components/Common/EmailPreference/index.js","components/Common/SubscribeForm/SubscribeForm.js","components/Feature/Forms/Newsletter/index.js","components/Feature/GenericContent/AdCampaign/index.js","components/Feature/GenericContent/ConsumerFAQ/index.js","components/Feature/GenericContent/ConsumerFAQBlock/index.js","components/Feature/GenericContent/GeneralNote/index.js","components/Feature/GenericContent/GeneralSection/index.js","components/Feature/GenericContent/GlobalFooter/index.js","components/Common/Video/index.js","components/Feature/GenericContent/Hero/index.js","components/Feature/GenericContent/HeroDescription/index.js","components/Feature/GenericContent/HomepageHero/index.js","components/Feature/GenericContent/HomeQuickLinks/index.js","components/Feature/GenericContent/ImageGallery/index.js","components/Feature/GenericContent/ImageTextBlock/index.js","components/Feature/GenericContent/QuickLinksMenu/index.js","components/Feature/GenericContent/RichText/index.js","components/Feature/GenericContent/ServiceQuickLinksMenu/index.js","components/Feature/GenericContent/TermsAndConditions/index.js","components/Feature/GenericContent/TextBlock/index.js","components/Feature/GenericContent/TwoColumn-70-30/index.js","components/Feature/GettingHere/GettingHereHeader/index.js","components/Feature/Header/GenericPageHeader/index.js","components/Feature/Header/Navigation/NavList/index.js","components/Feature/Header/Navigation/NavDiscoverStore/index.js","components/Feature/Header/Navigation/NavWhatsOn/index.js","components/Feature/Header/Navigation/NavRichTextList/index.js","components/Feature/Header/Navigation/NavBestParking/index.js","components/Feature/Header/Navigation/NavOpeningHours/index.js","components/Feature/Header/Navigation/NavMovies/index.js","components/Feature/Metrics/PopularTimes/index.js","components/Feature/Header/Navigation/NavPopularTimes/index.js","components/Feature/Header/Navigation/NavCampaign/index.js","components/Feature/Header/Navigation/NavRecipe/index.js","components/Feature/Parking/CarPark/index.js","components/Feature/Header/Navigation/NavCarParks/index.js","components/Feature/Header/Navigation/NavLinkList/index.js","components/Feature/Header/Navigation/NavComponent/index.js","components/Common/HeaderImageFormat/index.js","components/Common/LazyLoading/index.js","components/Feature/Header/Navigation/NavMobile/index.js","components/Common/UniversalBanner/index.js","helper/ImageHelper.js","helper/ScrollHelper.js","components/Common/Lightbox/index.js","components/Feature/Header/HomePageHeader/index.js","components/Feature/Header/PageHeader/index.js","lib/SitecoreContextFactory.js","components/Feature/Header/WhatsOnListHeader/index.js","components/Feature/Layout/InfoLayout/index.js","components/Feature/Lifestyle/FeaturedLifestyle/index.js","components/Common/ContentTileList/index.js","components/Feature/Lifestyle/LifestyleListingFilter/index.js","components/Feature/Maps/CentreMap/index.js","components/Feature/Maps/GoogleMap/index.js","components/Feature/OpeningHours/CentreOpeningHours/index.js","components/Feature/OpeningHours/MajorRetailersAndRestaurantsOpeningHours/index.js","components/Feature/OpeningHours/OpeningHoursHeader/index.js","components/Feature/Parking/ParkingInformation/index.js","components/Feature/Parking/ParkingRates/index.js","components/Feature/Parking/ValetParking/index.js","components/Feature/Precincts/CampaignFeaturedStoreList/index.js","components/Feature/Precincts/FeaturedPrecinct/index.js","components/Feature/Promotions/CampaignFeaturedWhatsOn/index.js","components/Feature/Promotions/CategoryHeader/index.js","components/Common/Highlight/index.js","components/Feature/Promotions/CategorySpotlight/index.js","components/Feature/Promotions/CategoryWhatsOn/index.js","components/Feature/Promotions/SimilarPromotions/index.js","components/Feature/Promotions/FeaturedPromotions/index.js","components/Feature/Promotions/HeroPromotion/index.js","components/Feature/Promotions/PromotionDetails/index.js","components/Feature/Promotions/PromotionSchedules/index.js","components/Feature/Promotions/StorefrontWhatsOn/index.js","components/Feature/Promotions/WhatsOn/index.js","components/Feature/Promotions/WhatsOnList/index.js","components/Feature/Recipe/FeaturedRecipe/index.js","components/Feature/Recipe/RecipeDetails/index.js","components/Feature/Recipe/RecipeListingFilter/index.js","components/Feature/Recipe/RecipeQuickLinksMenu/index.js","components/Feature/Search/CategoryResults/index.js","components/Feature/Search/SearchBar/index.js","components/Feature/Search/StoreResults/index.js","components/Feature/Search/WhatsOnResults/index.js","components/Feature/Search/SiteSearch/index.js","components/Feature/Search/SearchModal/index.js","components/Feature/Social/InstagramGallery/index.js","components/Feature/StoreDirectory/DirectoryHeader/index.js","components/Feature/StoreDirectory/DirectoryList/index.js","components/Feature/StoreDirectory/DirectorySearch/index.js","components/Feature/StoreDirectory/MiniStoreDirectory/index.js","components/Feature/Storefront/CategoryDiscoverStores/index.js","components/Feature/Storefront/Recommendation/index.js","components/Feature/Storefront/RetailerDetails/index.js","components/Feature/Storefront/RetailerImageGallery/index.js","components/Feature/Subscribe/SignUp/index.js","components/Feature/Subscribe/Subscribe/DetailsContainer.js","components/Feature/Subscribe/Subscribe/SpecialDetailsContainer.js","components/Feature/Subscribe/Subscribe/Details.js","components/Feature/Subscribe/Subscribe/Image.js","components/Feature/Subscribe/Subscribe/SubscribeContainer.js","components/Feature/Subscribe/Subscribe/index.js","components/Feature/Subscribe/Unsubscribe/index.js","components/Feature/Subscribe/UpdatePreferences/index.js","components/Foundation/Forms/Form/Constants/index.js","components/Foundation/Forms/Form/ConditionalRendering/index.js","components/Foundation/Forms/Form/CustomizeForm/index.js","components/Foundation/Forms/Form/index.js","components/Foundation/Layout/TwoColumn-70-30/index.js","temp/componentFactory.js","dataFetcher.js","centreList.js","components/Common/BackToTop/index.js","Layout.js","NotFound.js","RouteHandler.js","AppRoot.js","index.js","temp/config.js","assets/icons/png/22px/error.png"],"names":["FeatureGenericContentObjectBlock","Component","constructor","props","super","componentDidMount","setTimeout","updatedFilter","this","detectQueryStringParams","stacklaId","getStacklaId","global","StacklaFluidWidget","changeFilter","appendScript","Object","object","fields","value","scripts","DOMParser","parseFromString","body","querySelectorAll","length","i","scriptElement","document","createElement","textContent","head","appendChild","filter","URLSearchParams","location","search","get","widgetDiv","getElementsByClassName","getAttribute","render","React","BaseComponent","margin","className","FixedHeight","RichText","field","module","exports","arguments","setMargin","children","map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","all","slice","t","keys","RiseAndFade","handleScroll","imageWrapperList","imageWrapper","position","getBoundingClientRect","isShowing","window","innerHeight","top","style","transform","split","opacity","addEventListener","divStyle","positionValue","isNaN","SearchSkeleton","ContentLoader","width","height","title","backgroundColor","foregroundColor","x","y","rx","ry","getAncestorElement","element","ancestorClass","parentElement","classList","contains","Details","iconValue","linkUrl","linkName","size","mapInfo","noLocation","withViewOnMap","fontSize","href","Text","FeaturedLifestyleTiles","data","item","index","ThumbnailUrl","ThumbnailAltText","PageType","Link","link","Title","key","src","alt","transparent","FeaturedRecipeTiles","Thumbnail","Type","CookTime","Servings","Difficulty","Image","media","BlogDetails","ShortDescription","FeatureCampaignCampaignDetails","CampaignIntro","CampaignDescription","FeatureCampaignCampaignTitle","itbWrappers","add","CampaignTitle","GrayBanner","StoreDirectoryLandingPage","StoreDirectoryCtaText","IsCampaignPage","isCampaignPage","TitleLink","titleLink","CTAText","CtaText","CTATextLink","ComponentTitle","CTALink","CTA","text","anchor","linktype","class","querystring","CTABlock","Fragment","ScrollAnimation","animateIn","animateOnce","marginBottom","valueHelper","columns","tabletColumns","checker","outerWidth","FeatureCategoryRelatedSubcategory","RelatedSubcategories","Icon","Label","PageUrl","FeatureCentreServicesCentreServicesHighlight","ServiceName","Description","CentreServiceLink","HeroImage","HeroImageUrl","HeroImageAltText","defaultImg","data-src","FeatureCentreServicesCentreServicesListInlineImage","Logo","logo","description","CentreHighlights","centreHighlights","rendering","dataSource","listItem","image","Summary","summary","Name","name","MapLink","mapLink","Location","encodeURI","FeatureCentreServicesCentreServicesListLeftImage","FeatureCentreServicesFeaturedServicesHighlight","PramParkingURL","CentreServiceHeading","ElevatorsAndLiftsURL","FeaturedServices","featuredServices","heroImage","heroImageUrl","heroImageAltText","serviceName","FeatureCinemaNowShowing","cinemaName","cinemaUrl","movieList","thumbnail","movieUrl","runtime","movieRating","genres","sessions","genre","session","FeatureConsumerArticleArticleDetails","ContentCategory","PublishDate","RetailerLogo","StorefrontLink","HidePublishDate","isRetailerArticle","Header","centreLogo","type","data-toggle","data-target","aria-controls","aria-expanded","aria-label","visitCta","shopCta","eatAndDrinkCta","entertainmentCta","navigationResize","nav","getElementById","navItemMore","querySelector","navItems","Array","from","overflowList","totalWidth","forEach","offsetWidth","overflow","innerWidth","currentItem","splice","overflowItem","firstChild","insertBefore","push","display","Subnav","renderAllTab","selected","updateFilter","allTabQuery","toLowerCase","onClick","redirectPage","hasAllTab","defaultName","defaultFilter","defaultActive","tabs","renameElements","list","temp","el","active","FeatureConsumerNavigationHeaderSubNav","HeaderMenu","FeatureCraftCraftDetails","handleClickMaterial","setState","showMaterials","showInstructions","handleClickInstruction","renderPrep","PrepTime","ActiveTime","EstimatedCost","prepLayout","state","isMobile","renderMaterials","MaterialsBucket","Materials","LinkedStoresHeader","LinkedStoreList","materialLayout","StoreLink","logoLayout","renderInstruction","InstructionsBucket","Instructions","instructionLayout","StepNumber","StepDescription","renderButtons","btnLayout","legnth","matchMedia","matches","CraftTitle","CraftDescription","Notes","FeatureCraftCraftQuickLinksMenu","Tags","CommonBadge","startDate","endDate","badgeText","badgeType","badgeClass","parentClass","line1","line2","getDate","date","Date","getMonth","month","test","FeatureFeaturedRetailerFeaturedRetailer","StoreId","storeid","header","RetailerName","retailerName","RetailerUrl","retailerUrl","OpeningHours","openingHours","RetailerImage","retailerImage","Position","MapUrl","mapUrl","BadgeText","direction","indexOf","Badge","ContactUsInputFields","validateField","FormatValidation","IsRequired","info","updateFieldValue","inputValue","expression","re","RegExp","inputField","current","validInput","touched","String","hasValue","createRef","Placeholder","RequiredValidationMessage","submitted","required","ref","onChange","onBlur","htmlFor","FeatureFormsContactUs","recaptchaLoaded","console","log","recaptchaExpired","verifiedRecaptcha","expiredRecaptcha","recaptchaVerifyResponse","response","handleToggle","target","focus","show","handleBlur","handleSubmitBtn","preventDefault","contactUsWrapper","contactUsTopic","formsWrapper","submitBtn","recaptchaWrapper","invalidField","scrollIntoView","complete","setAttribute","SuccessMessage","FailedMessage","FieldName","fieldName","Value","topic","postData","ContactUsDetails","ItemID","UserEmailAddress","userEmailAddress","Fields","axios","url","method","message","successMessage","TagManager","dataLayer","event","dataLayerName","catch","error","removeAttribute","isRequired","fieldIsNew","form","onChangeSelection","feedback","load","PageSummary","EnableRecaptcha","PublicKey","dangerouslySetInnerHTML","__html","DOMPurify","sanitize","onSubmit","noValidate","listFields","Form","Values","defaultValue","tabIndex","hidden","listTopic","LinkedFields","linkFields","isDropDownField","ReCAPTCHA","sitekey","onExpired","asyncScriptOnLoad","Checkbox","uniqueKey","handleCheckboxClick","checked","CustomDropdown","_this","showDroplist","handleContainerClick","elemClass","dropdownBtnPattern","dropdownLabelPattern","iconPattern","dropdownBtnFormat","dropdownLabelFormat","iconPatternFormat","click","previousElementSibling","handleDropdownClick","relatedField","relatedFieldsValues","HasRelatedField","RelatedFieldLabel","RelatedFieldCurrentValue","RelatedFieldRequired","selectValue","selectedHasRelatedField","relatedFieldLabel","relatedFieldvalue","relatedFieldRequired","validateInput","inputRegex","handleInputChange","isRelatedFieldRequired","undefined","setRelatedFieldsValues","tempFieldsValues","remove","componentDidUpdate","listScroller","scrollTop","scrollHeight","placeholder","dropdownList","Id","Selected","label","RadioButton","RadioGroupName","useEffect","relatedVals","radioList","relatedFields","handleRadioClick","Interest","_ref","interests","EmailPreference","getSubscribeModule","Endpoint","includes","triggerActiveElement","emailPreferenceContainer","Container","activeCheckboxList","activeRadioList","handleEmailPreference","async","IsModal","EmailPreferenceResponse","FirstName","LastName","EmailAddress","Postcode","ValidateFields","PrivacyPolicyText","OnSubmitted","pageId","dbName","emailAddress","postcode","preferenceFormData","submitButton","toggle","reqField","values","some","firstName","lastName","toString","relatedFieldInput","specifiedGender","privacyCheckbox","ApiResponse","selectedGender","categoryList","categoryCheck","entries","genderCheck","genderList","interestsID","interestsChecked","genderSelect","genderID","genderChecked","subscribeModule","user","details","email","first_name","last_name","categories_interested_in","join","gender","responseData","getElementsByTagName","IsSuccessful","block","handlePreferencesUpdate","interestsValue","genderValue","HideDropdown","emailPreferenceWrapper","GetAncestorElement","buttonList","buttonElem","checkboxId","isChecked","hanlePrivacyCheck","renderModalMessage","xmlns","viewBox","fill","fillRule","d","stroke","strokeWidth","Message","PageID","DBName","relatedFieldValues","Interests","GenderOptions","interestsObj","genderObj","selectedValue","keyId","behavior","ButtonName","GenderDescription","RecaptchaPublicKey","RecaptchaPrivateKey","PrivateKey","onScroll","vals","SubscribeForm","fieldsStates","fieldsLabels","setFields","validateFields","fieldsArr","validateFormat","emailRegEx","nameRegEx","numRegex","result","inputProps","handleFormChange","pattern","maxLength","onKeyUp","currentTarget","replace","FirstNameLabel","LastNameLabel","EmailLabel","PostcodeLabel","renderLabel","errorIcon","Newsletter","subscribeRecaptchaLoaded","subscribeRecaptchaExpired","subscribeVerifiedRecaptcha","subscribeExpiredRecaptcha","subscribeRecaptchaVerifyResponse","subscribe","SubscribeEnableRecaptcha","formData","success","modalOpen","handleEmailChange","handlePreferencesResponse","fieldArrIndex","fieldArr","emailPrefResp","fname","lname","modalWrapper","handleOnClose","updateFieldsState","obj","contextInfo","getElementsByName","dataset","targetDb","EmailPlaceholder","CentreFormButton","CentreAgreement","EmailPreferenceModalTitle","EmailPreferenceModalDescription","EmailPreferenceModalButton","GenderGroupLabel","SubscribePublicKey","EmailEnableRecaptcha","EmailPublicKey","labels","recaptchaEnabled","fieldStates","grecaptcha","reset","FeatureGenericContentAdCampaign","LandingPage","BackgroundColor","WebBanner","MobileBanner","bgStyle","Orientation","FeatureGenericContentConsumerFAQ","handleClickOption","faqOptionListContainer","handleClickCollapse","faqOptionList","handleClickExpand","handleSearchFilter","FAQGroups","searchFaqList","searchTerm","replaceSpecialChar","searchPattern","itemGroup","groupOption","hasSearch","FAQs","itemOption","Question","Answer","optionList","regEx","replaceMask","showClearButton","faqList","handleClearButton","faqGroup","renderFAQ","NoResultsText","faqOptionLayout","faqContentLayout","SearchPlaceholder","debounce","FeatureGenericContentConsumerFAQBlock","FeatureGenericContentGeneralNote","NoteList","IconUrl","IconAltText","FeatureGenericContentGeneralSection","SectionList","DirectionLink","DirectionLabel","DirectionIcon","FeatureGenericContentGlobalFooter","FootnoteLinks","SocialLinks","VisitLinks","CentreText","CentreAddress","ViewOnMap","MiscLogoUrl","MiscLogoLink","SubscribeTitle","SubscribePrivateKey","EmailPrivateKey","EmailPreferenceModal","footerLayout","params","pageName","VisitLink","LinkName","visitLinksLayout","assign","SocialLink","socialLinkLayout","FootNoteLink","footnoteLinkLayout","HeroVideo","hasControls","isMute","isLoop","isAutoplay","controls","autoPlay","loop","muted","playsInline","FeatureGenericContentHero","StartDate","EndDate","TargetUrl","targetUrl","heroVideo","PromotionType","promotionType","getTitle","FeatureGenericContentHeroDescription","PromotionCategoryTag","PromotionName","PromotionSummary","PromotionLink","LocationLink","ScheduleTime","FeatureGenericContentHomepageHero","Interval","FeaturedHero","flkty","setFlkty","useState","on","player","play","flickityOptions","imagesLoaded","pageDots","prevNextButtons","wrapAround","draggable","selectedAttraction","adaptiveHeight","accessibility","pauseAutoPlayOnHover","cellAlign","initialIndex","overflowX","overflowY","Flickity","options","flickityRef","reloadOnUpdate","static","CTAButtonText","getBannerDescription","FeatureGenericContentHomeQuickLinks","Links","links","quickLinks","LinkIcon","LinkTarget","FeatureGenericContentImageGallery","handleKeyDown","enlargeGalleryContainer","keyCode","imagePos","GalleryImages","itemValue","carouselDotSelector","handleOnClickImage","imageGalleryContainer","carouselDot","fullscreen","showFullscreen","parseInt","attachEvent","handleOnClickClose","Alt","Src","Height","Width","CarouselProvider","totalSlides","naturalSlideWidth","naturalSlideHeight","visibleSlides","step","Slider","Slide","ButtonBack","ButtonNext","DotGroup","FeatureGenericContentTextBlock","ImagePosition","ImageLink","ImageAltText","cta","blockImage","FeatureGenericContentQuickLinksMenu","handleArticle","articleDetails","hasRetailerLogo","offsetHeight","marginTop","isArticle","FeatureGenericContentRichText","onclick","history","back","sitecoreContext","pageEditing","withSitecoreContext","FeatureGenericContentServiceQuickLinksMenu","BestParking","bestParking","AvailableParking","availableParking","OpeningToday","openingToday","PhoneNumber","phoneNumber","locationLink","BestParkingLink","bestParkingLink","phone","Day","day","Time","time","paddingLeft","paddingRight","FeatureGenericContentTermsAndConditions","Copy","copy","FeatureGenericContentTwoColumn7030","FeatureGettingHereGettingHereHeader","headerTitle","FeatureHeaderGenericPageHeader","HeaderButton","HeaderTitle","LeftCtaLink","RightCtaLink","LeftCtaName","LeftCtaLinkTarget","RightCtaName","RightCtaLinkTarget","RightCtaIcon","NavList","linkUrlLayout","LinkUrl","NavDiscoverStore","store","StorefrontUrl","NavWhatsOn","spotlight","promotions","ArticleUrl","IsLogoAsThumbnail","IsRetailerContent","Retailer","ArticleName","promotion","PromotionUrl","NavRichTextList","richTextList","content","NavigationNavBestParking","retailers","centre","Carpark","AvailableLabel","NavOpeningHours","OpeningHoursList","HolidayGroupList","UpcomingHolidaysTitle","group","HolidayGroupTitle","HolidaysList","holiday","Holiday","NavMovies","movies","MovieTitle","MovieUrl","FeatureMetricsPopularTimes","triggerHandleMouserOver","activeColumnList","activeColumn","handleMouseover","renderChartNavigation","Hours","MediumLimit","HighLimit","currentHours","getHours","currentTime","renderGraph","renderChartNonNavigation","Days","activeDay","hours","mediumLimit","highLimit","graphLayout","highNum","Occupancy","IsActive","newHeight","counter","busyClass","activeTime","onMouseOver","disabled","renderDropdown","currentDay","dataDaysDropdown","daysValue","handleDropdown","chartColumnElement","chartColumnContainer","columnOffsetLeft","offsetLeft","chartContainer","tooltip","tooltipWidth","clientWidth","chartContainerWidth","left","right","columnOffsetRight","handleMouseOut","chartWrapperContainer","chartWrapperElement","PopularTimes","LeastBusy","isNavigation","onMouseOut","leastBusyLayout","NavPopularTimes","NavCampaign","campaigns","CampaignUrl","campaign","NavRecipe","recipes","colSize","tileCount","RecipeUrl","RecipeName","FeatureParkingCarPark","OnlineGroupLabel","OnlineCarParkList","OfflineGroupLabel","OfflineCarParkList","CarParkList","renderCarpark","carParkList","isOnlineCarPark","carParkListLayout","IconColour","iconColour","IconCharacters","ParkType","parkType","BestPark","bestPark","AvailableParkingCount","availableParkingCount","StoreNames","storeNames","Precincts","precincts","MapDirectionLabel","mapDirectionLabel","MapDirectionLink","mapDirectionLink","DisabilityParking","disabilityParking","PramParking","pramParking","ElectricCarCharging","electricCarCharging","parkColour","parkText","parkingGroup","borderColor","storeIndex","StoreDetails","storeDetails","storeData","NavCarParks","LiveParkingPage","LiveParkingLabel","CarPark","NavLinkList","navLinkListLayout","NavComponent","component","TitleUrl","Categories","Stores","WithSpotlight","Spotlight","Promotions","Campaigns","RichTextList","NavBestParking","Retailers","MovieList","Recipes","HeaderImageFormat","validateImageFormat","isSticky","simpleNav","isGeneric","imageSource","svgPattern","urlPattern","isSVGFormat","isUrlFormat","imageFormat","sticky","pos","ReactSVG","splitLogoComponent","LazyLoading","NavMobile","handleMainNavClick","activeTarget","displayNameValue","onShowNav","activeMenuTarget","activeMenuName","buildMenu","navigations","isSimpleNav","menu","navItem","subMenu","mainNav","DisplayName","Components","SecondaryNavigations","NavLink","componentItem","ComponentName","secondaryItem","secIndex","prevProps","prevState","onCloseMobileNav","UniversalBanner","handleClick","showBanner","BannerLink","BannerBackgroundColor","BannerBackgroundImage","BannerFontColor","BannerIcon","isDefault","isNavShown","backgroundImage","color","disableBodyScroll","documentElement","enableBodyScroll","scrollTo","Lightbox","zIndex","isHidden","enableFade","HideLightbox","thumbnailAlt","Button","button","ButtonUrl","buttonUrl","imageHelper","imgSrc","thumbnailPlaceholder","imgAlt","FeatureHeaderHomePageHeader","handleWindowResize","showMobileNav","showSearch","showNav","newHeaderWrapper","clientHeight","containerMargin","navColWidth","navLinkLeft","leftPos","jsHeaderContainer","jsNavbarNav","jsNavContent","jsNavItem","jsNavLinkList","getComputedStyle","getPropertyValue","adjustNavHeight","loadNavigationData","me","responseRaw","Navigations","getSubList","handleFocus","handleClearSearch","activeNav","activeContent","showNavMobile","getSubContent","find","SecondaryNavIds","isLoadingSecondary","secondaryData","secondaryApiUrl","navId","updatedNavigations","activeSubList","activeSub","hideOverlay","setSub","sub","getColumnSize","col","second","componentList","columnList","Layout","column","ColumnPosition","activeCentre","stickyNavBar","navbar","stickyNavbar","onscroll","shrink","offsetTop","pageYOffset","stickyFunction","onresize","checkLogoStructure","imageProperties","CentreLogo","logoClass","renderComplexNavContent","complexNavLayout","onMouseEnter","subNavActive","renderSimpleNavContent","simpleNavLayout","itemIndex","hasComponents","componentLayout","renderNavLink","navLinkLayout","getRenderedNavSize","navCount","UseSimpleHeader","ua","navigator","userAgent","brandWrapper","CentreOpeningHoursDetail","HomepageLightbox","LogoLayout","isSimple","Headline","CentreState","FeatureHeaderPageHeader","BackButtonLink","SitecoreContextFactory","FeatureHeaderWhatsOnListHeader","selectedCategory","getUrlParameter","updateMainFilter","filterName","setSitecoreContext","whatsOnMainFilter","refresh","querystringParam","results","exec","decodeURIComponent","WhatsOnListHeadline","PromotionFilter","FeatureLayoutInfoLayout","FeatureLifestyleFeaturedLifestyle","Lifestyle","ContentTileList","handleClickBrauzBtn","Brauz_open_book_a_stylist_dialog_with_selected_store","textFieldToUppercase","textField","toUpperCase","categoryHandler","category","categoryMainHandler","nameLink","itemId","openTime","cookTime","serves","difficulty","rating","price","acceptsOnlineBooking","bookingIcon","bookingLabel","bookingUrl","hasBooking","isRetailerContent","isLogoAsThumbnail","thumbnailAltText","pageType","retailerId","iconsLayout","ratingSection","ratings","priceLevel","ratingContainer","ratingValue","priceLevelValue","lifestyle_page_type","lifestyle_title","FeatureLifestyleLifestyleListingFilter","getLifestyleList","pageNumber","isInfiniteScroll","pageSize","filter_contenttag","LifestyleListData","isScrolling","showLoader","lastPage","Math","ceil","TotalCount","LifestyleListing","concat","totalCount","page","Page","currentPage","hasMoreItems","handleClickCategory","elementId","allCategories","parentNode","elementContent","tagList","arrValue","contentTagCategory","contentTagCategoryList","regex","loadLifestyleList","renderCategories","ContentTags","updatedContentTags","isActive","renderLifestyles","LifestyleLayout","InfiniteScroll","dataLength","next","bind","hasMore","FeatureMapsCentreMap","zoomOccurence","zoomOut","a","showModal","control","directionToId","levelData","storeSelected","amenitiesSelected","newMapId","retailerStorefrontMap","script","venue","mapVenue","MapDetails","Venue","mappedin","miKey","onload","centreMapContainer","data-key","data-venue","FeatureMapsGoogleMap","DirectionUrl","directionUrl","FeatureOpeningHoursCentreOpeningHours","schedules","comingUp","holidayGroups","comingUpText","renderOpeningHoursDesktop","scheduleList","isOpeningHours","openingHoursDesktop","Schedule","renderOpeningHoursMobile","openingHoursMobile","scheduleLayout","renderComingup","isDesktop","comingupLayout","holidayGroupName","holidays","renderOpeningHours","FeatureOpeningHoursMajorRetailersAndRestaurantsOpeningHours","FeaturedGroups","RetailerList","retailerItem","retailerIndex","Schedules","scheduleItem","scheduleIndex","DineUntilTime","dine","FeatureOpeningHoursOpeningHoursHeader","openingHoursHeadline","openingState","FeatureParkingParkingInformation","FreePark","freePark","FeatureParkingParkingRates","ParkRateTitle","MaxRate","HoursLabel","CasualRateLabel","CinemaRateLabel","SeniorRateLabel","DisplaySeniorRates","FreeAfterTime","ParkRates","checkRate","rate","checkFree","HoursRange","CasualRate","CinemaRate","SeniorRate","FeatureParkingValetParking","ValetRateDescription","valetRateDescription","OpeningHoursLabel","openingHoursLabel","ValetServices","valetServices","getClass","val","FeaturePrecinctsCampaignFeaturedStoreList","Subtitle","StoreList","ItemId","OpeningTime","StoreLocation","StoreLocationLink","imageLogoLayout","imageMainLayout","FeaturePrecinctsFeaturedPrecinct","subtitle","PrecinctsList","precinctsList","itemList","iterator","RetailerPageHref","EventText","Rating","PriceLevel","composeRatingSection","ratingFromAPI","priceFromAPI","LocationMapTargetId","FeaturePromotionsCampaignFeaturedWhatsOn","WhatsOnList","StorefrontId","thumbnailLayout","badgeLayout","FeaturePromotionsCategoryHeader","Category","StoreDirectoryCta","storeDirectoryCta","Event","Highlight","FeaturePromotionsCategorySpotlight","EventList","eventList","MaxCount","PromotionLocation","promotionLocation","promotionLink","storeFrontId","Validity","validity","OfferHighlight","offerHighlight","FeaturePromotionsCategoryWhatsOn","Subtext","subtext","align","LinkText","linkText","eventText","scheduleTime","showLocation","FeaturePromotionsSimilarPromotions","promotionName","storefrontId","FeaturePromotionsFeaturedPromotions","PromotionList","FeaturePromotionsHeroPromotion","PromotionHero","PageHero","PromotionDate","PromotionText","HeroDescription","HeroSubcategoryDetails","FeaturePromotionsPromotionDetails","PromotionCategory","Duration","Capacity","Price","BookNow","AddToCalendarCta","FeaturePromotionsPromotionSchedules","CalendarGoal","BookEventGoal","PromotionTime","AddToCalendar","SoldOut","eventAvailable","onClickCalendarButton","GoalID","fetch","headers","JSON","stringify","open","datagoalid","FeaturePromotionsStorefrontWhatsOn","storeFrontWhatsOnLayout","imageLayout","FeaturePromotionsWhatsOn","FeaturePromotionsWhatsOnList","getResultsList","textFieldToLowercase","listing","searchResultCountText","clearSearch","showResultsCount","returnStoreCount","capitalizeWord","str","charAt","composeResultsList","NoSearchResultText","noSearchResultText","PromotionDateText","RetailerId","addToCalendarLink","keywords","searchTermWOL","ResultList","SearchResultCountText","loadResultsList","SearchHelpText","searchHelpText","_","FeatureRecipeFeaturedRecipe","FeatureRecipeRecipeDetails","handleClickIngredient","showIngredients","showMethods","handleClickMethod","Serves","renderIngredients","Ingredients","ingredientsLayout","renderMethod","Methods","methodLayout","RecipeTitle","RecipeDescription","FeatureRecipeRecipeListingFilter","getRecipeList","filter_tag","filter_occasion","recipeListData","recipeListing","handleClickMeal","handleClickTaste","tagCategory","occassionCategory","tagCategoryList","loadRecipeList","renderMeals","Occasions","renderTaste","renderRecipes","recipeLayout","RecipeLink","FeatureRecipeRecipeQuickLinksMenu","Occassion","IconClass","CategoryResults","CategoryName","PageTitle","SearchBar","getTopSearches","topSearches","TopSearches","SearchTerm","resetState","searchResults","noResults","noResultsMessage","renderInfo","section","icon","icon2","centreId","term","handleSearch","setRecentSearch","pop","renderResults","defaultImage","renderSuggestion","renderContent","recentSearches","keyword","getSearchResults","cleanRecentSearchTerm","SearchResults","getRecentSearch","terms","localStorage","getItem","func","items","termExists","findIndex","unshift","setItem","charCode","suggestion","query","AutosuggestHighlightMatch","AutosuggestHighlightParse","part","highlight","CentreId","autoFocus","onKeyDown","StoreResults","RetailerLink","WhatsOnResults","PromotionDetails","SiteSearch","base","storeItems","categoryItems","whatsOnItems","pageItems","storeDirectoryLabel","StoreDirectoryLabel","categoriesLabel","CategoriesLabel","WhatsOn","whatsOnLabel","WhatsOnLabel","Pages","pagesLabel","PagesLabel","noSearchResult","NoSearchResult","showRetailerList","showCatgeoryList","showPromotionList","showPageList","showNoResults","SearchAdditionalText","FeatureSearchSearchModal","FeatureSocialInstagramGallery","isHomepage","pathname","InstagramGalleryLink","InstagramGalleryLinkText","InstagramGalleryTitle","InstagramFeed","rel","ImageUrl","ImageCaption","InstagramLink","InstagramLinkText","substr","FeatureStoreDirectoryDirectoryHeader","CentreMapURL","FeatureStoreDirectoryDirectoryList","AcceptsOnlineBooking","BookingLabel","BookingUrl","HasBooking","noDefaultValue","noDefaultImage","retailerLink","defaultLogo","FeatureStoreDirectoryDirectorySearch","getRetailerList","isAfterPay","isGiftCard","isOnlineBooking","isOrderAndCollect","searchTermSD","afterpay","giftcard","acceptbooking","orderandcollect","isSearchFilter","noStores","handleSearchButton","handleAcceptAfterPay","handleAcceptGiftCard","handleAcceptOnlineBookings","handleAcceptOrderAndCollect","handleCategoryFilter","categoryType","selectedIndex","categoryFilterSD","noResultsText","returnRetailer","BookingIcon","showStoreCount","showSearchPlaceholderText","SearchPlaceholderText","searchPlaceholderText","showAfterpayCheckbox","showAfterpay","AfterPayCheckboxText","afterPayCheckboxText","showGiftCardCheckbox","showGiftCard","DisplayGiftCardsCheckbox","giftcardText","showOnlineBookingsCheckbox","showOnlineBookings","DisplayOnlineBookingFilter","OnlineBookingFilterLabel","showOrderAndCollectCheckbox","showOrderAndCollect","DisplayOrderAndCollectCheckbox","OrderAndCollectCheckboxText","categoriesList","filterCat","level","hideFirstRow","BrauzFormId","Subcategory","HasSelectedStores","categoryQSName","metaCentre","brauzPackageURL","loadScript","Brauz","initializeBrauzBookAStylist","callback","loadRetailerList","showCategory","subCategoryMapping","completeArray","mainIndex","SubCategories","subIndex","scrollThreshold","FeatureStoreDirectoryMiniStoreDirectory","showContentLoader","preview","disableScroll","enableScroll","getRetailerContent","noSelection","renderRetailerList","openingTime","getRetailerLogo","renderRetailerPreview","NoSelectionText","ExternalLink","FacebookLink","primaryTime","SecondaryTime","secondaryTime","getUsername","match","initials","FeatureStorefrontCategoryDiscoverStores","retailerList","FeatureStorefrontRecommendation","storeDirectoryLandingPage","storeDirectoryCtaText","StoreDirectoryCtaAnchor","storeDirectoryCtaAnchor","storeDirectoryLinkField","recommendation","guidRegex","Guid","RetailerStorefrontRetailerDetails","updateStorefrontUrl","urlHref","locationMapTargetId","pushState","mapId","categoryTagsDisplay","categoryWrapper","categoryLabel","categoryBtn","hiddenListCount","prototype","call","categoryItem","categoryWrapperWidth","categoryLabelWidth","categoryBtnWidth","categoryWidth","categoryCount","renderLogo","HideOpeningHours","openingHoursLayout","renderActions","phoneLayout","bookingLayout","uberLayout","viewMenuLayout","hasPhone","hasBookingUrl","hasUber","hasViewMenu","BookUberTitle","BookUberLink","ViewMenuURL","renderTags","tagsLayout","IsVegetarian","IsKidsFriendly","AfterPay","GiftCards","OrderAndCollect","renderSocialLink","RetailerWebsite","socialLayout","renderCategoryTags","CategoryTags","categoryLayout","CategoryLink","categoryBtnOnClick","categoryLinkWrapper","price_level","PlaceId","getGoogleRating","giftCardText","giftCardContainer","innerHTML","placeId","status","Price_level","renderRatings","ratingsLayout","RetailerDescription","BestParkingLabel","ParkingAvailable","ParkingPageLink","HeaderCarousel","MapVenue","GalleryImage","buttonStyles","FeatureStorefrontRetailerImageGallery","startFunc","galleryImages","imageSet1","imageSet2","imageSet3","imageFiles","swipeable","imageIdx","imageStyles","Swipeable","trackMouse","touchAction","preventDefaultTouchmoveEvent","onSwipedLeft","onSwiped","onSwipedRight","imageSwipeable","images","componentWillMount","change","adjustedIdx","Number","newIdx","SignUp","pageLoaded","signupWrapper","SetSignUpTitle","SelectCategoriesDescription","SelectGenderDescription","SubmitButtonLabel","emailPrefMessage","DetailsContainer","SpecialDetailsContainer","subscribeProps","handleDetailsUpdate","SubscribeButton","SubscribeDescription","isSpecial","SubscribeImageUrl","SubscribeContainer","FeatureSubscribeSubscribe","Special","FeatureSubscribeUnsubscribe","onRadioButtonChange","selectedOption","showTextarea","onTextAreaChange","textArea","submitForm","unsubscribeReason","UnsubscribeTitle","ReasonTitle","UnsubscribeReasonOptions","RichtextPlaceholder","UnsubscribeButtonLabel","UpdatePreferences","updatePreferencesWrapper","SetPreferencesTitle","SelectCategoriesTitle","readOnly","Action_Constants","Operator_Constants","FieldTypes_Constants","validate","operator","valueAgainst","isListBoxField","operators","startsWith","endsWith","getValidation","elemValue","shouldHide","conditions","operatorId","actionType","actions","actionTypeId","handleActionType","triggerEvent","evt","createEvent","initEvent","eventName","dispatchEvent","createEventObject","eventType","fireEvent","hideElement","fieldConditions","actionsList","j","fieldId","elemfieldId","sectionField","fieldList","elem","inputElem","hiddenOption","selectElem","hyperlinkLabel","labelElem","labelHeight","checkboxLabel","hyperlinkContainer","checkboxLabelHeight","maxHeight","ConditionalFieldWrapper","model","fieldTypeItemId","FieldTypes","formInputWrapper","formTextareaWrapper","formDateWrapper","formSpan","formParagraph","formH1","formH2","formH3","formH4","formH5","formH6","formHyperlink","checkboxlist","listboxWrapper","formGroups","addEvent","handleOnInputFocus","handleOnInputBlur","handleOnInputChange","handleConditionOnChangeDate","textareaElem","handleOnChangeListbox","formLinks","formLabel","formUpdateHyperlink","checkboxElem","handleClickCheckbox","hyperlinkText","formError","radioInput","handleClickRadio","labelList","trim","formLabelHeight","handleConditionalLogic","handleRadioStyle","task","useCapture","removeEvent","removeEventListener","conditionSettings","fieldKey","elemFieldKey","inputVal","textareaVal","dropdownVal","checkboxVal","radioValue","listboxSelect","formElement","requiredParentElem","formElemParent","dataCondition","fieldCondition","parse","listElem","tagName","allSiblings","node","nodeType","Node","ELEMENT_NODE","nextElementSibling","nextSibling","siblings","selectElement","formValidate","handleOnChangeDate","inputDate","moment","_isValid","dateMonth","dateDay","newDate","getFullYear","dateElem","handleOnClickCalendar","checboxValue","formCheckboxValidate","radioElem","listboxOption","formWrapper","captchaValue","textAreaElem","dateParentWrapper","parentWrapper","inputList","hasCheck","isEmpty","handleSubmit","customParentWrapper","formElem","formCheckboxWrapper","formRadioWrapper","formTextAreaWrapper","formDropdownWrapper","formListboxWrapper","customFormSubmitBtnId","noTickWrapper","formRequiredWrapper","isVerifiedRecaptcha","invalidForms","toValidateForms","formDisplay","fieldConditionData","TextField","SingleLineText","NumberField","Telephone","Email","Password","cssClass","data-fieldkey","data-fieldcondition","DateField","defaultMinDate","defaultMaxDate","_d","yearDropdownNum","minDate","min","maxDate","max","initialDate","DatePicker","dateFormat","placeholderText","dateFormatCalendar","showMonthDropdown","showYearDropdown","useWeekdaysShort","yearDropdownItemNumber","hyperlinkItems","valueField","CheckboxList","RadioButtonList","hasNullValue","MultipleLineText","DropdownList","dropdownField","defaultDropdownValue","showEmptyItem","ListBox","recaptchaId","recaptchaName","data-val-required","data-val","captchaPublicKey","buttonField","ErrorComponent","formErrors","FieldErrorComponent","errors","CustomFetchForm","frmData","endpoint","credentials","toUrlEncodedFormData","indexUrl","formChecker","formChecker2","substring","formParentWrapper","hasConditionalInvalidField","hasDefaultInvalidField","jsonResult","json","newTabUrl","UpdateFieldModel","newField","fieldArray","fieldItem","hasAddedArray","addedArray","FoundationFormsForm","formInfo","formExpired","formExpiredMessage","formLimitReached","formLimitReachedMessage","sitecoreApiHost","sitecoreApiKey","onRedirect","fieldWrapperComponent","errorComponent","fieldValidationErrorsComponent","formFetcher","withRouter","FoundationLayoutTwoColumn7030","components","Map","componentFactory","componentName","set","CommonAnimationsRiseAndFade","CommonAnimationsSearchSkeleton","CommonHelperGetAncestorElement","CommonTilesFeaturedLifestyle","CommonTilesFeaturedRecipe","FeatureBlogBlogDetails","FeatureConsumerHeaderHeader","FeatureFormsContactUsInputFields","FeatureFormsNewsletter","FeatureGenericContentImageTextBlock","FeatureSearchCategoryResults","FeatureSearchSearchBar","FeatureSearchSiteSearch","FeatureSearchStoreResults","FeatureSearchWhatsOnResults","FeatureStorefrontRetailerDetails","FeatureSubscribeSignUp","FeatureSubscribeUpdatePreferences","dataFetcher","withCredentials","BackToTop","handleOnScroll","showBackToTop","backToTopWrapper","footerContainer","backToTopPos","bodyContainer","handleOnClick","scroll","isReady","domain","gtmId","validCentre","centreList","templateName","displayName","route","context","faviconSrc","pagetitle","centrename","origin","canonicalSrc","URL","objectFitImages","initialize","subCategory","retail","metaImage","metaImageAlt","Helmet","MetaDescription","RobotsTag","centreInfo","displayname","MetaImageUrl","MetaImageAltText","MetaImage","property","itemProp","VisitorIdentification","data-target-db","databaseName","data-centre","NotFound","site","language","RouteHandler","ssrInitialState","ssrState","notFound","routeData","defaultLanguage","config","sitecore","componentIsMounted","languageIsChanging","subscribeToContext","contextFactory","ssrRenderComplete","setSsrRenderComplete","updateRouteData","componentWillUnmount","sitecoreRoutePath","sitecoreRoute","fetchOptions","layoutServiceConfig","host","querystringParams","sc_lang","sc_apikey","fetcher","dataApi","fetchRouteData","getRouteData","lang","previousProps","existingRoute","newRoute","isExperienceEditorActive","routePatterns","AppRoot","path","Router","routeRenderFunction","SitecoreContext","Switch","routePattern","Route","renderFunction","ReactDOM","__JSS_STATE__","ssrRawJson","hydrate","rootElement","BrowserRouter"],"mappings":"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","file":"static/js/main.e2189ff5.chunk.js","sourcesContent":["import React, { Component, createElement } from \"react\";\r\nimport { RichText } from \"@sitecore-jss/sitecore-jss-react\";\r\nimport BaseComponent from \"../../../Base/BaseComponent\";\r\nimport { parseFromString } from 'dom-parser';\r\n\r\n\r\nclass FeatureGenericContentObjectBlock extends Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n componentDidMount() {\r\n //this.appendScript(); //Enable this to see Stackla Widgets locally. \r\n setTimeout(() => {\r\n let updatedFilter = this.detectQueryStringParams();\r\n let stacklaId = this.getStacklaId()\r\n if(stacklaId && global.StacklaFluidWidget && global.StacklaFluidWidget.changeFilter) {\r\n global.StacklaFluidWidget.changeFilter(stacklaId, updatedFilter);\r\n }\r\n }, 100);\r\n }\r\n\r\n appendScript() {\r\n // Appends any <script> tags found to the Head\r\n const { Object: object } = this.props.fields;\r\n if (object && object.value) {\r\n let parser = new DOMParser();\r\n let scripts = parser\r\n .parseFromString(object.value, \"text/html\")\r\n .body.querySelectorAll(\"script\");\r\n\r\n if (scripts && scripts.length) {\r\n for (let i = 0; i < scripts.length; i++) {\r\n let scriptElement = document.createElement('script');\r\n scriptElement.textContent = scripts[i].textContent;\r\n document.head.appendChild(scriptElement);\r\n }\r\n }\r\n }\r\n }\r\n\r\n detectQueryStringParams() {\r\n if(document) { \r\n let urlParams = new URLSearchParams(document.location.search);\r\n let filter = urlParams.get(\"stackla\");\r\n return filter ? filter : null\r\n } else {\r\n return null\r\n }\r\n }\r\n\r\n getStacklaId(){\r\n const { Object: object } = this.props.fields;\r\n if (object && object.value) {\r\n //Parse entire HTML\r\n let parsedHtml = parseFromString(`<span>${object.value}</div>`);\r\n // Check for Stackla specifically\r\n let widgetDiv = parsedHtml.getElementsByClassName(\"stackla-widget\")[0];\r\n \r\n if (widgetDiv) {\r\n let stacklaId = widgetDiv.getAttribute('data-id');\r\n return stacklaId ? stacklaId : null;\r\n }\r\n } else {\r\n //If Stackla is not detected, simply pass through the object as we receive it \r\n return null;\r\n }\r\n }\r\n\r\n render() {\r\n if (this.props.fields.Object && this.props.fields.Object.value) {\r\n return (\r\n <BaseComponent margin=\"standard\">\r\n <div className={`object-block container ${this.props.fields.FixedHeight && this.props.fields.FixedHeight.value ? 'fixed-height' : ''}`}>\r\n <RichText field={this.props.fields.Object} />\r\n </div>\r\n </BaseComponent>\r\n );\r\n } else return null;\r\n }\r\n}\r\n\r\nexport default FeatureGenericContentObjectBlock;\r\n","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/transparent.8fa3865e.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAIAAABEtEjdAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAawSURBVHhe7dQBDQAADMOg+5c6FffRgAhuAOTIHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgcIkjtAkNwBguQOECR3gCC5AwTJHSBI7gBBcgfI2R5jTYfLh3foSgAAAABJRU5ErkJggg==\"","import React, { Component } from \"react\";\r\n\r\nclass BaseComponent extends Component {\r\n setMargin = () => {\r\n if (this.props.margin === \"standard\") {\r\n this.margin = \"standard-margin\";\r\n } else if (this.props.margin === \"custom\") {\r\n this.margin = \"custom-margin\";\r\n } else if (this.props.margin === \"campaign\") {\r\n this.margin = \"campaign-margin\";\r\n }\r\n\r\n return this.margin;\r\n };\r\n\r\n render() {\r\n return (\r\n <div\r\n className={`base-component ${this.setMargin()} ${this.props.className}`}\r\n >\r\n {this.props.children}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default BaseComponent;\r\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAKESURBVEhLvZZdSFNhHMafnU22tmW2piVjWpA1NckoyzIKIVj0IXTRRdBVFF0YGSQZlLXRRVlD6INCkq6CLrpKCAoi+kJy1ggadRFBrbSVczfmWLSPznN851ydTdes3y7Gnnf7vee8533//2mSMsjCSHQUT74+R/+IF0ORLwhFw0puNVhgM5ZjQ+labFrYiFLDAiVXQ3WC0I8wet/dxN1PDxBPxkWqjlajxXb7Fuyv2gur3iLSNH9M8OzbANyvPBiPRUQyM0w6I07Xt2Nj2TqRTJAxwe2Pfbj45joSyYRI8kPSSGirOYDdlS0ikTPxrlx5IXLC39JBVwrlDrjmex4fzHtZssHlurW5R3kmyh3wgc6WnNBFJ5G4FblbZhs66Za4z6fbitmYW2TGtcbz8KxxiSQNnXRLPER/g0GrR3eDGysttTAXmUSaCd0ST2i+6DQ6dK3uRG2JA8ORIE76zoqRTOiWUsd/pkjyy11/DA3WVRiVd1+b94Ry8tWge/Ic/A7XtWe9B4sMZSKZoKPuEJrLmzD28zuOeDvlqwyKEXUkFi41jLo5qJtfjd6mblTPW6ZkrY592Gl3IhqPon3QhfdjH5Q8G3Rrna07XJ/Hh0WU5lGwH47iKiwtXoKttmYsNtuxq3IbYokYOl6egS/8WnwzOzUlyyGx5KrBw3L0xSncCdyDXt4xTnkSlgKXXAgHQj7xrdzQLbGes+SqEZeFXf7LuPL2hiK/4L+Kh8GnYjQ3dNKt1KJz/kvoC9wXQ+pUmGwIjA+JT9PTUuHE8RWHJ3YRmwULVC7ykdNFJ1EmYNVjs2A9LxQ66Ep1t0kjOxGbRSGTpBrO1K72f1tmin/a9KdS+N8W4BciQisjwfFjfAAAAABJRU5ErkJggg==\"","var map = {\n\t\"./base.css\": [\n\t\t263\n\t],\n\t\"./bathurstcity.css\": [\n\t\t631,\n\t\t3\n\t],\n\t\"./bigtop.css\": [\n\t\t632,\n\t\t4\n\t],\n\t\"./canberracentre.css\": [\n\t\t633,\n\t\t5\n\t],\n\t\"./castlemall.css\": [\n\t\t634,\n\t\t6\n\t],\n\t\"./castletowers.css\": [\n\t\t635,\n\t\t7\n\t],\n\t\"./coburnscentral.css\": [\n\t\t636,\n\t\t8\n\t],\n\t\"./craigieburnjunction.css\": [\n\t\t637,\n\t\t9\n\t],\n\t\"./domaincentral.css\": [\n\t\t638,\n\t\t10\n\t],\n\t\"./eastland.css\": [\n\t\t639,\n\t\t11\n\t],\n\t\"./forestlake.css\": [\n\t\t640,\n\t\t12\n\t],\n\t\"./grandcentral.css\": [\n\t\t641,\n\t\t13\n\t],\n\t\"./hinklercentral.css\": [\n\t\t642,\n\t\t14\n\t],\n\t\"./hyperdome.css\": [\n\t\t643,\n\t\t15\n\t],\n\t\"./kipparing.css\": [\n\t\t644,\n\t\t16\n\t],\n\t\"./merrifieldcity.css\": [\n\t\t645,\n\t\t17\n\t],\n\t\"./nerangmall.css\": [\n\t\t646,\n\t\t18\n\t],\n\t\"./pacificepping.css\": [\n\t\t647,\n\t\t19\n\t],\n\t\"./pacificwerribee.css\": [\n\t\t648,\n\t\t20\n\t],\n\t\"./pittwaterplace.css\": [\n\t\t649,\n\t\t21\n\t],\n\t\"./robina.css\": [\n\t\t650,\n\t\t22\n\t],\n\t\"./thevillage.css\": [\n\t\t651,\n\t\t23\n\t],\n\t\"./watergardens.css\": [\n\t\t652,\n\t\t24\n\t],\n\t\"./westpoint.css\": [\n\t\t653,\n\t\t25\n\t],\n\t\"./woodgrove.css\": [\n\t\t654,\n\t\t26\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 623;\nmodule.exports = webpackAsyncContext;","import React, { Component } from \"react\";\n\nclass RiseAndFade extends Component {\n constructor(props) {\n super(props);\n }\n\n componentDidMount() {\n if (window) {\n window.addEventListener(\"scroll\", this.handleScroll);\n }\n }\n\n handleScroll = () => {\n const imageWrapperList = document.querySelectorAll(\".animation-rise-and-fade\");\n if (imageWrapperList) {\n for (let i = 0; i < imageWrapperList.length; i++) {\n let imageWrapper = imageWrapperList[i];\n let position = imageWrapper.getBoundingClientRect();\n let isShowing = window.innerHeight >= position.top;\n let transformValue = imageWrapper.style.transform.split(/\\w+\\(|\\);?/);\n let value = transformValue[1].split('%')[0];\n let opacity = 0;\n if (value > 0) {\n if (isShowing) {\n value = value - 1;\n opacity = opacity + 0.3;\n }\n }\n else {\n value = 0;\n opacity = 1;\n }\n imageWrapper.style.transform = `translateY(${value}%)`;\n imageWrapper.style.opacity = opacity;\n }\n }\n }\n\n\n render() {\n const { position } = this.props || {};\n let divStyle, positionValue;\n if (!isNaN(position)) {\n positionValue = position;\n }\n else {\n positionValue = 0;\n }\n divStyle = {\n transform: `translateY(${positionValue}%)`\n }\n return (\n <div className=\"animation-rise-and-fade\" style={divStyle}>\n {this.props.children}\n </div>\n )\n }\n}\n\nexport default RiseAndFade;","import React from \"react\";\r\nimport ContentLoader from \"react-content-loader\";\r\n\r\nconst SearchSkeleton = props => {\r\n const { opacity = 1 } = props;\r\n return (\r\n <ContentLoader\r\n style={{ width: \"100%\", opacity: opacity }}\r\n height={56}\r\n title=\"\"\r\n backgroundColor=\"#f7f7f7\"\r\n foregroundColor=\"#ececec\"\r\n >\r\n <rect x=\"70\" y=\"22\" rx=\"5\" ry=\"5\" width=\"380\" height=\"14\" />\r\n <rect x=\"20\" y=\"10\" rx=\"4\" ry=\"4\" width=\"40\" height=\"40\" />\r\n </ContentLoader>\r\n );\r\n};\r\n\r\nexport default SearchSkeleton;\r\n","export default function getAncestorElement(element, ancestorClass) {\n if (element) {\n while ((element = element.parentElement) && !element.classList.contains(ancestorClass));\n }\n return element;\n}","import React, { Fragment } from \"react\";\r\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\r\n\r\nconst Details = props => {\r\n const {\r\n iconValue = null,\r\n linkUrl = null,\r\n linkName = null,\r\n size = 16,\r\n mapInfo = null,\r\n noLocation = false,\r\n withViewOnMap = false\r\n } = props;\r\n if (iconValue && linkName && linkName.value) {\r\n return (\r\n <div className=\"details-wrapper\">\r\n <i\r\n className={`icon icon-${iconValue} mr-1 mr-md-2`}\r\n style={{ fontSize: size + \"px\" }}\r\n />\r\n {linkUrl && linkUrl.length && noLocation ? (\r\n <a href={linkUrl}>\r\n <Text field={linkName} />\r\n </a>\r\n ) : linkUrl && linkUrl.length && withViewOnMap ? (\r\n <div className=\"separated-location\">\r\n <span>\r\n <Text field={linkName} />\r\n </span>\r\n <a href={linkUrl + \"#/profile?location=\" + mapInfo}>View on map</a>\r\n </div>\r\n ) : linkUrl && linkUrl.length ? (\r\n <a href={linkUrl + \"#/profile?location=\" + mapInfo}>\r\n <Text field={linkName} />\r\n </a>\r\n ) : (\r\n <Text field={linkName} />\r\n )}\r\n </div>\r\n );\r\n } else return null;\r\n};\r\nexport default Details;\r\n","import React from \"react\";\r\nimport Details from \"../../Details\";\r\nimport RiseAndFade from \"../../Animations/RiseAndFade\";\r\nimport { Image, Text } from \"@sitecore-jss/sitecore-jss-react\";\r\nimport transparent from \"../../../../assets/img/placeholders/transparent.png\";\r\n\r\nconst FeaturedLifestyleTiles = props => (\r\n <div className=\"featured-lifestyle-list-wrapper\">\r\n <div className=\"container\">\r\n <div className=\"featured-lifestyle-list\">\r\n {props.data.map((item, index) => {\r\n const {\r\n ThumbnailUrl,\r\n ThumbnailAltText,\r\n PageType,\r\n Link: link,\r\n Title\r\n } = item.fields || {};\r\n let value = 0;\r\n if (index == 1) {\r\n value = 6;\r\n } else if (index == 2) {\r\n value = 8;\r\n }\r\n return (\r\n <div className=\"tile\" key={`featured-lifestyle-item-${index}`}>\r\n <RiseAndFade position={value}>\r\n <div className=\"animation-range\">\r\n <div className=\"photo\">\r\n <a href={link.value}>\r\n {ThumbnailUrl && ThumbnailUrl.value ? (\r\n <img src={ThumbnailUrl.value} alt={ThumbnailAltText.value} className=\"lazyload\" />\r\n ) : (\r\n <img src={transparent} />\r\n )}\r\n </a>\r\n </div>\r\n <div className=\"category-type\">\r\n <Text field={PageType} />\r\n </div>\r\n <div className=\"title\">\r\n <a href={link.value}>\r\n <Text field={Title} />\r\n </a>\r\n </div>\r\n </div>\r\n </RiseAndFade>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n </div>\r\n);\r\n\r\nexport default FeaturedLifestyleTiles;\r\n","import React from \"react\";\r\nimport Details from \"../../Details\";\r\nimport RiseAndFade from \"../../Animations/RiseAndFade\";\r\nimport { Image, Text } from \"@sitecore-jss/sitecore-jss-react\";\r\nimport transparent from \"../../../../assets/img/placeholders/transparent.png\";\r\n\r\nconst FeaturedRecipeTiles = props => (\r\n <div className=\"featured-recipe-list-wrapper\">\r\n <div className=\"container\">\r\n <div className=\"featured-recipe-list\">\r\n {props.data.map((item, index) => {\r\n const {\r\n Thumbnail,\r\n Type,\r\n Link: link,\r\n Title,\r\n CookTime,\r\n Servings,\r\n Difficulty\r\n } = item.fields || {};\r\n let value = 0;\r\n if (index == 1) {\r\n value = 6;\r\n } else if (index == 2) {\r\n value = 8;\r\n }\r\n return (\r\n <div className=\"tile\" key={`featured-recipe-item-${index}`}>\r\n <RiseAndFade position={value}>\r\n <div className=\"animation-range\">\r\n <div className=\"photo\">\r\n <a href={link.value}>\r\n {Thumbnail && Thumbnail.value ? (\r\n <Image media={Thumbnail} className=\"lazyload\" />\r\n ) : (\r\n <img src={transparent} />\r\n )}\r\n </a>\r\n </div>\r\n <div className=\"category-type\">\r\n <Text field={Type} />\r\n </div>\r\n <div className=\"title\">\r\n <a href={link.value}>\r\n <Text field={Title} />\r\n </a>\r\n </div>\r\n </div>\r\n <div className=\"recipe-details-wrapper\">\r\n {CookTime && CookTime.value && (\r\n <Details\r\n iconValue=\"timer\"\r\n size=\"24\"\r\n linkName={{ value: CookTime.value }}\r\n />\r\n )}\r\n {Servings && Servings.value && (\r\n <Details\r\n iconValue=\"users\"\r\n size=\"24\"\r\n linkName={{ value: Servings.value }}\r\n />\r\n )}\r\n {Difficulty && Difficulty.value && (\r\n <Details\r\n iconValue=\"chef-2\"\r\n size=\"24\"\r\n linkName={{ value: Difficulty.value }}\r\n />\r\n )}\r\n </div>\r\n </RiseAndFade>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n </div>\r\n);\r\n\r\nexport default FeaturedRecipeTiles;\r\n","import React from \"react\";\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\n\nconst BlogDetails = props => {\n const {\n Title = null,\n ShortDescription = null,\n } = props.fields || {};\n\n return (\n <BaseComponent>\n <div className=\"blogdetails-wrapper\">\n <div className=\"container\">\n <div className=\"row\">\n <div className=\"col-12 col-md-8\">\n <div className=\"blogdetails-content\">\n <h1 className={`blogtitle ${ShortDescription && ShortDescription.value ? \"\" : 'title-only'}`}>\n <Text field={Title} />\n </h1>\n <div className=\"blogdescription\">\n <Text field={ShortDescription} />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </BaseComponent>\n );\n};\n\nexport default BlogDetails;\n","import React from \"react\";\nimport { RichText, Text } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\n\nconst FeatureCampaignCampaignDetails = props => {\n const { CampaignIntro, CampaignDescription } = props.fields;\n if (\n CampaignIntro &&\n CampaignIntro.value &&\n CampaignDescription &&\n CampaignDescription.value\n ) {\n return (\n <BaseComponent margin=\"campaign\">\n <div className=\"campaign-details-wrapper container\">\n <div className=\"intro col-md-8\">\n <Text field={CampaignIntro} />\n </div>\n <div className=\"description col-md-9\">\n <RichText field={CampaignDescription} />\n </div>\n </div>\n </BaseComponent>\n );\n } else return null;\n};\n\nexport default FeatureCampaignCampaignDetails;\n","import React, { Component } from \"react\";\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\n\nclass FeatureCampaignCampaignTitle extends Component {\n componentDidMount() {\n const itbWrappers = document.querySelectorAll(\".itb-wrapper\");\n\n if (itbWrappers.length > 0) {\n itbWrappers[itbWrappers.length - 1].classList.add(\"standard-margin\");\n }\n }\n\n render() {\n const { CampaignTitle } = this.props.fields;\n if (CampaignTitle && CampaignTitle.value) {\n return (\n <div className=\"campaign-title-wrapper\">\n <div className=\"container\">\n <h1 className=\"title\">\n <Text field={CampaignTitle} />\n </h1>\n </div>\n </div>\n );\n } else return null;\n }\n}\n\nexport default FeatureCampaignCampaignTitle;\n","import React from \"react\";\r\nimport ScrollAnimation from \"react-animate-on-scroll\";\r\nimport { Text, Link } from \"@sitecore-jss/sitecore-jss-react\";\r\n\r\nconst GrayBanner = props => {\r\n const {\r\n StoreDirectoryLandingPage = \"\",\r\n StoreDirectoryCtaText = \"\",\r\n IsCampaignPage: isCampaignPage = null,\r\n Title = null,\r\n TitleLink: titleLink = null,\r\n CTAText: CtaText = null,\r\n CTATextLink = null,\r\n ComponentTitle = null\r\n } = props.fields || {};\r\n\r\n const title = Title || ComponentTitle || null;\r\n const CTAText = StoreDirectoryCtaText || CtaText || null;\r\n const CTALink = StoreDirectoryLandingPage || CTATextLink || null;\r\n\r\n const CTA = {\r\n href: CTALink ? CTALink.value : null,\r\n text: CTAText ? CTAText.value : null,\r\n anchor: \"\",\r\n linktype: \"internal\",\r\n class: \"\",\r\n title: CTAText ? CTAText.value : null,\r\n querystring: \"\"\r\n };\r\n\r\n const CTABlock = (\r\n <div className=\"graybanner-header-title\">\r\n {CTALink && CTALink.value ? (\r\n <React.Fragment>\r\n <Link field={CTA} />\r\n <i className=\"icon icon-arrow-right\" />\r\n </React.Fragment>\r\n ) : (\r\n <Text field={CTAText} />\r\n )}\r\n </div>\r\n );\r\n\r\n return (\r\n <div className=\"graybanner-wrapper\">\r\n <div className=\"container\">\r\n <div className=\"graybanner-header-wrapper offset-lg-1\">\r\n <ScrollAnimation\r\n animateIn=\"animate__animated animate__fadeIn\"\r\n animateOnce={true}\r\n >\r\n {isCampaignPage && isCampaignPage.value ? (\r\n <React.Fragment>\r\n <div\r\n className=\"graybanner-header-description\"\r\n style={{ marginBottom: \"7px\" }}\r\n >\r\n {titleLink && titleLink.value ? (\r\n <a href={titleLink.value}>\r\n <Text field={title} />\r\n </a>\r\n ) : (\r\n <Text field={title} />\r\n )}\r\n </div>\r\n {CTABlock}\r\n </React.Fragment>\r\n ) : (\r\n <React.Fragment>\r\n {CTABlock}\r\n <div className=\"graybanner-header-description\">\r\n <Text field={title} />\r\n </div>\r\n </React.Fragment>\r\n )}\r\n </ScrollAnimation>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default GrayBanner;\r\n","export const valueHelper = (index, columns, tabletColumns) => {\r\n let value = 0;\r\n let checker;\r\n\r\n if (tabletColumns) {\r\n // Mobile breakpoint\r\n if (window && window.outerWidth && window.outerWidth < 768) {\r\n value = 6;\r\n }\r\n // Tablet breakpoint\r\n else if (\r\n window &&\r\n window.outerWidth &&\r\n window.outerWidth <= 768 &&\r\n window.outerWidth < 992 &&\r\n tabletColumns\r\n ) {\r\n checker = index % tabletColumns;\r\n }\r\n\r\n // Desktop breakpoint\r\n else {\r\n checker = index % columns;\r\n }\r\n\r\n // Default checker\r\n if (checker == 1) {\r\n value = 6;\r\n } else if (checker == 2) {\r\n value = 8;\r\n } else if (checker == 3) {\r\n value = 10;\r\n } else if (checker == 4) {\r\n value = 12;\r\n }\r\n } else {\r\n checker = index % columns;\r\n\r\n if (checker == 1) {\r\n value = 6;\r\n } else if (checker == 2) {\r\n value = 8;\r\n } else if (checker == 3) {\r\n value = 10;\r\n } else if (checker == 4) {\r\n value = 12;\r\n }\r\n }\r\n\r\n return value;\r\n};\r\n","import React from \"react\";\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport GrayBanner from \"../../../Common/GrayBanner\";\nimport RiseAndFade from \"../../../Common/Animations/RiseAndFade\";\nimport { valueHelper } from \"../../../../helper/Animations\";\n\nconst FeatureCategoryRelatedSubcategory = props => {\n const { RelatedSubcategories = null } = props.fields || {};\n\n if (RelatedSubcategories && RelatedSubcategories.length) {\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"relatedsubcategory-wrapper\">\n <GrayBanner fields={props.fields} />\n <div className=\"relatedsubcategory-tile-wrapper\">\n <div className=\"container\">\n <div className=\"row\">\n {RelatedSubcategories.map((item, index) => {\n const { Icon = null, Label = null, PageUrl = null } =\n item.fields || {};\n if (\n Icon &&\n Icon.value &&\n Label &&\n Label.value &&\n PageUrl &&\n PageUrl.value\n ) {\n return (\n <div className=\"col-8 col-md-2\" key={`tileID-${index}`}>\n <RiseAndFade position={valueHelper(index, 5)}>\n <div\n key={`myId-${index}`}\n className=\"relatedsubcategory-tile\"\n >\n <a href={PageUrl.value}>\n <div className=\"relatedsubcategory-icon\">\n <i className={`icon icon-${Icon.value}`} />\n </div>\n <div className=\"relatedsubcategory-label\">\n <Text field={Label} />\n </div>\n </a>\n </div>\n </RiseAndFade>\n </div>\n );\n } else return null;\n })}\n </div>\n </div>\n </div>\n </div>\n </BaseComponent>\n );\n } else return null;\n};\n\nexport default FeatureCategoryRelatedSubcategory;\n","import React from \"react\";\nimport { Text, Image, RichText, Link } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\n\nconst FeatureCentreServicesCentreServicesHighlight = props => {\n const {\n ServiceName = null,\n Description = null,\n CentreServiceLink = null,\n HeroImage = null,\n HeroImageUrl = null,\n HeroImageAltText = null\n } = props.fields || {};\n if (ServiceName && ServiceName.value) {\n if (HeroImage && HeroImage.value && HeroImageUrl && HeroImageUrl.value) {\n HeroImage.value.src = HeroImageUrl.value;\n }\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"categoryother\">\n <div className=\"container\">\n <div className=\"categoryother-wrapper\">\n <div className=\"animation-range\">\n <div className=\"categoryother-image-wrapper col-12 col-md-7\">\n <div className=\"categoryother-image\">\n <Image\n media={{\n ...HeroImage.value,\n src: defaultImg,\n alt:\n HeroImageAltText && HeroImageAltText.value\n ? HeroImageAltText.value\n : \"\"\n }}\n data-src={HeroImage.value.src}\n className=\"lazyload\"\n />\n </div>\n </div>\n <div className=\"categoryother-details-link col-12 col-md-5 offset-md-7\">\n <Link field={CentreServiceLink} />\n <i className=\"icon icon-arrow-right\" />\n </div>\n <div className=\"categoryother-details-title col-12 col-md-5 offset-md-7\">\n <span>\n <Text field={ServiceName} />\n </span>\n </div>\n </div>\n <div className=\"categoryother-details\">\n <div className=\"categoryother-details-wrapper col-12 col-md-5 offset-md-7\">\n <div className=\"categoryother-details-description\">\n <RichText field={Description} />\n </div>\n {CentreServiceLink && CentreServiceLink.value && (\n <div className=\"categoryother-details-learn-more\">\n <Link\n field={{\n ...CentreServiceLink.value,\n text: \"Learn More\"\n }}\n />\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n </BaseComponent>\n );\n } else return null;\n};\n\nexport default FeatureCentreServicesCentreServicesHighlight;\n","import React from \"react\";\nimport { Image, Text, Link, RichText } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\nimport Details from \"../../../Common/Details\";\n\nconst FeatureCentreServicesCentreServicesListInlineImage = props => {\n const {\n Logo: logo = null,\n Title: title = null,\n Description: description = null,\n CentreHighlights: centreHighlights = null\n } = props.fields || {};\n\n if (props && props.rendering && props.rendering.dataSource) {\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"kids-family-services-main-container\">\n <div className=\"row\">\n <div className=\"col-sm-12\">\n <div className=\"kids-family-services-title-container\">\n <Image\n media={{ ...logo.value, src: defaultImg }}\n data-src={logo.value.src}\n className=\"kids-family-services-logo lazyload\"\n />\n <div className=\"kids-family-services-title\">\n <Text field={title} />\n </div>\n </div>\n <div className=\"kids-family-services-desc-container\">\n <div className=\"kids-family-services-desc\">\n <Text field={description} />\n </div>\n </div>\n <div>\n {centreHighlights &&\n centreHighlights.map((listItem, index) => {\n const {\n Image: image = null,\n Summary: summary = null,\n Name: name = null,\n MapLink: mapLink = null,\n Location: location = null\n } = listItem.fields || {};\n return (\n <div\n key={`myId-${index}`}\n className=\"kids-family-services-content\"\n >\n <div className=\"row\">\n <div className=\"col-sm-12\">\n <div className=\"kids-family-services-content-title\">\n <Text field={name} />\n </div>\n <div className=\"kids-family-services-content-summary\">\n <RichText field={summary} />\n </div>\n </div>\n </div>\n\n {mapLink &&\n mapLink.value &&\n (mapLink.value.text || mapLink.value.href) ? (\n <div className=\"kids-family-services-content-link\">\n <Details\n iconValue=\"location\"\n linkUrl={\n mapLink && mapLink.value && mapLink.value.href\n }\n mapInfo={\n location && location.value ?\n encodeURI(location.value)\n : \"\"\n }\n linkName={\n mapLink && mapLink.value && mapLink.value.text\n ? { value: mapLink.value.text }\n : \"\"\n }\n size=\"24\"\n />\n </div>\n ) : null}\n\n <div className=\"kids-family-services-content-image-wrapper\">\n {image && image.value && image.value.src ? (\n <Image\n media={{ ...image.value, src: defaultImg }}\n data-src={image.value.src}\n className={`lazyload kids-family-services-content-image ${\n centreHighlights.length === index + 1\n ? \"no-margin-bottom\"\n : \"\"\n }`}\n />\n ) : (\n <div\n className={`kids-family-services-content-no-image ${\n centreHighlights.length === index + 1\n ? \"no-margin-bottom\"\n : \"\"\n }`}\n />\n )}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </div>\n </BaseComponent>\n );\n } else return null;\n};\n\nexport default FeatureCentreServicesCentreServicesListInlineImage;\n","import React, { Fragment } from \"react\";\nimport { Image, Text, Link, RichText } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\nimport Details from \"../../../Common/Details\";\n\nconst FeatureCentreServicesCentreServicesListLeftImage = props => {\n const {\n Logo: logo = null,\n Title: title = null,\n Description: description = null,\n CentreHighlights: centreHighlights = null\n } = props.fields || {};\n if (props && props.rendering && props.rendering.dataSource) {\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"centre-services-main-container\">\n <div className=\"centre-services-title-container\">\n <Image\n media={{ ...logo.value, src: defaultImg }}\n data-src={logo.value.src}\n className=\"centre-services-logo lazyload\"\n />\n <div className=\"centre-services-title\">\n <Text field={title} />\n </div>\n </div>\n <div className=\"centre-services-desc-container\">\n <div className=\"centre-services-desc\">\n <Text field={description} />\n </div>\n </div>\n <Fragment>\n {centreHighlights &&\n centreHighlights.map((listItem, index) => {\n const {\n Image: image = null,\n Summary: summary = null,\n Name: name = null,\n MapLink: mapLink = null,\n Location: location = null\n } = listItem.fields || {};\n\n return (\n <div\n key={`myId-${index}`}\n className=\"centre-services-content\"\n >\n <div className=\"centre-services-content-image-wrapper\">\n {image && image.value && image.value.src ? (\n <Image\n media={{ ...image.value, src: defaultImg }}\n data-src={image.value.src}\n className=\"centre-services-content-image lazyload\"\n />\n ) : (\n <div className=\"centre-services-content-no-image\">\n \n </div>\n )}\n </div>\n <div className=\"centre-services-content-desc-wrapper\">\n <div className=\"centre-services-content-title\">\n <Text field={name} />\n </div>\n\n <div className=\"centre-services-content-summary\">\n <RichText field={summary} />\n </div>\n\n {/* {\n link && link.value && (link.value.text || link.value.href) \n ? (\n <div className=\"centre-services-content-link\">\n <Link field={link}/>\n </div>\n )\n : null\n } */}\n\n {mapLink &&\n mapLink.value &&\n (mapLink.value.text || mapLink.value.href) ? (\n <div className=\"centre-services-content-link\">\n <Details\n iconValue=\"location\"\n linkUrl={\n mapLink && mapLink.value && mapLink.value.href\n }\n mapInfo={\n location && location.value ? \n encodeURI(location.value)\n : \"\"\n }\n linkName={\n mapLink && mapLink.value && mapLink.value.text\n ? { value: mapLink.value.text }\n : \"\"\n }\n size=\"24\"\n />\n </div>\n ) : null}\n </div>\n </div>\n );\n })}\n </Fragment>\n </div>\n </BaseComponent>\n );\n } else return null;\n};\n\nexport default FeatureCentreServicesCentreServicesListLeftImage;\n","import React from \"react\";\nimport { Text, Link, Image, RichText } from \"@sitecore-jss/sitecore-jss-react\";\nimport ScrollAnimation from \"react-animate-on-scroll\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport { get } from \"lodash\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\nimport RiseAndFade from \"../../../Common/Animations/RiseAndFade\";\nimport Details from \"../../../Common/Details\";\n\nconst FeatureCentreServicesFeaturedServicesHighlight = props => {\n const {\n PramParkingURL,\n CentreServiceHeading,\n ElevatorsAndLiftsURL,\n FeaturedServices: featuredServices = null\n } = props.fields || {};\n if (\n props &&\n props.rendering &&\n props.rendering.dataSource &&\n featuredServices &&\n featuredServices.length\n ) {\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"categoryservices-wrapper\">\n <div className=\"categoryservices-banner\">\n <div className=\"container\">\n <div className=\"row no-gutters\">\n <div className=\"categoryservices-content-wrapper col-11\">\n <div className=\"categoryservices-header-wrapper\">\n <ScrollAnimation\n animateIn=\"animate__animated animate__fadeIn\"\n animateOnce={true}\n >\n <div className=\"categoryservices-header-title\">\n <Link field={CentreServiceHeading} />\n <i className=\"icon icon-arrow-right\" />\n </div>\n\n <div className=\"categoryservices-header-buttons\">\n {PramParkingURL && PramParkingURL.value.href &&\n <Link\n className=\"btn quaternary-btn\"\n field={PramParkingURL}\n />\n\n }\n {ElevatorsAndLiftsURL && ElevatorsAndLiftsURL.value.href &&\n <Link\n className=\"btn quaternary-btn\"\n field={ElevatorsAndLiftsURL}\n />\n\n }\n </div>\n </ScrollAnimation>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div className=\"categoryservices-tiles-wrapper\">\n <div className=\"container\">\n <div className=\"categoryservices-tiles-content\">\n <div className=\"row no-gutters\">\n {featuredServices &&\n featuredServices.length &&\n featuredServices.map((item, index) => {\n const {\n HeroImage: heroImage = null,\n HeroImageUrl: heroImageUrl = null,\n HeroImageAltText: heroImageAltText = null,\n ServiceName: serviceName = null,\n Description: description = null,\n MapLink: mapLink = null,\n Location: location = null\n } = item.fields || {};\n\n if (\n heroImage &&\n heroImage.value &&\n heroImageUrl &&\n heroImageUrl.value\n ) {\n heroImage.value.src = heroImageUrl.value;\n }\n let value = 0;\n if (index == 1) {\n value = 6;\n }\n return (\n <div\n className=\"col-12 col-md-6\"\n key={`catgeoryID` + index}\n >\n <RiseAndFade position={value}>\n <div className=\"animation-range\">\n <div className=\"categoryservices-tiles-image-wrapper\">\n <Image\n media={{\n ...heroImage.value,\n src: defaultImg,\n alt:\n heroImageAltText && heroImageAltText.value\n ? heroImageAltText.value\n : \"\"\n }}\n data-src={heroImage.value.src}\n className=\"lazyload\"\n />\n </div>\n <div className=\"categoryservices-tiles-details-title\">\n <span>\n <Text field={serviceName} />\n </span>\n </div>\n </div>\n <div className=\"categoryservices-tiles-details\">\n <div className=\"categoryservices-tiles-details-description\">\n <RichText field={description} />\n </div>\n {get(mapLink, \"value.href\", null) ? (\n <div className=\"categoryservices-tiles-details-item\">\n <Details\n iconValue=\"location\"\n linkUrl={\n mapLink &&\n mapLink.value &&\n mapLink.value.href\n }\n mapInfo={\n location && location.value ? \n encodeURI(location.value)\n : \"\"\n }\n linkName={\n mapLink &&\n mapLink.value &&\n mapLink.value.text\n ? { value: mapLink.value.text }\n : \"\"\n }\n size=\"24\"\n />\n </div>\n ) : (\n \"\"\n )}\n </div>\n </RiseAndFade>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </div>\n </div>\n </BaseComponent>\n );\n } else return null;\n};\n\nexport default FeatureCentreServicesFeaturedServicesHighlight;\n","import React from \"react\";\nimport ScrollAnimation from \"react-animate-on-scroll\";\nimport { Text, Link } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\nimport RiseAndFade from \"../../../Common/Animations/RiseAndFade\";\n\nconst FeatureCinemaNowShowing = props => {\n const {\n title = null,\n cinemaName = null,\n cinemaUrl = null,\n movieList = null\n } = props.fields || {};\n if (movieList && movieList.length) {\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"now-showing-wrapper\">\n <div className=\"now-showing-banner\">\n <div className=\"container\">\n <div className=\"now-showing-content-wrapper col-11\">\n <div className=\"now-showing-header-wrapper\">\n <ScrollAnimation\n animateIn=\"animate__animated animate__fadeIn\"\n animateOnce={true}\n >\n {cinemaName && cinemaName.value && (\n <div className=\"now-showing-name\">\n <Link\n field={{\n href:\n cinemaUrl && cinemaUrl.value\n ? cinemaUrl.value\n : \"\"\n }}\n >\n <span>{cinemaName.value}</span>\n <i className=\"icon icon-arrow-right\" />\n </Link>\n </div>\n )}\n <div className=\"now-showing-title\">\n <Text field={title} />\n </div>\n </ScrollAnimation>\n </div>\n </div>\n </div>\n </div>\n <div className=\"now-showing-tiles-wrapper\">\n <div className=\"container\">\n <div className=\"row no-gutters\">\n {movieList &&\n movieList.map((listItem, index) => {\n const {\n thumbnail = null,\n title = null,\n movieUrl = null,\n runtime = null,\n movieRating = null,\n genres = null,\n sessions = null\n } = listItem.fields || {};\n let value = 0;\n if (index == 1) {\n value = 6;\n } else if (index == 2) {\n value = 8;\n } else if (index == 3) {\n value = 10;\n }\n return (\n <div\n className=\"col-12 col-md-3\"\n key={\"showingId\" + index}\n >\n <RiseAndFade position={value}>\n <div className=\"animation-range\">\n <div className=\"image-content\">\n {thumbnail && thumbnail.value && (\n <Link\n field={{\n href: movieUrl.value\n }}\n >\n <img\n alt=\"\"\n src={defaultImg}\n data-src={thumbnail.value}\n className=\"lazyload\"\n />\n </Link>\n )}\n </div>\n\n <div className=\"now-showing-tiles-details-title\">\n <Link\n field={{\n href: movieUrl.value\n }}\n >\n <Text field={title} />\n </Link>\n </div>\n </div>\n <div className=\"now-showing-tiles-details\">\n <div className=\"now-showing-tiles-details-genre-wrapper\">\n <span className=\"genre-text\">\n <Text field={movieRating} />\n <span className=\"vertical-line\"> | </span>\n </span>\n <span className=\"genre-text\">\n <Text field={runtime} />\n <span className=\"vertical-line\"> | </span>\n </span>\n {genres.map((item, i) => {\n const { genre } = item.fields || {};\n return (\n <span\n className=\"genre-text\"\n key={\n genre && genre.value\n ? genre.value + \"number\" + index\n : \"randomGenre\" + index\n }\n >\n <Text field={genre} />\n {i + 1 !== genres.length && \", \"}\n </span>\n );\n })}\n </div>\n <div className=\"now-showing-tiles-details-session-wrapper\">\n {sessions.map((item, i) => {\n const { session } = item.fields || {};\n return (\n <span\n className=\"session-text\"\n key={\n session && session.value\n ? session.value + \"number\" + index\n : \"randomSession\" + index\n }\n >\n <Text field={session} />\n {i + 1 !== sessions.length && \", \"}\n </span>\n );\n })}\n </div>\n </div>\n </RiseAndFade>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </div>\n </BaseComponent>\n );\n } else return null;\n};\n\nexport default FeatureCinemaNowShowing;\n","import React from \"react\";\nimport { Text, Image } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\nimport Details from \"../../../Common/Details\";\n\nconst FeatureConsumerArticleArticleDetails = props => {\n const {\n ContentCategory = null,\n Title = null,\n ShortDescription = null,\n PublishDate = null,\n RetailerLogo = null,\n StorefrontLink = null,\n HidePublishDate = null\n } = props.fields || {};\n\n let isRetailerArticle = false;\n if (RetailerLogo && RetailerLogo.value && RetailerLogo.value.src) {\n isRetailerArticle = true;\n }\n\n return (\n <BaseComponent>\n <div className=\"articledetails-wrapper\">\n <div className=\"container\">\n <div className=\"row\">\n <div className=\"col-12 col-md-8\">\n <div className=\"articledetails-content\">\n {ContentCategory && ContentCategory.value && (\n <div className=\"articleevent\">\n <Text field={ContentCategory} />\n </div>\n )}\n <h1 className=\"articletitle\">\n <Text field={Title} />\n </h1>\n <div className=\"articledescription\">\n <Text field={ShortDescription} />\n </div>\n {HidePublishDate && !HidePublishDate.value && (\n <div className=\"publisheddate\">\n <Details\n iconValue=\"calendar\"\n linkName={PublishDate}\n size=\"24\"\n />\n </div>\n )}\n {isRetailerArticle && (\n <div className=\"article-logo-mobile\">\n <a href={StorefrontLink ? StorefrontLink.value : \"#\"}>\n <Image\n media={{ ...RetailerLogo.value, src: defaultImg }}\n data-src={RetailerLogo.value.src}\n className=\"lazyload\"\n />\n </a>\n </div>\n )}\n </div>\n </div>\n {isRetailerArticle && (\n <div className=\"col-12 col-md-4\">\n <a href={StorefrontLink ? StorefrontLink.value : \"#\"}>\n <Image\n media={{ ...RetailerLogo.value, src: defaultImg }}\n data-src={RetailerLogo.value.src}\n className=\"article-logo lazyload\"\n />\n </a>\n </div>\n )}\n </div>\n </div>\n </div>\n </BaseComponent>\n );\n};\n\nexport default FeatureConsumerArticleArticleDetails;\n","import React from \"react\";\nimport { Image, Link } from \"@sitecore-jss/sitecore-jss-react\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\n\nconst Header = props => {\n return (\n <div className=\"navbar-wrapper\">\n <div className=\"container\">\n <nav className=\"navbar navbar-expand-xl navbar-light\">\n <div className=\"divider\">\n <a className=\"navbar-brand\" href=\"/\">\n <Image\n media={{ ...props.fields.centreLogo.value, src: defaultImg }}\n data-src={props.fields.centreLogo.value.src}\n className=\"lazyload\"\n />\n </a>\n </div>\n <div className=\"divider\">\n <button className=\"navbar-collapse-search-btn pull-right\">\n <i className=\"icon icon-outlined-search\" />\n </button>\n <button\n className=\"navbar-toggler\"\n type=\"button\"\n data-toggle=\"collapse\"\n data-target=\"#navbarSupportedContent\"\n aria-controls=\"navbarSupportedContent\"\n aria-expanded=\"false\"\n aria-label=\"Toggle navigation\"\n >\n <i className=\"icon icon-outlined-menu\" />\n </button>\n </div>\n\n <div className=\"collapse navbar-collapse\" id=\"navbarSupportedContent\">\n <ul className=\"navbar-nav ml-auto\">\n <li className=\"nav-item mx-3\">\n <Link className=\"nav-link\" field={props.fields.visitCta} />\n </li>\n <li className=\"nav-item mx-3\">\n <Link className=\"nav-link\" field={props.fields.shopCta} />\n </li>\n <li className=\"nav-item mx-3\">\n <Link\n className=\"nav-link\"\n field={props.fields.eatAndDrinkCta}\n />\n </li>\n <li className=\"nav-item mx-3\">\n <Link\n className=\"nav-link\"\n field={props.fields.entertainmentCta}\n />\n </li>\n <li className=\"nav-item ml-3\">\n <a className=\"nav-link\" href=\"#\">\n <i className=\"icon icon-outlined-search\" />\n </a>\n </li>\n </ul>\n </div>\n </nav>\n </div>\n </div>\n );\n};\n\nexport default Header;\n","import React, { Component } from \"react\";\r\nimport { renameElements } from \"../../../helper/ArrayHelper\";\r\n\r\nfunction navigationResize() {\r\n const nav = document.getElementById(\"nav\");\r\n const navItemMore = nav.querySelector(\"li.more\");\r\n const navItems = Array.from(nav.querySelectorAll(\"li:not(.more)\"));\r\n const overflowList = document.getElementById(\"overflow\");\r\n\r\n let totalWidth = 0;\r\n navItems.forEach(item => {\r\n totalWidth += item.offsetWidth + 45;\r\n });\r\n let overflow = false;\r\n if (window.innerWidth > 991) { \r\n if (totalWidth > nav.offsetWidth - navItemMore.offsetWidth) {\r\n overflow = true;\r\n for (let i = navItems.length - 1; i >= 0; i--) {\r\n const currentItem = navItems[i];\r\n if (totalWidth > nav.offsetWidth - navItemMore.offsetWidth) {\r\n totalWidth -= currentItem.offsetWidth;\r\n overflowList.appendChild(currentItem); \r\n navItems.splice(i, 1); \r\n }\r\n }\r\n }\r\n } else {\r\n while (overflowList.children.length > 0) {\r\n const overflowItem = overflowList.firstChild;\r\n nav.insertBefore(overflowItem, navItemMore); \r\n navItems.push(overflowItem); \r\n }\r\n overflow = false;\r\n }\r\n\r\n navItemMore.style.display = overflow ? \"block\" : \"none\";\r\n}\r\n\r\nclass Subnav extends Component {\r\n componentDidMount() {\r\n navigationResize();\r\n window.addEventListener(\"resize\", navigationResize);\r\n }\r\n\r\n renderAllTab = (selected, updateFilter, allTabQuery) => {\r\n return (\r\n <li\r\n name=\"listAll\"\r\n className={`tab ${selected == \"\" || selected.toLowerCase() == \"all\" ? \"selected\" : \"\"\r\n }`}\r\n onClick={() => {\r\n updateFilter(allTabQuery);\r\n }}\r\n >\r\n <div>All</div>\r\n </li>\r\n );\r\n };\r\n\r\n redirectPage = link => {\r\n if (typeof window !== \"undefined\") {\r\n window.location.href = link.href;\r\n }\r\n };\r\n\r\n render() {\r\n const {\r\n selected,\r\n updateFilter,\r\n hasAllTab,\r\n allTabQuery,\r\n defaultName,\r\n defaultFilter,\r\n defaultActive,\r\n className\r\n } = this.props || {};\r\n let { tabs } = this.props || {};\r\n\r\n if (tabs && tabs.length) {\r\n tabs = renameElements(tabs, defaultName, defaultFilter, defaultActive);\r\n return (\r\n <div className={`header-sub-nav-wrapper ${className ? className : \"\"}`}>\r\n <div className=\"container\">\r\n <ul id=\"nav\">\r\n {hasAllTab &&\r\n this.renderAllTab(selected, updateFilter, allTabQuery)}\r\n\r\n {tabs.map((item, index) => {\r\n const { name = null, filter = null, active = null } =\r\n item || {};\r\n return (\r\n <li\r\n key={`secondarynavID-` + index}\r\n className={`${(selected &&\r\n selected.toLowerCase() == filter.toLowerCase()) ||\r\n (active && active === \"true\")\r\n ? \"selected\"\r\n : \"\"\r\n }`}\r\n onClick={() => {\r\n hasAllTab\r\n ? updateFilter(filter)\r\n : this.redirectPage(filter);\r\n }}\r\n >\r\n <div>{name}</div>\r\n </li>\r\n );\r\n })}\r\n <li className=\"more\">\r\n <div>More »</div>\r\n <ul id=\"overflow\" />\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n );\r\n } else return null;\r\n }\r\n}\r\n\r\nexport default Subnav;\r\n","export const renameElements = (\r\n list,\r\n defaultName,\r\n defaultFilter,\r\n defaultActive\r\n) => {\r\n let temp = [];\r\n list.forEach(el =>\r\n temp.push({\r\n name: el.fields[defaultName].value,\r\n filter: el.fields[defaultFilter].value,\r\n active: defaultActive ? el.fields[defaultActive].value : null\r\n })\r\n );\r\n return temp;\r\n};\r\n","import React, { Component } from \"react\";\nimport { Link, Text } from \"@sitecore-jss/sitecore-jss-react\";\nimport Subnav from \"../../../Common/Subnav\";\n\nclass FeatureConsumerNavigationHeaderSubNav extends Component {\n render() {\n const { HeaderMenu: tabs = null } = this.props.fields || {};\n return (\n <Subnav\n tabs={tabs}\n defaultName=\"ServiceName\"\n defaultFilter=\"Link\"\n defaultActive=\"IsActive\"\n className=\"with-margin\"\n />\n );\n }\n}\n\nexport default FeatureConsumerNavigationHeaderSubNav;\n","import React, { Component } from \"react\";\r\nimport { Text, Image, RichText } from \"@sitecore-jss/sitecore-jss-react\";\r\nimport BaseComponent from \"../../../Base/BaseComponent\";\r\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\r\n\r\nclass FeatureCraftCraftDetails extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showMaterials: true,\r\n showInstructions: false,\r\n isMobile: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const { Materials, LinkedStoreList, Instructions } =\r\n this.props.fields || {};\r\n\r\n if (window.matchMedia(\"only screen and (max-width: 768px)\").matches) {\r\n this.setState({\r\n isMobile: true\r\n });\r\n }\r\n\r\n if (\r\n (Materials && Materials.length > 0) ||\r\n (LinkedStoreList && LinkedStoreList.length > 0)\r\n ) {\r\n this.setState({\r\n showMaterials: true,\r\n showInstructions: false\r\n });\r\n } else {\r\n if (Instructions && Instructions.legnth > 0) {\r\n this.setState({\r\n showMaterials: false,\r\n showInstructions: true\r\n });\r\n }\r\n }\r\n }\r\n\r\n handleClickMaterial = () => {\r\n this.setState({\r\n showMaterials: true,\r\n showInstructions: false\r\n });\r\n };\r\n handleClickInstruction = () => {\r\n this.setState({\r\n showMaterials: false,\r\n showInstructions: true\r\n });\r\n };\r\n\r\n renderPrep = () => {\r\n const { PrepTime, ActiveTime, EstimatedCost, Difficulty } =\r\n this.props.fields || {};\r\n let prepLayout;\r\n\r\n if (\r\n (PrepTime && PrepTime.value) ||\r\n (ActiveTime && ActiveTime.value) ||\r\n (EstimatedCost && EstimatedCost.value) ||\r\n (Difficulty && Difficulty.value)\r\n ) {\r\n prepLayout = (\r\n <div className=\"craft-details__prep\">\r\n {PrepTime && PrepTime.value && (\r\n <div className=\"craft-details__prep--item\">\r\n <div className=\"craft-details__prep--item-header\">Prep time</div>\r\n <div className=\"craft-details__prep--item-description\">\r\n <Text field={PrepTime} />\r\n </div>\r\n </div>\r\n )}\r\n {ActiveTime && ActiveTime.value && (\r\n <div className=\"craft-details__prep--item\">\r\n <div className=\"craft-details__prep--item-header\">\r\n Active time\r\n </div>\r\n <div className=\"craft-details__prep--item-description\">\r\n <Text field={ActiveTime} />\r\n </div>\r\n </div>\r\n )}\r\n {EstimatedCost && EstimatedCost.value && (\r\n <div className=\"craft-details__prep--item\">\r\n <div className=\"craft-details__prep--item-header\">\r\n {`${this.state.isMobile ? \"Est. Cost\" : \"Estimated Cost\"}`}\r\n </div>\r\n <div className=\"craft-details__prep--item-description\">\r\n <Text field={EstimatedCost} />\r\n </div>\r\n </div>\r\n )}\r\n {Difficulty && Difficulty.value && (\r\n <div className=\"craft-details__prep--item\">\r\n <div className=\"craft-details__prep--item-header\">Difficulty</div>\r\n <div className=\"craft-details__prep--item-description\">\r\n <Text field={Difficulty} />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n return prepLayout;\r\n };\r\n\r\n renderMaterials = showMaterials => {\r\n const { MaterialsBucket, Materials, LinkedStoresHeader, LinkedStoreList } =\r\n this.props.fields || {};\r\n\r\n let materialLayout;\r\n if (\r\n (Materials && Materials.length > 0) ||\r\n (LinkedStoreList && LinkedStoreList.length > 0)\r\n ) {\r\n materialLayout = (\r\n <div\r\n className={`craft-details__material ${\r\n showMaterials ? \"is-active\" : \"\"\r\n }`}\r\n >\r\n <div className=\"craft-details__material--header\">{`${\r\n MaterialsBucket.fields.Title.value\r\n ? MaterialsBucket.fields.Title.value\r\n : \"MATERIALS\"\r\n }`}</div>\r\n {Materials && Materials.length > 0 && (\r\n <div className=\"craft-details__material--item-wrapper\">\r\n {Materials.map((item, index) => {\r\n const { Header, Materials } = item.fields;\r\n return (\r\n <div\r\n key={Header.value + index}\r\n className=\"craft-details__material--item\"\r\n >\r\n <div className=\"craft-details__material--item-title\">\r\n <Text field={Header} />\r\n </div>\r\n <div className=\"craft-details__material--item-description\">\r\n <RichText field={Materials} />\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n )}\r\n {LinkedStoreList && LinkedStoreList.length > 0 && (\r\n <div className=\"craft-details__stores\">\r\n {LinkedStoresHeader && LinkedStoresHeader.value && (\r\n <div className=\"craft-details__stores--title\">\r\n <Text field={LinkedStoresHeader} />\r\n </div>\r\n )}\r\n <div className=\"craft-details__stores--wrapper\">\r\n {LinkedStoreList.map((item, index) => {\r\n const { Name, Logo, StoreLink } = item.fields;\r\n\r\n let logoLayout;\r\n logoLayout = (\r\n <div className=\"craft-details__stores--item\">\r\n <div className=\"craft-details__stores--item-image\">\r\n <Image\r\n media={{\r\n ...Logo.value,\r\n src: defaultImg\r\n }}\r\n data-src={Logo.value.src}\r\n className=\"lazyload\"\r\n />\r\n </div>\r\n <div className=\"craft-details__stores--item-name\">\r\n <Text field={Name} />\r\n </div>\r\n </div>\r\n );\r\n\r\n return (\r\n <div\r\n key={Name.value + index}\r\n className=\"craft-details__stores--content\"\r\n >\r\n <div className=\"animation-range\">\r\n {StoreLink && StoreLink.value ? (\r\n <a href={StoreLink.value}>{logoLayout}</a>\r\n ) : (\r\n logoLayout\r\n )}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n return materialLayout;\r\n };\r\n\r\n renderInstruction = showInstructions => {\r\n const { InstructionsBucket, Instructions } = this.props.fields || {};\r\n let instructionLayout;\r\n if (Instructions && Instructions.length > 0) {\r\n instructionLayout = (\r\n <div\r\n className={`craft-details__instruction ${\r\n showInstructions ? \"is-active\" : \"\"\r\n }`}\r\n >\r\n <div className=\"craft-details__instruction--header\">{`${\r\n InstructionsBucket.fields.Title.value\r\n ? InstructionsBucket.fields.Title.value\r\n : \"INSTRUCTIONS\"\r\n }`}</div>\r\n <div className=\"craft-details__instruction--item-wrapper\">\r\n {Instructions.map((item, index) => {\r\n const {\r\n StepNumber,\r\n StepDescription,\r\n Image: image = null\r\n } = item.fields;\r\n return (\r\n <div\r\n key={StepNumber.value + index}\r\n className=\"craft-details__instruction--item\"\r\n >\r\n <div className=\"craft-details__instruction--number\">\r\n <Text field={StepNumber} />\r\n </div>\r\n <div className=\"craft-details__instruction--description\">\r\n <RichText field={StepDescription} />\r\n </div>\r\n {image && image.value && image.value.src && (\r\n <div className=\"craft-details__instruction--image-wrapper\">\r\n <div className=\"craft-details__instruction--image\">\r\n <Image\r\n media={{\r\n ...image.value,\r\n src: defaultImg\r\n }}\r\n data-src={image.value.src}\r\n className=\"craft-details__instruction--image-img lazyload\"\r\n />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n }\r\n return instructionLayout;\r\n };\r\n\r\n renderButtons = (showMaterials, showInstructions) => {\r\n const {\r\n MaterialsBucket,\r\n Materials,\r\n LinkedStoreList,\r\n InstructionsBucket,\r\n Instructions\r\n } = this.props.fields || {};\r\n\r\n let btnLayout;\r\n if (\r\n (Materials && Materials.length > 0) ||\r\n (LinkedStoreList && LinkedStoreList.length > 0) ||\r\n (Instructions && Instructions.legnth > 0)\r\n ) {\r\n btnLayout = (\r\n <div className=\"craft-details__button\">\r\n <button\r\n onClick={this.handleClickMaterial}\r\n className={`craft-details__button--btn ${\r\n showMaterials ? \"is-active\" : \"\"\r\n }`}\r\n >\r\n {`${\r\n MaterialsBucket.fields.Title.value\r\n ? MaterialsBucket.fields.Title.value\r\n : \"MATERIALS\"\r\n }`}\r\n </button>\r\n <button\r\n onClick={this.handleClickInstruction}\r\n className={`craft-details__button--btn ${\r\n showInstructions ? \"is-active\" : \"\"\r\n }`}\r\n >\r\n {`${\r\n InstructionsBucket.fields.Title.value\r\n ? InstructionsBucket.fields.Title.value\r\n : \"INSTRUCTIONS\"\r\n }`}\r\n </button>\r\n </div>\r\n );\r\n }\r\n return btnLayout;\r\n };\r\n render() {\r\n const { CraftTitle, CraftDescription, Notes } = this.props.fields || {};\r\n\r\n const { showMaterials, showInstructions } = this.state;\r\n return (\r\n <div className=\"craft-details font-regular\">\r\n <BaseComponent margin=\"standard\">\r\n <div className=\"container\">\r\n {CraftTitle && CraftTitle.value && (\r\n <h1 className=\"craft-details__title\">\r\n <Text field={CraftTitle} />\r\n </h1>\r\n )}\r\n {this.renderPrep()}\r\n {CraftDescription && CraftDescription.value && (\r\n <div className=\"craft-details__description\">\r\n <RichText field={CraftDescription} />\r\n </div>\r\n )}\r\n {this.renderButtons(showMaterials, showInstructions)}\r\n {this.renderMaterials(showMaterials)}\r\n {this.renderInstruction(showInstructions)}\r\n {Notes && Notes.value && (\r\n <div className=\"craft-details__notes\">\r\n <div className=\"craft-details__notes--header\">Notes</div>\r\n <div className=\"craft-details__notes--description\">\r\n <RichText field={Notes} />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </BaseComponent>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default FeatureCraftCraftDetails;\r\n","import React from 'react';\r\nimport { Text } from '@sitecore-jss/sitecore-jss-react';\r\nimport Details from \"../../../Common/Details\";\r\n\r\nconst FeatureCraftCraftQuickLinksMenu = (props) => {\r\n const {\r\n Tags = []\r\n } = props.fields || {};\r\n return (\r\n <div className=\"craft-quicklinks-menu font-regular\">\r\n {(Tags || Tags.length > 0) &&\r\n <div className=\"craft-quicklinks-menu__wrapper\">\r\n {\r\n Tags &&\r\n Tags.length > 0 &&\r\n <div className=\"craft-quicklinks-menu__tags\">\r\n <div className=\"craft-quicklinks-menu__tags--title\">Tags</div>\r\n <div className=\"craft-quicklinks-menu__tagsn--list\">\r\n {\r\n Tags.map((item, index) => {\r\n const {\r\n Name = null,\r\n Link = null\r\n } = item.fields || {}\r\n\r\n return (\r\n <div key={Name.value + index}\r\n className=\"craft-quicklinks-menu__tags--item\">\r\n {Link &&\r\n Link.value ?\r\n <a href={Link && Link.value ? Link.value : \"\"}>\r\n <Text field={Name} />\r\n </a>\r\n : <Text field={Name} />\r\n }\r\n </div>\r\n )\r\n })\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n )\r\n};\r\n\r\nexport default FeatureCraftCraftQuickLinksMenu;","import React from \"react\";\r\n\r\nconst CommonBadge = props => {\r\n const { type, startDate, endDate, badgeText } = props;\r\n let badgeType;\r\n let badgeClass;\r\n let parentClass;\r\n let line1;\r\n let line2;\r\n const getDate = function(date) {\r\n let d = new Date(date);\r\n return d.getDate();\r\n };\r\n const getMonth = function(date) {\r\n const month = [];\r\n month[0] = \"Jan\";\r\n month[1] = \"Feb\";\r\n month[2] = \"Mar\";\r\n month[3] = \"Apr\";\r\n month[4] = \"May\";\r\n month[5] = \"Jun\";\r\n month[6] = \"Jul\";\r\n month[7] = \"Aug\";\r\n month[8] = \"Sep\";\r\n month[9] = \"Oct\";\r\n month[10] = \"Nov\";\r\n month[11] = \"Dec\";\r\n\r\n let d = new Date(date);\r\n return month[d.getMonth()];\r\n };\r\n\r\n if (type === \"hero\") {\r\n badgeType = \"hero-content-tile\";\r\n } else if (type === \"list\") {\r\n badgeType = \"content-tile\";\r\n } else {\r\n badgeType = \"generic\";\r\n }\r\n\r\n if (startDate) {\r\n if (endDate) {\r\n if (getMonth(startDate) === getMonth(endDate)) {\r\n if (getDate(startDate) === getDate(endDate)) {\r\n badgeClass = \"single-day\";\r\n line1 = getDate(startDate);\r\n line2 = getMonth(startDate);\r\n } else {\r\n badgeClass = \"single-month\";\r\n line1 = getDate(startDate) + \"-\" + getDate(endDate);\r\n line2 = getMonth(startDate);\r\n }\r\n } else {\r\n badgeClass = \"multiple-months\";\r\n line1 = getDate(startDate) + \" \" + getMonth(startDate);\r\n line2 = getDate(endDate) + \" \" + getMonth(endDate);\r\n }\r\n } else {\r\n badgeClass = \"single-day\";\r\n line1 = getDate(startDate);\r\n line2 = getMonth(startDate);\r\n }\r\n } else if (badgeText) {\r\n if (/\\s/.test(badgeText)) {\r\n badgeClass = \"badge-lines\";\r\n } else {\r\n badgeClass = \"badge-line\";\r\n }\r\n line1 = badgeText;\r\n }\r\n\r\n if (!startDate && !badgeText) {\r\n parentClass = \"hide-badge\";\r\n } else {\r\n parentClass = `d-flex flex-column justify-content-center align-items-center ${badgeType} ${badgeClass}`;\r\n }\r\n\r\n return (\r\n <div className={parentClass}>\r\n <div className=\"badge-day\">{line1}</div>\r\n <div className=\"badge-month\"> {line2}</div>\r\n </div>\r\n );\r\n};\r\nexport default CommonBadge;\r\n","import React from \"react\";\nimport { Text, Image } from \"@sitecore-jss/sitecore-jss-react\";\nimport Badge from \"../../../Common/Badge\";\nimport Details from \"../../../Common/Details\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\n\nconst FeatureFeaturedRetailerFeaturedRetailer = props => {\n const {\n StoreId: storeid = null,\n Header: header = null,\n RetailerName: retailerName = null,\n RetailerUrl: retailerUrl = null,\n Location: location = null,\n OpeningHours: openingHours = null,\n RetailerImage: retailerImage = null,\n Position: position = null,\n MapUrl: mapUrl = null,\n BadgeText: badgeText = null\n } = props.fields || {};\n\n let direction = \"left\";\n\n if (position && position.value) {\n if (position.value.toLowerCase().indexOf(\"right\") !== -1) {\n direction = \"right\";\n }\n }\n\n if (retailerName && retailerName.value) {\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"featured-retailer-wrapper container\">\n <div className=\"retailer-card\">\n <div className=\"row no-gutters\">\n <div\n className={`d-none ${\n direction === \"left\" ? \"d-lg-block col-lg-5\" : \"\"\n }`}\n ></div>\n <div className=\"retailer-image col-12 col-md-11 col-lg-7\">\n <a\n href={\n retailerUrl && retailerUrl.value ? retailerUrl.value : null\n }\n >\n <div className=\"no-image\">\n {(retailerImage &&\n retailerImage.value &&\n retailerImage.value.src) &&\n <Image\n media={retailerImage.value}\n data-src={retailerImage.value.src}\n className=\"lazyload\"\n />\n }\n </div>\n </a>\n <div className=\"img-badge\">\n <Badge\n type=\"list\"\n badgeText={\n badgeText && badgeText.value ? badgeText.value : null\n }\n />\n </div>\n </div>\n </div>\n <div className=\"row no-gutters\">\n <div\n className={`d-none d-md-block col-1 ${\n direction === \"left\" ? \"bg-even\" : \"bg-odd\"\n }`}\n ></div>\n <div\n className={`retailer-details col-12 col-md-11 col-lg-4 ${\n direction === \"left\" ? \"\" : \"order-lg-last\"\n }\n `}\n >\n <div className=\"title\">\n <Text field={header} />\n </div>\n <div className=\"retailer-name\">\n <a\n href={\n retailerUrl && retailerUrl.value\n ? retailerUrl.value\n : null\n }\n >\n {retailerName &&\n retailerName.value &&\n <span>\n <Text field={retailerName} />\n </span>\n }\n </a>\n </div>\n <Details\n iconValue=\"location\"\n linkUrl={mapUrl && mapUrl.value ? mapUrl.value : null}\n linkName={location}\n size=\"24\"\n mapInfo={storeid && storeid.value ? storeid.value : null}\n />\n <Details iconValue=\"time\" linkName={openingHours} size=\"24\" />\n </div>\n <div className=\"d-none d-lg-block col-6 with-bg\"></div>\n <div\n className={`d-none col-1 ${\n direction === \"left\" ? \"\" : \"d-lg-block bg-even\"\n }`}\n ></div>\n </div>\n </div>\n </div>\n </BaseComponent>\n );\n } else return null;\n};\n\nexport default FeatureFeaturedRetailerFeaturedRetailer;\n","import React, { Component } from \"react\";\r\n\r\nclass ContactUsInputFields extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n validInput: false,\r\n touched: false,\r\n hasValue: false\r\n };\r\n this.inputField = React.createRef();\r\n }\r\n\r\n validateField = () => {\r\n const {\r\n FormatValidation = null,\r\n Type = null,\r\n IsRequired = null\r\n } = this.props.info || {};\r\n const {\r\n updateFieldValue = null\r\n } = this.props || {};\r\n let expression = FormatValidation && FormatValidation.value ? FormatValidation.value : \"\";\r\n let re = new RegExp(expression);\r\n let inputValue;\r\n if (IsRequired.value && !this.inputField.current.value) {\r\n this.setState({ validInput: false, touched: true });\r\n inputValue = \"\";\r\n } else if (!re.test(String(this.inputField.current.value))) {\r\n if (this.inputField.current.value) {\r\n this.setState({ validInput: false, touched: true });\r\n } else {\r\n this.setState({ validInput: true, touched: false });\r\n }\r\n inputValue = \"\";\r\n } else {\r\n this.setState({ validInput: true, touched: false });\r\n inputValue = this.inputField.current.value;\r\n }\r\n updateFieldValue(this.inputField.current.id, inputValue, Type.value, IsRequired.value, this.state.validInput);\r\n\r\n if (this.inputField.current.value) {\r\n this.setState({ hasValue: true });\r\n } else {\r\n this.setState({ hasValue: false });\r\n }\r\n };\r\n\r\n render() {\r\n const {\r\n Name = null,\r\n Type = null,\r\n IsRequired = null,\r\n Placeholder = null,\r\n RequiredValidationMessage = null,\r\n } = this.props.info || {};\r\n\r\n return (\r\n <div className=\"row\">\r\n <div className=\"col col-md-12\">\r\n <div className={`form-group ${(Name.value).toLowerCase() === 'phone number' ? \"phone-number\" : \"\"}`}>\r\n {Type.value.toLowerCase() === 'multi-line field' ?\r\n <textarea\r\n id={Name.value}\r\n className={`${(!this.state.validInput && this.state.touched) || (this.props.submitted && !this.state.validInput && IsRequired.value) ? \"form-control-error\" : \"\"}`}\r\n required={IsRequired.value ? true : false}\r\n ref={this.inputField}\r\n onChange={this.validateField}\r\n onBlur={this.validateField}\r\n /> :\r\n <input\r\n type=\"text\"\r\n id={Name.value}\r\n className={`form-control form-control-lg ${(!this.state.validInput && this.state.touched) || (this.props.submitted && !this.state.validInput && IsRequired.value) ? \"form-control-error\" : \"\"}`}\r\n required={IsRequired.value ? true : false}\r\n ref={this.inputField}\r\n onChange={this.validateField}\r\n onBlur={this.validateField}\r\n />}\r\n <label\r\n className={\r\n `${(IsRequired.value ? \"form-control-placeholder\" : \"form-field-not-required\")}\r\n ${(this.state.hasValue ? \"form-field-hasValue\" : \"\")}\r\n ${(!this.state.validInput && this.state.touched) || (this.props.submitted && !this.state.validInput && IsRequired.value) ? \"form-text-error\" : \"\"}\r\n `\r\n }\r\n htmlFor={Name.value}\r\n >\r\n {Type.value.toLowerCase() === 'multi-line field' && this.state.hasValue ?\r\n \"\" : (Placeholder.value)}\r\n </label>\r\n {\r\n ((!this.state.validInput && this.state.touched) ||\r\n (this.props.submitted && !this.state.validInput && IsRequired.value)) && (\r\n <span>\r\n <i className=\"icon icon-danger contactus-danger-icon\">!</i>\r\n <label className=\"form-control-validation\">{RequiredValidationMessage.value}</label>\r\n </span>\r\n )\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default ContactUsInputFields;\r\n","import React, { Component, Fragment } from \"react\";\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\nimport ReCAPTCHA from \"react-google-recaptcha\";\nimport DOMPurify from 'dompurify';\nimport TagManager from \"react-gtm-module\";\nimport axios from \"axios\";\nimport Form from \"../ContactUsInputFields\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\n\nclass FeatureFormsContactUs extends Component {\n constructor(props) {\n super(props);\n this.state = {\n fields: [],\n userEmailAddress: \"\",\n complete: false,\n submitted: false,\n successMessage: null,\n feedback: null,\n show: false,\n verifiedRecaptcha: false,\n expiredRecaptcha: false,\n load: false,\n recaptchaLoaded: false\n };\n this.topic = React.createRef();\n this.inputField = React.createRef();\n }\n\n componentDidMount() {\n this.setState({ feedback: this.topic.current.value });\n setTimeout(() => {\n this.setState({ load: true });\n }, 1500);\n }\n\n recaptchaLoaded = () => {\n console.log(\"Successful Load Recaptcha\");\n this.setState({ recaptchaLoaded: true });\n };\n\n recaptchaExpired = () => {\n this.setState({\n verifiedRecaptcha: false,\n expiredRecaptcha: true\n });\n };\n\n recaptchaVerifyResponse = response => {\n if (response) {\n this.setState({\n verifiedRecaptcha: true,\n expiredRecaptcha: false\n });\n } else {\n this.setState({ verifiedRecaptcha: false });\n }\n };\n\n handleToggle = e => {\n e.target.focus();\n this.setState({ show: !this.state.show });\n };\n\n handleBlur = e => {\n if (this.state.show) {\n setTimeout(() => {\n this.setState({ show: !this.state.show });\n }, 250);\n }\n };\n\n handleSubmitBtn = e => {\n e.preventDefault();\n let contactUsWrapper = document.querySelector(\".contactus-wrapper\");\n const contactUsTopic = document.getElementById(\"Topic\");\n let formsWrapper = e.target,\n submitBtn = formsWrapper.querySelector(\".contactus-submit-btn\");\n const { verifiedRecaptcha } = this.state;\n const recaptchaWrapper = document\n .getElementsByClassName(\"contactus-form\")[0]\n .querySelector(\".form-recaptcha\");\n this.setState({ submitted: true });\n\n setTimeout(() => {\n let invalidField = formsWrapper.querySelector(\".form-control-error\");\n if (invalidField) {\n invalidField.scrollIntoView();\n }\n }, 250);\n\n if (recaptchaWrapper) {\n if (!verifiedRecaptcha) {\n recaptchaWrapper.classList.add(\"is-required\");\n return;\n }\n }\n if (!this.state.complete) return;\n\n submitBtn.setAttribute(\"disabled\", \"\");\n\n const { SuccessMessage = null, FailedMessage = null } =\n this.props.fields || {};\n const dataSource = this.props.rendering.dataSource || \"\";\n const url = `/api/sitecore/forms/contactus`;\n let fields = [];\n\n // key compose field data\n fields = this.state.fields.map(field => {\n return {\n FieldName: field.fieldName,\n Value: field.value\n };\n });\n\n // add topic\n fields.push({\n FieldName: \"Topic\",\n Value: this.topic.current.value\n });\n\n let postData = {\n ContactUsDetails: {\n ItemID: dataSource,\n UserEmailAddress: this.state.userEmailAddress,\n Fields: fields,\n SuccessMessage: SuccessMessage.value,\n FailedMessage: FailedMessage.value\n }\n };\n\n axios({\n url,\n method: \"POST\",\n data: postData\n })\n .then(response => {\n if (response && response.data && response.data.message) {\n this.setState({ successMessage: response.data.message });\n TagManager.dataLayer({\n dataLayer: {\n event: \"contactUsFormSubmit\",\n contactUsTopic: contactUsTopic && contactUsTopic.value\n },\n dataLayerName: \"dataLayer\"\n });\n contactUsWrapper.scrollIntoView();\n }\n })\n .catch(error => {\n submitBtn.removeAttribute(\"disabled\");\n console.error(error);\n });\n };\n\n updateFieldValue = (fieldName, value, Type, isRequired, validInput) => {\n let userEmailAddress = null;\n let fields = []; //.concat(this.state.fields);\n let fieldIsNew = true;\n\n if (Type.toLowerCase() === \"email address field\") {\n userEmailAddress = value;\n }\n\n // look for existing fields\n fields = this.state.fields.map(field => {\n if (field.fieldName === fieldName) {\n field.value = value;\n fieldIsNew = false;\n }\n return field;\n });\n\n if (fieldIsNew) {\n fields.push({\n fieldName: fieldName,\n value: value,\n required: isRequired\n });\n }\n\n let complete = null;\n \n for (let i = 0; i < this.props.fields.Fields.length; i++) {\n if (this.topic.current.form[i]) {\n if (\n !this.topic.current.form[i].value &&\n this.topic.current.form[i].required\n ) {\n complete = false;\n break;\n } else {\n complete = true;\n }\n }\n }\n\n this.setState({\n ...this.state,\n fields: fields,\n userEmailAddress: userEmailAddress\n ? userEmailAddress\n : this.state.userEmailAddress,\n complete: !validInput ? false : complete\n });\n };\n\n onChangeSelection = name => {\n this.setState({ feedback: name });\n };\n\n render() {\n const { verifiedRecaptcha, expiredRecaptcha, load } = this.state;\n const {\n PageSummary = null,\n Fields = null,\n EnableRecaptcha = null,\n PublicKey = null\n } = this.props.fields || {};\n\n let message = null;\n\n if (this.state.successMessage) {\n message = (\n <div\n className=\"thanks-for-contacting\"\n dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(this.state.successMessage) }}\n />\n );\n }\n\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"contactus-wrapper\">\n {message ? (\n message\n ) : (\n <Fragment>\n <div className=\"contactus-description\">\n <Text field={PageSummary} />\n </div>\n <form onSubmit={this.handleSubmitBtn} noValidate>\n <div className=\"contactus-form\">\n {Fields &&\n Fields.map((listFields, index) => {\n let { Name, Type } = listFields.fields || {};\n if (\n Type &&\n Type.value.toLowerCase() === \"heading field\"\n ) {\n return (\n <div\n className=\"contactus-subheading\"\n key={Name.value + index}\n >\n {Name.value}\n </div>\n );\n }\n if (\n Type &&\n (Type.value.toLowerCase() === \"text field\" ||\n Type.value.toLowerCase() === \"email address field\" ||\n Type.value.toLowerCase() === \"phone number field\")\n ) {\n return (\n <Form\n info={listFields.fields}\n key={Type.value + index}\n updateFieldValue={this.updateFieldValue}\n submitted={this.state.submitted}\n />\n );\n }\n if (Type && Type.value.toLowerCase() === \"droplist\") {\n let { Values } = listFields.fields || {};\n const defaultValue = Values[0].fields.Name.value;\n return (\n <div className=\"row\" key={Type.value + index}>\n <div className=\"col col-md-12\">\n <div className=\"form-group contactus-dropdown\">\n <div className=\"dropdown-container\">\n <div\n className={`arrow ${\n this.state.show ? \"active\" : \"\"\n }`}\n onClick={this.handleToggle}\n onBlur={this.handleBlur}\n tabIndex=\"0\"\n >\n <div className=\"dropdown-placeholder\">\n <div className=\"label\">\n <Text field={Name} />\n </div>\n <input\n id={\n Name && Name.value\n ? Name.value\n : `dropdown${index}`\n }\n type=\"button\"\n value={\n this.state.feedback\n ? this.state.feedback\n : defaultValue\n }\n className=\"dropdown-btn\"\n ref={this.topic}\n />\n </div>\n <i className=\"icon icon-arrow-down\" />\n </div>\n <ul\n className=\"dropdown-list\"\n hidden={!this.state.show}\n >\n {Values &&\n Values.map((listTopic, index) => {\n let { Name } = listTopic.fields || {};\n if (\n this.state.feedback === Name.value\n ) {\n return (\n <li\n className=\"active\"\n key={`optionID-${index}`}\n >\n <i className=\"icon icon-check\" />\n <span>{Name.value}</span>\n </li>\n );\n } else {\n return (\n <li\n key={`optionID-${index}`}\n onClick={() =>\n this.onChangeSelection(\n Name.value\n )\n }\n >\n <i className=\"icon icon-check hide\" />\n <span>{Name.value}</span>\n </li>\n );\n }\n })}\n </ul>\n </div>\n </div>\n {Values &&\n Values.map((listTopic, index) => {\n const {\n LinkedFields: LinkedFields = [],\n Name\n } = listTopic.fields || {};\n if (LinkedFields.length > 0) {\n return (\n <div\n className=\"js-form-dropdown\"\n key={\n Name && Name.value\n ? Name.value + index\n : \"dropdown \" + index\n }\n >\n {LinkedFields.map(\n (linkFields, index) => {\n if (\n linkFields.fields.Type &&\n (linkFields.fields.Type.value.toLowerCase() ===\n \"text field\" ||\n linkFields.fields.Type.value.toLowerCase() ===\n \"email address field\" ||\n linkFields.fields.Type.value.toLowerCase() ===\n \"phone number field\")\n ) {\n return (\n (Name.value.toLowerCase() ===\n defaultValue.toLowerCase() ||\n (this.state.feedback &&\n Name.value.toLowerCase() ===\n this.state.feedback.toLowerCase())) && (\n <Form\n info={linkFields.fields}\n key={\n \"form-dropdown \" +\n linkFields.fields.Type\n .value +\n index\n }\n updateFieldValue={\n this.updateFieldValue\n }\n submitted={\n this.state.submitted\n }\n isDropDownField={true}\n />\n )\n );\n }\n }\n )}\n </div>\n );\n }\n })}\n </div>\n </div>\n );\n }\n if (\n Type &&\n Type.value.toLowerCase() === \"multi-line field\"\n ) {\n return (\n <Form\n info={listFields.fields}\n key={Type.value + index}\n updateFieldValue={this.updateFieldValue}\n submitted={this.state.submitted}\n />\n );\n }\n })}\n {load &&\n EnableRecaptcha &&\n EnableRecaptcha.value &&\n PublicKey &&\n PublicKey.value && (\n <div\n className={\n \"form-group form-recaptcha \" +\n (verifiedRecaptcha ? \"verifiedRecaptcha \" : \" \") +\n (expiredRecaptcha ? \"is-required\" : \" \")\n }\n >\n <ReCAPTCHA\n size=\"normal\"\n sitekey={\n PublicKey && PublicKey.value\n ? PublicKey.value\n : \"6LeqAfYUAAAAAGK1oZ1NzfVUFeC4kqJOe16XklGg\"\n }\n onChange={this.recaptchaVerifyResponse}\n onExpired={this.recaptchaExpired}\n asyncScriptOnLoad={this.recaptchaLoaded}\n />\n <div className=\"form-control-validation\">\n <span>\n <label>ReCaptcha is required</label>\n </span>\n </div>\n </div>\n )}\n <div className=\"contactus-button\">\n <button className=\"contactus-submit-btn\" type=\"submit\">\n Send\n </button>\n </div>\n </div>\n </form>\n </Fragment>\n )}\n </div>\n </BaseComponent>\n );\n }\n}\n\nexport default FeatureFormsContactUs;\n","import React from \"react\";\n\nconst Checkbox = props => {\n const {\n className = null,\n id = null,\n name = null,\n uniqueKey = null,\n handleCheckboxClick = null,\n checked = false\n } = props || {};\n return (\n <div className=\"form-group form-checkbox\" key={uniqueKey}>\n <label>\n <input\n type=\"checkbox\"\n className={`${className} ${checked ? \"is-active\" : \"\"}`}\n id={id}\n name={id}\n value={name}\n onClick={handleCheckboxClick}\n />\n {name}\n </label>\n </div>\n )\n};\n\nexport default Checkbox;","import React, { Component } from \"react\";\n\nclass CustomDropdown extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showDroplist: false,\n selectValue: null,\n relatedField: {\n id: null,\n selectedHasRelatedField: false,\n relatedFieldLabel: null,\n relatedFieldvalue: null\n },\n\n }\n }\n\n componentDidMount() {\n if (window) {\n window.addEventListener(\"scroll\", this.handleScroll);\n }\n\n }\n\n componentDidUpdate() {\n const listScroller = document.querySelector('.email-preference__options') //modal scroller\n if (listScroller) {\n if (this.state.relatedField.selectedHasRelatedField) listScroller.scrollTop = listScroller.scrollHeight\n }\n }\n\n handleScroll = () => {\n this.setState({ showDroplist: false });\n }\n\n handleToggle = (e) => {\n e.target.focus();\n this.setState({ showDroplist: !this.state.showDroplist });\n }\n\n handleBlur = (e) => {\n if (this.state.showDroplist) {\n setTimeout(() => {\n this.setState({ showDroplist: !this.state.showDroplist });\n }, 250)\n }\n }\n\n handleContainerClick = (event) => {\n const elemClass = event.target.classList.value;\n const dropdownBtnPattern = new RegExp(\"dropdown-btn\");\n const dropdownLabelPattern = new RegExp(\"dropdown-label\");\n const iconPattern = new RegExp(\"icon\");\n const dropdownBtnFormat = dropdownBtnPattern.test(elemClass);\n const dropdownLabelFormat = dropdownLabelPattern.test(elemClass);\n const iconPatternFormat = iconPattern.test(elemClass);\n\n if (dropdownBtnFormat) {\n event.target.click();\n }\n else if (dropdownLabelFormat) {\n event.target.querySelector(\"input\").click();\n }\n else if (iconPatternFormat) {\n event.target.previousElementSibling.click();\n }\n }\n\n handleDropdownClick = (event, relatedField) => {\n const { onChange = null, relatedFieldsValues = {} } = this.props || {}\n const { id, HasRelatedField, RelatedFieldLabel, RelatedFieldCurrentValue, RelatedFieldRequired } = relatedField\n this.setState({\n selectValue: event.target.getAttribute(\"label\"),\n relatedField: {\n selectedHasRelatedField: false\n }\n })\n if (HasRelatedField && HasRelatedField.value) this.setState({\n relatedField: {\n id: id && id.value,\n selectedHasRelatedField: HasRelatedField && HasRelatedField.value,\n relatedFieldLabel: RelatedFieldLabel && RelatedFieldLabel.value,\n relatedFieldvalue: RelatedFieldCurrentValue && RelatedFieldCurrentValue.value,\n relatedFieldRequired: RelatedFieldRequired && RelatedFieldRequired.value\n }\n })\n\n if (onChange) {\n if (relatedFieldsValues[event.target.id]) onChange(`${event.target.id}+${this.props.relatedFieldsValues[event.target.id]}`, event.target);\n else onChange(event.target.id, event.target, 'dropdown');\n }\n }\n\n validateInput = (value) => {\n let inputRegex = new RegExp(/^[a-zÀ-ÿ ,.'-]+$/i);\n if (value) return inputRegex.test(String(value).toLowerCase())\n };\n\n handleInputChange = (event, isRelatedFieldRequired = false) => {\n const { onChange = null, setRelatedFieldsValues } = this.props || {}\n const tempFieldsValues = { ...this.props.relatedFieldsValues[event.target.id] }\n tempFieldsValues[event.target.id.split('-')[0]] = event.target.value\n this.props.setRelatedFieldsValues(tempFieldsValues)\n\n if (isRelatedFieldRequired) {\n if (this.validateInput(event.target.value)) {\n // remove box-error if there's any\n event.target.classList.remove('box-error')\n if (onChange) onChange(`${event.target.id}+${event.target.value}`, event.target);\n } else event.target.classList.add('box-error')\n } else {\n if (onChange) onChange(`${event.target.id}+${event.target.value}`, event.target);\n }\n\n }\n\n render() {\n\n const {\n data = null,\n placeholder = null,\n defaultValue = null,\n relatedFieldsValues = null\n } = this.props || {};\n const {\n showDroplist,\n selectValue,\n relatedField,\n } = this.state;\n return (\n <div className=\"form-group form-dropdown\">\n <div className=\"dropdown-container\">\n <div className={`dropdown-label ${showDroplist ? \"active\" : \"\"}`}\n onClick={this.handleContainerClick}\n >\n <input\n type=\"button\"\n value={(selectValue ? selectValue : defaultValue ? defaultValue : placeholder ? placeholder : \"Select\")}\n className=\"dropdown-btn\"\n onClick={this.handleToggle}\n onBlur={this.handleBlur}\n />\n <i className=\"icon icon-arrow-down\"></i>\n </div>\n <ul className=\"dropdown-list\" hidden={!showDroplist}>\n {data &&\n data.map((dropdownList, index) => {\n const {\n Id: id = null,\n Name: name = null,\n Selected: selected = null,\n HasRelatedField = null,\n RelatedFieldLabel = null,\n RelatedFieldCurrentValue = null,\n RelatedFieldRequired = null,\n } = dropdownList.fields || {};\n return (\n <li className={(defaultValue == id.value && selectValue == null) || selectValue === name.value ? \"active\" : \"\"}\n id={id.value}\n key={`${name.value}-${name.id}-${index}-dropdown`}\n onClick={(e) => this.handleDropdownClick(e, { id, HasRelatedField, RelatedFieldLabel, RelatedFieldCurrentValue, RelatedFieldRequired })}\n label={name.value} >\n <i className=\"icon icon-check\"></i>{name.value}\n </li>\n )\n })}\n </ul>\n {relatedField.selectedHasRelatedField &&\n <div className=\"form-group related-field\">\n <input\n id={relatedField.id + '-dropdown-input'}\n type=\"text\"\n className=\"form-control form-control-lg related-field-input\"\n onChange={(e) => this.handleInputChange(e, relatedField.relatedFieldRequired)}\n onBlur={(e) => this.handleInputChange(e, relatedField.relatedFieldRequired)}\n required\n value={relatedFieldsValues[relatedField.id]}\n >\n </input>\n <label\n className=\"form-control-placeholder\"\n htmlFor={relatedField.id + '-dropdown-input'}\n >\n {relatedField.relatedFieldLabel}\n </label>\n </div>\n\n }\n </div>\n </div>\n )\n }\n}\n\nexport default CustomDropdown;\n\n","import React, { Fragment, useEffect, useState } from \"react\";\n\nconst RadioButton = props => {\n const {\n data = null,\n onChange = null,\n RadioGroupName = null,\n setRelatedFieldsValues = null,\n relatedFieldsValues = null,\n } = props || {};\n\n // const [relVals, setRelVals] = useState({ ...relatedFieldsValues })\n\n useEffect(() => {\n let relatedVals = {}\n data.forEach((radioList) => {\n const {\n Id: id = null,\n HasRelatedField = null,\n RelatedFieldCurrentValue = { value: \"\" }\n } = radioList.fields || {};\n if (HasRelatedField && HasRelatedField.value) relatedVals[id.value] = RelatedFieldCurrentValue && RelatedFieldCurrentValue.value\n })\n\n setRelatedFieldsValues(relatedVals)\n\n }, [])\n const handleRadioClick = (event, isRelatedFieldRequired = false) => {\n const relatedFields = document.body.querySelectorAll('.related-field-input')\n // show/hide related field\n if (relatedFields.length) {\n relatedFields.forEach(field => {\n if (field.id === event.target.id + '-input') {\n field.parentElement.classList.add('is-active')\n field.classList.add('is-active')\n if (isRelatedFieldRequired) field.classList.add('is-required')\n }\n else {\n field.parentElement.classList.remove('is-active')\n field.classList.remove('is-active')\n if (isRelatedFieldRequired) field.classList.remove('is-required')\n // tempFieldsValues[field.id] = \"\"\n }\n })\n // setRelVals(tempFieldsValues)\n }\n\n if (onChange) {\n if (relatedFieldsValues[event.target.id]) onChange(`${event.target.id}+${relatedFieldsValues[event.target.id]}`, event.target);\n else onChange(event.target.id, event.target);\n }\n }\n\n const handleInputChange = (event, isRelatedFieldRequired = false) => {\n const tempFieldsValues = { ...relatedFieldsValues }\n tempFieldsValues[event.target.id.split('-')[0]] = event.target.value\n setRelatedFieldsValues(tempFieldsValues)\n if (isRelatedFieldRequired) {\n if (validateInput(event.target.value)) {\n // remove box-error if there's any\n event.target.classList.remove('box-error')\n if (onChange) onChange(`${event.target.id}+${event.target.value}`, event.target);\n } else event.target.classList.add('box-error')\n } else {\n if (onChange) onChange(`${event.target.id}+${event.target.value}`, event.target);\n }\n\n }\n\n const validateInput = (value) => {\n let inputRegex = new RegExp(/^[a-zÀ-ÿ ,.'-]+$/i);\n if (value) return inputRegex.test(String(value).toLowerCase())\n };\n return (\n <div>\n {data &&\n data.map((radioList, index) => {\n const {\n Id: id = null,\n Name: name = null,\n Selected: selected = null,\n HasRelatedField = null,\n RelatedFieldLabel = null,\n RelatedFieldRequired = null,\n } = radioList.fields || {};\n\n return (\n <div className={`form-group form-radiobutton ${HasRelatedField && HasRelatedField.value ? 'has-related-field' : ''}`} key={`${name.value}-${name.id}-${index}-radiobutton`}>\n <label>\n <input\n type=\"radio\"\n className={selected && selected.value === true ? \"is-active\" : \"\"}\n id={id.value}\n name={RadioGroupName}\n value={name.value}\n onClick={(e) => handleRadioClick(e, RelatedFieldRequired && RelatedFieldRequired.value)}\n />\n {name.value}\n </label>\n {HasRelatedField && HasRelatedField.value &&\n <div className=\"form-group related-field\">\n <input\n id={id.value + '-input'}\n type=\"text\"\n className=\"form-control form-control-lg related-field-input\"\n onChange={(e) => handleInputChange(e, RelatedFieldRequired && RelatedFieldRequired.value)}\n onBlur={(e) => handleInputChange(e, RelatedFieldRequired && RelatedFieldRequired.value)}\n required\n value={relatedFieldsValues[id.value]}\n >\n </input>\n <label\n className=\"form-control-placeholder\"\n htmlFor={id.value + '-input'}\n >\n {RelatedFieldLabel && RelatedFieldLabel.value}\n </label>\n </div>\n }\n </div>\n\n );\n })}\n </div>\n )\n};\n\nexport default RadioButton;","import React from \"react\";\r\nimport Checkbox from \"../Checkbox\";\r\nconst Interest = ({ interests, handleCheckboxClick }) => {\r\n return (\r\n\r\n\r\n interests.map((listItem, index) => {\r\n const {\r\n Id: id = null,\r\n Name: name = null,\r\n Selected: selected = null,\r\n } = listItem.fields || {};\r\n if (index > 5) {\r\n return false;\r\n }\r\n return (\r\n <div className=\"col-12 col-md-4\" key={`${name.value}-${id.value}-${index}`}>\r\n <Checkbox\r\n id={id.value}\r\n name={name.value}\r\n checked={selected && selected.value ? selected.value : false}\r\n handleCheckboxClick={handleCheckboxClick}\r\n />\r\n </div>\r\n );\r\n })\r\n\r\n )\r\n}\r\n\r\nexport default Interest","import React, { Component } from \"react\";\nimport axios from \"axios\";\nimport { Text, RichText } from \"@sitecore-jss/sitecore-jss-react\";\nimport Checkbox from \"../Checkbox\";\nimport CustomDropdown from \"../CustomDropdown\";\nimport RadioButton from \"../RadioButton\";\nimport GetAncestorElement from \"../Helper/GetAncestorElement\";\nimport ReCAPTCHA from \"react-google-recaptcha\";\nimport TagManager from \"react-gtm-module\";\nimport Interest from \"./Interest\";\nclass EmailPreference extends Component {\n constructor(props) {\n super(props);\n this.state = {\n preferenceFormData: {\n pageId: this.props.PageID ? this.props.PageID : \"\",\n dbName: this.props.DBName ? this.props.DBName : \"\",\n emailAddress: this.props.EmailAddress ? this.props.EmailAddress : \"\",\n postcode: this.props.Postcode ? this.props.Postcode : \"\",\n interests: {},\n specifiedGender: \"\",\n },\n genderList: {},\n verifiedRecaptcha: false,\n expiredRecaptcha: false,\n load: false,\n recaptchaLoaded: false,\n responseData: {\n IsSuccessful: false,\n Message: \"\",\n ApiResponse: null\n },\n relatedFieldValues: {}\n };\n }\n\n componentDidMount() {\n const {\n Interests = null,\n GenderOptions = null,\n } = this.props || {};\n let interestsObj = {};\n let genderObj = {};\n let specifiedGender = \"\"\n if (Interests) {\n Interests.map((listItem, index) => {\n const {\n Id: id = null,\n Name: name = null,\n Selected: selected = null,\n } = listItem.fields || {};\n let selectedValue = selected && selected.value === true ? true : false;\n let keyId = id.value;\n interestsObj[keyId] = selectedValue;\n })\n }\n if (GenderOptions) {\n GenderOptions.map((listItem, index) => {\n const {\n Id: id = null,\n Name: name = null,\n Selected: selected = null,\n RelatedFieldCurrentValue = null\n } = listItem.fields || {};\n let keyId = id.value;\n let selectedValue = selected && selected.value === true ? true : false;\n interestsObj[keyId] = selectedValue;\n genderObj[keyId] = selectedValue;\n if (RelatedFieldCurrentValue && RelatedFieldCurrentValue.value) specifiedGender = RelatedFieldCurrentValue.value\n })\n }\n this.setState({\n ...this.state,\n preferenceFormData: {\n ...this.state.preferenceFormData,\n interests: interestsObj,\n specifiedGender: specifiedGender\n },\n genderList: genderObj\n },\n this.triggerActiveElement());\n\n setTimeout(() => {\n this.setState({ load: true });\n }, 1500);\n }\n\n componentDidUpdate() {\n const successContainer = document.querySelector('.modal-button-successmessage')\n if (successContainer) document.querySelector('.email-preference').scrollIntoView({ behavior: 'smooth', block: 'end' })\n }\n\n recaptchaLoaded = () => {\n console.log(\"Successful Load Recaptcha\");\n this.setState({ recaptchaLoaded: true });\n };\n\n recaptchaExpired = () => {\n this.setState({\n verifiedRecaptcha: false,\n expiredRecaptcha: true\n });\n };\n\n recaptchaVerifyResponse = response => {\n if (response) {\n this.setState({\n verifiedRecaptcha: true,\n expiredRecaptcha: false\n });\n } else {\n this.setState({ verifiedRecaptcha: false });\n }\n };\n\n getSubscribeModule = (Endpoint) => {\n if (Endpoint.includes('subscribe')) return 'Subscription module'\n if (Endpoint.includes('footer')) return 'Footer module'\n return 'Sign up module'\n }\n\n triggerActiveElement = () => {\n const emailPreferenceContainer = document.getElementsByClassName(`${this.props.Container ? this.props.Container : 'update-preferences'}`);\n if (emailPreferenceContainer.length) {\n let activeCheckboxList = emailPreferenceContainer[0].querySelectorAll(\".form-checkbox .is-active\");\n let activeRadioList = emailPreferenceContainer[0].querySelectorAll(\".form-radiobutton .is-active\");\n if (activeCheckboxList.length > 0) {\n for (let i = 0; i < activeCheckboxList.length; i++) {\n activeCheckboxList[i].click();\n }\n }\n if (activeRadioList.length > 0) {\n for (let i = 0; i < activeRadioList.length; i++) {\n activeRadioList[i].click();\n }\n }\n }\n }\n handleEmailPreference = async (e) => {\n const {\n IsModal = false,\n EmailPreferenceResponse = null,\n FirstName = null,\n LastName = null,\n EmailAddress = null,\n Postcode = null,\n ValidateFields = {},\n EnableRecaptcha = false,\n PrivacyPolicyText = null,\n OnSubmitted = null,\n } = this.props || {};\n const {\n pageId,\n dbName,\n emailAddress,\n interests,\n postcode,\n } = this.state.preferenceFormData;\n\n const data = {\n pageId,\n dbName,\n emailAddress,\n postcode,\n interests\n }\n\n const submitButton = document.querySelector('.email-preference__button')\n submitButton.classList.toggle('disabled')\n let complete = true\n // Signup validation\n if (this.props.Endpoint.includes('signup')) {\n if (!EmailAddress || !Postcode) { //simulate email api error response\n [EmailAddress, Postcode].forEach((reqField, index) => {\n if (!reqField) EmailPreferenceResponse(false, {\n \"IsSuccessful\": false,\n \"Message\": `${index < 1 ? 'Email' : 'Postcode'} is required`,\n \"ApiResponse\": index < 1 ? 2 : 5\n })\n })\n complete = false\n }\n // signup prop fields validation\n if (Object.values(ValidateFields).some(el => el.error === true)) complete = false\n if (EnableRecaptcha && EnableRecaptcha.value && !this.state.verifiedRecaptcha) {\n complete = false\n const recaptchaWrapper = document\n .querySelector(\".newsletter-wrapper > .modal-active > .container > .email-preference > .form-recaptcha\");\n recaptchaWrapper.classList.add(\"is-required\");\n this.setState({ ...this.setState, expiredRecaptcha: true })\n }\n\n data.firstName = FirstName\n data.lastName = LastName\n data.emailAddress = EmailAddress\n data.postcode = Postcode.toString();\n }\n // Additional validations\n if (this.props.Endpoint.includes('signup') || this.props.Endpoint === 'updatepreference') {\n // check if there's still an error\n let relatedFieldInput = document.body.querySelector(\".related-field-input.is-active.is-required\")\n\n if (relatedFieldInput) {\n if (!relatedFieldInput.value) {\n complete = false\n relatedFieldInput.classList.add('box-error')\n relatedFieldInput.focus()\n }\n }\n\n // catch other box error\n if (document.body.querySelector(\".box-error\")) complete = false\n data.specifiedGender = this.state.preferenceFormData.specifiedGender\n }\n\n // Check privacy checkbox\n if (PrivacyPolicyText) {\n const privacyCheckbox = document.body.querySelector(\"#privacy-checkbox\");\n if (privacyCheckbox && !privacyCheckbox.checked) {\n privacyCheckbox.classList.add(\"is-error\");\n complete = false;\n } else {\n privacyCheckbox.classList.remove(\"is-error\");\n }\n }\n\n // API CALL\n if (complete) {\n const url = `/api/sitecore/subscription/${this.props.Endpoint.includes('signup') ? 'signup' : 'updatepreference'}`;\n let response = await axios({\n method: \"POST\",\n url,\n data: data\n });\n\n if (response && response.data) {\n if (this.props.Endpoint.includes('signup')) {\n // signup api response\n if (EmailPreferenceResponse) {\n if (response.data.ApiResponse === 0 || response.data.ApiResponse === 3) {\n //Push selected interests to array if checked\n let categoryList = []\n let categoryCheck = Object.entries(this.state.preferenceFormData.interests)\n let genderCheck = Object.keys(this.state.genderList)\n for (let [interestsID, interestsChecked] of categoryCheck) {\n if (interestsChecked === true && !genderCheck.includes(interestsID)) categoryList.push(document.getElementById(interestsID).value);\n }\n //Set selectedGender value from FormData active Gender\n let selectedGender\n if (this.state.preferenceFormData.specifiedGender === \"\") {\n let genderSelect = Object.entries(this.state.genderList)\n for (let [genderID, genderChecked] of genderSelect) {\n if (genderChecked === true) selectedGender = document.getElementById(genderID).value;\n }\n } else { selectedGender = this.state.preferenceFormData.specifiedGender } // Set selectedGender value from specifiedGender\n //GA tracking - Sign Up module\n // \"Subscription module\" for subscribe\n TagManager.dataLayer({\n dataLayer: {\n event: \"subscribeSubmit\",\n subscribeModule: this.getSubscribeModule(this.props.Endpoint),\n user: {\n details: {\n email: data.emailAddress,\n postcode: data.postcode,\n first_name: data.firstName,\n last_name: data.lastName,\n categories_interested_in: categoryList.join(\", \"),\n gender: selectedGender,\n }\n }\n },\n dataLayerName: \"dataLayer\"\n });\n EmailPreferenceResponse(true, response.data, true)\n this.setState({ ...this.state, responseData: { ...response.data } })\n }\n else if (response.data.ApiResponse === 2) {\n submitButton.classList.toggle('disabled')\n EmailPreferenceResponse(false, response.data, true)\n } else {\n submitButton.classList.toggle('disabled')\n this.setState({ ...this.state, responseData: { ...response.data } })\n }\n }\n if (!IsModal) document.getElementsByTagName(\"body\")[0].classList.remove(\"modal-open\");\n } else { //for update preference\n if (response.data.IsSuccessful) {\n if (EmailPreferenceResponse) {\n EmailPreferenceResponse(true);\n }\n document.getElementsByTagName(\"body\")[0].classList.remove(\"modal-open\");\n }\n }\n }\n\n // Call the submitted callback\n OnSubmitted();\n } else {\n submitButton.classList.toggle('disabled') //enable submit button\n setTimeout(() => {\n let invalidField = document.body.querySelector(\".box-error\")\n if (invalidField) {\n invalidField.scrollIntoView({ block: 'center' });\n }\n }, 250);\n }\n };\n\n handlePreferencesUpdate = (value) => {\n let interestsValue = this.state.preferenceFormData.interests;\n let genderList = this.state.genderList;\n let specifiedGender = \"\"\n for (var list in genderList) {\n // get specifiedGender from input\n if (value.genderValue.includes('+')) {\n let [id, inputValue] = value.genderValue.split('+')\n specifiedGender = inputValue\n if (id.includes('-')) id = id.split('-')[0] // remove split 1234-input id-value\n if (id === list) {\n interestsValue[list] = true\n genderList[list] = true\n } else {\n interestsValue[list] = false\n genderList[list] = false\n }\n } else {\n if (value.genderValue === list) {\n interestsValue[list] = true\n genderList[list] = true\n }\n else {\n interestsValue[list] = false\n genderList[list] = false\n }\n specifiedGender = \"\"\n }\n }\n\n this.setState({\n preferenceFormData: {\n ...this.state.preferenceFormData,\n specifiedGender: specifiedGender,\n interests: interestsValue\n },\n genderList: genderList\n });\n if (!this.props.HideDropdown) {\n const emailPreferenceWrapper = GetAncestorElement(value.element, \"email-preference\");\n if (emailPreferenceWrapper) {\n const buttonList = emailPreferenceWrapper.querySelectorAll(`[id=\"${value.element.id}\"]`);\n for (let i = 0; i < buttonList.length; i++) {\n let buttonElem = buttonList[i];\n if (buttonElem !== value.element) {\n buttonElem.click();\n }\n }\n }\n }\n };\n\n handleCheckboxClick = (event) => {\n let interestsValue = this.state.preferenceFormData.interests;\n const checkboxId = event.target.id;\n const isChecked = event.target.checked;\n interestsValue[checkboxId] = isChecked;\n this.setState({\n preferenceFormData: {\n ...this.state.preferenceFormData,\n interests: interestsValue\n },\n });\n }\n\n hanlePrivacyCheck = (event) => {\n const isChecked = event.target.checked;\n if (isChecked) {\n event.target.classList.remove('is-error');\n } else {\n event.target.classList.add('is-error');\n }\n }\n\n handleScroll = (e) => {\n const dropdownList = e.target.querySelector(\".dropdown-list\");\n if (dropdownList) {\n dropdownList.setAttribute(\"hidden\", true);\n }\n }\n\n renderModalMessage = (responseData) => {\n return (\n <div className=\"modal-button-successmessage\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <path d=\"M0 0h24v24H0z\" />\n <path fill=\"#307a53\" d=\"M9.23 18.317a.997.997 0 0 1-.759.346.997.997 0 0 1-.759-.346l-4.19-4.189a1 1 0 0 1 1.415-1.414l3.534 3.534L19.076 5.643a1 1 0 0 1 1.414 1.414L9.23 18.317z\" stroke=\"#307a53\" strokeWidth=\"2px\" />\n </g>\n </svg>\n <label>{responseData.Message}</label>\n </div>\n )\n\n }\n\n render() {\n const {\n Title = null,\n Description = null,\n ButtonName = null,\n Interests = null,\n GenderDescription = null,\n GenderOptions = null,\n RadioGroupName = null,\n HideDropdown = false,\n EnableRecaptcha = null,\n RecaptchaPublicKey: PublicKey = null,\n RecaptchaPrivateKey: PrivateKey = null,\n PrivacyPolicyText = null,\n } = this.props || {};\n const { verifiedRecaptcha, expiredRecaptcha, load, responseData } = this.state;\n return (\n <div className=\"email-preference\">\n {Title &&\n Title.value &&\n <div className=\"email-preference__header\">\n <Text field={Title} />\n </div>\n }\n <div className={`email-preference__options ${HideDropdown ? \"hide-dropdown\" : \"\"}`}\n onScroll={this.handleScroll}>\n {Description &&\n Description.value &&\n <div className=\"email-preference__description\">\n <Text field={Description} />\n </div>\n }\n {\n (Interests || GenderOptions) &&\n <div className=\"email-preference__interests\">\n {Interests && <Interest interests={Interests} handleCheckboxClick={this.handleCheckboxClick} />}\n {GenderOptions &&\n <div className={`col-12 ${!HideDropdown ? \"has-dropdown\" : \"\"}`}>\n {GenderDescription &&\n GenderDescription.value &&\n <div className=\"email-preference__gender-description\"><Text field={GenderDescription} /></div>\n }\n <div className=\"email-preference__gender-wrapper\">\n <RadioButton\n RadioGroupName={RadioGroupName}\n data={GenderOptions}\n onChange={(genderValue, element) =>\n this.handlePreferencesUpdate({ genderValue, element })\n }\n relatedFieldsValues={this.state.relatedFieldValues}\n setRelatedFieldsValues={(vals) => this.setState({ relatedFieldValues: vals })}\n />\n {!HideDropdown &&\n <CustomDropdown\n data={GenderOptions}\n placeholder={\"Select Gender\"}\n onChange={(genderValue, element) =>\n this.handlePreferencesUpdate({ genderValue, element })\n }\n id=\"email-pref-dropdown\"\n relatedFieldsValues={this.state.relatedFieldValues}\n setRelatedFieldsValues={(vals) => this.setState({ relatedFieldValues: vals })}\n />\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n {load &&\n EnableRecaptcha &&\n EnableRecaptcha.value &&\n PublicKey &&\n PublicKey.value && (\n <div\n className={\n \"form-group form-recaptcha \" +\n (verifiedRecaptcha ? \"verifiedRecaptcha \" : \" \") +\n (expiredRecaptcha ? \"is-required\" : \" \")\n }\n >\n <ReCAPTCHA\n size=\"normal\"\n sitekey={\n PublicKey && PublicKey.value\n ? PublicKey.value\n : \"6LeqAfYUAAAAAGK1oZ1NzfVUFeC4kqJOe16XklGg\"\n }\n onChange={this.recaptchaVerifyResponse}\n onExpired={this.recaptchaExpired}\n asyncScriptOnLoad={this.recaptchaLoaded}\n />\n <div className=\"form-control-validation\">\n <label className=\"text-error\">\n ReCaptcha is required\n </label>\n </div>\n </div>\n )}\n\n {!!PrivacyPolicyText && (\n <div class=\"form-group form-checkbox\">\n <label class=\"email-preference__privacy-checkbox\">\n <input\n type=\"checkbox\" class=\"\" id=\"privacy-checkbox\" name=\"privacy-checkbox\" value=\"agree\"\n required={true}\n onChange={this.hanlePrivacyCheck}\n />\n <div>\n <RichText field={PrivacyPolicyText} />\n <label class=\"text-message text-error\">Concent is required</label>\n </div>\n </label>\n </div>\n )}\n \n <div className={`email-preference__button-container ${this.props.IsModal ? 'modal-button' : ''}`}>\n <button\n className=\"email-preference__button\"\n onClick={(e) => {\n this.handleEmailPreference(e);\n }}\n >\n {ButtonName}\n </button>\n {\n responseData.ApiResponse === 0 && responseData.IsSuccessful && this.props.IsModal && (\n <div className=\"success-message\">\n {this.renderModalMessage(responseData)}\n </div>\n )\n }\n </div>\n {responseData.ApiResponse === 4 && (\n <div>\n <label className=\"text-error\">{responseData.Message}</label>\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default EmailPreference;","import React, { Fragment } from \"react\";\r\nimport errorIcon from \"../../../assets/icons/png/22px/error.png\";\r\n\r\n\r\n\r\nconst SubscribeForm = ({ fields, fieldsStates = {}, fieldsLabels, setFields }) => {\r\n\r\n const validateFormat = (name, value) => {\r\n let emailRegEx = new RegExp(/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/);\r\n let nameRegEx = new RegExp(/^[a-zÀ-ÿ ,.'-]+$/i);\r\n let numRegex = new RegExp(/^[0-9]+$/)\r\n let result = true\r\n\r\n if (value) {\r\n if (name === 'email') result = emailRegEx.test(String(value).toLowerCase())\r\n else if (name === 'postcode') {\r\n if (value.length > 4) result = true\r\n else result = value.length === 4 && numRegex.test(value)\r\n }\r\n else result = nameRegEx.test(String(value).toLowerCase())\r\n }\r\n return result\r\n };\r\n\r\n const validateFields = (name, value) => {\r\n let message = ''\r\n let error\r\n let fieldsArr = fields;\r\n if (!validateFormat(name, value)) {\r\n if (name === 'email') message = \"Please enter a valid email address\";\r\n else if (name === 'postcode') message = \"Please enter a valid postcode\";\r\n else if (name === 'fname') message = \"Please enter a valid first name\"\r\n else if (name === 'lname') message = \"Please enter a valid last name\"\r\n error = true;\r\n }\r\n\r\n for (let i = 0; i < fieldsArr.length; i++) {\r\n if (fieldsArr[i].name === name) {\r\n fieldsArr[i].error = error\r\n fieldsArr[i].message = message\r\n }\r\n }\r\n\r\n setFields({\r\n fields: fieldsArr\r\n })\r\n }\r\n\r\n const handleFormChange = e => {\r\n validateFields(e.target.name, e.target.value)\r\n setFields({\r\n [e.target.name]: e.target.value,\r\n });\r\n };\r\n const renderLabel = (name) => {\r\n const {\r\n FirstNameLabel,\r\n LastNameLabel,\r\n EmailLabel,\r\n PostcodeLabel\r\n } = fieldsLabels || {}\r\n\r\n let label = \"\"\r\n switch (name) {\r\n case 'fname':\r\n label = FirstNameLabel && FirstNameLabel.value ? FirstNameLabel.value : 'First Name'\r\n break;\r\n case 'lname':\r\n label = LastNameLabel && LastNameLabel.value ? LastNameLabel.value : 'Last Name'\r\n break;\r\n case 'email':\r\n label = EmailLabel && EmailLabel.value ? EmailLabel.value : 'Email'\r\n break;\r\n case 'postcode':\r\n label = PostcodeLabel && PostcodeLabel.value ? PostcodeLabel.value : 'Postcode'\r\n break;\r\n default:\r\n break;\r\n }\r\n return label\r\n }\r\n return (\r\n fields.map((field, index) => {\r\n const inputProps = {\r\n type: 'text',\r\n id: field.name,\r\n name: field.name,\r\n className:\r\n \"form-control form-control-lg\" +\r\n (fields[index].error ? \" box-error\" : \"\"),\r\n\r\n required: true,\r\n onChange: e => {\r\n handleFormChange(e)\r\n },\r\n value: fieldsStates[field.name]\r\n }\r\n\r\n if (field.name === 'postcode') {\r\n inputProps.pattern = '\\d'\r\n inputProps.maxLength = '4'\r\n inputProps.onKeyUp = (event) => {\r\n if (/[^0-9]+/.test(event.currentTarget.value)) event.currentTarget.value = event.currentTarget.value.replace(/[^0-9]*/g, \"\")\r\n }\r\n inputProps.pattern = \"[0-9]*\"\r\n }\r\n return <div className=\"form-group\" key={index}>\r\n <input\r\n {...inputProps}\r\n />\r\n <label\r\n className=\"form-control-placeholder\"\r\n htmlFor={field.name}\r\n >\r\n {renderLabel(field.name)}\r\n </label>\r\n {fields[index].error && fields[index].message !== \"\" && (\r\n <Fragment>\r\n <img\r\n src={errorIcon}\r\n className=\"notify-indicator\"\r\n alt=\"notify-indicator\"\r\n />\r\n <label\r\n className={\r\n (fields[index].message ? \"text-message\" : \"\") +\r\n (fields[index].error ? \" text-error\" : \"\")\r\n }\r\n >\r\n {fields[index].message}\r\n </label>\r\n </Fragment>\r\n )}\r\n\r\n </div>\r\n\r\n })\r\n )\r\n}\r\n\r\nexport default SubscribeForm","import React from \"react\";\r\nimport { RichText, Text } from \"@sitecore-jss/sitecore-jss-react\";\r\nimport axios from \"axios\";\r\nimport ReCAPTCHA from \"react-google-recaptcha\";\r\nimport errorIcon from \"../../../../assets/icons/png/22px/error.png\";\r\nimport EmailPreference from \"../../../Common/EmailPreference\";\r\nimport SubscribeForm from \"../../../Common/SubscribeForm/SubscribeForm\";\r\n\r\nclass Newsletter extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n formData: {\r\n pageId: \"\",\r\n dbName: \"\",\r\n fname: \"\",\r\n lname: \"\",\r\n postcode: \"\",\r\n email: \"\",\r\n fields: [\r\n { name: \"fname\", error: false, message: \"\" },\r\n { name: \"lname\", error: false, message: \"\" },\r\n { name: \"email\", error: false, message: \"\" },\r\n { name: \"postcode\", error: false, message: \"\" },\r\n ]\r\n },\r\n emailPrefResp: {\r\n IsSuccessful: false,\r\n Message: \"\",\r\n ApiResponse: null\r\n },\r\n message: \"\",\r\n error: false,\r\n success: false,\r\n modalOpen: false,\r\n // Subscribe recaptcha\r\n subscribeVerifiedRecaptcha: false,\r\n subscribeExpiredRecaptcha: false,\r\n subscribeRecaptchaLoaded: false,\r\n };\r\n }\r\n\r\n subscribeRecaptchaLoaded = () => {\r\n console.log(\"Successful Load Recaptcha - Subscribe\");\r\n this.setState({ subscribeRecaptchaLoaded: true });\r\n };\r\n\r\n subscribeRecaptchaExpired = () => {\r\n this.setState({\r\n subscribeVerifiedRecaptcha: false,\r\n subscribeExpiredRecaptcha: true\r\n });\r\n };\r\n\r\n subscribeRecaptchaVerifyResponse = response => {\r\n if (response) {\r\n this.setState({\r\n subscribeVerifiedRecaptcha: true,\r\n subscribeExpiredRecaptcha: false\r\n });\r\n } else {\r\n this.setState({ subscribeVerifiedRecaptcha: false });\r\n }\r\n };\r\n \r\n validateFormat = value => {\r\n let re = new RegExp(\"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\\\.[a-zA-Z0-9-.]+$\");\r\n return re.test(String(value).toLowerCase());\r\n };\r\n\r\n componentDidMount() {\r\n let contextInfo = window.document.getElementsByName(\"ContextItem\")[0];\r\n let pageId = contextInfo.value;\r\n let dbName = contextInfo.dataset.targetDb;\r\n\r\n this.setState({\r\n ...this.state,\r\n formData: {\r\n ...this.state.formData,\r\n pageId: pageId,\r\n dbName: dbName,\r\n fname: \"\",\r\n lname: \"\",\r\n postcode: \"\",\r\n email: \"\",\r\n }\r\n });\r\n }\r\n\r\n componentDidUpdate() {\r\n if (this.state.modalOpen) {\r\n const modalWrapper = document.querySelector('.modal-wrapper')\r\n if (modalWrapper) {\r\n setTimeout(() => { modalWrapper.classList.add('modal-active') }, 1000)\r\n }\r\n }\r\n }\r\n\r\n subscribe = async () => {\r\n const url = `/api/sitecore/subscription/getuser`;\r\n const { SubscribeEnableRecaptcha } = this.props;\r\n const { pageId, dbName, email: emailAddress } = this.state.formData\r\n\r\n const data = { pageId, dbName, emailAddress }\r\n\r\n if (this.state.formData.email !== \"\") {\r\n\r\n if (SubscribeEnableRecaptcha && SubscribeEnableRecaptcha.value && !this.state.subscribeVerifiedRecaptcha) {\r\n const recaptchaWrapper = document\r\n .querySelector(\".newsletter-wrapper > .row > .col > .form-recaptcha\");\r\n recaptchaWrapper.classList.add(\"is-required\");\r\n\r\n this.setState({ ...this.setState, subscribeExpiredRecaptcha: true })\r\n this.setState({\r\n ...this.state,\r\n message: \"\",\r\n error: false,\r\n success: false,\r\n modalOpen: false\r\n });\r\n } else if (!this.validateFormat(this.state.formData.email)) {\r\n this.setState({\r\n ...this.state,\r\n message: \"Please enter a valid email address\",\r\n error: true,\r\n success: false,\r\n modalOpen: false\r\n });\r\n } else {\r\n let response = await axios({\r\n method: \"POST\",\r\n url,\r\n data: data\r\n });\r\n\r\n if (response && response.data) {\r\n let success, error, modalOpen = false\r\n let message = ''\r\n if (response.data.IsSuccessful) {\r\n success = true\r\n modalOpen = true\r\n }\r\n else {\r\n error = true\r\n message = response.data.Message\r\n }\r\n this.setState({\r\n ...this.state,\r\n message,\r\n error,\r\n success,\r\n modalOpen\r\n });\r\n document.getElementsByTagName(\"body\")[0].classList.add(\"modal-open\");\r\n }\r\n }\r\n\r\n } else {\r\n this.setState({\r\n ...this.state,\r\n message: \"Please enter a valid email address\",\r\n error: true,\r\n success: false\r\n });\r\n }\r\n }\r\n\r\n handleEmailChange = e => {\r\n let message = \"\";\r\n let error = false;\r\n\r\n if (this.state.error && !this.validateFormat(e.target.value)) {\r\n message = \"Please enter a valid email address\";\r\n error = true;\r\n }\r\n\r\n this.setState({\r\n ...this.state,\r\n formData: {\r\n ...this.state.formData,\r\n email: e.target.value\r\n },\r\n message: message,\r\n error: error\r\n });\r\n };\r\n\r\n handlePreferencesResponse = (success, data, submitted) => {\r\n\r\n if (data.ApiResponse === 2 || data.ApiResponse === 5) {\r\n let fieldArrIndex = data.ApiResponse === 5 ? 3 : 2\r\n let fieldArr = this.state.formData.fields\r\n fieldArr[fieldArrIndex].error = true\r\n fieldArr[fieldArrIndex].message = data.Message\r\n this.setState({\r\n ...this.state,\r\n success,\r\n submitted,\r\n emailPrefResp: { ...data },\r\n formData: { ...this.state.formData, fields: fieldArr }\r\n });\r\n } else {\r\n this.setState({\r\n formData: { ...this.state.formData, email: \"\", fname: \"\", lname: \"\", postcode: \"\" },\r\n success,\r\n submitted,\r\n emailPrefResp:\r\n { ...data },\r\n })\r\n if (success) {\r\n const modalWrapper = document.querySelector('.modal-wrapper')\r\n setTimeout(() => { modalWrapper.classList.remove('modal-active') }, 1000)\r\n setTimeout(() => {\r\n this.setState({ modalOpen: false })\r\n document.getElementsByTagName(\"body\")[0].classList.remove(\"modal-open\");\r\n }, 1500)\r\n }\r\n }\r\n };\r\n\r\n handleOnClose = e => {\r\n this.setState({\r\n success: false,\r\n modalOpen: false,\r\n formData: {\r\n ...this.state.formData,\r\n fname: \"\",\r\n lname: \"\",\r\n postcode: \"\",\r\n fields: [\r\n { name: \"fname\", error: false, message: \"\" },\r\n { name: \"lname\", error: false, message: \"\" },\r\n { name: \"email\", error: false, message: \"\" },\r\n { name: \"postcode\", error: false, message: \"\" },\r\n ]\r\n }\r\n });\r\n document.getElementsByTagName(\"body\")[0].classList.remove(\"modal-open\");\r\n };\r\n\r\n updateFieldsState = obj => {\r\n this.setState({ ...this.state, formData: { ...this.state.formData, ...obj } })\r\n }\r\n\r\n render() {\r\n const {\r\n EmailPlaceholder = null,\r\n CentreFormButton = null,\r\n CentreAgreement = null,\r\n EmailPreferenceModalTitle = null,\r\n EmailPreferenceModalDescription = null,\r\n EmailPreferenceModalButton = null,\r\n Interests = null,\r\n GenderGroupLabel = null,\r\n GenderOptions = null,\r\n FirstNameLabel = null,\r\n LastNameLabel = null,\r\n EmailLabel = null,\r\n PostcodeLabel = null,\r\n SubscribeEnableRecaptcha = null,\r\n SubscribePublicKey = null,\r\n EmailEnableRecaptcha = null,\r\n EmailPublicKey = null,\r\n } = this.props;\r\n\r\n const { pageId, dbName, email, fname, lname, postcode, fields } = this.state.formData || {};\r\n const { message, error, modalOpen } = this.state || {};\r\n const { subscribeVerifiedRecaptcha, subscribeExpiredRecaptcha } = this.state;\r\n\r\n const labels = {\r\n FirstNameLabel,\r\n LastNameLabel,\r\n EmailLabel,\r\n PostcodeLabel\r\n }\r\n\r\n const recaptchaEnabled =\r\n SubscribeEnableRecaptcha &&\r\n SubscribeEnableRecaptcha.value &&\r\n SubscribePublicKey &&\r\n SubscribePublicKey.value;\r\n\r\n const fieldStates = { fname, lname, email, postcode }\r\n return (\r\n <div className=\"newsletter-wrapper\">\r\n {EmailPlaceholder &&\r\n EmailPlaceholder.value &&\r\n CentreFormButton &&\r\n CentreFormButton.value && (\r\n <div className=\"row\">\r\n <div className=\"col col-12 col-lg-9 col-md-7\">\r\n <div className=\"form-group\">\r\n <input\r\n type=\"text\"\r\n id=\"footerNewsletterEmail\"\r\n className={\r\n \"form-control form-control-lg\" +\r\n (message ? \" box-message\" : \"\") +\r\n (error ? \" box-error\" : \"\")\r\n }\r\n required\r\n onChange={e => {\r\n this.handleEmailChange(e);\r\n }}\r\n value={email}\r\n />\r\n <label\r\n className=\"form-control-placeholder\"\r\n htmlFor=\"footerNewsletterEmail\"\r\n >\r\n <Text field={EmailPlaceholder} />\r\n </label>\r\n {error && (\r\n <img\r\n src={errorIcon}\r\n className=\"notify-indicator\"\r\n alt=\"notify-indicato\"\r\n />\r\n )}\r\n {message !== \"\" && (\r\n <label\r\n className={\r\n (message ? \"text-message\" : \"\") +\r\n (error ? \" text-error\" : \"\")\r\n }\r\n >\r\n {message}\r\n </label>\r\n )}\r\n </div>\r\n {\r\n recaptchaEnabled && (\r\n <div\r\n className={\r\n \"form-group form-recaptcha \" +\r\n (subscribeVerifiedRecaptcha ? \"verifiedRecaptcha \" : \" \") +\r\n (subscribeExpiredRecaptcha ? \"is-required\" : \" \")\r\n }\r\n >\r\n <ReCAPTCHA\r\n size=\"normal\"\r\n sitekey={\r\n SubscribePublicKey && SubscribePublicKey.value\r\n ? SubscribePublicKey.value\r\n : \"6LeqAfYUAAAAAGK1oZ1NzfVUFeC4kqJOe16XklGg\"\r\n }\r\n onChange={this.subscribeRecaptchaVerifyResponse}\r\n onExpired={this.subscribeRecaptchaExpired}\r\n asyncScriptOnLoad={this.subscribeRecaptchaLoaded}\r\n />\r\n <div className=\"form-control-validation\">\r\n <label className=\"text-error\">\r\n ReCaptcha is required\r\n </label>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n <div className=\"col col-12 col-md-3\">\r\n <button\r\n className=\"newsletter-btn\"\r\n onClick={() => {\r\n this.subscribe();\r\n }}\r\n >\r\n <Text field={CentreFormButton} />\r\n </button>\r\n </div>\r\n </div>\r\n )}\r\n {CentreAgreement && CentreAgreement.value && (\r\n <div className=\"row\">\r\n <div className=\"col newsletter-cb\">\r\n <RichText field={CentreAgreement} />\r\n </div>\r\n </div>\r\n )}\r\n\r\n {modalOpen && (\r\n <div className=\"modal-wrapper\">\r\n <div className=\"container\">\r\n <i className=\"icon icon-close\" onClick={this.handleOnClose} />\r\n {fields.length &&\r\n <div className=\"modal-subscribe-form\">\r\n <div className=\"modal-subscribe-form__header\">\r\n <Text field={EmailPreferenceModalTitle} />\r\n </div>\r\n <div className=\"modal-subscribe-form-group-container\">\r\n <SubscribeForm fields={fields} fieldsStates={fieldStates} setFields={this.updateFieldsState} fieldsLabels={labels} />\r\n </div>\r\n </div>\r\n }\r\n <EmailPreference\r\n PageID={pageId}\r\n DBName={dbName}\r\n EmailAddress={email}\r\n FirstName={fname}\r\n LastName={lname}\r\n Postcode={postcode}\r\n Description={EmailPreferenceModalDescription}\r\n ButtonName={\r\n EmailPreferenceModalButton && EmailPreferenceModalButton.value\r\n ? EmailPreferenceModalButton.value\r\n : \"Done\"\r\n }\r\n Interests={Interests}\r\n GenderDescription={GenderGroupLabel}\r\n GenderOptions={GenderOptions}\r\n RadioGroupName={\"Newsletter-Gender\"}\r\n IsModal={true}\r\n EmailPreferenceResponse={(success, data, submitted) => {\r\n this.handlePreferencesResponse(success, data, submitted)\r\n }}\r\n Container={'newsletter-wrapper'}\r\n Endpoint={'signup-footer'}\r\n EnableRecaptcha={EmailEnableRecaptcha}\r\n RecaptchaPublicKey={EmailPublicKey}\r\n // EnableRecaptcha={SubscribeEnableRecaptcha}\r\n // RecaptchaPublicKey={SubscribePublicKey}\r\n OnSubmitted={() => {\r\n if (recaptchaEnabled) {\r\n window.grecaptcha.reset();\r\n this.setState({\r\n subscribeVerifiedRecaptcha: false,\r\n subscribeExpiredRecaptcha: false,\r\n });\r\n }\r\n }}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default Newsletter;\r\n","import React from \"react\";\nimport { Link, Image } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\n\nconst FeatureGenericContentAdCampaign = props => {\n const {\n LandingPage = null,\n BackgroundColor = null,\n WebBanner = null,\n MobileBanner = null\n } = props.fields || {};\n\n const bgStyle = {\n backgroundColor: BackgroundColor && BackgroundColor.value ? BackgroundColor.value : \"transparent\"\n }\n\n if (\n LandingPage &&\n WebBanner &&\n WebBanner.fields &&\n WebBanner.fields.Image &&\n WebBanner.fields.Image.value &&\n WebBanner.fields.Image.value.src &&\n MobileBanner\n ) {\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"container\">\n <div className={`display-advertising-container-leaderboard \n ${WebBanner.fields.Orientation && WebBanner.fields.Orientation.value === \"Billboard\"\n ? \"billboard\"\n : \"\"}`}\n style={bgStyle}>\n\n <div className=\"display-advertising-image-wrapper-leaderboard\">\n <Link field={LandingPage}>\n {WebBanner.fields.Orientation &&\n WebBanner.fields.Orientation.value ? (\n <Image\n media={{ ...WebBanner.fields.Image.value, src: defaultImg }}\n data-src={WebBanner.fields.Image.value.src}\n className={`display-advertising-image${WebBanner.fields.Orientation.value === \"Super Leaderboard\" ? \"-super lazyload\"\n : WebBanner.fields.Orientation.value === \"Billboard\" ? \"-billboard lazyload\"\n : \"-leaderboard lazyload\"}`}\n />\n ) : (\n <Image\n media={{ ...WebBanner.fields.Image.value, src: defaultImg }}\n data-src={WebBanner.fields.Image.value.src}\n className=\"display-advertising-image-leaderboard lazyload\"\n />\n )}\n </Link>\n </div>\n </div>\n </div>\n {MobileBanner.fields &&\n MobileBanner.fields.Orientation &&\n MobileBanner.fields.Orientation.value && (\n <div>\n {MobileBanner.fields.Orientation.value === \"Square\" ? (\n <div className={\"display-advertising-container-mrec\"} style={bgStyle}>\n <div className=\"display-advertising-image-wrapper-mrec\">\n <Link field={LandingPage}>\n <Image\n media={{ ...MobileBanner.fields.Image.value, src: defaultImg }}\n data-src={MobileBanner.fields.Image.value.src}\n className=\"display-advertising-image-mrec lazyload\"\n />\n </Link>\n </div>\n </div>\n ) : (\n <div className={\"display-advertising-container-lmb\"} style={bgStyle}>\n <div className=\"display-advertising-image-wrapper-lmb\">\n <Link field={LandingPage}>\n <Image\n media={{ ...MobileBanner.fields.Image.value, src: defaultImg }}\n data-src={MobileBanner.fields.Image.value.src}\n className=\"display-advertising-image-lmb lazyload\"\n />\n </Link>\n </div>\n </div>\n )}\n </div>\n )}\n </BaseComponent>\n );\n } else return null;\n};\n\nexport default FeatureGenericContentAdCampaign;\n","import React, { Component } from \"react\";\nimport { Text, RichText } from \"@sitecore-jss/sitecore-jss-react\";\nimport { debounce } from \"lodash\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport GetAncestorElement from \"../../../Common/Helper/GetAncestorElement\";\n\nclass FeatureGenericContentConsumerFAQ extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showClearButton: false,\n faqList: {}\n };\n this.searchTerm = React.createRef();\n }\n\n componentDidMount() {\n const {\n FAQGroups = []\n } = this.props.fields || {};\n if (FAQGroups && FAQGroups.length > 0) {\n this.setState({\n faqList: FAQGroups\n })\n }\n }\n\n handleClickOption = (event) => {\n const element = event.target;\n const faqOptionListContainer = GetAncestorElement(element, \"faq__group--content__item\");\n if (faqOptionListContainer) {\n faqOptionListContainer.classList.toggle(\"is-active\");\n }\n }\n\n handleClickCollapse = (event) => {\n const element = event.target;\n const faqContainer = GetAncestorElement(element, \"faq\");\n const faqOptionList = faqContainer.querySelectorAll(\".faq__group--content__item\");\n if (faqOptionList) {\n for (let i = 0; i < faqOptionList.length; i++) {\n let faqOption = faqOptionList[i];\n faqOption.classList.remove(\"is-active\");\n }\n }\n }\n\n handleClickExpand = (event) => {\n const element = event.target;\n const faqContainer = GetAncestorElement(element, \"faq\");\n const faqOptionList = faqContainer.querySelectorAll(\".faq__group--content__item\");\n if (faqOptionList) {\n for (let i = 0; i < faqOptionList.length; i++) {\n let faqOption = faqOptionList[i];\n faqOption.classList.add(\"is-active\");\n }\n }\n }\n\n handleSearchFilter = event => {\n const {\n FAQGroups = {}\n } = this.props.fields || {};\n let searchFaqList = [];\n const searchTerm = this.searchTerm.current;\n if (searchTerm && searchTerm.value !== \"\") {\n let replaceSpecialChar = searchTerm.value.replace(/[-[\\]{}()*+!<=:?.\\/\\\\^$|#\\s,]/g, '\\\\$&');\n const searchPattern = new RegExp(replaceSpecialChar.toLowerCase());\n FAQGroups.map((itemGroup, index) => {\n let groupOption = {}\n let hasSearch = false\n const {\n Name = null,\n FAQs = null,\n } = itemGroup.fields;\n\n groupOption = {\n \"fields\": {\n \"Name\": {\n \"value\": Name.value\n },\n \"FAQs\": [\n ]\n }\n }\n FAQs.map((itemOption, index) => {\n const {\n Question,\n Answer\n } = itemOption.fields\n let optionList;\n if (searchPattern.test(Question.value.toLowerCase())) {\n let regEx = new RegExp(\"(\" + replaceSpecialChar + \")\", \"gi\");\n let replaceMask = `<span class=\"faq__group--content__item--mask\">$1</span>`;\n const replaceQuestion = Question.value.replace(regEx, replaceMask);\n optionList = {\n \"fields\": {\n \"Question\": {\n \"value\": replaceQuestion\n },\n \"Answer\": {\n \"value\": Answer.value\n }\n }\n }\n groupOption.fields.FAQs.push(optionList);\n hasSearch = true;\n }\n })\n if (hasSearch) {\n searchFaqList.push(groupOption);\n }\n })\n this.setState({\n ...this.state,\n showClearButton: true,\n faqList: searchFaqList\n });\n } else {\n this.setState({\n ...this.state,\n showClearButton: false,\n faqList: FAQGroups\n });\n }\n };\n\n handleClearButton = (faqGroup) => {\n this.searchTerm.current.value = \"\";\n this.setState({\n ...this.state,\n showClearButton: false,\n faqList: faqGroup\n });\n };\n\n renderFAQ = () => {\n const {\n faqList\n } = this.state;\n const {\n NoResultsText = null\n } = this.props.fields || {};\n let faqOptionLayout;\n if (faqList && faqList.length > 0) {\n\n faqOptionLayout = faqList.map((item, index) => {\n const {\n Name = null,\n FAQs = null,\n } = item.fields;\n\n return (\n <div className=\"faq__group\" key={Name.value + index}>\n <div className=\"row\">\n <div className=\"col-12 col-md-3\">\n <div className=\"faq__group--label\">\n <Text field={Name} />\n </div>\n </div>\n <div className=\"col-12 col-md-9\">\n <div className=\"faq__group--content\">\n {FAQs &&\n FAQs.length > 0 &&\n FAQs.map((item, index) => {\n const {\n Question = null,\n Answer = null\n } = item.fields;\n let faqContentLayout;\n if (Question && Question.value && Answer && Answer.value) {\n faqContentLayout =\n <div className=\"faq__group--content__item\" key={Question.value + index}>\n <button className=\"faq__group--content__item--btn\"\n onClick={this.handleClickOption}>\n <RichText field={Question} />\n </button>\n <div className=\"faq__group--content__item--description\">\n <RichText field={Answer} />\n </div>\n </div>\n }\n return faqContentLayout;\n })\n }\n </div>\n </div>\n </div>\n </div >\n )\n })\n } else {\n faqOptionLayout =\n <div className=\"faq__group--noresult\">\n {NoResultsText && NoResultsText.value ?\n <Text field={NoResultsText} /> :\n \"No Result\"\n }\n </div>\n }\n\n return faqOptionLayout;\n }\n render() {\n const {\n SearchPlaceholder = null,\n FAQGroups = [],\n } = this.props.fields || {};\n return (\n <div className=\"faq font-regular\">\n {FAQGroups &&\n FAQGroups.length > 0 &&\n <BaseComponent margin=\"standard\">\n <div className=\"container\">\n <div className=\"faq__search\">\n <input\n className=\"faq__search--box\"\n type=\"search\"\n placeholder={SearchPlaceholder.value}\n ref={this.searchTerm}\n onChange={debounce(e => {\n this.handleSearchFilter(e);\n }, 1000)}\n />\n {\n this.state.showClearButton &&\n <button\n className=\"faq__search--clear\"\n onClick={() => this.handleClearButton(FAQGroups)}>\n Clear\n </button>\n }\n </div>\n <div className=\"faq__btn\">\n <button className=\"faq__btn--button\"\n onClick={this.handleClickCollapse}>\n <i className=\"icon icon-collapse\" />\n <span>Collapse all</span>\n </button>\n <button className=\"faq__btn--button\"\n onClick={this.handleClickExpand}>\n <i className=\"icon icon-expand-2\" />\n <span>Expand all</span>\n </button>\n </div>\n <div className=\"faq__group--wrapper\">\n {this.renderFAQ()}\n </div>\n </div>\n </BaseComponent>\n }\n </div>\n );\n }\n}\n\nexport default FeatureGenericContentConsumerFAQ;\n","import React, { Component } from \"react\";\nimport { Text, RichText } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport GetAncestorElement from \"../../../Common/Helper/GetAncestorElement\";\n\nclass FeatureGenericContentConsumerFAQBlock extends Component {\n constructor(props) {\n super(props);\n\n }\n\n componentDidMount() {\n }\n\n handleClickOption = (event) => {\n const element = event.target;\n const faqOptionListContainer = GetAncestorElement(element, \"faq-block__group--content__item\");\n if (faqOptionListContainer) {\n faqOptionListContainer.classList.toggle(\"is-active\");\n }\n }\n\n handleClickCollapse = (event) => {\n const element = event.target;\n const faqContainer = GetAncestorElement(element, \"faq-block\");\n const faqOptionList = faqContainer.querySelectorAll(\".faq-block__group--content__item\");\n if (faqOptionList) {\n for (let i = 0; i < faqOptionList.length; i++) {\n let faqOption = faqOptionList[i];\n faqOption.classList.remove(\"is-active\");\n }\n }\n }\n\n handleClickExpand = (event) => {\n const element = event.target;\n const faqContainer = GetAncestorElement(element, \"faq-block\");\n const faqOptionList = faqContainer.querySelectorAll(\".faq-block__group--content__item\");\n if (faqOptionList) {\n for (let i = 0; i < faqOptionList.length; i++) {\n let faqOption = faqOptionList[i];\n faqOption.classList.add(\"is-active\");\n }\n }\n }\n\n renderFAQ = (faqList) => {\n let faqOptionLayout;\n if (faqList && faqList.length > 0) {\n faqOptionLayout =\n <div className=\"faq-block__group\">\n <div className=\"faq-block__group--content\">\n {faqList.map((item, index) => {\n const {\n Question = null,\n Answer = null\n } = item.fields;\n let faqContentLayout;\n if (Question && Question.value && Answer && Answer.value) {\n faqContentLayout =\n <div className=\"faq-block__group--content__item\" key={Question.value + index}>\n <button className=\"faq-block__group--content__item--btn\"\n onClick={this.handleClickOption}>\n <RichText field={Question} />\n </button>\n <div className=\"faq-block__group--content__item--description\">\n <RichText field={Answer} />\n </div>\n </div>\n }\n return faqContentLayout;\n })\n }\n </div>\n </div >\n }\n\n return faqOptionLayout;\n }\n render() {\n const {\n Title = null,\n FAQs = [],\n } = this.props.fields || {};\n return (\n <div className=\"faq-block font-regular\">\n {FAQs &&\n FAQs.length > 0 &&\n <BaseComponent margin=\"standard\">\n <div className=\"container\">\n <div className=\"row\">\n <div className=\"col-12 col-md-6\">\n <div className=\"faq-block__title\">\n <Text field={Title} />\n </div>\n </div>\n <div className=\"col-12 col-md-6\">\n <div className=\"faq-block__btn\">\n <button className=\"faq-block__btn--button\"\n onClick={this.handleClickCollapse}>\n <i className=\"icon icon-collapse\" />\n <span>Collapse all</span>\n </button>\n <button className=\"faq-block__btn--button\"\n onClick={this.handleClickExpand}>\n <i className=\"icon icon-expand-2\" />\n <span>Expand all</span>\n </button>\n </div>\n </div>\n </div>\n <div className=\"faq-block__group--wrapper\">\n {this.renderFAQ(FAQs)}\n </div>\n </div>\n </BaseComponent>\n }\n </div>\n );\n }\n}\n\nexport default FeatureGenericContentConsumerFAQBlock;\n","import React from \"react\";\nimport { Text, Image } from \"@sitecore-jss/sitecore-jss-react\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\n\nconst FeatureGenericContentGeneralNote = props => {\n const { NoteList = null } = props.fields || {};\n\n if (NoteList && NoteList.length) {\n return (\n <div className=\"genericcontent-generalnote-container\">\n <div className=\"content-wrapper\">\n {NoteList.map((item, index) => {\n const {\n Icon,\n IconUrl,\n IconAltText,\n Title,\n Description\n } = item.fields;\n return (\n <div key={`myId-${index}`} className=\"content-item\">\n <div className=\"item-heading\">\n <div className=\"heading-icon\">\n <Image\n media={{\n ...(IconUrl.value || Icon.value.src),\n src: defaultImg,\n alt:\n IconAltText && IconAltText.value\n ? IconAltText.value\n : \"\"\n }}\n data-src={IconUrl.value || Icon.value.src}\n className=\"img-fluid lazyload\"\n />\n </div>\n <div className=\"heading-text\">\n <Text field={Title} />\n </div>\n </div>\n <div className=\"item-description\">\n <Text field={Description} />\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n } else return null;\n};\nexport default FeatureGenericContentGeneralNote;\n","import React from \"react\";\nimport { Text, Image, RichText } from \"@sitecore-jss/sitecore-jss-react\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\nimport Details from \"../../../Common/Details\";\n\nconst FeatureGenericContentGeneralSection = props => {\n const { SectionList: SectionList = null } = props.fields;\n\n if (SectionList && SectionList.length) {\n return (\n <div className=\"genericcontent-generalsection-container\">\n <div className=\"content-wrapper\">\n {SectionList.map((item, index) => {\n let {\n Icon: Icon = null,\n Title: Title = null,\n Description: Description = null,\n DirectionLink: DirectionLink = null,\n DirectionLabel: DirectionLabel = null,\n DirectionIcon: DirectionIcon = null\n } = item.fields;\n return (\n <div key={`myId-${index}`} className=\"content-item\">\n <div className=\"item-heading\">\n <div className=\"heading-icon\">\n <Image\n media={{ ...Icon.value, src: defaultImg }}\n data-src={Icon.value.src}\n className=\"lazyload\"\n />\n </div>\n <div className=\"heading-text\">\n <Text field={Title} />\n </div>\n </div>\n <RichText className=\"item-description\" field={Description} />\n {DirectionLink &&\n DirectionLink.value &&\n DirectionLabel &&\n DirectionLabel.value && (\n <div className=\"link\">\n <Details\n iconValue=\"location\"\n linkUrl={DirectionLink && DirectionLink.value}\n linkName={DirectionLabel}\n size=\"24\"\n />\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n } else return null;\n};\nexport default FeatureGenericContentGeneralSection;\n","import React from \"react\";\nimport { Text, Link } from \"@sitecore-jss/sitecore-jss-react\";\nimport Newsletter from \"../../Forms/Newsletter\";\n\nconst FeatureGenericContentGlobalFooter = props => {\n const {\n FootnoteLinks: FootnoteLinks = null,\n SocialLinks: SocialLinks = null,\n VisitLinks: VisitLinks = null,\n CentreText: CentreText = null,\n CentreAddress: CentreAddress = null,\n ViewOnMap: ViewOnMap = null,\n MiscLogoUrl = null,\n MiscLogoLink = null,\n } = props.fields || {};\n\n const {\n SubscribeTitle = null,\n EmailPlaceholder = null,\n CentreFormButton = null,\n CentreAgreement = null,\n PublicKey: SubscribePublicKey = null,\n EnableRecaptcha: SubscribeEnableRecaptcha = null,\n PrivateKey: SubscribePrivateKey = null,\n } = props.fields.SubscribeForm.fields || {};\n\n const {\n EmailPreferenceModalTitle = null,\n EmailPreferenceModalDescription = null,\n EmailPreferenceModalButton = null,\n Interests = null,\n GenderGroupLabel = null,\n GenderOptions = null,\n FirstNameLabel = null,\n LastNameLabel = null,\n EmailLabel = null,\n PostcodeLabel = null,\n PublicKey: EmailPublicKey = null, \n EnableRecaptcha: EmailEnableRecaptcha = null, \n PrivateKey: EmailPrivateKey = null, \n } = props.fields.EmailPreferenceModal.fields || {};\n\n let footerLayout = \"\";\n\n if (props.params.pageName !== \"Centre Map\") {\n footerLayout =\n <div className=\"globalfooter-wrapper\">\n <div className=\"container\">\n <div className=\"row\">\n <div className=\"col col-12 col-xl-6 col-lg-5 \">\n <div className=\"heading\">\n <Text field={CentreText} />\n </div>\n <div className=\"row\">\n {/* ---------- CENTRE PAGES ---------- */}\n <div className=\"col col-12 col-md-6 centre-pages\">\n {VisitLinks &&\n VisitLinks.length &&\n VisitLinks.map((item, index) => {\n let {\n VisitLink: VisitLink = null,\n LinkName: LinkName = null\n } = item.fields || {};\n let visitLinksLayout = null;\n if (\n VisitLink &&\n VisitLink.value &&\n VisitLink.value.href &&\n LinkName &&\n LinkName.value\n ) {\n visitLinksLayout = (\n <div className=\"item\" key={`myId-${index}`}>\n <a {...VisitLink.value}>\n <Text field={LinkName} />\n </a>\n </div>\n );\n }\n return visitLinksLayout;\n })}\n </div>\n {/* ---------- CENTRE INFO ---------- */}\n <div className=\"col col-12 col-xl-5 col-md-6 centre-location\">\n <div className=\"centre-address\">\n <Text field={CentreAddress} />\n </div>\n <div className=\"centre-map\">\n <i className=\"icon icon-location\" />\n <Link field={ViewOnMap} />\n </div>\n\n {/* ---------- MISC INFO---------- */}\n {MiscLogoUrl && MiscLogoUrl.value &&\n MiscLogoLink && MiscLogoLink.value && MiscLogoLink.value.href &&\n <div className=\"misc-url\">\n <a\n {...MiscLogoLink.value}\n href={MiscLogoLink.value.href + MiscLogoLink.value.querystring}\n >\n <img src={MiscLogoUrl.value} alt={\"Misc Logo Alt\"} />\n <span>{MiscLogoLink.value.text}</span>\n </a>\n </div>\n }\n </div>\n </div>\n </div>\n <div className=\"col\">\n {/* ---------- SUBSCRIBE FORM ---------- */}\n\n {SubscribeTitle && SubscribeTitle.value && (\n <div className=\"footer-desc\">\n <Text field={SubscribeTitle} />\n </div>\n )}\n <Newsletter\n EmailPlaceholder={EmailPlaceholder}\n CentreFormButton={CentreFormButton}\n CentreAgreement={CentreAgreement}\n EmailPreferenceModalTitle={EmailPreferenceModalTitle}\n EmailPreferenceModalDescription={EmailPreferenceModalDescription}\n EmailPreferenceModalButton={EmailPreferenceModalButton}\n Interests={Interests}\n GenderGroupLabel={GenderGroupLabel}\n FirstNameLabel={FirstNameLabel}\n LastNameLabel={LastNameLabel}\n EmailLabel={EmailLabel}\n PostcodeLabel={PostcodeLabel}\n GenderOptions={GenderOptions}\n SubscribeEnableRecaptcha={SubscribeEnableRecaptcha}\n SubscribePublicKey={SubscribePublicKey}\n EmailEnableRecaptcha={EmailEnableRecaptcha}\n EmailPublicKey={EmailPublicKey}\n />\n {/* ---------- SOCIAL MEDIA LINKS ---------- */}\n {SocialLinks && SocialLinks.length && (\n <div className=\"centresocial\">\n <div className=\"row no-gutters justify-content-md-start\">\n {SocialLinks &&\n SocialLinks.map((item, index) => {\n let {\n SocialLink: SocialLink = null,\n Icon: Icon = null\n } = item.fields;\n let socialLinkLayout = null;\n if (\n Icon &&\n Icon.value &&\n SocialLink &&\n SocialLink.value &&\n SocialLink.value.href\n ) {\n socialLinkLayout = (\n <div className=\"col col-auto\" key={`myId-${index}`}>\n <a {...SocialLink.value}>\n <i className={`icon icon-${Icon.value}`} />\n </a>\n </div>\n );\n }\n return socialLinkLayout;\n })}\n </div>\n </div>\n )}\n </div>\n </div>\n {/* ---------- CENTRE LINKS ---------- */}\n {FootnoteLinks && FootnoteLinks.length && (\n <div className=\"centrelink\">\n <div className=\"row no-gutters\">\n {FootnoteLinks &&\n FootnoteLinks.map((item, index) => {\n let {\n FootNoteLink: FootNoteLink = null,\n LinkName: LinkName = null\n } = item.fields || {};\n let footnoteLinkLayout = null;\n if (FootNoteLink.value.href && LinkName.value) {\n footnoteLinkLayout = (\n <div key={`myId-${index}`} className=\"col-auto\">\n <a {...FootNoteLink.value}>\n <Text field={LinkName} />\n </a>\n <a {...FootNoteLink.value} className=\"no-underline\">\n <i className=\"icon icon-external ml-2\" />\n </a>\n </div>\n );\n }\n return footnoteLinkLayout;\n })}\n </div>\n </div>\n )}\n </div>\n </div>\n }\n\n return footerLayout;\n};\n\nexport default FeatureGenericContentGlobalFooter;\n","import React from \"react\";\r\n\r\nconst HeroVideo = props => {\r\n const {\r\n data,\r\n hasControls = false,\r\n isMute = false,\r\n isLoop = false,\r\n isAutoplay = false\r\n } = props;\r\n\r\n return (\r\n <div className=\"video\">\r\n <div className=\"content\">\r\n <video\r\n controls={hasControls}\r\n autoPlay={isAutoplay}\r\n loop={isLoop}\r\n muted={isMute}\r\n playsInline={isAutoplay}\r\n >\r\n <source src={data} type=\"video/mp4\" />\r\n <source src={data} type=\"video/ogg\" />\r\n Your browser does not support the video tag.\r\n </video>\r\n </div>\r\n </div>\r\n );\r\n};\r\nexport default HeroVideo;\r\n","import React from \"react\";\nimport { Image, Text } from \"@sitecore-jss/sitecore-jss-react\";\nimport Badge from \"../../../Common/Badge\";\nimport HeroVideo from \"../../../Common/Video\";\nimport defaultImg from \"../../../../assets/img/placeholders/transparent.png\";\n\nconst FeatureGenericContentHero = props => {\n const {\n StartDate: startDate = null,\n EndDate: endDate = null,\n HeroImage: heroImage = null,\n TargetUrl: targetUrl = null,\n HeroVideo: heroVideo = null,\n Title: title = null,\n PromotionType: promotionType = null,\n } = props.fields || {};\n\n const getBadge = () => {\n if (startDate && startDate.value) {\n return (\n <div className=\"genericcontent-hero-badge\">\n <Badge\n type=\"hero\"\n startDate={startDate.value}\n endDate={endDate && endDate.value ? endDate.value : \"\"}\n />\n </div>\n );\n } else {\n return null;\n }\n };\n\n const getTitle = () => {\n if (title && title.value) {\n return (\n <div className=\"row\">\n <div className=\"col-12 col-lg-9 col-xl-8\">\n <div className=\"genericcontent-herodescription-wrapper\">\n {promotionType &&\n promotionType.value &&\n <div className=\"promotions-type\">\n {targetUrl && targetUrl.value ? (\n <a href={targetUrl.value}>\n <Text field={promotionType} />\n </a>\n ) : (\n <Text field={promotionType} />\n )}\n </div>\n }\n <div className=\"promotions-name\">\n {targetUrl && targetUrl.value ? (\n <a href={targetUrl.value}>\n <Text field={title} />\n </a>\n ) : (\n <Text field={title} />\n )}\n </div>\n </div>\n </div>\n </div>\n );\n } else return null;\n };\n\n if (heroVideo && heroVideo.value) {\n return (\n <div className={`genericcontent-hero ${promotionType && promotionType.value ? \"has-promotion\" : \"\"}`}>\n <div className=\"container\">\n <div className=\"animation-range\">\n <div className=\"genericcontent-hero-container\">\n <div className=\"hero-wrapper\">\n <HeroVideo data={heroVideo.value} \n hasControls={promotionType && promotionType.value ? false : true}\n isMute={promotionType && promotionType.value ? true : false}\n isLoop={promotionType && promotionType.value ? true : false}\n isAutoplay={promotionType && promotionType.value ? true : false}\n />\n </div>\n </div>\n {getTitle()}\n </div>\n </div>\n </div>\n );\n } else if (heroImage && heroImage.value && heroImage.value.src) {\n return (\n <div className={`genericcontent-hero ${promotionType && promotionType.value ? \"has-promotion\" : \"\"}`}>\n <div className=\"container\">\n <div className=\"animation-range\">\n <div className=\"genericcontent-hero-container\">\n <div className=\"hero-wrapper\">\n {targetUrl && targetUrl.value ? (\n <a href={targetUrl.value}>\n <Image\n media={{ ...heroImage.value, src: defaultImg }}\n data-src={heroImage.value.src}\n className=\"hero-img lazyload\"\n />\n </a>\n ) : (\n <Image\n media={{ ...heroImage.value, src: defaultImg }}\n data-src={heroImage.value.src}\n className=\"hero-img lazyload\"\n />\n )}\n </div>\n {getBadge()}\n </div>\n {getTitle()}\n </div>\n </div>\n </div>\n );\n } else {\n return <div className=\"genericcontent-hero-empty\"></div>;\n }\n};\n\nexport default FeatureGenericContentHero;\n","import React from \"react\";\nimport { Text, RichText } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport Details from \"../../../Common/Details\";\n\nconst FeatureGenericContentHeroDescription = props => {\n let {\n PromotionCategoryTag: PromotionCategoryTag = null,\n PromotionName: PromotionName = null,\n PromotionSummary: PromotionSummary = null,\n PromotionLink: PromotionLink = null,\n Location: Location = null,\n LocationLink: LocationLink = null,\n ScheduleTime: ScheduleTime = null,\n HidePublishDate: HidePublishDate = null\n } = props.fields;\n\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"genericcontent-herodescription-wrapper\">\n {/* <div className=\"promotions-category\">\n <Text field={PromotionCategoryTag} />\n </div>\n <div className=\"promotions-name\">\n {PromotionLink && PromotionLink.value ? (\n <a href={PromotionLink.value}>\n <Text field={PromotionName} />\n </a>\n ) : (\n <Text field={PromotionName} />\n )}\n </div> */}\n {PromotionSummary && PromotionSummary.value && (\n <div className=\"promotions-summary\">\n <RichText field={PromotionSummary} />\n </div>\n )}\n {Location && Location.value && (\n <Details\n iconValue=\"location\"\n linkUrl={LocationLink && LocationLink.value}\n linkName={Location}\n size=\"24\"\n />\n )}\n {HidePublishDate && !HidePublishDate.value && ScheduleTime && ScheduleTime.value && (\n <Details iconValue=\"time\" linkName={ScheduleTime} size=\"24\" />\n )}\n </div>\n </BaseComponent>\n );\n};\nexport default FeatureGenericContentHeroDescription;\n","import React, { useEffect, useState } from 'react';\r\nimport { Text, RichText } from \"@sitecore-jss/sitecore-jss-react\";\r\nimport Badge from \"../../../Common/Badge\";\r\nimport HeroVideo from \"../../../Common/Video\";\r\nimport defaultImg from \"../../../../assets/img/placeholders/transparent.png\";\r\nimport BaseComponent from \"../../../Base/BaseComponent\";\r\nimport Details from \"../../../Common/Details\";\r\nimport Flickity from \"react-flickity-component\";\r\n\r\nconst FeatureGenericContentHomepageHero = props => {\r\n const {\r\n Interval: Interval = null,\r\n FeaturedHero: FeaturedHero = null,\r\n } = props.fields || {};\r\n\r\n const [flkty, setFlkty] = useState(null)\r\n\r\n useEffect(() => {\r\n if (flkty) {\r\n flkty.on('pointerUp', () => {\r\n flkty.player.play()\r\n })\r\n }\r\n }, [flkty])\r\n\r\n const flickityOptions = {\r\n autoPlay: Interval && Interval.value ? (Interval.value * 1000) : 5000,\r\n imagesLoaded: true,\r\n pageDots: false,\r\n prevNextButtons: FeaturedHero.length > 1,\r\n wrapAround: true,\r\n draggable: false,\r\n selectedAttraction: 0.01,\r\n adaptiveHeight: true,\r\n accessibility: false,\r\n pauseAutoPlayOnHover: false,\r\n cellAlign: 'center',\r\n initialIndex: 0,\r\n };\r\n\r\n return (\r\n <div className=\"generic-homepagehero\" style={{ overflowX: 'hidden', overflowY: 'hidden' }}>\r\n {FeaturedHero && FeaturedHero.length > 0 && (\r\n <Flickity className=\"carousel\" options={flickityOptions} flickityRef={ref => setFlkty(ref)} reloadOnUpdate static>\r\n {FeaturedHero.map((item, index) => {\r\n const {\r\n StartDate: startDate = null,\r\n EndDate: endDate = null,\r\n HeroImage: heroImage = null,\r\n TargetUrl: targetUrl = null,\r\n HeroVideo: heroVideo = null,\r\n Title: title = null,\r\n PromotionType: promotionType = null,\r\n PromotionCategoryTag: PromotionCategoryTag = null,\r\n PromotionName: PromotionName = null,\r\n PromotionSummary: PromotionSummary = null,\r\n PromotionLink: PromotionLink = null,\r\n Location: Location = null,\r\n LocationLink: LocationLink = null,\r\n ScheduleTime: ScheduleTime = null,\r\n HidePublishDate: HidePublishDate = null,\r\n CTAButtonText: CTAButtonText = null,\r\n } = item.fields || {};\r\n\r\n const getTitle = () => {\r\n if (title && title.value) {\r\n return (\r\n <div className=\"row\">\r\n <div className=\"col-12 col-lg-9 col-xl-8\">\r\n <div className=\"genericcontent-herodescription-wrapper\">\r\n {promotionType &&\r\n promotionType.value &&\r\n <div className=\"promotions-type\">\r\n {targetUrl && targetUrl.value ? (\r\n <a href={targetUrl.value}>\r\n <Text field={promotionType} />\r\n </a>\r\n ) : (\r\n <Text field={promotionType} />\r\n )}\r\n </div>\r\n }\r\n <div className=\"promotions-name\">\r\n {targetUrl && targetUrl.value ? (\r\n <a href={targetUrl.value}>\r\n <Text field={title} />\r\n </a>\r\n ) : (\r\n <Text field={title} />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n } else return null;\r\n };\r\n\r\n const getBadge = () => {\r\n if (startDate && startDate.value) {\r\n return (\r\n <div className=\"genericcontent-hero-badge\">\r\n <Badge\r\n type=\"hero\"\r\n startDate={startDate.value}\r\n endDate={endDate && endDate.value ? endDate.value : \"\"}\r\n />\r\n </div>\r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const getBannerDescription = () => {\r\n return (\r\n <div className=\"container\">\r\n <BaseComponent margin=\"standard\">\r\n <div className=\"two-column-layout two-column-layout--left\">\r\n <div className=\"genericcontent-herodescription-wrapper\">\r\n {PromotionSummary && PromotionSummary.value && (\r\n <div className='promotions-wrapper'>\r\n <div className=\"col-12 col-lg-9 col-xl-8 promotions-summary\">\r\n <RichText className='promotions-summary-text'\r\n field={PromotionSummary} />\r\n {Location && Location.value && (\r\n <Details\r\n iconValue=\"location\"\r\n linkUrl={LocationLink && LocationLink.value}\r\n linkName={Location}\r\n size=\"24\"\r\n />\r\n )}\r\n {HidePublishDate && !HidePublishDate.value && ScheduleTime && ScheduleTime.value && (\r\n <Details iconValue=\"time\" linkName={ScheduleTime} size=\"24\" />\r\n )}\r\n </div>\r\n {CTAButtonText && CTAButtonText.value && (\r\n <a className='btn primary-btn banner-btn' href={targetUrl.value}><Text field={CTAButtonText} /></a>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </BaseComponent>\r\n </div>\r\n )\r\n }\r\n\r\n if (heroVideo && heroVideo.value) {\r\n return (\r\n <div key={\"homepage-hero\" + index} className={`genericcontent-hero ${promotionType && promotionType.value ? \"has-promotion\" : \"\"}`}>\r\n <div className=\"container\">\r\n <div className=\"animation-range\">\r\n <div className=\"genericcontent-hero-container\">\r\n <div className=\"hero-wrapper\">\r\n <HeroVideo data={heroVideo.value}\r\n hasControls={false}\r\n isMute={true}\r\n isLoop={true}\r\n isAutoplay={true}\r\n />\r\n </div>\r\n </div>\r\n {getTitle()}\r\n </div>\r\n </div>\r\n {getBannerDescription()}\r\n </div>\r\n );\r\n } else if (heroImage && heroImage.value && heroImage.value.src) {\r\n return (\r\n <div key={\"homepage-hero\" + index} className={`genericcontent-hero ${promotionType && promotionType.value ? \"has-promotion\" : \"\"}`}>\r\n <div className=\"container\">\r\n <div className=\"animation-range\">\r\n <div className=\"genericcontent-hero-container\">\r\n <div className=\"hero-wrapper\">\r\n {targetUrl && targetUrl.value ? (\r\n <a href={targetUrl.value}>\r\n <img\r\n src={heroImage && heroImage.value && heroImage.value.src ? heroImage.value.src : defaultImg}\r\n className=\"carousel-cell\"\r\n key={`carousel${index}`}\r\n alt={heroImage.value && heroImage.value.alt ? heroImage.value.alt : \"carousel_image\"}\r\n />\r\n </a>\r\n ) : (\r\n <img\r\n src={heroImage && heroImage.value && heroImage.value.src ? heroImage.value.src : defaultImg}\r\n className=\"carousel-cell\"\r\n key={`carousel${index}`}\r\n alt={heroImage.value && heroImage.value.alt ? heroImage.value.alt : \"carousel_image\"}\r\n />\r\n )}\r\n </div>\r\n {getBadge()}\r\n </div>\r\n {getTitle()}\r\n </div>\r\n </div>\r\n {getBannerDescription()}\r\n </div>\r\n );\r\n } else {\r\n return (\r\n <div key={\"homepage-hero\" + index} className=\"genericcontent-hero-empty\">\r\n {getBannerDescription()}\r\n </div>\r\n );\r\n }\r\n })}\r\n </Flickity>\r\n )}\r\n </div>)\r\n};\r\n\r\nexport default FeatureGenericContentHomepageHero;\r\n","import React from \"react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\n\nconst FeatureGenericContentHomeQuickLinks = props => {\n const { Links: links = null } = (props.quickLinks ? props.quickLinks : props.fields) || {};\n return (\n <div className=\"homequicklinks-container\">\n {props.quickLinks &&\n <div className=\"homequicklinks-container-navigation\">\n {links &&\n links.length !== undefined &&\n links.map((item, index) => {\n const {\n LinkIcon: LinkIcon = null,\n LinkTarget: LinkTarget = null\n } = item.fields;\n return (\n <span key={`liID-${index}`}>\n <div className=\"item\">\n <a href={LinkTarget.value.href}\n title={LinkTarget.value.title}\n target={LinkTarget.value.target} >\n <i className={`icon icon-${LinkIcon.value} main`} />\n {LinkTarget.value.text}\n </a>\n </div>\n </span>\n );\n })}\n </div>\n }\n\n\n {props.fields &&\n <BaseComponent margin=\"standard\">\n <div className=\"content-list\">\n <ul>\n {links &&\n links.length !== undefined &&\n links.map((item, index) => {\n const {\n LinkIcon: LinkIcon = null,\n LinkTarget: LinkTarget = null\n } = item.fields;\n return (\n <li key={`liID-${index}`}>\n <div className=\"item\">\n <a href={LinkTarget.value.href}\n title={LinkTarget.value.title}\n target={LinkTarget.value.target} >\n <i className={`icon icon-${LinkIcon.value} main`} />\n <span>{LinkTarget.value.text}</span>\n <i className=\"icon icon-arrow-right\" />\n </a>\n </div>\n </li>\n );\n })}\n </ul>\n </div>\n <div className=\"clearfix\"></div>\n </BaseComponent>\n }\n </div>\n );\n};\nexport default FeatureGenericContentHomeQuickLinks;\n","import React from \"react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\nimport GetAncestorElement from \"../../../Common/Helper/GetAncestorElement\";\nimport {\n CarouselProvider,\n Slider,\n Slide,\n ButtonBack,\n ButtonNext,\n DotGroup\n} from \"pure-react-carousel\";\nimport \"pure-react-carousel/dist/react-carousel.es.css\";\nclass FeatureGenericContentImageGallery extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n showFullscreen: false,\n imagePos: 0\n };\n }\n\n componentDidMount() {}\n\n handleKeyDown = event => {\n const enlargeGalleryContainer = document.querySelector(\n \".image-gallery__fullscreen.is-shown\"\n );\n if (enlargeGalleryContainer) {\n const keyCode = event.keyCode;\n if (keyCode === 27) {\n const closeBtn = enlargeGalleryContainer.querySelector(\n \".image-gallery__button--close\"\n );\n closeBtn.click();\n } else if (keyCode === 37 || keyCode === 39) {\n const { imagePos } = this.state;\n const { GalleryImages } = this.props.fields;\n let itemValue = 0;\n if (keyCode === 37) {\n if (imagePos === 1) {\n return;\n }\n itemValue = imagePos - 1;\n } else if (keyCode === 39) {\n if (imagePos === GalleryImages.length) {\n return;\n }\n itemValue = imagePos + 1;\n }\n const carouselDotSelector =\n \".carousel__dot:nth-child(\" + itemValue + \")\";\n const carouselDot = enlargeGalleryContainer.querySelector(\n carouselDotSelector\n );\n carouselDot.click();\n this.setState({\n imagePos: itemValue\n });\n }\n }\n };\n\n handleOnClickImage = event => {\n const element = event.target;\n const imageGalleryContainer = GetAncestorElement(element, \"image-gallery\");\n const itemValue = element.getAttribute(\"value\");\n const carouselDotSelector = \".carousel__dot:nth-child(\" + itemValue + \")\";\n const carouselDot = imageGalleryContainer.querySelector(\n carouselDotSelector\n );\n const fullscreen = imageGalleryContainer.querySelector(\n \".image-gallery__fullscreen\"\n );\n setTimeout(() => {\n fullscreen.classList.add(\"is-transition\");\n }, 250);\n this.setState({\n showFullscreen: true,\n imagePos: parseInt(itemValue)\n });\n carouselDot.click();\n document.getElementsByTagName(\"body\")[0].classList.add(\"modal-open\");\n // For all major browsers, except IE 8 and earlier\n if (document.addEventListener) {\n document.addEventListener(\"keydown\", this.handleKeyDown);\n\n // For IE 8 and earlier versions\n } else if (document.attachEvent) {\n document.attachEvent(\"onkeydown\", this.handleKeyDown);\n }\n };\n\n handleOnClickClose = event => {\n const element = event.target;\n const imageGalleryContainer = GetAncestorElement(element, \"image-gallery\");\n const fullscreen = imageGalleryContainer.querySelector(\n \".image-gallery__fullscreen\"\n );\n fullscreen.classList.remove(\"is-transition\");\n this.setState({\n showFullscreen: false\n });\n document.getElementsByTagName(\"body\")[0].classList.remove(\"modal-open\");\n };\n\n render() {\n const { GalleryImages = null } = this.props.fields || {};\n let { showFullscreen } = this.state;\n return (\n <div className=\"image-gallery font-regular\">\n {GalleryImages && GalleryImages.length ? (\n <BaseComponent margin=\"standard\">\n <div className=\"container\">\n <div className=\"image-gallery__wrapper\">\n {GalleryImages.map((item, index) => {\n const {\n Alt = null,\n Id = null,\n Src = null,\n Height = null,\n Width = null\n } = item.fields;\n return (\n <div key={Id.value + index} className=\"image-gallery__item\">\n <button\n value={index + 1}\n onClick={this.handleOnClickImage}\n >\n <img\n value={index + 1}\n alt={Alt.value}\n src={defaultImg}\n data-src={Src.value}\n className=\"lazyload\"\n />\n </button>\n </div>\n );\n })}\n </div>\n <div\n className={`image-gallery__fullscreen ${\n showFullscreen ? \"is-shown\" : \"\"\n }`}\n >\n <CarouselProvider\n totalSlides={GalleryImages.length}\n naturalSlideWidth={1}\n naturalSlideHeight={1}\n visibleSlides={1}\n step={1}\n >\n <Slider className={\"slider\"}>\n {GalleryImages.map((item, index) => {\n const {\n Alt = null,\n Id = null,\n Src = null,\n Height = null,\n Width = null\n } = item.fields;\n return (\n <Slide index={index} key={Id.value + index}>\n <img alt={Alt.value} id={Id.value} src={Src.value} />\n <div className=\"image-gallery__caption\">\n {`${index + 1} of ${GalleryImages.length} - ${\n Alt.value\n }`}\n </div>\n </Slide>\n );\n })}\n </Slider>\n <ButtonBack className=\"image-gallery__button--prev\">\n <i className=\"icon icon-arrow-left\" />\n </ButtonBack>\n <ButtonNext className=\"image-gallery__button--next\">\n <i className=\"icon icon-arrow-right\" />\n </ButtonNext>\n <button\n className=\"image-gallery__button--close\"\n onClick={this.handleOnClickClose}\n >\n <i className=\"icon icon-close\" />\n </button>\n <DotGroup />\n </CarouselProvider>\n </div>\n </div>\n </BaseComponent>\n ) : (\n \"\"\n )}\n </div>\n );\n }\n}\n\nexport default FeatureGenericContentImageGallery;\n","import React from \"react\";\nimport { Text, RichText } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\n\nconst FeatureGenericContentTextBlock = props => {\n const {\n Title,\n Description,\n Image: image,\n ImagePosition,\n ImageLink,\n ImageAltText,\n BackgroundColor,\n Link: cta,\n CTAText,\n CTALink\n } = props.fields;\n\n if (Title && Title.value && Description && Description.value) {\n let blockImage = {\n src: \"\",\n alt: \"\"\n };\n if (ImageLink && ImageLink.value) {\n blockImage.src = ImageLink.value;\n blockImage.alt = ImageAltText.value;\n } else if (image && image.value && image.value.src) {\n blockImage.src = image.value.src;\n blockImage.alt = image.value.alt;\n } else return null;\n return (\n <BaseComponent className=\"itb-wrapper\">\n <div className=\"container\">\n <div\n className={`campaign-image-text-block-wrapper ${\n ImagePosition && ImagePosition.value\n ? ImagePosition.value\n : \"right\"\n }`}\n >\n <div className=\"animation-range\">\n <div className=\"row no-gutters\">\n <div\n className={`col-12 col-md-5 details ${\n BackgroundColor && BackgroundColor.value\n ? \"bg-pale-grey\"\n : \"\"\n }`}\n >\n <div className=\"content\">\n <div className=\"title\">\n {cta && cta.value && cta.value.href ? (\n <a {...cta.value}>\n <Text field={Title} />\n </a>\n ) : (\n <span>\n <Text field={Title} />\n </span>\n )}\n </div>\n <div className=\"description\">\n <RichText field={Description} />\n </div>\n {CTAText &&\n CTAText.value &&\n CTALink &&\n CTALink.value &&\n CTALink.value.href && (\n <div className=\"cta-button\">\n <a {...CTALink.value}>\n <div className=\"btn primary-btn\">\n {CTAText.value}\n </div>\n </a>\n </div>\n )}\n </div>\n </div>\n <div className=\"col-12 col-md-7 image-wrapper\">\n {cta && cta.value && cta.value.href ? (\n <a {...cta.value}>\n <img\n {...blockImage}\n className=\"campaign-image lazyload\"\n />\n </a>\n ) : (\n <img {...blockImage} className=\"campaign-image lazyload\" />\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n </BaseComponent>\n );\n } else return null;\n};\n\nexport default FeatureGenericContentTextBlock;\n","import React from \"react\";\nimport { Text, Link } from \"@sitecore-jss/sitecore-jss-react\";\n\nclass FeatureGenericContentQuickLinksMenu extends React.Component {\n constructor(props) {\n super(props);\n this.state = { isArticle: false };\n }\n\n componentDidMount() {\n const isArticle = document.querySelector(\".articledetails-wrapper, .blogdetails-wrapper\");\n if (isArticle) {\n this.handleArticle();\n window.addEventListener(\"resize\", this.handleArticle);\n this.setState({ isArticle: true });\n }\n }\n\n handleArticle = () => {\n const articleDetails = document.querySelector(\".articledetails-wrapper, .blogdetails-wrapper\");\n if (articleDetails) {\n const hasRetailerLogo = document.querySelector(\n \".articledetails-wrapper .article-logo\"\n );\n let margin = \"\";\n\n const quickLinks = document.querySelector(\".quicklinksmenu-container\");\n\n if (hasRetailerLogo) {\n margin = -(articleDetails.offsetHeight + 74 - 196) + \"px\";\n } else {\n margin = -(articleDetails.offsetHeight + 74) + \"px\";\n }\n\n if (quickLinks) {\n quickLinks.style.marginTop = margin;\n }\n }\n };\n\n render() {\n let dataSource =\n this.props && this.props.rendering && this.props.rendering.dataSource\n ? this.props.rendering.dataSource\n : \"\";\n if (!dataSource) {\n return \"\";\n }\n\n const { Title: title = null, Links: links = null } =\n this.props.fields || {};\n\n let { isArticle } = this.state;\n if (links && links.length) {\n return (\n <div\n className={`quicklinksmenu-container font-regular ${isArticle ? `quicklinks-article` : \"\"\n }`}\n >\n <div className=\"content-header\">\n <Text field={title} />\n </div>\n <div className=\"content-list\">\n <ul>\n {links.map((item, index) => (\n <li key={`myId-${index}`}>\n <Link field={item.fields.LinkTarget} />\n </li>\n ))}\n </ul>\n </div>\n </div>\n );\n } else return null;\n }\n}\n\nexport default FeatureGenericContentQuickLinksMenu;\n","import React from \"react\";\nimport { withSitecoreContext, RichText } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\n\nclass FeatureGenericContentRichText extends React.Component {\n constructor(props) {\n super(props);\n }\n\n componentDidMount() {\n if (window) {\n const el = window.document.getElementById(\"_goback\");\n if (el) {\n el.onclick = function () {\n window.history.back();\n };\n }\n }\n }\n\n render() {\n const props = this.props;\n return (\n <div>\n {((props.fields && props.fields.Details) ||\n (!props.fields && props.sitecoreContext.pageEditing)) &&\n <BaseComponent margin=\"standard\">\n {props.fields && props.fields.Details && (\n <div className=\"richtext-wrapper\">\n <RichText field={props.fields.Details} />\n </div>\n )}\n\n {!props.fields && props.sitecoreContext.pageEditing && (\n <div className=\"richtext-wrapper\">\n <p>Rich Text component is not displayed due to following reasons: <br />\n - Datasource is not set.\n </p>\n </div>\n )}\n </BaseComponent>\n }\n </div>\n );\n }\n};\n\nexport default withSitecoreContext()(FeatureGenericContentRichText);\n","import React, { Component } from \"react\";\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\n\nclass FeatureGenericContentServiceQuickLinksMenu extends Component {\n render() {\n const {\n Title: title = null,\n BestParking: bestParking = null,\n AvailableParking: availableParking = null,\n OpeningToday: openingToday = null,\n OpeningHours: openingHours = null,\n PhoneNumber: phoneNumber = null,\n LocationLink: locationLink = null,\n BestParkingLink: bestParkingLink = null,\n Location: location = null\n } = this.props.fields || {};\n\n let phone =\n phoneNumber && phoneNumber.value\n ? phoneNumber.value.replace(/[&\\/\\s\\#,+()$~%.'\":*?<>{}]/g, \"\")\n : null;\n\n if (title && title.value) {\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"guest-services-desk-container\">\n <div className=\"content-header\">\n <Text field={title} />\n </div>\n <div className=\"content-list\">\n <ul>\n {(openingToday &&\n openingToday.value &&\n openingHours &&\n openingHours.length) &&\n <li>\n <div className=\"list-row\">\n <div className=\"list-icon\">\n <i className=\"icon icon-time\" />\n </div>\n <div className=\"list-text\">\n <input\n type=\"checkbox\"\n id=\"guest-services-openinghours\"\n className=\"opening-hours-toggle\"\n />\n <label\n className=\"opening-hours-title\"\n htmlFor=\"guest-services-openinghours\"\n >\n <Text field={openingToday} />\n </label>\n <div className=\"opening-hours-content\">\n {openingHours.map((listItem, index) => {\n const { Day: day = null, Time: time = null } =\n listItem.fields || {};\n if (\n day &&\n day.value &&\n day.value.length &&\n day.value.toLowerCase() !== \"today\"\n ) {\n return (\n <div className=\"row\" key={index}>\n <div className=\"col-5\">\n <span>\n <Text field={day} />\n </span>\n </div>\n <div\n className=\"col-7\"\n style={{\n paddingLeft: \"0\",\n paddingRight: \"0\"\n }}\n >\n <span>\n <Text field={time} />\n </span>\n </div>\n </div>\n );\n }\n })}\n </div>\n </div>\n </div>\n </li>\n }\n {(phone &&\n phoneNumber\n && phoneNumber.value) &&\n <li>\n <div className=\"list-row\">\n <div className=\"list-icon\">\n <i className=\"icon icon-phone\" />\n </div>\n <div className=\"list-text\">\n <a href={`tel:` + phone}>{phoneNumber.value}</a>\n </div>\n </div>\n </li>\n }\n {(location\n && location.value) &&\n <li>\n <div className=\"list-row\">\n <div className=\"list-icon\">\n <i className=\"icon icon-centre-map\" />\n </div>\n <div className=\"list-text\">\n {locationLink && locationLink.value ? (\n <a href={locationLink.value}>\n <Text field={location} />\n </a>\n ) : (\n <Text field={location} />\n )}\n </div>\n </div>\n </li>\n }\n {(bestParking &&\n bestParking.value &&\n availableParking &&\n availableParking.value) &&\n <li>\n <div className=\"list-row\">\n <div className=\"list-icon\">\n <i className=\"icon icon-parking\" />\n </div>\n {bestParkingLink && bestParkingLink.value ? (\n <div className=\"list-text\">\n <a href={bestParkingLink.value}>\n <Text field={bestParking} />\n <br />\n <Text field={availableParking} />\n </a>\n </div>\n ) : (\n <div className=\"list-text\">\n <Text field={bestParking} />\n <br />\n <Text field={availableParking} />\n </div>\n )}\n </div>\n </li>\n }\n </ul>\n </div>\n </div>\n </BaseComponent>\n );\n } else return null;\n }\n}\n\nexport default FeatureGenericContentServiceQuickLinksMenu;\n","import React from \"react\";\nimport { Text, Link } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\n\nconst FeatureGenericContentTermsAndConditions = props => {\n const { Copy: copy = null, Link: link = null } = props.fields || {};\n\n if (copy && copy.value && link && link.value && link.value.href) {\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"tandc-container\">\n <div className=\"tandc-text\">\n <Text field={copy} />\n </div>\n <Link field={link} className=\"btn primary-btn btn-padding\" />\n </div>\n </BaseComponent>\n );\n } else return null;\n};\n\nexport default FeatureGenericContentTermsAndConditions;\n","import React from \"react\";\nimport { Text, RichText } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\n\nconst FeatureGenericContentTextBlock = props => {\n const { Title, Description } = props.fields;\n if (Title && Title.value && Description && Description.value) {\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"container\">\n <div className=\"campaign-text-block-wrapper\">\n <div className=\"title\">\n <Text field={Title} />\n </div>\n <div className=\"description\">\n <RichText field={Description} />\n </div>\n </div>\n </div>\n </BaseComponent>\n );\n } else return null;\n};\n\nexport default FeatureGenericContentTextBlock;\n","import React from \"react\";\nimport { Placeholder } from \"@sitecore-jss/sitecore-jss-react\";\n\nconst FeatureGenericContentTwoColumn7030 = props => {\n return (\n <div className=\"container\">\n <div className=\"row\">\n <div className=\"col-12 col-lg-9 col-xl-8\">\n <Placeholder\n name=\"jss-two-column-70-30-left\"\n rendering={props.rendering}\n />\n </div>\n <div className=\"col-12 col-lg-3 col-xl-4\">\n <Placeholder\n name=\"jss-two-column-70-30-right\"\n rendering={props.rendering}\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default FeatureGenericContentTwoColumn7030;\n","import React from 'react';\nimport { Text } from '@sitecore-jss/sitecore-jss-react';\n\nconst FeatureGettingHereGettingHereHeader = (props) => {\n const { Title } = props.fields;\n const headerTitle = Title ? Title : \"Opening Hours\";\n\n return (\n <div className=\"gettinghere-header fluid\">\n <div className=\"container\">\n <div className=\"row\">\n <div className=\"col-auto gettinghere-label\">\n <Text field={headerTitle} />\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default FeatureGettingHereGettingHereHeader;\n","import React from \"react\";\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\n\nconst FeatureHeaderGenericPageHeader = props => {\n const {\n HeaderButton = null,\n HeaderTitle = null,\n LeftCtaLink = null,\n RightCtaLink = null\n } = props.fields || {};\n const { Name: LeftCtaName = null, LinkTarget: LeftCtaLinkTarget = null } =\n LeftCtaLink.fields || {};\n const {\n Name: RightCtaName = null,\n LinkTarget: RightCtaLinkTarget = null,\n Icon: RightCtaIcon = null\n } = RightCtaLink.fields || {};\n return (\n <div className=\"generic-pageheader-container\">\n <div className=\"container content-wrapper\">\n <div className=\"header-wrapper\">\n <div className={`header-left\n ${RightCtaName && RightCtaName.value && RightCtaLinkTarget && RightCtaLinkTarget.value ? \"has-btn-link\" : \"\"}\n `}>\n {LeftCtaName &&\n LeftCtaName.value &&\n LeftCtaLinkTarget &&\n LeftCtaLinkTarget.value && (\n <div className=\"link\">\n <i className=\"icon icon-arrow-left mr-2\" />\n <a href={LeftCtaLinkTarget.value}>\n <div className=\"label\">\n <Text field={LeftCtaName} />\n </div>\n </a>\n </div>\n )}\n\n <div className=\"main\">\n {HeaderTitle && HeaderTitle.value && (\n <h1 className=\"title\">\n <Text field={HeaderTitle} />\n </h1>\n )}\n {HeaderButton && HeaderButton.value && (\n <div className=\"sub\">\n <Text field={HeaderButton} />\n </div>\n )}\n </div>\n </div>\n {RightCtaName &&\n RightCtaName.value &&\n RightCtaLinkTarget &&\n RightCtaLinkTarget.value && (\n <div className=\"header-right\">\n <div className=\"spacer\" />\n <div className=\"btnlink\">\n <i className={`icon icon-${RightCtaIcon.value} main`} />\n <div className=\"link\">\n <a href={RightCtaLinkTarget.value}>\n <Text field={RightCtaName} />\n </a>\n </div>\n\n <i className=\"icon icon-arrow-right\" />\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default FeatureHeaderGenericPageHeader;\n","import React from \"react\";\r\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\r\n\r\nconst NavList = ({ title, data }) => {\r\n return (\r\n <div className=\"list-wrapper\">\r\n <div className=\"title\">\r\n {title.url ? (\r\n <React.Fragment>\r\n <a href={title.url}>\r\n <Text field={title.name} />\r\n </a>\r\n <i className=\"icon icon-arrow-right\" />\r\n </React.Fragment>) :\r\n <Text field={title.name} />\r\n }\r\n </div>\r\n {data.length > 0 && (\r\n <div className=\"content-list\">\r\n <ul className=\"list\">\r\n {data.map((item, index) => {\r\n let linkUrlLayout;\r\n if (item.LinkUrl) {\r\n linkUrlLayout =\r\n <li key={`myId-${index}`}>\r\n <a href={item.LinkUrl.value}>\r\n {item.LinkName.value}\r\n </a>\r\n </li>\r\n }\r\n return linkUrlLayout;\r\n })}\r\n </ul>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\nexport default NavList;\r\n","import React from \"react\";\r\nimport { Text, Image } from \"@sitecore-jss/sitecore-jss-react\";\r\n\r\nconst NavDiscoverStore = props => {\r\n return (\r\n <div className=\"discover-stores-wrapper\">\r\n <div className=\"discover-stores-title\">\r\n <Text field={props.title} />\r\n </div>\r\n\r\n <div className=\"discover-stores-content-wrapper\">\r\n {props.data.map((store, index) => {\r\n const {\r\n StorefrontUrl = null,\r\n RetailerLogo = null,\r\n RetailerName = null\r\n } = store || {};\r\n\r\n return (\r\n <div\r\n key={`storeId-${index}`}\r\n className=\"discover-stores-content-columns\"\r\n >\r\n <a href={(StorefrontUrl && StorefrontUrl.value ? StorefrontUrl.value : null)}>\r\n {RetailerLogo && RetailerLogo.value && RetailerLogo.value.src ?\r\n <Image\r\n media={{ ...RetailerLogo.value}}\r\n data-src={RetailerLogo.value.src}\r\n className=\"discover-stores-content-image lazyload\"\r\n />\r\n : <div className=\"no-logo\"><Text field={RetailerName} /></div>\r\n }\r\n </a>\r\n <div className=\"discover-stores-content-title\">\r\n <a href={(StorefrontUrl && StorefrontUrl.value ? StorefrontUrl.value : null)}>\r\n <Text field={RetailerName} />\r\n </a>\r\n <i className=\"icon icon-arrow-right\" />\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default NavDiscoverStore;\r\n","import React from \"react\";\r\nimport { Text, Image } from \"@sitecore-jss/sitecore-jss-react\";\r\n\r\nconst NavWhatsOn = ({ title, spotlight, promotions }) => {\r\n if (spotlight || promotions.length === 3) {\r\n return (\r\n <div className=\"nav-whatson-wrapper\">\r\n <div className=\"title\">\r\n {title.url ? (\r\n <React.Fragment>\r\n <a href={title.url}>\r\n <Text field={title.name} />\r\n </a>\r\n <i className=\"icon icon-arrow-right\" />\r\n </React.Fragment>\r\n ) : (\r\n <Text field={title.name} />\r\n )}\r\n </div>\r\n <div className=\"content row\">\r\n {/* ------------------- SPOTLIGHT ------------------- */}\r\n {spotlight && (\r\n <div className=\"col col-auto\">\r\n <div className=\"spotlight-item\">\r\n <a href={spotlight.ArticleUrl.value}>\r\n <div\r\n className={\r\n spotlight.IsLogoAsThumbnail &&\r\n spotlight.IsLogoAsThumbnail.value\r\n ? \"display_retailer_logo\"\r\n : \"\"\r\n }\r\n >\r\n {spotlight.Thumbnail &&\r\n spotlight.Thumbnail.value &&\r\n !spotlight.Thumbnail.value.src &&\r\n spotlight.IsRetailerContent &&\r\n spotlight.IsRetailerContent.value && (\r\n <div className=\"display_retailer_name\">\r\n <Text field={spotlight.Retailer} />\r\n </div>\r\n )}\r\n <div className=\"include_logo_padding\">\r\n <Image\r\n media={{ ...spotlight.Thumbnail.value }}\r\n data-src={spotlight.Thumbnail.value.src}\r\n className=\"spotlight-image lazyload\"\r\n />\r\n </div>\r\n </div>\r\n </a>\r\n <div className=\"type\">\r\n <Text field={spotlight.PromotionType} />\r\n </div>\r\n <div className=\"spotlight-description\">\r\n <a href={spotlight.ArticleUrl.value}>\r\n <Text field={spotlight.ArticleName} />\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n {/* ------------------- WHATS ON ------------------- */}\r\n {promotions && promotions.length && promotions.length === 3 && (\r\n <div className=\"col\">\r\n {promotions.map((promotion, index) => (\r\n <div key={`navWhatsOnID-${index}`} className=\"row whatson-item\">\r\n <div className=\"col col-auto\">\r\n <a href={promotion.PromotionUrl.value}>\r\n <div\r\n className={\r\n promotion.IsLogoAsThumbnail &&\r\n promotion.IsLogoAsThumbnail.value\r\n ? \"display_retailer_logo\"\r\n : \"\"\r\n }\r\n >\r\n {promotion.Thumbnail &&\r\n promotion.Thumbnail.value &&\r\n !promotion.Thumbnail.value.src &&\r\n promotion.IsRetailerContent &&\r\n promotion.IsRetailerContent.value && (\r\n <div className=\"display_retailer_name\">\r\n <Text field={promotion.Retailer} />\r\n </div>\r\n )}\r\n <div className=\"include_logo_padding\">\r\n <Image\r\n media={{ ...promotion.Thumbnail.value }}\r\n data-src={promotion.Thumbnail.value.src}\r\n className=\"whatson-image lazyload\"\r\n />\r\n </div>\r\n </div>\r\n </a>\r\n </div>\r\n <div className=\"col whatson-details\">\r\n <div className=\"type\">\r\n <Text field={promotion.PromotionType} />\r\n </div>\r\n <div className=\"whatson-description\">\r\n <a href={promotion.PromotionUrl.value}>\r\n <Text field={promotion.PromotionName} />\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n else return null;\r\n};\r\nexport default NavWhatsOn;\r\n","import React from \"react\";\r\nimport { Text, RichText } from \"@sitecore-jss/sitecore-jss-react\";\r\n\r\nconst NavRichTextList = ({ title, richTextList }) => {\r\n let content = \"\";\r\n if (richTextList.length > 0) {\r\n if (title.value) {\r\n content = (\r\n <React.Fragment>\r\n <div className=\"nav-richtext-title\">\r\n <Text field={title} />\r\n </div>\r\n\r\n <div className=\"nav-richtext-content\">\r\n {richTextList.map((item, index) => (\r\n <div key={`listID-${index}`} className=\"nav-richtext-row\">\r\n <div className=\"nav-richtext-content-title\">\r\n <Text field={item.Name} />\r\n </div>\r\n <div className=\"nav-richtext-content-desc-normal\">\r\n <RichText field={item.Details} />\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </React.Fragment>\r\n );\r\n } else {\r\n content = (\r\n <React.Fragment>\r\n {richTextList.map((item, index) => (\r\n <div key={`listID-${index}`}>\r\n <div className=\"nav-richtext-title\">\r\n <Text field={item.Name} />\r\n </div>\r\n <div className=\"nav-richtext-content\">\r\n <div className=\"nav-richtext-row\">\r\n <div className=\"nav-richtext-content-desc-normal\">\r\n <RichText field={item.Details} />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n ))}\r\n </React.Fragment>\r\n );\r\n }\r\n }\r\n\r\n return <div className=\"nav-richtext-wrapper\">{content}</div>;\r\n};\r\n\r\nexport default NavRichTextList;\r\n","import React from \"react\";\r\nimport { Image, Text } from \"@sitecore-jss/sitecore-jss-react\";\r\nimport Details from \"../../../../Common/Details\";\r\n\r\nconst NavigationNavBestParking = ({ title, retailers, centre }) => {\r\n if (title && retailers && centre) {\r\n return (\r\n <div className=\"best-parking-wrapper\">\r\n <div className=\"best-parking-title\">\r\n {title && title.url && title.name ? (\r\n <React.Fragment>\r\n <a href={title.url}>\r\n <Text field={title.name} />\r\n </a>\r\n <i className=\"icon icon-arrow-right\" />\r\n </React.Fragment>\r\n ) : title && title.name ? (\r\n <Text field={title.name} />\r\n ) : null}\r\n </div>\r\n\r\n {retailers &&\r\n retailers.length &&\r\n retailers.length > 0 &&\r\n retailers.map((item, index) => {\r\n const {\r\n RetailerUrl = null,\r\n Thumbnail = null,\r\n RetailerName = null,\r\n Carpark = null,\r\n AvailableParking = null,\r\n AvailableLabel = null\r\n } = item || {};\r\n return (\r\n <div\r\n key={`rtID-${index}`}\r\n className=\"best-parking-content-wrapper\"\r\n >\r\n <a\r\n href={\r\n RetailerUrl && RetailerUrl.value ? RetailerUrl.value : null\r\n }\r\n >\r\n {Thumbnail && Thumbnail.value && Thumbnail.value.src ? (\r\n <Image\r\n media={{ ...Thumbnail.value }}\r\n data-src={Thumbnail.value.src}\r\n className=\"best-parking-content-image lazyload\"\r\n />\r\n ) : (\r\n <div className=\"no-image\">\r\n <Text field={RetailerName} />\r\n </div>\r\n )}\r\n </a>\r\n <div className=\"best-parking-content-row\">\r\n <div className=\"best-parking-content-row-title\">\r\n <a\r\n href={\r\n RetailerUrl && RetailerUrl.value\r\n ? RetailerUrl.value\r\n : null\r\n }\r\n >\r\n <Text field={RetailerName} />\r\n </a>\r\n </div>\r\n <div className=\"best-parking-content-row-desc\">\r\n {Carpark && (\r\n <div className=\"best-parking-content-row-desc-col\">\r\n <Details\r\n iconValue=\"location\"\r\n linkName={Carpark}\r\n size=\"24\"\r\n />\r\n </div>\r\n )}\r\n {centre === \"robina\" && (\r\n <div className=\"best-parking-content-row-desc-col\">\r\n <span className=\"best-parking-content-row-desc-num\">\r\n <Text field={AvailableParking} />\r\n </span>\r\n <span className=\"best-parking-content-row-desc-text\">\r\n <Text field={AvailableLabel} />\r\n </span>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n } else return null;\r\n};\r\n\r\nexport default NavigationNavBestParking;\r\n","import React from \"react\";\r\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\r\n\r\nconst NavOpeningHours = ({ data }) => {\r\n return (\r\n <div className=\"nav-openinghours-wrapper\">\r\n {data.OpeningHoursList.map((item, index) => (\r\n <div key={`openingID-${index}`} className=\"opening\">\r\n <div className=\"day\">\r\n <Text field={item.Day} />\r\n </div>\r\n <div className=\"time\">\r\n <Text field={item.OpeningHours} />\r\n </div>\r\n </div>\r\n ))}\r\n\r\n {data.HolidayGroupList.length > 0 && (\r\n <div className=\"special\">\r\n <div className=\"heading\">\r\n <Text field={data.UpcomingHolidaysTitle} />\r\n </div>\r\n\r\n {data.HolidayGroupList.map((group, index) => (\r\n <div key={`holidayGroupID-${index}`} className=\"content\">\r\n <div className=\"holiday\">\r\n <Text field={group.HolidayGroupTitle} />\r\n </div>\r\n <ul>\r\n {group.HolidaysList.map((holiday, index) => (\r\n <li key={`holidayID-${index}`}>\r\n <Text field={holiday.Holiday} />\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\nexport default NavOpeningHours;\r\n","import React from \"react\";\r\nimport { Text, Link } from \"@sitecore-jss/sitecore-jss-react\";\r\n\r\nconst NavMovies = props => {\r\n let { title, data } = props;\r\n if (props && title && title.url && data && data.length) {\r\n return (\r\n <div className=\"nav-movies-wrapper\">\r\n <div className=\"nav-movies-title\">\r\n {title.url ? (\r\n <React.Fragment>\r\n <a href={title.url}>\r\n <Text field={title.name} />\r\n </a>\r\n <i className=\"icon icon-arrow-right\" />\r\n </React.Fragment>) :\r\n <Text field={title.name} />\r\n }\r\n </div>\r\n <div className=\"nav-movies-content-wrapper\">\r\n {data &&\r\n data.length &&\r\n data.map((movies, index) => {\r\n const { MovieTitle = null, MovieUrl = null, Thumbnail = null } =\r\n movies || {};\r\n return (\r\n <div\r\n key={`storeId-${index}`}\r\n className=\"nav-movies-content-columns\"\r\n >\r\n <Link field={{ href: MovieUrl.value }}>\r\n {Thumbnail.value ? (\r\n <img\r\n alt=\"\"\r\n src={Thumbnail.value}\r\n data-src={Thumbnail.value}\r\n className=\"nav-movies-content-image lazyload\" />\r\n ) : (\r\n <div className=\"nav-movies-content-image\"> </div>\r\n )}\r\n </Link>\r\n <div className=\"nav-movies-content-title\">\r\n <Link\r\n field={{\r\n href: MovieUrl.value,\r\n text: MovieTitle.value\r\n }}\r\n />\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n } else return null;\r\n};\r\n\r\nexport default NavMovies;\r\n","import React, { Component } from \"react\";\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\nimport CustomDropdown from \"../../../Common/CustomDropdown\";\nimport GetAncestorElement from \"../../../Common/Helper/GetAncestorElement\";\n\nclass FeatureMetricsPopularTimes extends Component {\n constructor(props) {\n super(props);\n this.state = {\n activeDay: null\n }\n }\n\n componentDidMount() {\n this.triggerHandleMouserOver();\n window.addEventListener(\"resize\", this.triggerHandleMouserOver);\n }\n\n triggerHandleMouserOver = () => {\n const activeColumnList = document.querySelectorAll(\".popular-times__chart--column.is-active\");\n if (activeColumnList) {\n for (let i = 0; i < activeColumnList.length; i++) {\n let activeColumn = activeColumnList[i];\n this.handleMouseover(null, activeColumn);\n }\n }\n }\n\n renderChartNavigation = (Hours, MediumLimit, HighLimit) => {\n const currentHours = new Date().getHours();\n let currentTime;\n if (currentHours < 12) {\n if (currentHours == 0) {\n currentTime = \"12am\";\n } else {\n currentTime = currentHours + \"am\";\n }\n } else {\n if (currentHours == 12) {\n currentTime = currentHours + \"pm\";\n } else {\n currentTime = (currentHours - 12) + \"pm\";\n }\n }\n return (\n <div className=\"popular-times__chart--container is-active\">\n {\n this.renderGraph(Hours, MediumLimit, HighLimit, currentTime)\n }\n </div>\n )\n }\n\n renderChartNonNavigation = (Days, activeDay, MediumLimit, HighLimit) => {\n return Days.map((item, index) => {\n const {\n Day,\n Hours\n } = item.fields || {}\n return (\n <div key={Day.value}\n className={`popular-times__chart--container \n ${(index == 0 && activeDay == null) ||\n (activeDay == Day.value) ? \"is-active\" : \"\"}\n `}>\n {\n this.renderGraph(Hours, MediumLimit, HighLimit)\n }\n </div>\n )\n })\n }\n\n renderGraph = (hours, mediumLimit, highLimit, currentTime) => {\n let highNum = 0;\n let graphLayout;\n hours.map((item, index) => {\n if (item.fields) {\n var {\n Occupancy = null,\n } = item.fields;\n } else {\n var {\n Occupancy = null,\n } = item\n }\n if (parseInt(Occupancy.value) > parseInt(highNum)) {\n highNum = parseInt(Occupancy.value);\n }\n })\n graphLayout = hours.map((item, index) => {\n if (item.fields) {\n var {\n Time = null,\n Occupancy = null,\n Description = null,\n IsActive = null\n } = item.fields;\n } else {\n var {\n Time = null,\n Occupancy = null,\n Description = null,\n IsActive = null\n } = item;\n }\n let newHeight = 0;\n let counter = Occupancy.value\n let busyClass = \"is-little-busy\";\n if (highNum > 0) {\n if (highLimit && highLimit.value && mediumLimit && mediumLimit.value) {\n if (parseInt(counter) >= parseInt(highLimit.value)) {\n busyClass = \"is-very-busy\";\n newHeight = ((counter * highNum) / (highNum * highNum)) * 100;\n }\n else if (parseInt(counter) >= parseInt(mediumLimit.value)) {\n busyClass = \"is-busy\";\n newHeight = ((counter * highNum) / (highNum * highNum)) * 75;\n } else {\n newHeight = ((counter * highNum) / (highNum * highNum)) * 50;\n }\n } else {\n if (parseInt(counter) >= 1500) {\n busyClass = \"is-very-busy\";\n newHeight = ((counter * highNum) / (highNum * highNum)) * 100;\n }\n else if (parseInt(counter) >= 1000) {\n busyClass = \"is-busy\";\n newHeight = ((counter * highNum) / (highNum * highNum)) * 75;\n } else {\n newHeight = ((counter * highNum) / (highNum * highNum)) * 50;\n }\n }\n }\n\n let activeTime = false;\n if (currentTime) {\n if ((Time && Time.value) && (Time.value.toLowerCase() == currentTime)) {\n activeTime = true;\n }\n } else {\n if (IsActive && IsActive.value) {\n activeTime = true;\n }\n }\n\n return (\n <div key={counter + index}\n className={`popular-times__chart--column \n ${newHeight == 0 ? \"no-height\" : \"\"}\n ${activeTime ? \"is-active\" : \"\"}\n `}\n onMouseOver={this.handleMouseover}\n onClick={this.handleMouseover}\n >\n <div className={`popular-times__chart--column-block ${busyClass}`}\n style={{ height: newHeight + \"%\" }}\n disabled={true}\n >\n </div>\n <div className=\"popular-times__chart--tooltip\">\n <Text field={Description} />\n </div>\n </div>\n )\n })\n return graphLayout;\n }\n\n renderDropdown = () => {\n const { Days } = this.props.fields || {}\n let dataDaysDropdown = [];\n let currentDay;\n Days.map((item, index) => {\n const { Day } = item.fields;\n if (index == 0) {\n currentDay = Day.value\n }\n dataDaysDropdown.push(\n {\n \"fields\": {\n \"Id\": {\n \"value\": Day.value\n },\n \"Name\": {\n \"value\": Day.value\n }\n }\n }\n )\n });\n return (\n <CustomDropdown\n data={dataDaysDropdown}\n placeholder={\"Select Day\"}\n defaultValue={currentDay}\n onChange={(daysValue, element) =>\n this.handleDropdown({ daysValue })\n }\n />\n )\n }\n\n handleDropdown = (value) => {\n this.setState({\n activeDay: value.daysValue\n })\n };\n\n handleMouseover = (event, activeColumn) => {\n let element;\n let chartColumnElement;\n if (activeColumn) {\n chartColumnElement = activeColumn;\n } else {\n element = event.target;\n const chartColumnContainer = GetAncestorElement(element, \"popular-times__chart--column\");\n if (chartColumnContainer) {\n chartColumnElement = chartColumnContainer;\n } else {\n chartColumnElement = element;\n }\n }\n const columnOffsetLeft = chartColumnElement.offsetLeft;\n const chartContainer = GetAncestorElement(chartColumnElement, \"popular-times__chart--container\");\n const tooltip = chartColumnElement.getElementsByClassName(\"popular-times__chart--tooltip\")[0];\n if (element && element.classList.value == \"popular-times__chart--tooltip\") {\n chartContainer.classList.remove(\"on-mouse-over\");\n } else {\n if (!(/no-height/.test(chartColumnElement.classList.value)) && !activeColumn) {\n chartContainer.classList.add(\"on-mouse-over\");\n }\n }\n if (tooltip) {\n let tooltipWidth = tooltip.clientWidth / 2;\n let chartContainerWidth = chartContainer.clientWidth;\n if (columnOffsetLeft <= chartContainerWidth / 2) {\n if (tooltipWidth <= columnOffsetLeft) {\n tooltip.style.left = \"-\" + tooltipWidth + \"px\";\n } else {\n tooltip.style.left = \"-\" + columnOffsetLeft + \"px\";\n }\n tooltip.style.right = \"auto\";\n } else {\n let columnOffsetRight = chartContainerWidth - columnOffsetLeft - chartColumnElement.clientWidth;\n if (columnOffsetRight > tooltipWidth) {\n tooltip.style.right = \"-\" + tooltipWidth + \"px\";\n } else {\n tooltip.style.right = \"-\" + columnOffsetRight + \"px\";\n }\n tooltip.style.left = \"auto\";\n }\n }\n }\n\n handleMouseOut = (event) => {\n const element = event.target;\n const chartWrapperContainer = GetAncestorElement(element, \"popular-times__chart--wrapper-graph\");\n let chartWrapperElement;\n if (chartWrapperContainer) {\n chartWrapperElement = chartWrapperContainer;\n } else {\n chartWrapperElement = element;\n }\n if (chartWrapperElement) {\n chartWrapperElement.getElementsByClassName(\"popular-times__chart--container\")[0].classList.remove(\"on-mouse-over\");\n }\n }\n\n render() {\n const { activeDay } = this.state;\n const {\n Title = null,\n Days = null,\n MediumLimit = null,\n HighLimit = null,\n PopularTimes = null\n } = this.props.fields || {}\n const {\n Hours = null,\n LeastBusy = null\n } = PopularTimes || {}\n const {\n isNavigation = null\n } = this.props || {}\n\n return (\n <div className=\"popular-times\">\n {\n ((Days && Days.length) ||\n (PopularTimes && PopularTimes.Hours && PopularTimes.Hours.length)) &&\n <div className=\"popular-times__wrapper\">\n {\n Title &&\n Title.value &&\n <div className=\"popular-times__title\">\n <Text field={Title} />\n </div>\n }\n {!isNavigation &&\n <div className=\"popular-times__dropdown\">\n {this.renderDropdown()}\n </div>\n }\n <div className=\"popular-times__chart\">\n <div className=\"popular-times__chart--wrapper-graph\"\n onMouseOut={this.handleMouseOut}\n >\n {\n Days && Days.length\n ? this.renderChartNonNavigation(Days, activeDay, MediumLimit, HighLimit)\n : this.renderChartNavigation(Hours, MediumLimit, HighLimit)\n }\n <hr className=\"popular-times__chart--underline one\" />\n <hr className=\"popular-times__chart--underline two\" />\n <hr className=\"popular-times__chart--underline three\" />\n <hr className=\"popular-times__chart--underline four\" />\n <div className=\"popular-times__chart--wrapper-time\">\n <div className=\"popular-times__chart--time\">\n <div className=\"popular-times__chart--time-text\">6am</div>\n </div>\n <div className=\"popular-times__chart--time\">\n <div className=\"popular-times__chart--time-text\">7am</div>\n </div>\n <div className=\"popular-times__chart--time\">\n <div className=\"popular-times__chart--time-text\">8am</div>\n </div>\n <div className=\"popular-times__chart--time is-shown\">\n <div className=\"popular-times__chart--time-text\">9am</div>\n </div>\n <div className=\"popular-times__chart--time\">\n <div className=\"popular-times__chart--time-text\">10am</div>\n </div>\n <div className=\"popular-times__chart--time\">\n <div className=\"popular-times__chart--time-text\">11am</div>\n </div>\n <div className=\"popular-times__chart--time is-shown\">\n <div className=\"popular-times__chart--time-text\">12pm</div>\n </div>\n <div className=\"popular-times__chart--time\">\n <div className=\"popular-times__chart--time-text\">1pm</div>\n </div>\n <div className=\"popular-times__chart--time\">\n <div className=\"popular-times__chart--time-text\">2pm</div>\n </div>\n <div className=\"popular-times__chart--time is-shown\">\n <div className=\"popular-times__chart--time-text\">3pm</div>\n </div>\n <div className=\"popular-times__chart--time\">\n <div className=\"popular-times__chart--time-text\">4pm</div>\n </div>\n <div className=\"popular-times__chart--time\">\n <div className=\"popular-times__chart--time-text\">5pm</div>\n </div>\n <div className=\"popular-times__chart--time is-shown\">\n <div className=\"popular-times__chart--time-text\">6pm</div>\n </div>\n <div className=\"popular-times__chart--time\">\n <div className=\"popular-times__chart--time-text\">7pm</div>\n </div>\n <div className=\"popular-times__chart--time\">\n <div className=\"popular-times__chart--time-text\">8pm</div>\n </div>\n <div className=\"popular-times__chart--time is-shown\">\n <div className=\"popular-times__chart--time-text\">9pm</div>\n </div>\n <div className=\"popular-times__chart--time\">\n <div className=\"popular-times__chart--time-text\">10m</div>\n </div>\n <div className=\"popular-times__chart--time\">\n <div className=\"popular-times__chart--time-text\">11pm</div>\n </div>\n </div>\n </div>\n </div>\n {((Days && Days.length) ||\n (LeastBusy && LeastBusy.value)) &&\n <div className=\"popular-times__description\">\n\n {Days && Days.length ?\n Days.map((item, index) => {\n const {\n Day,\n LeastBusy\n } = item.fields || {}\n let leastBusyLayout;\n if (LeastBusy && LeastBusy.value) {\n leastBusyLayout =\n <div>\n <div className={`popular-times__description--busy \n ${(index == 0 && activeDay == null) ||\n (activeDay == Day.value) ? \"is-active\" : \"\"}\n `}>\n <div className=\"popular-times__description--indicator is-little-busy\"></div>\n <div className=\"popular-times__description--text\">{\"Least busy:\\u00A0\"}</div>\n </div>\n <div key={Day.value + index}\n className={`popular-times__description--time \n ${(index == 0 && activeDay == null) ||\n (activeDay == Day.value) ? \"is-active\" : \"\"}\n `}>\n <Text field={LeastBusy} />\n </div>\n </div>\n }\n return leastBusyLayout;\n })\n : (LeastBusy && LeastBusy.value ?\n <div>\n <div className=\"popular-times__description--busy\">\n <div className=\"popular-times__description--indicator is-little-busy\"></div>\n <div className=\"popular-times__description--text\">{\"Least busy:\\u00A0\"}</div>\n </div>\n <div className=\"popular-times__description--time is-active\">\n <Text field={LeastBusy} />\n </div>\n </div>\n : \"\")\n }\n </div>\n }\n </div>\n }\n </div>\n );\n }\n}\n\nexport default FeatureMetricsPopularTimes;","import React from \"react\";\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\nimport PopularTimes from \"../../../../Feature/Metrics/PopularTimes\";\n\nconst NavPopularTimes = ({ data }) => {\n const {\n Day = null,\n OpeningHours = null,\n } = data.NavPopularTimes || {}\n return (\n <div className=\"nav-populartimes__wrapper font-regular\">\n <div className=\"nav-populartimes__day\">\n <Text field={Day} />\n </div>\n <div className=\"nav-populartimes__time\">\n <Text field={OpeningHours} />\n </div>\n <div className=\"nav-populartimes__graph\">\n <PopularTimes fields={data.NavPopularTimes} isNavigation={true} />\n </div>\n </div>\n );\n};\nexport default NavPopularTimes;\n","import React from \"react\";\r\nimport { Text, Image } from \"@sitecore-jss/sitecore-jss-react\";\r\n\r\nconst NavCampaign = ({ title, campaigns }) => {\r\n if (campaigns && campaigns.length) {\r\n return (\r\n <div className=\"nav-campaign-wrapper\">\r\n <div className=\"title\">\r\n {title.url ? (\r\n <React.Fragment>\r\n <a href={title.url}>\r\n <Text field={title.name} />\r\n </a>\r\n <i className=\"icon icon-arrow-right\" />\r\n </React.Fragment>\r\n ) : (\r\n <Text field={title.name} />\r\n )}\r\n </div>\r\n <div className=\"content row\">\r\n <div className=\"col col-auto\">\r\n <div className=\"spotlight-item\">\r\n <a href={campaigns[0].CampaignUrl.value}>\r\n <Image\r\n media={{ ...campaigns[0].Thumbnail.value }}\r\n data-src={campaigns[0].Thumbnail.value.src}\r\n className=\"spotlight-image lazyload\"\r\n />\r\n </a>\r\n <div className=\"type\">\r\n <Text field={campaigns[0].Type} />\r\n </div>\r\n <div className=\"spotlight-description\">\r\n <a href={campaigns[0].CampaignUrl.value}>\r\n <Text field={campaigns[0].CampaignIntro} />\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n {campaigns.length === 4 ? (\r\n <div className=\"col\">\r\n {campaigns.slice(1).map((campaign, index) => {\r\n const {\r\n Thumbnail,\r\n CampaignIntro,\r\n Type,\r\n CampaignUrl\r\n } = campaign;\r\n return (\r\n <div\r\n key={`navCampaignID-${index}`}\r\n className=\"row campaign-item\"\r\n >\r\n <div className=\"col col-auto\">\r\n <a href={CampaignUrl.value}>\r\n <Image\r\n media={{ ...Thumbnail.value }}\r\n data-src={Thumbnail.value.src}\r\n className=\"campaign-image lazyload\"\r\n />\r\n </a>\r\n </div>\r\n <div className=\"col campaign-details\">\r\n <div className=\"type\">\r\n <Text field={Type} />\r\n </div>\r\n <div className=\"campaign-description\">\r\n <a href={CampaignUrl.value}>\r\n <Text field={CampaignIntro} />\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n ) : (\r\n \"\"\r\n )}\r\n </div>\r\n </div>\r\n );\r\n } else return null;\r\n};\r\nexport default NavCampaign;\r\n","import React from \"react\";\r\nimport { Text, Image } from \"@sitecore-jss/sitecore-jss-react\";\r\n\r\nconst NavRecipe = ({ title, recipes, size }) => {\r\n if (recipes && recipes.length) {\r\n let colSize =\r\n size === \"12\"\r\n ? \"3\"\r\n : size === \"9\"\r\n ? \"4\"\r\n : size === \"6\"\r\n ? \"6\"\r\n : size === \"3\"\r\n ? \"12\"\r\n : \"auto\";\r\n let tileCount =\r\n size === \"12\"\r\n ? \"4\"\r\n : size === \"9\"\r\n ? \"3\"\r\n : size === \"6\"\r\n ? \"2\"\r\n : size === \"3\"\r\n ? \"1\"\r\n : \"\";\r\n return (\r\n <div className=\"nav-recipe-wrapper\">\r\n <div className=\"title\">\r\n {title.url ? (\r\n <React.Fragment>\r\n <a href={title.url}>\r\n <Text field={title.name} />\r\n </a>\r\n <i className=\"icon icon-arrow-right\" />\r\n </React.Fragment>\r\n ) : (\r\n <Text field={title.name} />\r\n )}\r\n </div>\r\n <div className=\"content row\">\r\n {recipes.map((item, index) => {\r\n const { Thumbnail, Type, RecipeUrl, RecipeName } = item;\r\n if (index < tileCount) {\r\n return (\r\n <div key={`navRecipeID-${index}`} className={`col-${colSize}`}>\r\n <div className=\"recipe-item\">\r\n <a href={RecipeUrl.value}>\r\n <Image\r\n media={{ ...Thumbnail.value }}\r\n data-src={Thumbnail.value.src}\r\n className=\"recipe-image lazyload\"\r\n />\r\n </a>\r\n <div className=\"type\">\r\n <Text field={Type} />\r\n </div>\r\n <div className=\"recipe-description\">\r\n <a href={RecipeUrl.value}>\r\n <Text field={RecipeName} />\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n } else return null;\r\n })}\r\n </div>\r\n </div>\r\n );\r\n } else return null;\r\n};\r\nexport default NavRecipe;\r\n","import React from \"react\";\nimport { Text, Link } from \"@sitecore-jss/sitecore-jss-react\";\nimport Details from \"../../../Common/Details\";\n\nconst FeatureParkingCarPark = props => {\n const {\n OnlineGroupLabel = null,\n OnlineCarParkList = null,\n OfflineGroupLabel = null,\n OfflineCarParkList = null,\n CarParkList = null,\n } = props.fields || {};\n\n const renderCarpark = (carParkList, isOnlineCarPark) => {\n let carParkListLayout;\n if (carParkList && carParkList.length > 0) {\n carParkListLayout = carParkList.map((item, index) => {\n const {\n IconColour: iconColour = null,\n IconCharacters: IconCharacters = null,\n ParkType: parkType = null,\n BestPark: bestPark = null,\n AvailableParking: availableParking = null,\n AvailableParkingCount: availableParkingCount = null,\n StoreNames: storeNames = null,\n Precincts: precincts = null,\n MapDirectionLabel: mapDirectionLabel = null,\n MapDirectionLink: mapDirectionLink = null,\n DisabilityParking: disabilityParking = null,\n PramParking: pramParking = null,\n ElectricCarCharging: electricCarCharging = null\n } = item.fields || item || {};\n\n const parkColour = (iconColour && iconColour.value ? iconColour.value : \"\");\n const parkText = (IconCharacters && IconCharacters.value ? IconCharacters.value : \"P\");\n\n let parkingGroup;\n if (parkType && parkType.value) {\n parkingGroup =\n <div key={`myId-${index}`} className=\"parking-carpark__wrapper\">\n <div className=\"parking-carpark__content\">\n <div className=\"parking-carpark__content--icon\" style={{ borderColor: parkColour, backgroundColor: parkColour }}>\n <div className=\"parking-carpark__content--icon-border\">\n <div className=\"parking-carpark__content--icon-text\">{parkText}</div>\n </div>\n </div>\n\n <div className=\"parking-carpark__content--available is-mobile\">\n <div className=\"parking-carpark__content--available-count\">\n <Text field={availableParkingCount} />\n </div>\n <div className=\"parking-carpark__content--available-text\">\n <Text field={availableParking} />\n </div>\n </div>\n\n <div className=\"parking-carpark__content--details\">\n <div className=\"row\">\n <div className=\"parking-carpark__content--title col-12 col-md-10\">\n <div className=\"parking-carpark__content--header\">\n <Text field={parkType} />\n </div>\n {((storeNames && storeNames.length > 0) ||\n (precincts && precincts.value)) &&\n <div className=\"parking-carpark__content--sub\">\n <span className=\"parking-carpark__content--sub-bestpark\">\n <Text field={bestPark} />\n </span>\n {storeNames.map((store, storeIndex) => {\n const { StoreDetails: storeDetails = null } =\n store.fields || {};\n let storeData;\n if (store && store.value) {\n storeData = store\n } else {\n storeData = storeDetails\n }\n return (\n <span key={`storeId-${storeIndex}`}>\n {storeIndex > 0 ? \", \" : \"\"}\n <Link\n field={storeData}\n className=\"parking-carpark__content--sub-item\"\n />\n </span>\n );\n })}\n {precincts &&\n precincts.value &&\n <span className=\"parking-carpark__content--sub-precinct\">\n {storeNames && storeNames.length > 0 ? \", \" : \"\"}\n <Text field={precincts} />\n </span>\n }\n </div>\n }\n </div>\n <div className=\"parking-carpark__content--available is-desktop col-12 col-md-2\">\n <div className=\"parking-carpark__content--available-count\">\n {availableParkingCount && availableParkingCount.value ?\n <Text field={availableParkingCount} />\n : isOnlineCarPark ? \"\" : \"0\"\n }\n </div>\n <div className=\"parking-carpark__content--available-text\">\n {availableParking && availableParking.value ?\n <Text field={availableParking} />\n : isOnlineCarPark ? \"\" : \"Available\"\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n\n {mapDirectionLabel &&\n mapDirectionLabel.value &&\n <div className=\"parking-carpark__location\">\n <Details\n iconValue=\"location\"\n linkUrl={mapDirectionLink && mapDirectionLink.value}\n linkName={mapDirectionLabel}\n size=\"24\"\n />\n </div>\n }\n\n {((disabilityParking && disabilityParking.value) ||\n (pramParking && pramParking.value) ||\n (electricCarCharging && electricCarCharging.value)) && (\n <div className=\"parking-carpark__others\">\n {disabilityParking &&\n disabilityParking.value &&\n <div className=\"parking-carpark__others--item\">\n <i className=\"icon icon-wheelchair\" />\n <span className=\"parking-carpark__others--item-text\">Disabled Parking Available</span>\n </div>\n }\n {pramParking &&\n pramParking.value &&\n <div className=\"parking-carpark__others--item\">\n <i className=\"icon icon-pram\" />\n <span className=\"parking-carpark__others--item-text\">Pram Parking Available</span>\n </div>\n }\n {electricCarCharging &&\n electricCarCharging.value &&\n <div className=\"parking-carpark__others--item\">\n <i className=\"icon icon-valet\" />\n <span className=\"parking-carpark__others--item-text\">Electric Car Charging</span>\n </div>\n }\n </div>\n )}\n </div>\n }\n\n return parkingGroup;\n })\n }\n\n return carParkListLayout;\n }\n\n if ((OnlineCarParkList && OnlineCarParkList.length > 0) ||\n (OfflineCarParkList && OfflineCarParkList.length > 0) ||\n (CarParkList && CarParkList.length > 0)) {\n return (\n <div className=\"parking-carpark font-regular\">\n {OnlineCarParkList &&\n OnlineCarParkList.length > 0 &&\n <div className=\"parking-carpark__live\">\n {OnlineGroupLabel &&\n OnlineGroupLabel.value &&\n <div className=\"parking-carpark__live--header\">\n <span className=\"parking-carpark__live--label\">\n <Text field={OnlineGroupLabel} />\n </span>\n <span className=\"parking-carpark__live--indicator\">LIVE</span>\n </div>\n }\n {renderCarpark(OnlineCarParkList, true)}\n </div>\n }\n {OfflineCarParkList &&\n OfflineCarParkList.length > 0 &&\n <div className={`parking-carpark__other ${OnlineCarParkList && OnlineCarParkList.length > 0 ? \"\" : \"no-live-parking\"}`}>\n {OfflineGroupLabel &&\n OfflineGroupLabel.value &&\n <div className=\"parking-carpark__other--header\">\n <span className=\"parking-carpark__other--label\">\n <Text field={OfflineGroupLabel} />\n </span>\n </div>\n }\n <div className=\"parking-carpark__other--list\">\n {renderCarpark(OfflineCarParkList)}\n </div>\n </div>\n }\n\n {CarParkList &&\n CarParkList.length > 0 &&\n renderCarpark(CarParkList)\n }\n </div>\n );\n } else return null;\n};\nexport default FeatureParkingCarPark;\n","import React from \"react\";\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\nimport CarPark from \"../../../../Feature/Parking/CarPark\";\n\nconst NavCarParks = ({ data }) => {\n const {\n ComponentTitle = null,\n LiveParkingPage = null,\n LiveParkingLabel = null,\n } = data || {}\n return (\n <div className=\"nav-carpark font-regular\">\n {ComponentTitle &&\n ComponentTitle.value &&\n <div className=\"nav-carpark__header\">\n <Text field={ComponentTitle} />\n </div>\n }\n <div className=\"nav-carpark__list\">\n <CarPark fields={data} />\n </div>\n {LiveParkingPage &&\n LiveParkingPage.value &&\n <div className=\"nav-carpark__link\">\n <a href={LiveParkingPage.value}>\n <span>\n <Text field={LiveParkingLabel} />\n </span>\n </a>\n </div>\n }\n\n </div>\n );\n};\nexport default NavCarParks;\n","import React from \"react\";\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\n\nconst NavLinkList = ({ data }) => {\n let navLinkListLayout = \"\";\n\n if (data && data.length > 0) {\n navLinkListLayout =\n <div className=\"nav-link-list font-regular\">\n {data.map((item, index) => {\n const {\n LinkName,\n LinkUrl\n } = item;\n return (\n <div key={\"nav-link-list\" + index}>\n <a className=\"nav-link-list__link\"\n href={LinkUrl && LinkUrl.value ? LinkUrl.value : \"\"}>\n <Text field={LinkName} />\n </a>\n </div>\n )\n })}\n </div>\n }\n return navLinkListLayout;\n};\n\nexport default NavLinkList;\n","import React from \"react\";\nimport NavList from \"../NavList\";\nimport NavDiscoverStore from \"../NavDiscoverStore\";\nimport NavWhatsOn from \"../NavWhatsOn\";\nimport NavRichTextList from \"../NavRichTextList\";\nimport NavBestParking from \"../NavBestParking\";\nimport NavOpeningHours from \"../NavOpeningHours\";\nimport NavMovies from \"../NavMovies\";\nimport NavPopularTimes from \"../NavPopularTimes\";\nimport NavCampaign from \"../NavCampaign\";\nimport NavRecipe from \"../NavRecipe\";\nimport NavCarParks from \"../NavCarParks\";\nimport NavLinkList from \"../NavLinkList\";\n\nconst NavComponent = ({ type, item, centre, size }) => {\n let component;\n switch (type) {\n case \"NavList\":\n component = (\n <NavList\n title={{\n name: item.ComponentTitle,\n url: item.TitleUrl ? item.TitleUrl.value : \"\"\n }}\n data={item.Categories}\n />\n );\n break;\n\n case \"NavDiscoverStore\":\n component = (\n <NavDiscoverStore title={item.ComponentTitle} data={item.Stores} />\n );\n break;\n\n case \"NavWhatsOn\":\n let spotlight = item.WithSpotlight ? item.Spotlight : null;\n\n if (item && item.Promotions && item.Promotions.length > 0) {\n component = (\n <NavWhatsOn\n title={{\n name: item.ComponentTitle,\n url: item.LandingPage ? item.LandingPage.value : \"\"\n }}\n spotlight={spotlight}\n promotions={item.Promotions}\n />\n );\n } else {\n component = \"\";\n }\n\n break;\n\n case \"NavCampaigns\":\n if (item && item.Campaigns && item.Campaigns.length) {\n component = (\n <NavCampaign\n title={{\n name: item.ComponentTitle,\n url: item.LandingPage ? item.LandingPage.value : \"\"\n }}\n campaigns={item.Campaigns}\n />\n );\n } else {\n component = \"\";\n }\n\n break;\n\n case \"NavRichTextList\":\n component = (\n <NavRichTextList\n title={item.ComponentTitle}\n richTextList={item.RichTextList}\n />\n );\n break;\n\n case \"NavBestParking\":\n component = (\n <NavBestParking\n title={{\n name: item.ComponentTitle,\n url: item.TitleUrl ? item.TitleUrl.value : \"\"\n }}\n centre={centre}\n retailers={item.Retailers}\n />\n );\n break;\n\n case \"NavOpeningHours\":\n component = <NavOpeningHours data={item} />;\n break;\n\n case \"NavMovies\":\n component = (\n <NavMovies\n title={{\n name: item.ComponentTitle,\n url: item.TitleUrl ? item.TitleUrl.value : \"\"\n }}\n data={item.MovieList}\n />\n );\n break;\n\n case \"NavPopularTimes\":\n component = <NavPopularTimes data={item} />;\n break;\n\n case \"NavRecipes\":\n component = (\n <NavRecipe\n title={{\n name: item.ComponentTitle,\n url: item.LandingPage ? item.LandingPage.value : \"\"\n }}\n recipes={item.Recipes}\n size={size}\n />\n );\n break;\n\n case \"NavCarParks\":\n component = <NavCarParks data={item} />;\n break;\n\n case \"NavLinkList\":\n component = <NavLinkList data={item} />;\n break;\n\n default:\n component = \"\";\n break;\n }\n\n return <React.Fragment>{component}</React.Fragment>;\n};\n\nexport default NavComponent;\n","import React, { Component } from \"react\";\nimport defaultImg from \"../../../assets/img/placeholders/transparent.png\";\nimport { ReactSVG } from \"react-svg\";\nimport { Image } from \"@sitecore-jss/sitecore-jss-react\";\n\nclass HeaderImageFormat extends Component {\n constructor(props) {\n super(props);\n }\n\n validateImageFormat = (logo, uniqueKey, isSticky, simpleNav, logoLayout, isGeneric) => {\n const imageSource = logo.value.src;\n\n const splitLogoComponent = (sticky, src, simpleState) => {\n return (\n <div className={`logo-container ${isSticky ? 'remove-indent-sticky' : isGeneric ? 'remove-indent-generic' : !simpleNav ? 'remove-indent-non-sticky' : ''}`}>\n {['above', 'below'].map((pos) => <div className={`cdn-url-image-${pos}${sticky ? '-sticky' : isGeneric ? '-generic' : ''}`} style={{\"background-image\": `url('${src}')`}}></div>)}\n </div>\n )\n }\n\n if (imageSource) {\n let svgPattern = new RegExp(\"svg\");\n let urlPattern = new RegExp(\"https|http|.com\")\n let isSVGFormat = svgPattern.test(imageSource.toLowerCase());\n let isUrlFormat = urlPattern.test(imageSource.toLowerCase());\n let imageFormat = \"\"\n if (isSVGFormat && isUrlFormat) {\n // imageFormat =\n // <img\n // className=\"cdn-url-image\"\n // alt=\"centre logo\"\n // src={imageSource}\n // />\n \n imageFormat = logoLayout === 'Split' && !simpleNav ? \n splitLogoComponent(isSticky, imageSource, simpleNav, isGeneric) : <img className={`cdn-url-image ${ (logoLayout === 'Split' && simpleNav) || (logoLayout === 'Split' && isGeneric) ? 'remove-indent-generic' : ''}`} style={{ filter: (logoLayout === 'Special' && simpleNav) ? \"contrast(5)\" : ((logoLayout === 'Split' || logoLayout === 'Default') && simpleNav ) && \"brightness(0) contrast(10) invert(0)\" }} alt=\"centre logo\" src={imageSource} />\n\n // <div className=\"logo-wrapper\">\n // <img\n // className=\"cdn-url-image\"\n // alt=\"qicgre logo\"\n // src={imageSource}\n // />\n // <svg className=\"cdn-url-image-svg\">\n // <filter id={`filter-image-cdn-${uniqueKey}`} colorInterpolationFilters=\"sRGB\">\n // <feColorMatrix\n // type=\"matrix\"\n // values=\"\">\n // </feColorMatrix>\n // </filter>\n // <image\n // filter={`url(#filter-image-cdn-${uniqueKey})`}\n // preserveAspectRatio=\"xMidYMid meet\"\n // xlinkHref={imageSource}\n // x=\"0\"\n // y=\"0\"\n // width=\"100%\"\n // height=\"100%\">\n // </image>\n // </svg >\n // </div>\n }\n else if (isSVGFormat) {\n imageFormat =\n <ReactSVG src={imageSource} />\n }\n else {\n imageFormat =\n <Image\n media={{ ...logo.value, src: defaultImg }}\n data-src={imageSource}\n className=\"img-fluid lazyload\"\n />\n }\n return imageFormat;\n }\n }\n\n render() {\n const { logo, uniqueKey, isSticky, simpleNav, logoLayout, isGeneric } = this.props;\n return (\n <a href=\"/\" className=\"navbar-brand\">\n {this.validateImageFormat(logo, uniqueKey, isSticky, simpleNav, logoLayout, isGeneric)}\n </a>\n );\n }\n}\n\nexport default HeaderImageFormat;","import React from \"react\";\n\nconst LazyLoading = () => {\n return (\n <div className=\"loader-wrapper\">\n <div className=\"loader\"></div>\n </div>\n )\n};\n\nexport default LazyLoading;","import React, { Component } from \"react\";\r\nimport { Text, Link } from \"@sitecore-jss/sitecore-jss-react\";\r\nimport HeaderImageFormat from \"../../../../Common/HeaderImageFormat\";\r\nimport LazyLoading from \"../../../../Common/LazyLoading\";\r\n\r\nclass NavMobile extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n activeMenuTarget: null,\r\n activeMenuName: '',\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (\r\n prevState.activeMenuTarget &&\r\n prevState.activeMenuTarget != this.state.activeMenuTarget\r\n ) {\r\n prevState.activeMenuTarget.checked = false;\r\n }\r\n }\r\n\r\n handleMainNavClick = (activeTarget, displayNameValue) => {\r\n this.props.onShowNav(displayNameValue);\r\n this.setState({\r\n activeMenuTarget: activeTarget,\r\n activeMenuName: displayNameValue\r\n });\r\n };\r\n\r\n buildMenu = (navigations, isSimpleNav) => {\r\n const menu = navigations.map((navItem, index) => {\r\n let subMenu = \"\";\r\n let mainNav = \"\";\r\n const {\r\n DisplayName,\r\n Components,\r\n SecondaryNavigations,\r\n NavLink,\r\n } = navItem\r\n if (isSimpleNav) {\r\n if (Components && Components.length > 0) {\r\n subMenu = Components.map(componentItem => {\r\n const { ComponentName, Links } = componentItem || {};\r\n if (\r\n ComponentName &&\r\n ComponentName.value === \"NavLinkList\" &&\r\n Links.length > 0\r\n ) {\r\n return Links.map((secondaryItem, secIndex) => {\r\n const { LinkName, LinkUrl } = secondaryItem;\r\n return (\r\n <div\r\n key={\"sec_\" + secIndex}\r\n className={\r\n \"secondary-nav\" +\r\n (this.state.activeMenuTarget.id === \"_nav_\" + index)\r\n ? \" active\"\r\n : \"\"\r\n }\r\n >\r\n <Link\r\n field={{ href: LinkUrl.value }}\r\n className={\"secondary-menu-item\"}\r\n >\r\n <Text field={LinkName} />\r\n </Link>\r\n </div>\r\n );\r\n });\r\n }\r\n });\r\n }\r\n } else if (SecondaryNavigations && SecondaryNavigations.length > 0) {\r\n subMenu = SecondaryNavigations.map((secondaryItem, secIndex) => {\r\n return (\r\n <div\r\n key={\"sec_\" + secIndex}\r\n className={\r\n \"secondary-nav\" +\r\n (this.state.activeMenuTarget.id === \"_nav_\" + index)\r\n ? \" active\"\r\n : \"\"\r\n }\r\n >\r\n <Link\r\n field={{ href: secondaryItem.LinkUrl.value }}\r\n className={\"secondary-menu-item\"}\r\n >\r\n <Text field={secondaryItem.DisplayName} />\r\n </Link>\r\n </div>\r\n );\r\n }\r\n );\r\n }\r\n\r\n if (NavLink && NavLink.value && NavLink.value.href) {\r\n mainNav =\r\n <div key={\"pri_\" + index} className={\"main-nav\"}>\r\n <a\r\n className=\"drop\"\r\n {...NavLink.value}\r\n href={NavLink.value.href + NavLink.value.querystring}\r\n >\r\n <Text field={DisplayName} />\r\n </a>\r\n </div>\r\n } else {\r\n mainNav =\r\n <div key={\"pri_\" + index} className={\"main-nav\"}>\r\n <input\r\n id={\"_nav_\" + index}\r\n type=\"checkbox\"\r\n onClick={e => this.handleMainNavClick(e.currentTarget, DisplayName.value)}\r\n />\r\n <label className=\"drop\" htmlFor={\"_nav_\" + index}>\r\n <Text field={DisplayName} />\r\n </label>\r\n <div className=\"secondary-menu-group\">{\r\n (this.state.activeMenuName === DisplayName.value && subMenu) ? subMenu : (\r\n <LazyLoading />\r\n )}\r\n </div>\r\n </div>\r\n }\r\n return mainNav;\r\n });\r\n return <div>{menu}</div>;\r\n };\r\n\r\n render() {\r\n const {\r\n navigations,\r\n onCloseMobileNav,\r\n centreLogo,\r\n isSimpleNav,\r\n logoLayout\r\n } = this.props;\r\n return (\r\n <div className=\"mobile-nav-container\">\r\n <div className=\"mobile-nav-wrapper\">\r\n <div className=\"container\">\r\n <div className=\"header-container\">\r\n <div className=\"logo\">\r\n <HeaderImageFormat\r\n logo={centreLogo}\r\n uniqueKey=\"centre-logo-mobile\"\r\n isSticky={true}\r\n simpleNav={isSimpleNav}\r\n isGeneric={true}\r\n logoLayout={logoLayout}\r\n />\r\n </div>\r\n <i onClick={onCloseMobileNav} className=\"icon icon-close\" />\r\n </div>\r\n <div className=\"mobile-nav-content\">\r\n {this.buildMenu(navigations, isSimpleNav)}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\nexport default NavMobile;\r\n","import React, { Component } from \"react\";\nimport { Link } from \"@sitecore-jss/sitecore-jss-react\";\nclass UniversalBanner extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showBanner: true\n };\n }\n\n handleClick = () => {\n this.setState({\n showBanner: false\n });\n };\n\n render() {\n const {\n BannerLink,\n BannerBackgroundColor,\n BannerBackgroundImage,\n BannerFontColor,\n BannerIcon\n } = this.props.data;\n let isDefault = true;\n if (\n (BannerBackgroundColor && BannerBackgroundColor.value) ||\n (BannerBackgroundImage && BannerBackgroundImage.value)\n ) {\n isDefault = false;\n }\n if (\n BannerLink &&\n BannerLink.value &&\n BannerLink.value.href &&\n BannerLink.value.text\n )\n return (\n <div\n className={\n \"universal-banner \" +\n (this.state.showBanner ? \"\" : \"hidden \") +\n (this.props.isNavShown ? \"is-hidden\" : \"\") +\n (isDefault ? \"\" : \" banner__themed\")\n }\n style={{\n backgroundColor:\n BannerBackgroundColor && BannerBackgroundColor.value,\n backgroundImage:\n BannerBackgroundImage &&\n BannerBackgroundImage.value &&\n BannerBackgroundImage.value.src\n ? `url(${BannerBackgroundImage.value.src})`\n : null,\n color: BannerFontColor && BannerFontColor.value\n }}\n >\n <div className=\"container\">\n <div className=\"universal-banner__details\">\n {BannerIcon && BannerIcon.value ? (\n <i className={`icon banner-icon icon-${BannerIcon.value}`} />\n ) : (\n \"\"\n )}\n <u>\n <Link field={BannerLink} />\n </u>\n <i\n className=\"icon banner-icon-close icon-outlined-x\"\n onClick={this.handleClick}\n />\n </div>\n </div>\n </div>\n );\n else return null;\n }\n}\n\nexport default UniversalBanner;\n","import React from \"react\";\r\nimport thumbnailPlaceholder from \"../assets/img/placeholders/thumbnailPlaceholder.png\";\r\n\r\nexport const imageHelper = (src, alt) => {\r\n let imgSrc = thumbnailPlaceholder;\r\n let imgAlt = \"\";\r\n\r\n if (src && src.value) {\r\n imgSrc = src.value;\r\n }\r\n\r\n if (alt && alt.value) {\r\n imgAlt = alt.value;\r\n }\r\n\r\n return <img src={imgSrc} alt={imgAlt} />;\r\n};\r\n","export const disableBodyScroll = () => {\n const documentHeight = document.documentElement.scrollHeight;\n const windowHeight = window.innerHeight;\n\n if (documentHeight > windowHeight) {\n const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;\n document.documentElement.classList.add(\"noscroll\");\n document.documentElement.style.top = `-${scrollTop}px`;\n }\n};\n\nexport const enableBodyScroll = () => {\n const scrollTop = parseInt(document.documentElement.style.top || '0px'); \n document.documentElement.classList.remove(\"noscroll\");\n window.scrollTo(0, -scrollTop); \n};\n\nexport const disableBodyScrolling = () => {\n if (document) {\n let bodyWrapper = document.querySelector(\"body\");\n if (bodyWrapper) {\n bodyWrapper.classList.add(\"disable-scroll\");\n }\n }\n};\n\nexport const enableBodyScrolling = () => {\n if (document) {\n let bodyWrapper = document.querySelector(\"body\");\n if (bodyWrapper) {\n bodyWrapper.classList.remove(\"disable-scroll\");\n }\n }\n};","import React, { Component } from \"react\";\r\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\r\nimport { imageHelper } from \"../../../helper/ImageHelper\";\r\nimport {\r\n disableBodyScroll,\r\n enableBodyScroll\r\n} from \"../../../helper/ScrollHelper\";\r\n\r\nclass Lightbox extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { isHidden: true, enableFade: false };\r\n }\r\n\r\n componentDidMount() {\r\n if (\r\n this.props.data &&\r\n this.props.data.fields &&\r\n this.props.data.fields.HideLightbox &&\r\n !this.props.data.fields.HideLightbox.value\r\n ) {\r\n setTimeout(() => {\r\n this.setState({ isHidden: false });\r\n this.disableBodyScroll();\r\n }, 3000);\r\n }\r\n }\r\n\r\n disableBodyScroll = () => {\r\n disableBodyScroll();\r\n };\r\n enableBodyScroll = () => {\r\n setTimeout(() => {\r\n enableBodyScroll();\r\n document.querySelector(\".lightbox-main-wrapper\").style.zIndex = \"-1\";\r\n }, 1000);\r\n };\r\n\r\n render() {\r\n const { isHidden, enableFade } = this.state;\r\n\r\n if (!isHidden) {\r\n const {\r\n Title: title = null,\r\n Thumbnail: thumbnail = null,\r\n ThumbnailAltText: thumbnailAlt = null,\r\n Button: button = null,\r\n ButtonUrl: buttonUrl = null,\r\n Description: details = null\r\n } = this.props.data.fields || {};\r\n return (\r\n <div\r\n className={`lightbox-main-wrapper ${\r\n enableFade ? \"lb-closed\" : \"lb-opened\"\r\n }`}\r\n >\r\n <div className=\"lightbox-blur\" />\r\n <div className=\"lightbox-wrapper\">\r\n <div className=\"lightbox-container\">\r\n <div className=\"lightbox-info\">\r\n <div className=\"lightbox-content\">\r\n <div className=\"title\">\r\n <Text field={title} />\r\n </div>\r\n <div className=\"details\">\r\n <Text field={details} />\r\n </div>\r\n </div>\r\n {buttonUrl && buttonUrl.value && button && button.value && (\r\n <a href={buttonUrl.value}>\r\n <div className=\"btn primary-btn lightbox-button\">\r\n <Text field={button} />\r\n </div>\r\n </a>\r\n )}\r\n </div>\r\n <div className=\"lightbox-image\">\r\n {imageHelper(thumbnail, thumbnailAlt)}\r\n </div>\r\n </div>\r\n <div\r\n className=\"close-button\"\r\n onClick={() =>\r\n this.setState({ enableFade: true }, () =>\r\n this.enableBodyScroll()\r\n )\r\n }\r\n >\r\n <i className=\"icon icon-x\" />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n } else return null;\r\n }\r\n}\r\n\r\nexport default Lightbox;\r\n","import React, { Component } from \"react\";\nimport { Text, Placeholder } from \"@sitecore-jss/sitecore-jss-react\";\nimport md5 from 'md5';\nimport NavComponent from \"../../../Feature/Header/Navigation/NavComponent\";\nimport NavMobile from \"../../../Feature/Header/Navigation/NavMobile\";\nimport axios from \"axios\";\nimport FeatureGenericContentHomeQuickLinks from \"../../../Feature/GenericContent/HomeQuickLinks\";\nimport TagManager from \"react-gtm-module\";\nimport UniversalBanner from \"../../../Common/UniversalBanner\";\nimport HeaderImageFormat from \"../../../Common/HeaderImageFormat\";\nimport Lightbox from \"../../../Common/Lightbox\";\nimport LazyLoading from \"../../../Common/LazyLoading\";\nimport {\n disableBodyScroll,\n enableBodyScroll\n} from \"../../../../helper/ScrollHelper\";\n\nclass FeatureHeaderHomePageHeader extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showSearch: false,\n showNav: false,\n showMobileNav: false,\n activeNav: null,\n activeSub: null,\n activeContent: [],\n activeSubList: [],\n navigations: [],\n isSimpleNav: false\n };\n }\n\n componentDidMount() {\n // initialize top menu item based from layout service\n const { UseSimpleHeader, Navigations } = this.props.fields;\n\n let isSimpleNav = false;\n\n if (UseSimpleHeader && UseSimpleHeader.value) {\n isSimpleNav = true;\n }\n if (document) {\n if (Navigations && Navigations.length > 0) {\n let navigations = Navigations.map(x => {\n return { DisplayName: { value: x.fields.DisplayName.value } };\n });\n this.setState({\n ...this.state,\n navigations: navigations,\n isSimpleNav\n });\n }\n\n const ua = window.navigator.userAgent.toLowerCase();\n const brandWrapper = document.getElementsByClassName(\"home-nav-logo\")[0];\n if (/msie|trident/.test(ua)) {\n brandWrapper.classList.add(\"is-IE\");\n } else {\n brandWrapper.classList.add(\"not-IE\");\n }\n this.loadNavigationData();\n this.stickyNavBar();\n\n }\n if (window) {\n if (isSimpleNav) {\n window.addEventListener(\"resize\", this.handleWindowResize);\n }\n }\n }\n\n handleWindowResize = () => {\n if (window.outerWidth >= 992) {\n this.showMobileNav(false);\n if (this.state.showSearch) {\n this.setState({ showSearch: false, showNav: false });\n }\n const newHeaderWrapper = document.querySelector(\n \".homepageheader-navbar-wrapper\"\n );\n if (newHeaderWrapper) {\n newHeaderWrapper.style.height = \"auto\";\n newHeaderWrapper.style.height = newHeaderWrapper.clientHeight + \"px\";\n }\n\n if (document) {\n let containerMargin = 0,\n navColWidth = 0,\n navLinkLeft = 0,\n leftPos = 0;\n\n const jsHeaderContainer = document.querySelector(\n \".js-header-container\"\n );\n const jsNavbarNav = document.querySelector(\".js-navbar-nav\");\n const jsNavContent = document.querySelector(\".nav-content.active\");\n let jsNavItem = \"\";\n let jsNavLinkList = \"\";\n\n if (jsHeaderContainer) {\n containerMargin = window\n .getComputedStyle(jsHeaderContainer)\n .getPropertyValue(\"margin-left\")\n .replace(\"px\", \"\");\n navColWidth = jsHeaderContainer.clientWidth / 2;\n }\n\n if (jsNavbarNav) {\n jsNavItem = jsNavbarNav.querySelector(\".nav-item.active\");\n if (jsNavItem) {\n navLinkLeft = jsNavItem.getBoundingClientRect().x;\n }\n }\n\n if (jsNavContent) {\n jsNavLinkList = jsNavContent.querySelector(\".js-nav-link-list\");\n leftPos = navLinkLeft - containerMargin - navColWidth;\n if (jsNavLinkList) {\n jsNavLinkList.style.left = leftPos + \"px\";\n }\n }\n }\n }\n // else {\n // this.hideOverlay();\n // }\n };\n\n adjustNavHeight = (isSimpleNav) => {\n if (isSimpleNav) {\n if (window.outerWidth >= 992) {\n const newHeaderWrapper = document.querySelector(\n \".homepageheader-navbar-wrapper\"\n );\n if (newHeaderWrapper) {\n newHeaderWrapper.style.height = newHeaderWrapper.clientHeight + \"px\";\n }\n }\n }\n }\n\n loadNavigationData = () => {\n let contextInfo = window.document.getElementsByName(\"ContextItem\")[0];\n let me = this;\n const pageId = contextInfo.value;\n const dbName = contextInfo.dataset.targetDb;\n\n // url = `/api/sitecore/navigation/getnavigation?pageId=${pageId}&dbName=${dbName}`;\n axios({\n url: `/api/sitecore/navigation/getnavigation`,\n method: \"GET\",\n params: {\n pageId: pageId,\n dbName: dbName\n }\n })\n .then(responseRaw => {\n let response = responseRaw.data ? responseRaw.data : null;\n\n if (response && response.data.Navigations) {\n me.setState(\n {\n ...me.state,\n navigations: response.data.Navigations\n },\n () => {\n if (me.state.showNav) {\n me.getSubList();\n }\n }\n );\n }\n })\n .catch(error => {\n // just handle error\n });\n };\n\n handleFocus = () => {\n if (document) {\n document.querySelector(\"#consumer-search-bar\").focus();\n }\n };\n\n handleClearSearch = () => {\n if (document) {\n document.querySelector(\".searchbar .search-cancel\") &&\n document.querySelector(\".searchbar .search-cancel\").click();\n }\n };\n\n showNav = navItem => {\n this.adjustNavHeight(this.state.isSimpleNav);\n\n if (this.state.activeNav !== navItem) {\n this.setState(\n {\n showNav: true,\n activeNav: navItem,\n activeContent: []\n },\n this.getSubList\n );\n }\n };\n\n showNavMobile = navItem => {\n this.adjustNavHeight(this.state.isSimpleNav);\n\n if (this.state.activeNav !== navItem) {\n this.setState(\n {\n showNav: false,\n activeNav: navItem,\n activeContent: []\n },\n () => this.getSubList(false)\n );\n }\n };\n\n showMobileNav = show => {\n if (this.state.showMobileNav !== show) {\n this.setState({\n showMobileNav: show\n });\n }\n };\n\n getSubList = async (getSubContent = true) => {\n console.log('======== getSubList ========');\n let contextInfo = window.document.getElementsByName(\"ContextItem\")[0];\n const pageId = contextInfo.value;\n const dbName = contextInfo.dataset.targetDb;\n const { navigations, isSimpleNav, activeNav } = this.state;\n if (!isSimpleNav) {\n let top = navigations.find(x => x.DisplayName.value === activeNav);\n\n // Check if we need to load secondary nav data\n if (top && top.SecondaryNavIds && top.SecondaryNavIds.length && (!top.SecondaryNavigations || !top.SecondaryNavigations.length)) {\n try {\n this.setState({\n isLoadingSecondary: true\n });\n\n let secondaryApiUrl = `/api/sitecore/navigation/getsecondarynavigation?a=1&pageId=${pageId}&dbName=${dbName}`;\n top.SecondaryNavIds.forEach(navId => {\n secondaryApiUrl += `&SecondaryNavIds=${navId}`;\n });\n let secondaryData;\n\n if (!secondaryData) {\n // Make API call if no cached data\n try {\n let secondaryApiUrl = `/api/sitecore/navigation/getsecondarynavigation?a=1&pageId=${pageId}&dbName=${dbName}`;\n top.SecondaryNavIds.forEach(navId => {\n secondaryApiUrl += `&SecondaryNavIds=${navId}`;\n });\n const { data } = await axios({\n url: secondaryApiUrl,\n method: \"GET\",\n });\n\n secondaryData = data.data.SecondaryNavigations;\n } catch (e) {\n // sub nav fetch error\n console.error('SUB NAV ERROR!!!!!');\n console.error(e);\n }\n }\n\n // Update the navigation item with secondary data\n top[\"SecondaryNavigations\"] = secondaryData;\n\n // Update navigations in state with new data\n const updatedNavigations = navigations.map(nav => \n nav.DisplayName.value === activeNav ? {...nav, SecondaryNavigations: secondaryData} : nav\n );\n\n this.setState({\n navigations: updatedNavigations,\n isLoadingSecondary: false\n });\n\n } catch (error) {\n console.error('Error loading secondary navigation:', error);\n this.setState({\n isLoadingSecondary: false\n });\n return;\n }\n }\n\n if (top && top.SecondaryNavigations) {\n let subList = top.SecondaryNavigations;\n const temp = subList.map(item => {\n return {\n name: item.DisplayName.value,\n url: item.LinkUrl.value\n };\n });\n\n this.setState(\n {\n activeSubList: temp,\n activeSub: temp.length ? temp[0].name : ''\n },\n getSubContent ? this.getSubContent : () => {}\n );\n }\n }\n };\n\n hideOverlay = () => {\n enableBodyScroll();\n this.setState({\n showSearch: false,\n showNav: false,\n activeNav: null,\n activeContent: [],\n activeSubList: []\n });\n if (this.state.isSimpleNav) {\n this.handleClearSearch();\n }\n };\n\n setSub = sub => {\n if (this.state.activeSub !== sub) {\n this.setState(\n {\n activeSub: sub\n },\n this.getSubContent\n );\n }\n };\n\n getColumnSize = col => {\n return col === \"25\"\n ? \"3\"\n : col === \"50\"\n ? \"6\"\n : col === \"75\"\n ? \"9\"\n : col === \"100\"\n ? \"12\"\n : \"\";\n };\n\n getSubContent = () => {\n const content = [];\n\n let top = this.state.navigations.find(\n x => x.DisplayName.value === this.state.activeNav\n ).SecondaryNavigations;\n\n let second = top.find(y => y.DisplayName.value === this.state.activeSub);\n\n if (second) {\n let componentList = second.Components;\n let columnList = second.Layout.value.split(\"-\");\n\n let column = [];\n column[0] = componentList.filter(x => x.ColumnPosition.value === \"1\");\n column[1] = componentList.filter(x => x.ColumnPosition.value === \"2\");\n column[2] = componentList.filter(x => x.ColumnPosition.value === \"3\");\n\n column.map((item, index) => {\n if (item.length > 0) {\n let colSize = this.getColumnSize(\n columnList[item[0].ColumnPosition.value - 1]\n );\n content.push(\n <div\n key={`compId-${index}`}\n className={`col-${colSize} order-${item[0].ColumnPosition.value}`}\n >\n {item.map((component, index) => {\n return (\n <div key={`rowID-${index}`} className=\"nav-component\">\n <NavComponent\n type={component.ComponentName.value}\n item={component}\n centre={this.props.params.activeCentre}\n size={colSize}\n />\n </div>\n );\n })}\n </div>\n );\n }\n });\n\n this.setState({\n activeContent: content\n });\n }\n };\n\n stickyNavBar = () => {\n let navbar = document.getElementsByClassName(\"home-content-wrapper\")[0];\n let stickyNavbar = document.getElementsByClassName(\"sticky-navbar\")[0];\n\n window.onscroll = function () {\n if (window.outerWidth >= 992) {\n const isNavActive = document.querySelector(\n \".homepageheader-navbar-wrapper.active\"\n );\n if (!isNavActive) {\n stickyFunction();\n }\n }\n };\n\n window.onresize = function () {\n if (window.outerWidth < 992) {\n navbar.classList.remove(\"is-shrink\");\n stickyNavbar.classList.remove(\"is-sticky\");\n stickyNavbar.style.top = \"-100%\";\n }\n };\n\n function stickyFunction() {\n let shrink = navbar.offsetTop;\n let sticky = navbar.offsetTop + navbar.clientHeight + 88;\n\n if (window.pageYOffset >= shrink) {\n navbar.classList.add(\"is-shrink\");\n navbar.classList.remove(\"default-wrapper\");\n } else {\n navbar.classList.remove(\"is-shrink\");\n navbar.classList.add(\"default-wrapper\");\n }\n\n if (window.pageYOffset >= sticky) {\n stickyNavbar.classList.add(\"is-sticky\");\n stickyNavbar.style.top = \"0px\";\n } else {\n stickyNavbar.style.top = \"-\" + navbar.clientHeight + \"px\";\n stickyNavbar.classList.remove(\"is-sticky\");\n }\n }\n };\n\n checkLogoStructure = () => {\n const imageProperties = this.props.fields.CentreLogo.value.alt;\n let logoClass = \"\";\n if (imageProperties) {\n if (/\\bblock\\b/g.test(imageProperties)) {\n logoClass = \"image-block\";\n } else if (/\\bone-line\\b/g.test(imageProperties)) {\n logoClass = \"image-one-line\";\n } else if (/\\btwo-line\\b/g.test(imageProperties)) {\n logoClass = \"image-two-line\";\n }\n }\n return logoClass;\n };\n\n renderComplexNavContent = () => {\n let complexNavLayout = \"\";\n\n if (this.state.showNav) {\n complexNavLayout = (\n <div className={`nav-container ${this.state.showNav ? \"active\" : \"\"}`}>\n {this.state.isLoadingSecondary ? (\n <LazyLoading />\n ) : (\n <>\n <div className=\"nav-sub\">\n <div className=\"container\">\n {this.state.activeSubList &&\n this.state.activeSubList.map((item, index) => (\n <div\n key={`myId-${index}`}\n className=\"sub-item\"\n onMouseEnter={() => {\n this.setSub(item.name);\n TagManager.dataLayer({\n dataLayer: {\n event: \"viewSubNav\",\n subNavActive: item.name\n },\n dataLayerName: \"dataLayer\"\n });\n }}\n >\n <a\n href={item.url}\n className={`btn btn-link ${this.state.activeSub === item.name ? \"active\" : \"\"\n }`}\n >\n <Text field={{ value: item.name }} />\n </a>\n </div>\n ))}\n </div>\n </div>\n <div className=\"nav-content\">\n <div className=\"container\">\n <div className=\"row\">{this.state.activeContent}</div>\n </div>\n </div>\n </>\n )}\n </div>\n );\n }\n return complexNavLayout;\n };\n\n renderSimpleNavContent = () => {\n const { activeNav, navigations, showNav } = this.state;\n\n let simpleNavLayout = \"\";\n let itemIndex = 0;\n simpleNavLayout = (\n <div className={`nav-container ${showNav ? \"active\" : \"\"}`}>\n <div className=\"container\">\n {navigations.map((item, index) => {\n const {\n DisplayName,\n NavLink,\n SecondaryNavigations,\n SecondaryNavIds,\n Components\n } = item;\n\n if (\n !((SecondaryNavIds && SecondaryNavIds.length) || (SecondaryNavigations && SecondaryNavigations.length) || (Components && Components.length))\n &&\n !(NavLink && NavLink.value && NavLink.value.href)\n ) {\n itemIndex--;\n }\n\n let leftPos = 0;\n let hasComponents = false;\n\n if (\n activeNav &&\n activeNav.toLowerCase() === DisplayName.value.toLowerCase()\n ) {\n if (document) {\n let containerMargin = 0,\n navColWidth = 0,\n navLinkLeft = 0;\n\n const jsHeaderContainer = document.querySelector(\n \".js-header-container\"\n );\n const jsNavbarNav = document.querySelector(\".js-navbar-nav\");\n\n if (jsHeaderContainer) {\n containerMargin = window\n .getComputedStyle(jsHeaderContainer)\n .getPropertyValue(\"margin-left\")\n .replace(\"px\", \"\");\n navColWidth = jsHeaderContainer.clientWidth / 2;\n }\n if (jsNavbarNav) {\n navLinkLeft = jsNavbarNav\n .querySelectorAll(\".nav-item\")\n [itemIndex].getBoundingClientRect().x;\n }\n\n leftPos = navLinkLeft - containerMargin - navColWidth;\n }\n }\n\n itemIndex++;\n return (\n <div\n key={DisplayName.value + itemIndex}\n className={`nav-content \n ${activeNav &&\n activeNav.toLowerCase() === DisplayName.value.toLowerCase()\n ? \"active\"\n : \"\"\n }\n\n `}\n >\n <div className=\"row\">\n <div className=\"col col-lg-6\">\n {Components &&\n Components.length > 0 &&\n Components.map((item, index) => {\n const { ComponentName, ComponentTitle } = item;\n\n let componentLayout = \"\";\n\n if (\n ComponentName &&\n ComponentName.value !== \"NavLinkList\"\n ) {\n hasComponents = true;\n componentLayout = (\n <div key={ComponentName.value + index}>\n {ComponentName.value === \"NavPopularTimes\" && (\n <div className=\"nav-populartimes__header\">\n <Text field={ComponentTitle} />\n </div>\n )}\n\n <NavComponent\n type={ComponentName.value}\n item={item}\n centre={this.props.params.activeCentre}\n size={\"12\"}\n />\n </div>\n );\n }\n return componentLayout;\n })}\n </div>\n <div className=\"col col-lg-6\">\n {Components &&\n Components.length > 0 &&\n Components.map((item, index) => {\n const { ComponentName, Links } = item;\n\n let componentLayout = \"\";\n\n if (\n ComponentName &&\n ComponentName.value === \"NavLinkList\"\n ) {\n componentLayout = (\n <div\n className=\"js-nav-link-list\"\n key={ComponentName.value + index}\n style={hasComponents ? {} : { left: leftPos + \"px\" }}\n >\n <NavComponent\n type={ComponentName.value}\n item={Links}\n />\n </div>\n );\n }\n return componentLayout;\n })}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n\n return simpleNavLayout;\n };\n\n renderNavLink = (navigations, activeNav, isSimpleNav, showNav) => {\n return (\n navigations &&\n navigations.length > 0 &&\n navigations.map((item, index) => {\n const {\n DisplayName,\n NavLink,\n SecondaryNavigations,\n SecondaryNavIds,\n Components\n } = item;\n\n let navLinkLayout = \"\";\n\n if ((SecondaryNavIds && SecondaryNavIds.length) || (SecondaryNavigations && SecondaryNavigations.length) || (Components && Components.length)) {\n navLinkLayout =\n <li\n key={`liId-${index}`}\n className={`nav-item ${activeNav === DisplayName.value ? \"active\" : \"\"\n }`}\n >\n <a\n className=\"nav-link\"\n onClick={() => {\n disableBodyScroll();\n this.showNav(DisplayName.value);\n }}\n onMouseEnter={() => {\n if (isSimpleNav && showNav) {\n disableBodyScroll();\n this.showNav(DisplayName.value);\n }\n }}\n >\n <Text field={{ value: DisplayName.value }} />\n </a>\n </li>\n }\n else if (NavLink && NavLink.value && NavLink.value.href) {\n navLinkLayout =\n <li\n key={`liId-${index}`}\n className={`nav-item ${activeNav === DisplayName.value ? \"active\" : \"\"\n }`}\n >\n <a\n className=\"nav-link\"\n {...NavLink.value}\n href={NavLink.value.href + NavLink.value.querystring}\n onMouseEnter={() => {\n if (isSimpleNav && showNav) {\n disableBodyScroll();\n this.showNav(DisplayName.value);\n }\n }}\n >\n <Text field={DisplayName} />\n </a>\n </li>\n }\n return navLinkLayout\n })\n )\n };\n\n getRenderedNavSize = (navigations) => {\n let navCount = 0;\n if (!navigations || !navigations.length) {\n return navCount;\n }\n navigations.forEach((item) => {\n const {\n NavLink,\n SecondaryNavigations,\n SecondaryNavIds,\n Components\n } = item;\n\n if ((SecondaryNavIds && SecondaryNavIds.length) || (SecondaryNavigations && SecondaryNavigations.length) || (Components && Components.length)) {\n navCount++;\n }\n else if (NavLink && NavLink.value && NavLink.value.href) {\n navCount++;\n }\n });\n\n if (navCount >= 6) {\n return 'big';\n } \n return 'standard';\n };\n\n render() {\n const {\n CentreLogo,\n CentreOpeningHoursDetail,\n HomepageLightbox,\n UseSimpleHeader,\n LogoLayout\n } = this.props.fields;\n\n const {\n navigations,\n activeNav,\n showNav,\n showSearch,\n showMobileNav,\n isSimpleNav\n } = this.state;\n\n return (\n <div className={`${isSimpleNav ? \"simple-header\" : \"\"}`}>\n {isSimpleNav && (\n <div\n className={`search-bar-main container ${showSearch ? \"search-active\" : \"\"\n }`}\n >\n <Placeholder\n name=\"jss-searchmodal-right\"\n rendering={this.props.rendering}\n isSimple={true}\n show={showSearch}\n />\n </div>\n )}\n <UniversalBanner data={this.props.fields} isNavShown={showNav} />\n <div\n className={`homepageheader-navbar-wrapper ${showNav ? \"active\" : \"\"}`}\n >\n <div\n className={`js-header-container container ${showNav ? \"fixed-top\" : \"\"\n }`}\n >\n <nav className=\"navbar navbar-expand-lg \">\n <span className={`${showNav ? \"\" : \"hide\"}`}>\n <HeaderImageFormat\n logo={CentreLogo}\n uniqueKey=\"centre-logo-one\"\n isSticky={showNav}\n simpleNav={showNav}\n logoLayout={LogoLayout ? LogoLayout.value : 'Default'}\n />\n </span>\n {/* Mobile Nav */}\n <div className=\"mobile-nav\">\n {(!showSearch || (isSimpleNav && showNav)) && (\n <button\n className=\"nav-link search\"\n onClick={() => {\n if (isSimpleNav) {\n this.setState({\n showSearch: true\n });\n this.handleFocus();\n } else {\n this.setState({ showSearch: true });\n }\n }}\n aria-label=\"nav link search\"\n >\n <i className=\"icon icon-outlined-search\" />\n </button>\n )}\n <button\n className=\"navbar-toggler\"\n type=\"button\"\n onClick={() => {\n this.showMobileNav(true);\n }}\n >\n <i className=\"icon icon-outlined-menu\" />\n </button>\n </div>\n\n {/* Desktop Nav */}\n <div\n className=\"collapse navbar-collapse\"\n id=\"navbarSupportedContent\"\n >\n <ul\n className={`js-navbar-nav navbar-nav ml-auto\n ${showNav ? \"active\" : \"\"}\n nav-size-${this.getRenderedNavSize(navigations)}\n `}\n >\n {this.renderNavLink(navigations, activeNav, isSimpleNav, showNav)}\n <li className=\"nav-item\">\n {((!isSimpleNav && (showNav || showSearch)) ||\n (isSimpleNav && showSearch)) && (\n <button className=\"nav-link\" onClick={this.hideOverlay}>\n <i className=\"icon icon-close\" />\n </button>\n )}\n\n {((!showSearch && isSimpleNav) ||\n (!isSimpleNav && !showSearch && !showNav)) && (\n <i\n className=\"icon icon-outlined-search\"\n onClick={() => {\n if (isSimpleNav) {\n this.adjustNavHeight(isSimpleNav);\n this.setState({\n showSearch: true,\n showNav: true,\n activeNav: null\n });\n this.handleFocus();\n } else {\n this.setState({ showSearch: true });\n }\n }}\n />\n )}\n </li>\n </ul>\n </div>\n </nav>\n\n <div className=\"home-content-wrapper default-wrapper\">\n <div className=\"home-content-container\">\n <div className={`home-content ${showNav ? \"hide\" : \"\"}`}>\n <div\n className={\n \"home-brand home-nav-logo \" + this.checkLogoStructure()\n }\n >\n <HeaderImageFormat\n logo={CentreLogo}\n uniqueKey=\"centre-logo-two\"\n logoLayout={LogoLayout ? LogoLayout.value : 'Default'}\n />\n </div>\n <div className=\"home-details\">\n <div className=\"details-time\">\n <i className=\"icon icon-time mr-2\" />\n <Text field={CentreOpeningHoursDetail.fields.Headline} />\n </div>\n {CentreOpeningHoursDetail.fields.CentreState && (\n <div className=\"details-status\">\n <Text\n field={CentreOpeningHoursDetail.fields.CentreState}\n />\n </div>\n )}\n </div>\n </div>\n <FeatureGenericContentHomeQuickLinks\n quickLinks={this.props.fields}\n />\n </div>\n </div>\n\n <div className=\"home-content-wrapper sticky-navbar is-shrink\">\n <div className=\"home-content-container\">\n <div className={`home-content ${showNav ? \"hide\" : \"\"}`}>\n <div className=\"home-brand\">\n <HeaderImageFormat\n logo={CentreLogo}\n uniqueKey=\"centre-logo-three\"\n isSticky={true}\n logoLayout={LogoLayout ? LogoLayout.value : 'Default'}\n />\n </div>\n </div>\n <FeatureGenericContentHomeQuickLinks\n quickLinks={this.props.fields}\n />\n </div>\n </div>\n </div>\n\n {isSimpleNav\n ? this.renderSimpleNavContent()\n : this.renderComplexNavContent()}\n\n {showSearch && !isSimpleNav && (\n <div className={`search-container ${showNav ? \"active\" : \"\"}`}>\n <div className=\"search-wrapper\">\n <div className=\"container\">\n <div className=\"clearfix\">\n <i\n onClick={this.hideOverlay}\n className=\"icon icon-close float-right\"\n />\n </div>\n <div className=\"search-content\">\n <Placeholder\n name=\"jss-searchmodal-right\"\n rendering={this.props.rendering}\n isSimple={false}\n />\n </div>\n </div>\n </div>\n </div>\n )}\n\n {showMobileNav && (\n <NavMobile\n logoLayout={LogoLayout ? LogoLayout.value : 'Default'}\n onCloseMobileNav={() => {\n this.showMobileNav(false);\n }}\n navigations={navigations}\n centreLogo={CentreLogo}\n isSimpleNav={isSimpleNav}\n onShowNav={this.showNavMobile}\n />\n )}\n </div>\n {showNav && isSimpleNav && (\n <div className=\"js-close-nav\" onMouseEnter={this.hideOverlay} />\n )}\n <Lightbox data={HomepageLightbox} />\n </div>\n );\n }\n}\n\nexport default FeatureHeaderHomePageHeader;\n","import React, { Component } from \"react\";\nimport { Text, Placeholder } from \"@sitecore-jss/sitecore-jss-react\";\nimport TagManager from \"react-gtm-module\";\nimport md5 from 'md5';\nimport NavComponent from \"../../../Feature/Header/Navigation/NavComponent\";\nimport NavMobile from \"../../../Feature/Header/Navigation/NavMobile\";\nimport axios from \"axios\";\nimport UniversalBanner from \"../../../Common/UniversalBanner\";\nimport HeaderImageFormat from \"../../../Common/HeaderImageFormat\";\nimport LazyLoading from \"../../../Common/LazyLoading\";\nimport {\n disableBodyScroll,\n enableBodyScroll\n} from \"../../../../helper/ScrollHelper\";\n\nclass FeatureHeaderPageHeader extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n showSearch: false,\n showNav: false,\n showMobileNav: false,\n activeNav: null,\n activeSub: null,\n activeContent: [],\n activeSubList: [],\n navigations: [],\n isSimpleNav: false\n };\n }\n\n componentDidMount() {\n // initialize top menu item based from layout service\n const { UseSimpleHeader, Navigations } = this.props.fields;\n\n let isSimpleNav = false;\n\n if (UseSimpleHeader && UseSimpleHeader.value) {\n isSimpleNav = true;\n }\n\n if (document) {\n if (Navigations && Navigations.length) {\n let navigations = Navigations.map(x => {\n return { DisplayName: { value: x.fields.DisplayName.value } };\n });\n this.setState({\n ...this.state,\n navigations: navigations,\n isSimpleNav\n });\n }\n\n this.loadNavigationData();\n }\n\n if (window) {\n if (isSimpleNav) {\n window.addEventListener(\"resize\", this.handleWindowResize);\n }\n }\n }\n\n handleWindowResize = () => {\n if (window.outerWidth >= 992) {\n this.showMobileNav(false);\n if (this.state.showSearch) {\n this.setState({ showSearch: false, showNav: false });\n }\n const newHeaderWrapper = document.querySelector(\n \".pageheader-navbar-wrapper\"\n );\n if (newHeaderWrapper) {\n newHeaderWrapper.style.height = \"auto\";\n newHeaderWrapper.style.height = newHeaderWrapper.clientHeight + \"px\";\n }\n\n if (document) {\n let containerMargin = 0,\n navColWidth = 0,\n navLinkLeft = 0,\n leftPos = 0;\n\n const jsHeaderContainer = document.querySelector(\n \".js-header-container\"\n );\n const jsNavbarNav = document.querySelector(\".js-navbar-nav\");\n const jsNavContent = document.querySelector(\".nav-content.active\");\n let jsNavItem = \"\";\n let jsNavLinkList = \"\";\n\n if (jsHeaderContainer) {\n containerMargin = window\n .getComputedStyle(jsHeaderContainer)\n .getPropertyValue(\"margin-left\")\n .replace(\"px\", \"\");\n navColWidth = jsHeaderContainer.clientWidth / 2;\n }\n\n if (jsNavbarNav) {\n jsNavItem = jsNavbarNav.querySelector(\".nav-item.active\");\n if (jsNavItem) {\n navLinkLeft = jsNavItem.getBoundingClientRect().x;\n }\n }\n\n if (jsNavContent) {\n jsNavLinkList = jsNavContent.querySelector(\".js-nav-link-list\");\n leftPos = navLinkLeft - containerMargin - navColWidth;\n if (jsNavLinkList) {\n jsNavLinkList.style.left = leftPos + \"px\";\n }\n }\n }\n }\n // else {\n // this.hideOverlay();\n // }\n };\n\n adjustNavHeight = (isSimpleNav) => {\n if (isSimpleNav) {\n if (window.outerWidth >= 992) {\n const newHeaderWrapper = document.querySelector(\n \".pageheader-navbar-wrapper\"\n );\n if (newHeaderWrapper) {\n newHeaderWrapper.style.height = newHeaderWrapper.clientHeight + \"px\";\n }\n }\n }\n }\n\n loadNavigationData = () => {\n let contextInfo = window.document.getElementsByName(\"ContextItem\")[0];\n let me = this;\n const pageId = contextInfo.value;\n const dbName = contextInfo.dataset.targetDb;\n\n // url = `/api/sitecore/navigation/getnavigation?pageId=${pageId}&dbName=${dbName}`;\n axios({\n url: `/api/sitecore/navigation/getnavigation`,\n method: \"GET\",\n params: {\n pageId: pageId,\n dbName: dbName\n }\n })\n .then(responseRaw => {\n let response = responseRaw.data ? responseRaw.data : null;\n\n if (response && response.data.Navigations) {\n me.setState(\n {\n ...me.state,\n navigations: response.data.Navigations\n },\n () => {\n if (me.state.showNav) {\n me.getSubList();\n }\n }\n );\n }\n })\n .catch(error => {\n // just handle error\n });\n };\n\n handleFocus = () => {\n if (document) {\n document.querySelector(\"#consumer-search-bar\").focus();\n }\n };\n\n handleClearSearch = () => {\n if (document) {\n document.querySelector(\".searchbar .search-cancel\") &&\n document.querySelector(\".searchbar .search-cancel\").click();\n }\n };\n\n showNav = navItem => {\n this.adjustNavHeight(this.state.isSimpleNav);\n\n if (this.state.activeNav !== navItem) {\n this.setState(\n {\n showNav: true,\n activeNav: navItem,\n activeContent: []\n },\n this.getSubList\n );\n }\n };\n\n showNavMobile = navItem => {\n this.adjustNavHeight(this.state.isSimpleNav);\n\n if (this.state.activeNav !== navItem) {\n this.setState(\n {\n showNav: false,\n activeNav: navItem,\n activeContent: []\n },\n () => this.getSubList(false)\n );\n }\n };\n\n showNavMobile = async navItem => {\n this.adjustNavHeight(this.state.isSimpleNav);\n\n if (this.state.activeNav !== navItem) {\n this.setState(\n {\n showNav: false,\n activeNav: navItem,\n activeContent: []\n },\n () => this.getSubList(false)\n );\n }\n };\n\n showMobileNav = show => {\n if (this.state.showMobileNav !== show) {\n this.setState({\n showMobileNav: show\n });\n }\n };\n\n getSubList = async (getSubContent = true) => {\n console.log('======== getSubList ========');\n let contextInfo = window.document.getElementsByName(\"ContextItem\")[0];\n const pageId = contextInfo.value;\n const dbName = contextInfo.dataset.targetDb;\n const { navigations, isSimpleNav, activeNav } = this.state;\n if (!isSimpleNav) {\n let top = navigations.find(x => x.DisplayName.value === activeNav);\n\n // Check if we need to load secondary nav data\n if (top && top.SecondaryNavIds && top.SecondaryNavIds.length && (!top.SecondaryNavigations || !top.SecondaryNavigations.length)) {\n try {\n this.setState({\n isLoadingSecondary: true\n });\n\n let secondaryApiUrl = `/api/sitecore/navigation/getsecondarynavigation?a=1&pageId=${pageId}&dbName=${dbName}`;\n top.SecondaryNavIds.forEach(navId => {\n secondaryApiUrl += `&SecondaryNavIds=${navId}`;\n });\n let secondaryData;\n\n if (!secondaryData) {\n // Make API call if no cached data\n try {\n const { data } = await axios({\n url: secondaryApiUrl,\n method: \"GET\",\n });\n secondaryData = data.data.SecondaryNavigations;\n } catch (e) {\n // sub nav fetch error\n console.error('SUB NAV ERROR!!!!!');\n console.error(e);\n }\n }\n\n // Update the navigation item with secondary data\n top[\"SecondaryNavigations\"] = secondaryData;\n\n // Update navigations in state with new data\n const updatedNavigations = navigations.map(nav => \n nav.DisplayName.value === activeNav ? {...nav, SecondaryNavigations: secondaryData} : nav\n );\n\n this.setState({\n navigations: updatedNavigations,\n isLoadingSecondary: false\n });\n\n } catch (error) {\n console.error('Error loading secondary navigation:', error);\n this.setState({\n isLoadingSecondary: false\n });\n return;\n }\n }\n\n if (top && top.SecondaryNavigations) {\n let subList = top.SecondaryNavigations;\n const temp = subList.map(item => {\n return {\n name: item.DisplayName.value,\n url: item.LinkUrl.value\n };\n });\n\n this.setState(\n {\n activeSubList: temp,\n activeSub: temp.length ? temp[0].name : ''\n },\n getSubContent ? this.getSubContent : () => {}\n );\n }\n }\n };\n\n hideOverlay = () => {\n enableBodyScroll();\n this.setState({\n showSearch: false,\n showNav: false,\n activeNav: null,\n activeContent: [],\n activeSubList: []\n });\n };\n\n setSub = sub => {\n if (this.state.activeSub !== sub) {\n this.setState(\n {\n activeSub: sub\n },\n this.getSubContent\n );\n }\n };\n\n getColumnSize = col => {\n return col === \"25\"\n ? \"3\"\n : col === \"50\"\n ? \"6\"\n : col === \"75\"\n ? \"9\"\n : col === \"100\"\n ? \"12\"\n : \"\";\n };\n\n getSubContent = () => {\n const content = [];\n\n let top = this.state.navigations.find(\n x => x.DisplayName.value === this.state.activeNav\n ).SecondaryNavigations;\n\n let second = top.find(y => y.DisplayName.value === this.state.activeSub);\n\n if (second) {\n let componentList = second.Components;\n let columnList = second.Layout.value.split(\"-\");\n\n let column = [];\n column[0] = componentList.filter(x => x.ColumnPosition.value === \"1\");\n column[1] = componentList.filter(x => x.ColumnPosition.value === \"2\");\n column[2] = componentList.filter(x => x.ColumnPosition.value === \"3\");\n\n column.map((item, index) => {\n if (item.length > 0) {\n let colSize = this.getColumnSize(\n columnList[item[0].ColumnPosition.value - 1]\n );\n content.push(\n <div\n key={`compId-${index}`}\n className={`col-${colSize} order-${item[0].ColumnPosition.value}`}\n >\n {item.map((component, index) => {\n return (\n <div key={`rowID-${index}`} className=\"nav-component\">\n <NavComponent\n type={component.ComponentName.value}\n item={component}\n centre={this.props.params.activeCentre}\n size={colSize}\n />\n </div>\n );\n })}\n </div>\n );\n }\n });\n\n this.setState({\n activeContent: content\n });\n }\n };\n\n renderComplexNavContent = () => {\n let complexNavLayout = \"\";\n\n if (this.state.showNav) {\n complexNavLayout = (\n <div className={`nav-container ${this.state.showNav ? \"active\" : \"\"}`}>\n {this.state.isLoadingSecondary ? (\n <LazyLoading />\n ) : (\n <>\n <div className=\"nav-sub\">\n <div className=\"container\">\n {this.state.activeSubList &&\n this.state.activeSubList.map((item, index) => (\n <div\n key={`myId-${index}`}\n className=\"sub-item\"\n onMouseEnter={() => {\n this.setSub(item.name);\n TagManager.dataLayer({\n dataLayer: {\n event: \"viewSubNav\",\n subNavActive: item.name\n },\n dataLayerName: \"dataLayer\"\n });\n }}\n >\n <a\n href={item.url}\n className={`btn btn-link ${this.state.activeSub === item.name ? \"active\" : \"\"\n }`}\n >\n <Text field={{ value: item.name }} />\n </a>\n </div>\n ))}\n </div>\n </div>\n <div className=\"nav-content\">\n <div className=\"container\">\n <div className=\"row\">{this.state.activeContent}</div>\n </div>\n </div>\n </>\n )}\n </div>\n );\n }\n\n return complexNavLayout;\n };\n\n renderSimpleNavContent = () => {\n const { activeNav, navigations, showNav } = this.state;\n\n let simpleNavLayout = \"\";\n let itemIndex = 0;\n simpleNavLayout = (\n <div className={`nav-container ${showNav ? \"active\" : \"\"}`}>\n <div className=\"container\">\n {navigations.map((item, index) => {\n const {\n DisplayName,\n NavLink,\n SecondaryNavigations,\n SecondaryNavIds,\n Components\n } = item;\n\n if (\n !((SecondaryNavIds && SecondaryNavIds.length) || (SecondaryNavigations && SecondaryNavigations.length) || (Components && Components.length))\n &&\n !(NavLink && NavLink.value && NavLink.value.href)\n ) {\n itemIndex--;\n }\n\n let leftPos = 0;\n let hasComponents = false;\n\n if (\n activeNav &&\n activeNav.toLowerCase() === DisplayName.value.toLowerCase()\n ) {\n if (document) {\n let containerMargin = 0,\n navColWidth = 0,\n navLinkLeft = 0;\n\n const jsHeaderContainer = document.querySelector(\n \".js-header-container\"\n );\n const jsNavbarNav = document.querySelector(\".js-navbar-nav\");\n\n if (jsHeaderContainer) {\n containerMargin = window\n .getComputedStyle(jsHeaderContainer)\n .getPropertyValue(\"margin-left\")\n .replace(\"px\", \"\");\n navColWidth = jsHeaderContainer.clientWidth / 2;\n }\n if (jsNavbarNav) {\n navLinkLeft = jsNavbarNav\n .querySelectorAll(\".nav-item\")\n [itemIndex].getBoundingClientRect().x;\n }\n\n leftPos = navLinkLeft - containerMargin - navColWidth;\n }\n }\n\n itemIndex++;\n return (\n <div\n key={DisplayName.value + index}\n className={`nav-content \n ${activeNav &&\n activeNav.toLowerCase() === DisplayName.value.toLowerCase()\n ? \"active\"\n : \"\"\n }\n\n `}\n >\n <div className=\"row\">\n <div className=\"col col-lg-6\">\n {Components &&\n Components.length > 0 &&\n Components.map((item, index) => {\n const { ComponentName, ComponentTitle } = item;\n\n let componentLayout = \"\";\n\n if (\n ComponentName &&\n ComponentName.value !== \"NavLinkList\"\n ) {\n hasComponents = true;\n componentLayout = (\n <div key={ComponentName.value + index}>\n {ComponentName.value === \"NavPopularTimes\" && (\n <div className=\"nav-populartimes__header\">\n <Text field={ComponentTitle} />\n </div>\n )}\n\n <NavComponent\n type={ComponentName.value}\n item={item}\n centre={this.props.params.activeCentre}\n size={\"12\"}\n />\n </div>\n );\n }\n return componentLayout;\n })}\n </div>\n <div className=\"col col-lg-6\">\n {Components &&\n Components.length > 0 &&\n Components.map((item, index) => {\n const { ComponentName, Links } = item;\n\n let componentLayout = \"\";\n\n if (\n ComponentName &&\n ComponentName.value === \"NavLinkList\"\n ) {\n componentLayout = (\n <div\n className=\"js-nav-link-list\"\n key={ComponentName.value + index}\n style={hasComponents ? {} : { left: leftPos + \"px\" }}\n >\n <NavComponent\n type={ComponentName.value}\n item={Links}\n />\n </div>\n );\n }\n return componentLayout;\n })}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n\n return simpleNavLayout;\n };\n\n renderNavLink = (navigations, activeNav, isSimpleNav, showNav) => {\n return (\n navigations &&\n navigations.length > 0 &&\n navigations.map((item, index) => {\n const {\n DisplayName,\n NavLink,\n SecondaryNavigations,\n SecondaryNavIds,\n Components\n } = item;\n\n let navLinkLayout = \"\";\n\n if ((SecondaryNavIds && SecondaryNavIds.length) || (SecondaryNavigations && SecondaryNavigations.length > 0) || (Components && Components.length > 0)) {\n navLinkLayout =\n <li\n key={`liId-${index}`}\n className={`nav-item ${activeNav === DisplayName.value ? \"active\" : \"\"\n }`}\n >\n <a\n className=\"nav-link\"\n onClick={() => {\n disableBodyScroll();\n this.showNav(DisplayName.value);\n }}\n onMouseEnter={() => {\n if (isSimpleNav && showNav) {\n disableBodyScroll();\n this.showNav(DisplayName.value);\n }\n }}\n >\n <Text field={{ value: DisplayName.value }} />\n </a>\n </li>\n }\n else if (NavLink && NavLink.value && NavLink.value.href) {\n navLinkLayout =\n <li\n key={`liId-${index}`}\n className={`nav-item ${activeNav === DisplayName.value ? \"active\" : \"\"\n }`}\n >\n <a\n className=\"nav-link\"\n {...NavLink.value}\n href={NavLink.value.href + NavLink.value.querystring}\n onMouseEnter={() => {\n if (isSimpleNav && showNav) {\n disableBodyScroll();\n this.showNav(DisplayName.value);\n }\n }}\n >\n <Text field={DisplayName} />\n </a>\n </li>\n }\n return navLinkLayout\n })\n )\n }\n\n getRenderedNavSize = (navigations) => {\n let navCount = 0;\n if (!navigations || !navigations.length) {\n return navCount;\n }\n navigations.forEach((item) => {\n const {\n NavLink,\n SecondaryNavigations,\n SecondaryNavIds,\n Components\n } = item;\n\n if ((SecondaryNavIds && SecondaryNavIds.length) || (SecondaryNavigations && SecondaryNavigations.length) || (Components && Components.length)) {\n navCount++;\n }\n else if (NavLink && NavLink.value && NavLink.value.href) {\n navCount++;\n }\n });\n\n if (navCount >= 6) {\n return 'big';\n } \n return 'standard';\n };\n\n render() {\n const { CentreLogo, BackButtonLink, UseSimpleHeader, LogoLayout } = this.props.fields || {};\n const {\n navigations,\n activeNav,\n showNav,\n showSearch,\n showMobileNav,\n isSimpleNav\n } = this.state;\n return (\n <div className={`${UseSimpleHeader && UseSimpleHeader.value ? \"simple-header\" : \"\"}`}>\n <UniversalBanner data={this.props.fields} isNavShown={showNav} />\n {isSimpleNav && (\n <div\n className={`search-bar-main container ${showSearch ? \"search-active\" : \"\"\n }`}\n >\n <Placeholder\n name=\"jss-searchmodal-right\"\n rendering={this.props.rendering}\n isSimple={true}\n show={showSearch}\n />\n </div>\n )}\n <div className={`pageheader-navbar-wrapper ${showNav ? \"active\" : \"\"}`}>\n <div\n className={`js-header-container container ${showNav ? \"fixed-top\" : \"\"\n }`}\n >\n <nav className=\"navbar navbar-expand-lg \">\n <span className={`${showNav ? \"\" : \"hide\"}`}>\n <HeaderImageFormat\n logo={CentreLogo}\n uniqueKey=\"centre-logo-page-header\"\n isSticky={showNav}\n simpleNav={showNav}\n logoLayout={LogoLayout ? LogoLayout.value : 'Default'}\n isGeneric={true}\n />\n </span>\n <div className=\"mobile-nav\">\n {(!showSearch || (isSimpleNav && showNav)) && (\n <button\n className=\"nav-link search\"\n onClick={() => {\n if (isSimpleNav) {\n this.setState({\n showSearch: true\n });\n this.handleFocus();\n } else {\n this.setState({ showSearch: true });\n }\n }}\n aria-label=\"nav link search\"\n >\n <i className=\"icon icon-outlined-search\" />\n </button>\n )}\n <button\n className=\"navbar-toggler\"\n type=\"button\"\n onClick={() => {\n this.showMobileNav(true);\n }}\n >\n <i className=\"icon icon-outlined-menu\" />\n </button>\n </div>\n\n {/* Desktop Nav */}\n <div\n className=\"collapse navbar-collapse\"\n id=\"navbarSupportedContent\"\n >\n <ul\n className={`js-navbar-nav navbar-nav ml-auto\n ${showNav ? \"active\" : \"\"} \n nav-size-${this.getRenderedNavSize(navigations)}\n `}\n >\n {this.renderNavLink(navigations, activeNav, isSimpleNav, showNav)}\n <li className=\"nav-item\">\n {((!isSimpleNav && (showNav || showSearch)) ||\n (isSimpleNav && showSearch)) && (\n <button className=\"nav-link\" onClick={this.hideOverlay}>\n <i className=\"icon icon-close\" />\n </button>\n )}\n\n {((!showSearch && isSimpleNav) ||\n (!isSimpleNav && !showSearch && !showNav)) && (\n <i\n className=\"icon icon-outlined-search\"\n onClick={() => {\n if (isSimpleNav) {\n this.adjustNavHeight(isSimpleNav);\n this.setState({\n showSearch: true,\n showNav: true,\n activeNav: null\n });\n this.handleFocus();\n } else {\n this.setState({ showSearch: true });\n }\n }}\n />\n )}\n </li>\n </ul>\n </div>\n </nav>\n {BackButtonLink &&\n BackButtonLink.value &&\n (BackButtonLink.value.href || BackButtonLink.value.text) && (\n <div\n className={`pageheader-navbar-wrapper__backbtn ${showNav || showMobileNav ? \"is-hidden\" : \"\"\n }`}\n >\n {BackButtonLink.value.href ? (\n <div>\n <a\n href={BackButtonLink.value.href}\n title={BackButtonLink.value.title}\n target={BackButtonLink.value.target}\n >\n <i className=\"icon icon-arrow-left\" />\n <span>{BackButtonLink.value.text}</span>\n </a>\n </div>\n ) : (\n BackButtonLink.value.text\n )}\n </div>\n )}\n </div>\n\n {isSimpleNav\n ? this.renderSimpleNavContent()\n : this.renderComplexNavContent()}\n\n {showSearch && !isSimpleNav && (\n <div className={`search-container ${showNav ? \"active\" : \"\"}`}>\n <div className=\"search-wrapper\">\n <div className=\"container\">\n <div className=\"clearfix\">\n <i\n onClick={this.hideOverlay}\n className=\"icon icon-close float-right\"\n />\n </div>\n <div className=\"search-content\">\n <Placeholder\n name=\"jss-searchmodal-right\"\n rendering={this.props.rendering}\n isSimple={false}\n />\n </div>\n </div>\n </div>\n </div>\n )}\n {showMobileNav && (\n <NavMobile\n onCloseMobileNav={() => {\n this.showMobileNav(false);\n }}\n navigations={this.state.navigations}\n centreLogo={CentreLogo}\n isSimpleNav={isSimpleNav}\n logoLayout={LogoLayout.value}\n onShowNav={this.showNavMobile}\n />\n )}\n </div>\n\n {showNav && isSimpleNav && (\n <div className=\"js-close-nav\" onMouseEnter={this.hideOverlay} />\n )}\n </div>\n );\n }\n}\n\nexport default FeatureHeaderPageHeader;\n","import { SitecoreContextFactory } from '@sitecore-jss/sitecore-jss-react';\n\n/*\n The SitecoreContextFactory stores the current Sitecore context for the app.\n For example, whether the page is currently being edited, or the current language.\n Note that the export makes this essentially a singleton, so we can store state in it.\n\n The Sitecore context is generally updated on route change (/src/index.js).\n The `withSitecoreContext()` higher order component from `sitecore-jss-react`\n can be used to access the context from within a component.\n*/\nexport default new SitecoreContextFactory();\n","import React, { Component } from \"react\";\nimport { Text, withSitecoreContext } from \"@sitecore-jss/sitecore-jss-react\";\nimport SitecoreContextFactory from \"../../../../lib/SitecoreContextFactory\";\nimport Subnav from \"../../../Common/Subnav\";\n\nclass FeatureHeaderWhatsOnListHeader extends Component {\n constructor(props) {\n super(props);\n this.state = {\n selectedCategory: \"\"\n };\n }\n\n componentDidMount() {\n this.setState({ selectedCategory: this.getUrlParameter(\"filter_cat\") });\n }\n\n updateMainFilter(filterName) {\n const sitecoreContext = this.props.sitecoreContext;\n SitecoreContextFactory.setSitecoreContext({\n ...sitecoreContext,\n whatsOnMainFilter: filterName,\n refresh: true\n });\n this.setState({ selectedCategory: filterName });\n }\n\n componentDidUpdate(prevProps) {\n if (\n this.props.sitecoreContext &&\n this.props.sitecoreContext.whatsOnMainFilter\n ) {\n if (\n prevProps.sitecoreContext.whatsOnMainFilter !==\n this.props.sitecoreContext.whatsOnMainFilter\n ) {\n this.setState({\n selectedCategory: this.props.sitecoreContext.whatsOnMainFilter\n });\n }\n }\n }\n\n getUrlParameter(querystringParam) {\n querystringParam = querystringParam\n .replace(/[\\[]/, \"\\\\[\")\n .replace(/[\\]]/, \"\\\\]\");\n var regex = new RegExp(\"[\\\\?&]\" + querystringParam + \"=([^&#]*)\");\n var results = regex.exec(window.location.search);\n return results === null\n ? \"\"\n : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\n }\n\n render() {\n const { WhatsOnListHeadline, PromotionFilter } = this.props.fields;\n const { selectedCategory } = this.state;\n const whatsOnMainFilter = selectedCategory\n ? selectedCategory\n : this.props.sitecoreContext.whatsOnMainFilter\n ? this.props.sitecoreContext.whatsOnMainFilter\n : \"all\";\n return (\n <div>\n <div className=\"whatson-list-header-container\">\n <div className=\"container\">\n <div className=\"header-wrapper\">\n <h1 className=\"header-title\">\n {WhatsOnListHeadline.value && (\n <Text field={WhatsOnListHeadline} />\n )}\n </h1>\n </div>\n </div>\n </div>\n {/* header sub nav */}\n <Subnav\n tabs={PromotionFilter}\n hasAllTab\n allTabQuery=\"all\"\n defaultName=\"Name\"\n defaultFilter=\"FilterValue\"\n selected={whatsOnMainFilter}\n updateFilter={filter => this.updateMainFilter(filter)}\n />\n </div>\n );\n }\n}\n\nexport default withSitecoreContext()(FeatureHeaderWhatsOnListHeader);\n","import React from \"react\";\nimport { Placeholder } from \"@sitecore-jss/sitecore-jss-react\";\n\nconst FeatureLayoutInfoLayout = props => {\n return (\n <div>\n <div className=\"row\">\n <Placeholder name=\"jss-info-header\" rendering={props.rendering} />\n </div>\n <div className=\"row\">\n <div className=\"col\">\n <Placeholder name=\"jss-info-body\" rendering={props.rendering} />\n </div>\n <div className=\"col\">\n <Placeholder name=\"jss-info-sidepanel\" rendering={props.rendering} />\n </div>\n </div>\n </div>\n );\n};\n\nexport default FeatureLayoutInfoLayout;\n","import React from \"react\";\r\nimport FeaturedLifestyleTiles from \"../../../Common/Tiles/FeaturedLifestyle\";\r\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\r\nimport ScrollAnimation from \"react-animate-on-scroll\";\r\nimport BaseComponent from \"../../../Base/BaseComponent\";\r\n\r\nconst FeatureLifestyleFeaturedLifestyle = props => {\r\n const { Title, TitleLink, Lifestyle } = props.fields;\r\n if (Title && Title.value && Lifestyle && Lifestyle.length > 2) {\r\n return (\r\n <BaseComponent margin=\"standard\">\r\n <div className=\"featured-lifestyle-wrapper\">\r\n <div className=\"container\">\r\n <div className=\"featured-lifestyle-header-wrapper col-12 col-md-11\">\r\n <ScrollAnimation\r\n animateIn=\"animate__animated animate__fadeIn\"\r\n animateOnce={true}\r\n >\r\n <div className=\"featured-lifestyle-header-text\">\r\n {TitleLink && TitleLink.value && TitleLink.value.href ? (\r\n <React.Fragment>\r\n <a {...TitleLink.value}>\r\n <Text field={Title} />\r\n </a>\r\n <i className=\"icon icon-chevron-right\" />\r\n </React.Fragment>\r\n ) : (\r\n <Text field={Title} />\r\n )}\r\n </div>\r\n </ScrollAnimation>\r\n </div>\r\n </div>\r\n <FeaturedLifestyleTiles data={Lifestyle} />\r\n </div>\r\n </BaseComponent>\r\n );\r\n } else return null;\r\n};\r\n\r\nexport default FeatureLifestyleFeaturedLifestyle;\r\n","import React, { Component, Fragment } from \"react\";\nimport { Text, Image } from \"@sitecore-jss/sitecore-jss-react\";\nimport Details from \"../Details\";\nimport defaultImg from \"../../../assets/img/placeholders/gray.png\";\nimport RiseAndFade from \"../Animations/RiseAndFade\";\nimport TagManager from \"react-gtm-module\";\n\nclass ContentTileList extends Component {\n constructor(props) {\n super(props);\n }\n\n textFieldToUppercase(textField) {\n let value = textField.value.toUpperCase();\n return { value };\n }\n\n categoryHandler(category) {\n this.props.categoryMainHandler(category);\n }\n\n handleClickBrauzBtn = id => {\n window.Brauz_open_book_a_stylist_dialog_with_selected_store(id);\n };\n\n render() {\n const {\n category,\n name,\n nameLink,\n location,\n locationLink,\n itemId,\n openTime,\n thumbnail,\n logo,\n cookTime,\n serves,\n difficulty,\n rating,\n price,\n acceptsOnlineBooking,\n bookingIcon,\n bookingLabel,\n bookingUrl,\n hasBooking,\n index,\n position,\n retailerName,\n isRetailerContent,\n isLogoAsThumbnail,\n thumbnailAltText,\n pageType,\n retailerId,\n\n } = this.props;\n\n const defaultImage = () => {\n if (thumbnail && thumbnail.value && thumbnail.value.src) {\n return (\n <div className=\"include_logo_padding\">\n <Image media={{ ...thumbnail.value, src: defaultImg }}\n data-src={thumbnail.value.src}\n className=\"tile-image lazyload\"\n />\n </div>\n );\n } else\n return (\n <Fragment>\n {isRetailerContent && isRetailerContent.value && (\n <div className=\"display_retailer_name\">\n <Text field={retailerName} />\n </div>\n )}\n <div className=\"no-image\" />\n </Fragment>\n );\n };\n\n const defaultLogo = () => {\n if (logo && logo.value && logo.value.src) {\n return (\n <div className=\"tile-logo-wrapper\">\n <Image\n media={{ ...logo.value, src: defaultImg }}\n data-src={logo.value.src}\n className=\"tile-logo lazyload\"\n />\n </div>\n );\n } else {\n return (\n <div className=\"no-logo\">\n <Text field={name} />\n </div>\n );\n }\n };\n\n const ratingSection = () => {\n let ratings = [];\n let priceLevel = [];\n let ratingContainer = [];\n\n if (rating && rating.value) {\n const ratingValue = parseInt(rating.value);\n\n for (let i = 1; i <= 5; i++) {\n if (i <= ratingValue) {\n ratings.push(<div className=\"icon icon-star checked\" key={i} />);\n } else {\n ratings.push(<div className=\"icon icon-star\" key={i} />);\n }\n }\n }\n\n if (price && price.value) {\n const priceLevelValue = parseInt(price.value);\n if (priceLevelValue <= 1) {\n priceLevel.push(\n <i className=\"icon icon-dollar\" key={`priceLevelId1`} />\n );\n } else if (priceLevelValue === 2 || priceLevelValue === 3) {\n for (let i = 0; i < 2; i++) {\n priceLevel.push(\n <i className=\"icon icon-dollar\" key={`priceLevelId` + i} />\n );\n }\n } else if (priceLevelValue >= 4) {\n for (let i = 0; i < 3; i++) {\n priceLevel.push(\n <i className=\"icon icon-dollar\" key={`priceLevelId` + i} />\n );\n }\n }\n } else {\n priceLevel = \"\";\n }\n\n ratingContainer =\n ratings.length || priceLevel ? (\n <div className=\"storerating\">\n <div className=\"star\">{ratings}</div>\n <div className=\"dollar\">\n <div className=\"pricelevel\">\n <span>{priceLevel}</span>\n </div>\n </div>\n </div>\n ) : (\n \"\"\n );\n\n return ratingContainer;\n };\n\n const iconsLayout = (\n <div className=\"icons\">\n {ratingSection()}\n {location && location.value && (\n <Details\n iconValue=\"location mr-2\"\n linkUrl={locationLink && locationLink.value}\n linkName={location}\n mapInfo={retailerId && retailerId.value ? retailerId.value : \"\"}\n size=\"24\"\n />\n )}\n {openTime && openTime.value && (\n <Details iconValue=\"time mr-2\" linkName={openTime} size=\"24\" />\n )}\n {cookTime && cookTime.value && (\n <Details iconValue=\"timer\" linkName={cookTime} size=\"24\" />\n )}\n {serves && serves.value && (\n <Details iconValue=\"users\" linkName={serves} size=\"24\" />\n )}\n {difficulty && difficulty.value && (\n <Details iconValue=\"chef-2\" linkName={difficulty} size=\"24\" />\n )}\n {acceptsOnlineBooking && acceptsOnlineBooking.value && (\n <div className=\"details-wrapper\">\n {bookingIcon && bookingIcon.value ? (\n <i\n className={`icon icon-${bookingIcon.value} mr-2`}\n style={{ fontSize: \"24px\" }}\n />\n ) :\n <i\n className=\"icon icon-calendar-2 mr-2\"\n style={{ fontSize: \"24px\" }}\n />\n }\n <div className=\"text-block\">\n {hasBooking && hasBooking.value ? (\n <button className=\"brauz\" onClick={() => this.handleClickBrauzBtn(itemId.value)}>\n <Text field={bookingLabel} />\n </button>\n ) : bookingUrl && bookingUrl.value ? (\n <a href={bookingUrl.value} target=\"_blank\">\n <Text field={bookingLabel} />\n </a>\n ) : (\n <Text field={bookingLabel} />\n )}\n </div>\n </div>\n )}\n </div>\n );\n\n return (\n <div \n className=\"col-12 col-md-4 col-lg-3\" \n key={name.value + index}\n onClick={() =>\n TagManager.dataLayer({\n dataLayer: {\n event: \"lifestyleClick\",\n lifestyle_page_type: pageType.value,\n lifestyle_title: name.value\n },\n dataLayerName: \"dataLayer\",\n })\n }\n >\n <RiseAndFade position={position}>\n <div className=\"animation-range\">\n <div\n className={`image-wrapper ${isLogoAsThumbnail && isLogoAsThumbnail.value\n ? \"display_retailer_logo\"\n : \"\"\n }`}\n >\n <a\n href={nameLink && nameLink.value ? nameLink.value : \"\"}\n className=\"name\"\n >\n {defaultImage()}\n {itemId && itemId.value && defaultLogo()}\n </a>\n </div>\n {pageType && pageType.value ? (\n <div className=\"title\">\n <div className=\"page-type\">\n <div className=\"pagetype-rectangle\"></div><Text field={pageType} />\n </div>\n <div className=\"name\">\n <a href={nameLink && nameLink.value ? nameLink.value : \"\"}>\n <Text field={name} />\n </a>\n </div>\n </div>\n ) :\n <div className=\"title\">\n {category && category.value && (\n <div className=\"category\">\n <a onClick={() => this.categoryHandler(category)}>\n <Text field={this.textFieldToUppercase(category)} />\n </a>\n </div>\n )}\n <div className=\"name\">\n <a href={nameLink && nameLink.value ? nameLink.value : \"\"}>\n <Text field={name} />\n </a>\n </div>\n {iconsLayout}\n </div>\n }\n\n </div>\n {iconsLayout}\n </RiseAndFade>\n </div>\n );\n }\n}\n\nexport default ContentTileList;\n","import React, { Component } from \"react\";\r\nimport { Text, Image } from \"@sitecore-jss/sitecore-jss-react\";\r\nimport BaseComponent from \"../../../Base/BaseComponent\";\r\nimport ContentTileList from \"../../../Common/ContentTileList\";\r\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\r\nimport axios from \"axios\";\r\nimport InfiniteScroll from \"react-infinite-scroll-component\";\r\nimport LazyLoading from \"../../../Common/LazyLoading\";\r\nimport { valueHelper } from \"../../../../helper/Animations\";\r\nimport Subnav from \"../../../Common/Subnav\";\r\n\r\nclass FeatureLifestyleLifestyleListingFilter extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n LifestyleListData: {\r\n pageId: \"\",\r\n dbName: \"\",\r\n pageSize: 1,\r\n filter_contenttag: [],\r\n },\r\n LifestyleListing: [],\r\n currentPage: 1,\r\n totalCount: 0,\r\n showLoader: true,\r\n isScrolling: false,\r\n hasMoreItems: true\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n let contextInfo = window.document.getElementsByName(\"ContextItem\")[0];\r\n let pageId = contextInfo.value;\r\n let dbName = contextInfo.dataset.targetDb;\r\n let contentTagCategory = \"\";\r\n let contentTagCategoryQSName = \"filter_tag\";\r\n contentTagCategory = this.getUrlParameter(contentTagCategoryQSName);\r\n let contentTagCategoryList = [];\r\n if (contentTagCategory !== \"\") {\r\n contentTagCategoryList = contentTagCategory.split(\",\");\r\n }\r\n this.setState(\r\n {\r\n ...this.state,\r\n LifestyleListData: {\r\n pageId: pageId,\r\n dbName: dbName,\r\n pageSize: 12,\r\n filter_contenttag: contentTagCategoryList,\r\n }\r\n },\r\n () => this.getLifestyleList(1)\r\n );\r\n }\r\n\r\n getUrlParameter(querystringParam) {\r\n querystringParam = querystringParam\r\n .replace(/[\\[]/, \"\\\\[\")\r\n .replace(/[\\]]/, \"\\\\]\");\r\n var regex = new RegExp(\"[\\\\?&]\" + querystringParam + \"=([^&#]*)\");\r\n var results =\r\n window && window.location && window.location.search\r\n ? regex.exec(window.location.search)\r\n : null;\r\n return results === null\r\n ? \"\"\r\n : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\r\n }\r\n\r\n getLifestyleList = async (pageNumber, isInfiniteScroll) => {\r\n const {\r\n pageId,\r\n dbName,\r\n pageSize,\r\n filter_contenttag,\r\n } = this.state.LifestyleListData;\r\n\r\n const data = {\r\n pageId,\r\n dbName,\r\n pageNumber,\r\n pageSize,\r\n filter_contenttag: filter_contenttag.toString(),\r\n };\r\n\r\n if (isInfiniteScroll) {\r\n this.setState({ isScrolling: true });\r\n } else {\r\n this.setState({ showLoader: true });\r\n }\r\n\r\n const url = \"/api/sitecore/lifestyle/GetLifestyle\";\r\n axios({\r\n url,\r\n method: \"GET\",\r\n params: data\r\n })\r\n .then(responseRaw => {\r\n let response = responseRaw.data ? responseRaw.data : null;\r\n if (response && response.Lifestyle) {\r\n const lastPage = Math.ceil(response.TotalCount.value / 12);\r\n const list =\r\n pageNumber > 1\r\n ? this.state.LifestyleListing.concat(response.Lifestyle)\r\n : response.Lifestyle;\r\n const totalCount =\r\n response.TotalCount && response.TotalCount.value\r\n ? response.TotalCount.value\r\n : 0;\r\n const page =\r\n response.Page && response.Page.value ? response.Page.value : 1;\r\n\r\n this.setState({\r\n ...this.state,\r\n LifestyleListing: list,\r\n totalCount: totalCount,\r\n currentPage: page,\r\n hasMoreItems: page == lastPage ? false : true\r\n });\r\n }\r\n this.setState({\r\n showLoader: false,\r\n isScrolling: false\r\n });\r\n })\r\n .catch(error => {\r\n // just handle error\r\n console.log(error);\r\n this.setState({\r\n showLoader: false,\r\n isScrolling: false\r\n });\r\n });\r\n };\r\n\r\n handleClickCategory = event => {\r\n const element = event.target;\r\n const elementId = element.id;\r\n const allCategories = element.parentNode.firstChild\r\n const elementContent = element.textContent.toLowerCase()\r\n\r\n let tagList = this.state.LifestyleListData.filter_contenttag;\r\n if (/is-active/.test(element.classList.value)) {\r\n tagList = tagList.filter(function (arrValue) {\r\n return elementContent.indexOf(arrValue) < 0; //return elementContent instead of ID\r\n });\r\n } else if (!elementId) {\r\n tagList.length = 0;\r\n } else tagList.push(elementContent);\r\n\r\n this.setState(\r\n {\r\n LifestyleListData: {\r\n ...this.state.LifestyleListData,\r\n filter_contenttag: tagList\r\n },\r\n currentPage: 1\r\n },\r\n () => this.getLifestyleList(1)\r\n );\r\n // remove is-active on 'All Categories' if elementId is true\r\n if (elementId) if (/is-active/.test(allCategories.classList.value)) allCategories.classList.toggle(\"is-active\");\r\n element.classList.toggle(\"is-active\");\r\n };\r\n\r\n loadLifestyleList() {\r\n this.getLifestyleList(this.state.currentPage + 1, true);\r\n }\r\n\r\n renderCategories(ContentTags) {\r\n const { filter_contenttag } = this.state.LifestyleListData;\r\n // Add 'All Categories' to Category Tag List\r\n let updatedContentTags = [{\r\n \"fields\": {\r\n \"Name\": {\r\n \"value\": \"All\"\r\n },\r\n \"Id\": {\r\n \"value\": \"\"\r\n }\r\n }\r\n }, ...ContentTags]\r\n return (\r\n <div className=\"lifestyle-listing__category\">\r\n <div className=\"lifestyle-listing__category--label\">Showing:</div>\r\n <ul className=\"lifestyle-listing__category--filter\">\r\n {updatedContentTags.map((item, index) => {\r\n const { Name = null, Id = null } = item.fields;\r\n let isActive = \"\";\r\n if (filter_contenttag.length > 0) {\r\n filter_contenttag.forEach(function (item, index) {\r\n if (item == Name.value.toLowerCase()) {\r\n isActive = \"is-active\";\r\n }\r\n });\r\n }\r\n if (index < 1 && filter_contenttag.length < 1) isActive = \"is-active\"; //initially set 'All Categories' as active if no filters selected\r\n return (\r\n <li\r\n key={`category-${Id.value}-${index}`}\r\n className={`lifestyle-listing__category--filter-list ${isActive}`}\r\n id={Id && Id.value ? Id.value : \"\"}\r\n onClick={this.handleClickCategory}\r\n >\r\n <Text field={Name} />\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n </div>\r\n );\r\n }\r\n\r\n renderLifestyles(LifestyleListing) {\r\n const { NoResultsText } = this.props.fields || {};\r\n let LifestyleLayout;\r\n if (LifestyleListing && LifestyleListing.length > 0) {\r\n LifestyleLayout = (\r\n <div className=\"content-tile-list-wrapper\">\r\n <div className=\"row\">\r\n {LifestyleListing.map((item, index) => {\r\n const {\r\n Title = null,\r\n Thumbnail = null,\r\n Link = null,\r\n PageType = null\r\n } = item;\r\n\r\n return (\r\n <ContentTileList\r\n index\r\n name={Title}\r\n nameLink={Link}\r\n thumbnail={Thumbnail}\r\n pageType={PageType} //new\r\n position={valueHelper(index, 4, 3)}\r\n />\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n } else {\r\n LifestyleLayout = (\r\n <div className=\"lifestyle-listing__content--noresult\">\r\n {NoResultsText && NoResultsText.value ? (\r\n <Text field={NoResultsText} />\r\n ) : (\r\n \"No result. Please try again.\"\r\n )}\r\n </div>\r\n );\r\n }\r\n return LifestyleLayout;\r\n }\r\n\r\n render() {\r\n const { ContentTags = [] } = this.props.fields || {};\r\n\r\n const { showLoader, isScrolling, LifestyleListing } = this.state;\r\n\r\n return (\r\n <div className=\"lifestyle-listing font-regular\">\r\n <BaseComponent margin=\"standard\">\r\n {/* {Occasions && Occasions.length > 0 && this.renderMeals(Occasions)} */}\r\n\r\n <div className=\"container\">\r\n {ContentTags && ContentTags.length > 0 && this.renderCategories(ContentTags)}\r\n <InfiniteScroll\r\n style={{ height: \"auto\", overflow: \"auto\" }}\r\n dataLength={LifestyleListing.length}\r\n next={this.loadLifestyleList.bind(this)}\r\n hasMore={this.state.hasMoreItems}\r\n >\r\n <div className=\"lifestyle-listing__content--wrapper\">\r\n {!showLoader && this.renderLifestyles(LifestyleListing)}\r\n {(showLoader || isScrolling) && <LazyLoading />}\r\n </div>\r\n </InfiniteScroll>\r\n </div>\r\n </BaseComponent>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default FeatureLifestyleLifestyleListingFilter;\r\n","import React, { Component } from \"react\";\n\nclass FeatureMapsCentreMap extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showModal: false,\n control: \"\",\n directionToId: null,\n levelData: [],\n storeSelected: null,\n amenitiesSelected: null,\n newMapId: null\n };\n }\n\n\n\n componentDidMount() {\n const { retailerStorefrontMap } = this.props || {};\n const script = document.createElement(\"script\");\n const venue = (typeof retailerStorefrontMap !== \"undefined\" && this.props) ? this.props.mapVenue : this.props.fields.MapDetails.fields.Venue.value;\n const MapDetails = (typeof retailerStorefrontMap !== \"undefined\" && this.props) ? this.props.MapDetails : this.props.fields.MapDetails;\n\n\n window.mappedin = {\n miKey: {\n id: \"5b27ff074738e142bc3596a8\",\n key: \"cnLpUwpoMZNygC8AiDRB9K3xe5fISsE5CZ8SBhO0jUDRU1U6\"\n },\n venue: venue ? venue : MapDetails.fields.Venue.value\n };\n\n script.src =\n \"https://d1p5cqqchvbqmy.cloudfront.net/web2/release/mappedin-web.js\";\n script.type = \"module\";\n script.async = true;\n document.body.appendChild(script);\n\n if (retailerStorefrontMap) {\n const script = document.createElement('script');\n script.src = script.url;\n script.onload = this.zoomOccurence;\n document.head.appendChild(script);\n }\n\n if (window) {\n const bannerContainer = document.getElementsByClassName(\"universal-banner\");\n if (bannerContainer) {\n const centreMapContainer = document.getElementsByClassName(\"centremap-wrapper\")[0];\n if (centreMapContainer) {\n centreMapContainer.classList.add(\"has-universal-banner\");\n }\n }\n }\n }\n\n zoomOccurence = () => {\n setTimeout(this.zoomOut, 7000);\n setTimeout(this.zoomOut, 7500);\n setTimeout(this.zoomOut, 8000);\n };\n zoomOut = () => {\n if (\n document &&\n document.getElementsByClassName(\"sc-lkqHmb\") &&\n document.getElementsByClassName(\"sc-lkqHmb\").length\n ) {\n const a = document.getElementsByClassName(\"sc-lkqHmb\")[1];\n if (a) {\n a.click();\n }\n }\n };\n\n\n render() {\n const { mapVenue, retailerStorefrontMap } = this.props || {};\n const { MapDetails } = ((typeof retailerStorefrontMap !== \"undefined\" && this.props) ? this.props : this.props.fields) || {};\n\n return (\n <div>\n {(MapDetails || mapVenue) && (\n <div className={`centremap-wrapper ${!retailerStorefrontMap ? \"js-centremap\" : \"\"}`}>\n <div id=\"mappedin-map\" className=\"map-content\">\n <main\n className=\"map\"\n data-key=\"externalId\"\n data-venue={mapVenue ? mapVenue : MapDetails.fields.Venue.value}\n id=\"mappedin-app\"\n ></main>\n </div>\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default FeatureMapsCentreMap;\n","import React from 'react';\n\nconst FeatureMapsGoogleMap = props => {\n const {\n MapUrl: mapUrl = null,\n DirectionUrl: directionUrl = null\n } = props.fields;\n \n return (\n <div className=\"map-container container\">\n <iframe src={mapUrl.value} title=\"Google Map\" />\n <a href={directionUrl.value} className=\"btn btn-primary btn-rounded\" target=\"blank\" >Get Directions</a>\n </div>\n )\n};\n\n\nexport default FeatureMapsGoogleMap;\n","import React from \"react\";\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\nconst FeatureOpeningHoursCentreOpeningHours = props => {\n let {\n schedules = null,\n comingUp = null\n } = props.fields || {};\n let {\n holidayGroups = null,\n comingUpText = null\n } = comingUp.fields || {};\n\n const renderOpeningHoursDesktop = (scheduleList, isOpeningHours) => {\n let openingHoursDesktop;\n openingHoursDesktop = scheduleList.map((item, index) => {\n const {\n day,\n time,\n holiday\n } = item.fields.Schedule.fields;\n return (\n <div\n key={`${day.value}-${time.value}-${index}`}\n className={`openinghours__schedule ${index == 0 && isOpeningHours ? \"is-first\" : \"\"}`}\n >\n <div className=\"col-12 col-md-5 openinghours__schedule--day\">\n <span className=\"openinghours__schedule--day\">\n <Text field={day} />\n </span>\n </div>\n <div className=\"col-12 col-md-3 openinghours__schedule--time\">\n <span className=\"openinghours__schedule--time\">\n <Text field={time} />\n </span>\n </div>\n <div className=\"col-12 col-md-4 openinghours__schedule--holiday\">\n {\n holiday &&\n holiday.value &&\n <span className=\"\">\n <Text field={holiday} />\n </span>\n }\n </div>\n </div>\n );\n })\n return (\n openingHoursDesktop\n )\n }\n\n const renderOpeningHoursMobile = (scheduleList, isOpeningHours) => {\n let openingHoursMobile;\n openingHoursMobile = scheduleList.map((item, index) => {\n const {\n day,\n time,\n holiday\n } = item.fields.Schedule.fields;\n let scheduleLayout;\n let btnLayout;\n if (index == 0 && isOpeningHours) {\n btnLayout =\n <input\n className=\"openinghours__schedule--checkbox\"\n type=\"checkbox\"\n id={`${day.value}-${time.value}-${index}`}\n key={`checkbox-${day.value}-${time.value}-${index}`}\n />\n scheduleLayout =\n <label\n className=\"openinghours__schedule--label\"\n htmlFor={`${day.value}-${time.value}-${index}`}\n key={`label-${day.value}-${time.value}-${index}`}\n >\n <div className=\"openinghours__schedule is-first\">\n <div className=\"col-11 openinghours__schedule--day\">\n <div className=\"\">\n <Text field={day} />\n </div>\n <div className=\"openinghours__schedule--time\">\n <Text field={time} />\n </div>\n </div>\n <div className=\"col-1 openinghours__schedule--holiday\">\n <i className=\"icon icon-arrow-down\" />\n </div>\n </div>\n </label>\n }\n else {\n scheduleLayout =\n <div\n className=\"openinghours__schedule--list\"\n key={`list-${day.value}-${time.value}-${index}`}\n >\n <div className=\"openinghours__schedule\">\n <div className=\"col-7 openinghours__schedule--day\">\n <div className=\"\">\n <Text field={day} />\n </div>\n <div className=\"openinghours__schedule--time\">\n <Text field={time} />\n </div>\n </div>\n <div className=\"col-5 openinghours__schedule--holiday\">\n {\n holiday &&\n holiday.value &&\n <span className=\"\">\n <Text field={holiday} />\n </span>\n }\n </div>\n </div>\n </div>\n }\n return ([\n btnLayout,\n scheduleLayout\n ]);\n })\n return (\n openingHoursMobile\n )\n }\n\n const renderComingup = (isDesktop) => {\n let comingupLayout;\n if (holidayGroups.length > 0) {\n comingupLayout =\n <div className={`openinghours__comingup ${isDesktop ? \"\" : \"openinghours__schedule--list\"}`}>\n <div className=\"openinghours__comingup--title\">\n <Text field={comingUpText} />\n </div>\n {\n holidayGroups.map((item, index) => {\n const {\n holidayGroupName,\n holidays,\n } = item.fields;\n let renderOpeningHours;\n if (isDesktop) {\n renderOpeningHours = renderOpeningHoursDesktop(holidays)\n } else {\n renderOpeningHours = renderOpeningHoursMobile(holidays)\n }\n return (\n <div key={holidayGroupName.value + index}>\n <div className=\"openinghours__comingup--holidaygroup-title\">\n <Text field={holidayGroupName} />\n </div>\n {renderOpeningHours}\n </div>\n );\n })\n }\n </div>\n }\n return (comingupLayout)\n }\n return (\n <div className=\"openinghours__wrapper font-regular\">\n <div className=\"openinghours__wrapper--desktop\">\n {renderOpeningHoursDesktop(schedules, true)}\n {renderComingup(true)}\n </div>\n <div className=\"openinghours__wrapper--mobile\">\n {renderOpeningHoursMobile(schedules, true)}\n {renderComingup()}\n </div>\n </div>\n );\n};\n\nexport default FeatureOpeningHoursCentreOpeningHours;\n","import React from \"react\";\nimport { Text, Image } from \"@sitecore-jss/sitecore-jss-react\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\n\nconst FeatureOpeningHoursMajorRetailersAndRestaurantsOpeningHours = props => {\n let { FeaturedGroups: FeaturedGroups = null } = props.fields;\n return (\n <div className=\"openinghours-wrapper\">\n {FeaturedGroups &&\n FeaturedGroups.length &&\n FeaturedGroups.map((item, index) => {\n let {\n Headline: Headline = null,\n RetailerList: RetailerList = null\n } = item.fields;\n if (\n Headline &&\n Headline.value &&\n Headline.value.length &&\n RetailerList &&\n RetailerList.length\n ) {\n return (\n <div\n className=\"openinghours-retailers\"\n key={`openingHoursModuleId-${index}`}\n >\n <div className=\"openinghours-retailerlabel\">\n <Text field={Headline} />\n </div>\n {RetailerList &&\n RetailerList.length &&\n RetailerList.map((retailerItem, retailerIndex) => {\n let {\n RetailerName: RetailerName = null,\n RetailerLogo: RetailerLogo = null,\n Schedules: Schedules = null,\n OpeningToday: OpeningToday = null\n } = retailerItem.fields;\n\n let retailerId = 0;\n if (index < 1) {\n retailerId = index + retailerIndex;\n } else {\n retailerId = index + retailerIndex + 3;\n }\n return (\n <div\n className=\"openinghours-option\"\n key={`retailerId-${retailerId}`}\n >\n <input\n type=\"checkbox\"\n id={`majorRetailerId-${RetailerName.value}-${retailerId}`}\n className=\"openinghours-toggle\"\n />\n <label\n className=\"openinghours-title\"\n htmlFor={`majorRetailerId-${RetailerName.value}-${retailerId}`}\n >\n <div className=\"row\">\n <div className=\"col col-auto\">\n <div className=\"openinghours-retailerimagecontainer\">\n <Image\n media={{\n ...RetailerLogo.value,\n src: defaultImg\n }}\n data-src={RetailerLogo.value.src}\n className=\"openinghours-retailerimage lazyload\"\n />\n </div>\n </div>\n <div className=\"col col-md-6\">\n <div className=\"openinghours-retailername\">\n <Text field={RetailerName} />\n </div>\n <div className=\"openinghours-retailerinfo\">\n <Text field={OpeningToday} />\n </div>\n </div>\n </div>\n </label>\n <div className=\"openinghours-content\">\n <div className=\"normal\">\n <table className=\"table\">\n <tbody>\n {Schedules &&\n Schedules.length &&\n Schedules.slice(1).map(\n (scheduleItem, scheduleIndex) => {\n const {\n Day: day = null,\n Time: time = null,\n DineUntilTime: dine = null,\n Holiday: holiday = null\n } = scheduleItem.fields;\n return (\n <tr\n key={`schduleId-${scheduleIndex}`}\n className={\n holiday && holiday.value\n ? \"openinghours-holiday\"\n : \"\"\n }\n >\n <td>\n <Text field={day} />\n </td>\n <td>\n <Text field={time} />\n {dine && dine.value ? (\n <React.Fragment>\n <br /> <Text field={dine} />\n </React.Fragment>\n ) : (\n \"\"\n )}\n </td>\n <td>\n <div\n className={\n holiday && holiday.value\n ? \"openinghours-btnevent\"\n : \"\"\n }\n >\n <Text field={holiday} />\n </div>\n </td>\n </tr>\n );\n }\n )}\n </tbody>\n </table>\n </div>\n <div className=\"mobile\">\n {Schedules &&\n Schedules.length &&\n Schedules.map((scheduleItem, scheduleIndex) => {\n const {\n Day: day = null,\n Time: time = null,\n DineUntilTime: dine = null,\n Holiday: holiday = null\n } = scheduleItem.fields;\n return (\n <div\n key={`scheduleMobileId-${scheduleIndex}`}\n className={\n holiday && holiday.value\n ? \"item openinghours-holiday\"\n : \"item\"\n }\n >\n <div className=\"fontandweight\">\n <Text field={day} />\n </div>\n <div>\n <Text field={time} />\n {dine && dine.value ? (\n <React.Fragment>\n <br /> <Text field={dine} />\n </React.Fragment>\n ) : (\n \"\"\n )}\n </div>\n <div\n className={\n holiday && holiday.value\n ? \"openinghours-btnevent\"\n : \"\"\n }\n >\n <Text field={holiday} />\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n );\n } else return null;\n })}\n </div>\n );\n};\n\nexport default FeatureOpeningHoursMajorRetailersAndRestaurantsOpeningHours;\n","import React from \"react\";\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\n\nconst FeatureOpeningHoursOpeningHoursHeader = props => {\n const {\n openingHoursHeadline: openingHoursHeadline = null,\n openingState: openingState = null\n } = props.fields;\n return (\n <div className=\"openinghours-header\">\n <div className=\"container\">\n <div className=\"content-wrapper\">\n <div className=\"content-header-wrapper\">\n {openingHoursHeadline.value && (\n <div className=\"header-title\">\n <Text field={openingHoursHeadline} />\n </div>\n )}\n {openingState.value && (\n <div className=\"header-sub\">\n <Text field={openingState} />\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default FeatureOpeningHoursOpeningHoursHeader;\n","import React from \"react\";\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\n\nconst FeatureParkingParkingInformation = props => {\n const { Title: title = null, FreePark: freePark = null } = props.fields || {};\n if (title && title.value && freePark && freePark.value) {\n return (\n <div className=\"parking-information-container\">\n <div className=\"container\">\n <div className=\"content-wrapper\">\n <div className=\"content-header-wrapper\">\n <div className=\"header-title\">\n <Text field={title} />\n </div>\n <div className=\"header-sub\">\n <Text field={freePark} />\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n};\n\nexport default FeatureParkingParkingInformation;\n","import React from \"react\";\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\n\nconst FeatureParkingParkingRates = props => {\n const {\n ParkRateTitle = null,\n MaxRate = null,\n HoursLabel = null,\n CasualRateLabel = null,\n CinemaRateLabel = null,\n SeniorRateLabel = null,\n DisplaySeniorRates = null,\n FreeAfterTime = null,\n ParkRates = null\n } = props.fields || {};\n\n const checkRate = rate => {\n return rate > 0 ? \"\" : \"free\";\n };\n\n const checkFree = rate => {\n return rate > 0 ? \"$\" + rate : \"FREE\";\n };\n\n if (ParkRateTitle && ParkRateTitle.value && ParkRates && ParkRates.length) {\n return (\n <div className=\"parking-parkingrates-container\">\n <div className=\"content-wrapper\">\n <div className=\"content-header-wrapper\">\n <div className=\"header-main\">\n <Text field={ParkRateTitle} />\n </div>\n </div>\n <div className=\"content-table-wrapper\">\n <table className=\"table-content normal\">\n <thead>\n <tr className=\"table-header\">\n <th className=\"header-item\">\n <Text field={HoursLabel} />\n </th>\n <th className=\"header-item\">\n <Text field={CasualRateLabel} />\n </th>\n <th className=\"header-item\">\n <Text field={CinemaRateLabel} />\n </th>\n {DisplaySeniorRates\n && DisplaySeniorRates.value &&\n <th className=\"header-item\">\n <Text field={SeniorRateLabel} />\n </th>\n }\n </tr>\n </thead>\n <tbody>\n {ParkRates &&\n ParkRates.length !== undefined &&\n ParkRates.map((item, index) => {\n const {\n HoursRange = null,\n CasualRate = null,\n CinemaRate = null,\n SeniorRate = null\n } = item.fields || {};\n return (\n <tr key={`trID-${index}`} className=\"table-item\">\n <td className=\"item\">\n <Text field={HoursRange} />\n </td>\n\n <td className=\"item\">\n <span className={checkRate(CasualRate.value)}>\n <Text\n field={{\n value: checkFree(CasualRate.value)\n }}\n />\n </span>\n </td>\n\n <td className=\"item\">\n <span className={checkRate(CinemaRate.value)}>\n <Text\n field={{\n value: checkFree(CinemaRate.value)\n }}\n />\n </span>\n </td>\n {DisplaySeniorRates &&\n DisplaySeniorRates.value &&\n <td className=\"item\">\n <span className={checkRate(SeniorRate.value)}>\n <Text\n field={{\n value: checkFree(SeniorRate.value)\n }}\n />\n </span>\n </td>\n }\n </tr>\n );\n })}\n </tbody>\n </table>\n\n <div className=\"table-content mobile\">\n <div className=\"table-item-wrapper\">\n {ParkRates &&\n ParkRates.length !== undefined &&\n ParkRates.map((item, index) => {\n const {\n HoursRange = null,\n CasualRate = null,\n CinemaRate = null,\n SeniorRate = null\n } = item.fields || {};\n return (\n <div key={`trmobileID-${index}`} className=\"table-item\">\n <div className=\"item header\">\n <Text field={HoursRange} />\n </div>\n <div className=\"item\">\n <div>\n <Text field={CasualRateLabel} />\n </div>\n <div>\n <span className={checkRate(CasualRate.value)}>\n <Text\n field={{\n value: checkFree(CasualRate.value)\n }}\n />\n </span>\n </div>\n </div>\n <div className=\"item\">\n <div>\n <Text field={CinemaRateLabel} />\n </div>\n <div>\n <span className={checkRate(CinemaRate.value)}>\n <Text\n field={{\n value: checkFree(CinemaRate.value)\n }}\n />\n </span>\n </div>\n </div>\n {DisplaySeniorRates\n && DisplaySeniorRates.value &&\n <div className=\"item\">\n <div>\n <Text field={SeniorRateLabel} />\n </div>\n <div>\n <span className={checkRate(SeniorRate.value)}>\n <Text\n field={{\n value: checkFree(SeniorRate.value)\n }}\n />\n </span>\n </div>\n </div>\n }\n </div>\n );\n })}\n </div>\n </div>\n </div>\n {(MaxRate &&\n MaxRate.value &&\n FreeAfterTime &&\n FreeAfterTime.value) &&\n <div className=\"content-max-wrapper\">\n <div className=\"max-text\">\n <span>\n <Text field={MaxRate} />\n </span>\n <span>\n <Text field={FreeAfterTime} />\n </span>\n </div>\n </div>\n }\n </div>\n </div>\n );\n } else return null;\n};\nexport default FeatureParkingParkingRates;\n","import React from \"react\";\nimport { Text, RichText } from \"@sitecore-jss/sitecore-jss-react\";\n\nconst FeatureParkingValetParking = props => {\n const {\n ValetRateDescription: valetRateDescription = null,\n OpeningHoursLabel: openingHoursLabel = null,\n ValetServices: valetServices = null\n } = props.fields || {};\n const getClass = val => {\n return val ? \"darken\" : \"normal\";\n };\n return (\n <div className=\"parking-valetparking-container\">\n <div className=\"content-wrapper\">\n <div className=\"valet-header\">\n <RichText field={valetRateDescription} />\n </div>\n <div className=\"valet-opening-header\">\n <Text field={openingHoursLabel} />\n </div>\n {valetServices && valetServices.length && valetServices.length > 0\n && valetServices[0] && valetServices[0].fields && valetServices[0].fields.Schedule\n && valetServices[0].fields.Schedule.fields && (\n <div className=\"valet-list-wrapper\">\n <div className=\"valet-list\">\n <input type=\"checkbox\" id=\"toggle1\" className=\"toggle\" />\n <label className=\"title\" htmlFor=\"toggle1\">\n <Text field={valetServices[0].fields.Schedule.fields.day} />{\" \"}\n <Text field={valetServices[0].fields.Schedule.fields.time} />\n </label>\n <div className=\"content\">\n <table className=\"valet-table normal\">\n <tbody>\n {valetServices.slice(1).map((item, index) => {\n const {\n day: day = null,\n time: time = null,\n holiday: holiday = null\n } = (item && item.fields && item.fields.Schedule && item.fields.Schedule.fields) \n ? item.fields.Schedule.fields : {};\n return (\n <tr\n key={`trID-${index}`}\n className={getClass(holiday.value)}\n >\n <td>\n <Text field={day} />\n </td>\n <td>\n <Text field={time} />\n </td>\n <td>\n {holiday && holiday.value && (\n <div className=\"btnevent\">\n <Text field={holiday} />\n </div>\n )}\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n\n <div className=\"valet-table mobile\">\n {valetServices.slice(1).map((item, index) => {\n const {\n day: day = null,\n time: time = null,\n holiday: holiday = null\n } = (item && item.fields && item.fields.Schedule && item.fields.Schedule.fields) \n ? item.fields.Schedule.fields : {};\n return (\n <div className=\"table-item-wrapper\" key={`trID-${index}`}>\n <div\n className={`table-item ${getClass(holiday.value)}`}\n >\n <div className=\"item\">\n <Text field={day} />\n </div>\n <div className=\"item\">\n <Text field={time} />\n </div>\n {holiday && holiday.value && (\n <div className=\"item\">\n <div className=\"btnevent\">\n <Text field={holiday} />\n </div>\n </div>\n )}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default FeatureParkingValetParking;\n","import React from \"react\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\nimport { Text, Image, Link } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport Details from \"../../../Common/Details\";\nimport ScrollAnimation from \"react-animate-on-scroll\";\nimport RiseAndFade from \"../../../Common/Animations/RiseAndFade\";\nimport { valueHelper } from \"../../../../helper/Animations\";\n\nconst FeaturePrecinctsCampaignFeaturedStoreList = props => {\n const { Title = null, Subtitle = null, StoreList = null } =\n props.fields || {};\n\n return (\n <div className=\"featuredStoreList font-regular\">\n {StoreList && StoreList.length > 0 && (\n <BaseComponent margin=\"standard\">\n <div className=\"featuredStoreList__header\">\n <div className=\"container\">\n <div className=\"featuredStoreList__header--container col-12 col-lg-11\">\n <ScrollAnimation\n animateIn=\"animate__animated animate__fadeIn\"\n animateOnce={true}\n >\n {Title &&\n Title.value &&\n (Title.value.href || Title.value.text) && (\n <div className=\"featuredStoreList__header--title\">\n {Title.value.href ? (\n <Link field={Title} />\n ) : (\n Title.value.text\n )}\n </div>\n )}\n {Subtitle &&\n Subtitle.value &&\n (Subtitle.value.href || Subtitle.value.text) && (\n <div className=\"featuredStoreList__header--subtitle\">\n {Subtitle.value.href ? (\n <Link field={Subtitle} />\n ) : (\n Subtitle.value.text\n )}\n </div>\n )}\n </ScrollAnimation>\n </div>\n </div>\n </div>\n <div className=\"container\">\n <div className=\"featuredStoreList__tile row\">\n {StoreList.map((item, index) => {\n const {\n ItemId = null,\n OpeningTime = null,\n Name = null,\n StoreLocation = null,\n StoreLocationLink = null,\n Logo = null,\n Thumbnail = null,\n StoreLink = null\n } = item.fields || {};\n let imageLogoLayout;\n let imageMainLayout;\n\n imageLogoLayout = (\n <div className=\"featuredStoreList__tile--image-logo\">\n {Logo && Logo.value && Logo.value.src ? (\n <Image\n media={{\n ...Logo.value,\n src: defaultImg\n }}\n data-src={Logo.value.src}\n className=\"featuredStoreList__tile--image-logo-img lazyload\"\n />\n ) : (\n <img\n alt=\"default\"\n src={defaultImg}\n className=\"featuredStoreList__tile--image-logo-img\"\n />\n )}\n </div>\n );\n\n imageMainLayout = (\n <div>\n {Thumbnail && Thumbnail.value && Thumbnail.value.src ? (\n <Image\n media={{\n ...Thumbnail.value,\n src: defaultImg\n }}\n data-src={Thumbnail.value.src}\n className=\"featuredStoreList__tile--image-img lazyload\"\n />\n ) : (\n <img\n alt=\"default\"\n src={defaultImg}\n className=\"featuredStoreList__tile--image-img\"\n />\n )}\n {imageLogoLayout}\n </div>\n );\n\n return (\n <div\n key={`featuredStoreList-${index}`}\n className=\"featuredStoreList__tile--column col-lg-4\"\n >\n <RiseAndFade position={valueHelper(index, 3)}>\n <div className=\"animation-range\">\n <div className=\"featuredStoreList__tile--image-wrapper\">\n {StoreLink && StoreLink.value ? (\n <a href={StoreLink.value}>{imageMainLayout}</a>\n ) : (\n imageMainLayout\n )}\n </div>\n\n <div className=\"featuredStoreList__tile--title\">\n {StoreLink && StoreLink.value ? (\n <a href={StoreLink.value}>\n <Text field={Name} />\n </a>\n ) : (\n <Text field={Name} />\n )}\n </div>\n </div>\n <div className=\"featuredStoreList__tile--metadata\">\n {StoreLocation && StoreLocation.value && (\n <Details\n iconValue=\"location\"\n linkUrl={\n StoreLocationLink && StoreLocationLink.value\n ? StoreLocationLink.value\n : \"\"\n }\n linkName={StoreLocation}\n size=\"24\"\n mapInfo={ItemId && ItemId.value ? ItemId.value : \"\"}\n />\n )}\n {OpeningTime && OpeningTime.value && (\n <Details\n iconValue=\"time\"\n linkName={OpeningTime}\n size=\"24\"\n />\n )}\n </div>\n </RiseAndFade>\n </div>\n );\n })}\n </div>\n </div>\n </BaseComponent>\n )}\n </div>\n );\n};\n\nexport default FeaturePrecinctsCampaignFeaturedStoreList;\n","import React from \"react\";\nimport { Text, Image, Link } from \"@sitecore-jss/sitecore-jss-react\";\nimport ScrollAnimation from \"react-animate-on-scroll\";\nimport Badge from \"../../../Common/Badge\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\nimport Details from \"../../../Common/Details\";\nimport RiseAndFade from \"../../../Common/Animations/RiseAndFade\";\n\nconst FeaturePrecinctsFeaturedPrecinct = props => {\n const {\n Title: title = null,\n TitleLink: link = null,\n Subtitle: subtitle = null,\n PrecinctsList: precinctsList = null\n } = props.fields || {};\n\n const composeRatingSection = (ratingFromAPI, priceFromAPI) => {\n let ratingSection = [];\n let rating = [];\n let priceLevel = [];\n\n if (ratingFromAPI != 0) {\n const ratingValue = parseInt(ratingFromAPI);\n for (let i = 0; i < 5; i++) {\n if (i <= ratingValue) {\n rating.push(<span className=\"icon icon-star checked\" key={i} />);\n } else {\n rating.push(<span className=\"icon icon-star\" key={i} />);\n }\n }\n } else {\n rating = null;\n }\n\n if (priceFromAPI != 0) {\n const priceLevelValue = parseInt(priceFromAPI);\n\n for (let i = 0; i < priceLevelValue; i++) {\n priceLevel.push(<span className=\"icon icon-dollar blocked\" key={i} />);\n }\n } else {\n priceLevel = null;\n }\n\n ratingSection = (\n <div className=\"tiles-details-rate\">\n {rating && <div>{rating}</div>}\n {priceLevel && <div>{priceLevel}</div>}\n </div>\n );\n\n return ratingSection;\n };\n\n let list;\n\n if (precinctsList && precinctsList.length > 2) {\n list = (\n <BaseComponent margin=\"standard\">\n <div className=\"featuredprecinct-wrapper\">\n <div className=\"header-wrapper banner-left\">\n <div className=\"container\">\n <div className=\"row no-gutters\">\n <div className=\"col-12 col-lg-11 header-bg header-text-left\">\n <ScrollAnimation\n animateIn=\"animate__animated animate__fadeIn\"\n animateOnce={true}\n >\n {title && title.value && (\n <div className=\"header-title\">\n {link && link.value && link.value.href ? (\n <Link field={link}>\n <Text field={title} />\n </Link>\n ) : (\n <Text field={title} />\n )}\n </div>\n )}\n <div className=\"header-sub\">\n <Text field={subtitle} />\n </div>\n </ScrollAnimation>\n </div>\n </div>\n </div>\n </div>\n <div className=\"tiles-wrapper\">\n <div className=\"container\">\n <div className=\"row no-gutters\">\n {precinctsList &&\n precinctsList.map((listItem, index) => {\n let item, itemList;\n itemList = listItem.fields;\n for (const iterator in itemList) {\n if (itemList[iterator] && itemList[iterator].fields) {\n item = itemList[iterator].fields;\n }\n }\n let value = 0;\n if (index == 1) {\n value = 6;\n } else if (index == 2) {\n value = 8;\n }\n return item ? (\n <div key={`myId-${index}`} className=\"col-10 col-md-4\">\n <RiseAndFade position={value}>\n <div className=\"animation-range\">\n <div className=\"content-img-wrapper\">\n <a\n href={\n item.RetailerPageHref &&\n item.RetailerPageHref.value\n ? item.RetailerPageHref.value\n : item.PromotionLink &&\n item.PromotionLink.value\n ? item.PromotionLink.value\n : null\n }\n >\n {(item.HeroImage &&\n item.HeroImage.value &&\n item.HeroImage.value.src) ||\n (item.Thumbnail &&\n item.Thumbnail.value &&\n item.Thumbnail.value.src) ? (\n <Image\n media={\n item.HeroImage\n ? {\n ...item.HeroImage.value,\n src: defaultImg\n }\n : {\n ...item.Thumbnail.value,\n src: defaultImg\n }\n }\n data-src={\n item.HeroImage\n ? item.HeroImage.value.src\n : item.Thumbnail.value.src\n }\n className={`content-image ${\n item.HeroImage ? \"content-image-logo\" : \"\"\n } lazyload`}\n />\n ) : (\n <div className=\"no-image\" />\n )}\n </a>\n <div className=\"img-badge\">\n <Badge\n type=\"list\"\n startDate={\n item.StartDate ? item.StartDate.value : null\n }\n endDate={\n item.EndDate ? item.EndDate.value : \"\"\n }\n badgeText={\n item.EventText ? item.EventText.value : \"\"\n }\n />\n </div>\n <div className=\"img-logo\">\n <div className=\"img-logo-bg\">\n <Image\n media={\n item.Logo\n ? {\n ...item.Logo.value,\n src: defaultImg\n }\n : {\n ...item.Thumbnail.value,\n src: defaultImg\n }\n }\n data-src={\n item.Logo\n ? item.Logo.value.src\n : item.Thumbnail.value.src\n }\n className=\"lazyload\"\n />\n </div>\n </div>\n </div>\n <div className=\"details-title\">\n <a\n href={\n item.RetailerPageHref &&\n item.RetailerPageHref.value\n ? item.RetailerPageHref.value\n : item.PromotionLink &&\n item.PromotionLink.value\n ? item.PromotionLink.value\n : null\n }\n >\n <Text\n field={\n item.RetailerName\n ? { value: item.RetailerName.value }\n : { value: item.Name.value }\n }\n />\n </a>\n </div>\n </div>\n <div className=\"tiles-details-rate-wrapper\">\n {(item.Rating || item.PriceLevel) &&\n composeRatingSection(\n item.Rating ? item.Rating.value : 0,\n item.PriceLevel ? item.PriceLevel.value : 0\n )}\n </div>\n {item.StoreLocation && item.StoreLocation.value && (\n <Details\n iconValue=\"location\"\n linkUrl={\n item.StoreLocationLink &&\n item.StoreLocationLink.value\n }\n linkName={item.StoreLocation}\n size=\"24\"\n mapInfo={\n item.ItemId && item.ItemId.value\n ? item.ItemId.value\n : null\n }\n />\n )}\n {item.Location && item.Location.value && (\n <Details\n iconValue=\"location\"\n linkUrl={\n item.LocationLink && item.LocationLink.value\n }\n linkName={item.Location}\n size=\"24\"\n mapInfo={\n item.LocationMapTargetId &&\n item.LocationMapTargetId.value\n ? item.LocationMapTargetId.value\n : null\n }\n />\n )}\n {item.ScheduleTime && item.ScheduleTime.value && (\n <Details\n iconValue=\"time\"\n linkName={item.ScheduleTime}\n size=\"24\"\n />\n )}\n {item.OpeningTime && item.OpeningTime.value && (\n <Details\n iconValue=\"time\"\n linkName={item.OpeningTime}\n size=\"24\"\n />\n )}\n </RiseAndFade>\n </div>\n ) : (\n \"\"\n );\n })}\n </div>\n </div>\n </div>\n </div>\n </BaseComponent>\n );\n } else {\n list = \"\";\n }\n\n return list;\n};\n\nexport default FeaturePrecinctsFeaturedPrecinct;\n","import React, { Fragment } from \"react\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\nimport { Text, Image, Link } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport Badge from \"../../../Common/Badge\";\nimport Details from \"../../../Common/Details\";\nimport ScrollAnimation from \"react-animate-on-scroll\";\nimport RiseAndFade from \"../../../Common/Animations/RiseAndFade\";\nimport { valueHelper } from \"../../../../helper/Animations\";\n\nconst FeaturePromotionsCampaignFeaturedWhatsOn = props => {\n const { Title = null, Subtitle = null, WhatsOnList = null} =\n props.fields || {};\n\n return (\n <div className=\"featuredWhatsOn font-regular\">\n {WhatsOnList && WhatsOnList.length > 0 && (\n <BaseComponent margin=\"standard\">\n <div className=\"featuredWhatsOn__header\">\n <div className=\"container\">\n <div className=\"featuredWhatsOn__header--container col-12 col-lg-11\">\n <ScrollAnimation\n animateIn=\"animate__animated animate__fadeIn\"\n animateOnce={true}\n >\n {Title &&\n Title.value &&\n (Title.value.href || Title.value.text) && (\n <div className=\"featuredWhatsOn__header--title\">\n {Title.value.href ? (\n <Link field={Title} />\n ) : (\n Title.value.text\n )}\n </div>\n )}\n {Subtitle &&\n Subtitle.value &&\n (Subtitle.value.href || Subtitle.value.text) && (\n <div className=\"featuredWhatsOn__header--subtitle\">\n {Subtitle.value.href ? (\n <Link field={Subtitle} />\n ) : (\n Subtitle.value.text\n )}\n </div>\n )}\n </ScrollAnimation>\n </div>\n </div>\n </div>\n <div className=\"container\">\n <div className=\"featuredWhatsOn__tile row\">\n {WhatsOnList.map((item, index) => {\n const {\n Name = null,\n Type = null,\n Location = null,\n LocationLink = null,\n StartDate = null,\n EndDate = null,\n ScheduleTime = null,\n Thumbnail = null,\n Link = null,\n StorefrontId = null,\n IsRetailerContent = null,\n IsLogoAsThumbnail = null,\n Retailer = null,\n HidePublishDate = null\n } = item.fields || {};\n let thumbnailLayout;\n\n const badgeLayout = (\n <div className=\"featuredWhatsOn__tile--image-badge\">\n <Badge\n type=\"list\"\n startDate={\n StartDate && StartDate.value ? StartDate.value : \"\"\n }\n endDate={EndDate && EndDate.value ? EndDate.value : \"\"}\n />\n </div>\n );\n\n thumbnailLayout = (\n <div>\n {Thumbnail && Thumbnail.value && Thumbnail.value.src ? (\n <div className=\"include_logo_padding\">\n <Image\n media={{\n ...Thumbnail.value,\n src: defaultImg\n }}\n data-src={Thumbnail.value.src}\n className=\"featuredWhatsOn__tile--image-img lazyload\"\n />\n </div>\n ) : (\n <Fragment>\n {IsRetailerContent && IsRetailerContent.value && (\n <div className=\"display_retailer_name\">\n <Text field={Retailer} />\n </div>\n )}\n <img\n alt=\"default\"\n src={defaultImg}\n className=\"featuredWhatsOn__tile--image-img\"\n />\n </Fragment>\n )}\n {badgeLayout}\n </div>\n );\n\n return (\n <div\n key={`featuredWhatsOn-${index}`}\n className=\"featuredWhatsOn__tile--column col-lg-4\"\n >\n <RiseAndFade position={valueHelper(index, 3)}>\n <div className=\"animation-range\">\n <div\n className={`featuredWhatsOn__tile--image-wrapper ${\n IsLogoAsThumbnail && IsLogoAsThumbnail.value\n ? \"display_retailer_logo\"\n : \"\"\n }`}\n >\n {Link && Link.value ? (\n <a href={Link.value}>{thumbnailLayout}</a>\n ) : (\n thumbnailLayout\n )}\n </div>\n {Type && Type.value && (\n <div className=\"featuredWhatsOn__tile--type\">\n <Text field={Type} />\n </div>\n )}\n <div className=\"featuredWhatsOn__tile--title\">\n {Link && Link.value ? (\n <a href={Link.value}>\n <Text field={Name} />\n </a>\n ) : (\n <Text field={Name} />\n )}\n </div>\n </div>\n <div className=\"featuredWhatsOn__tile--metadata\">\n {Location && Location.value && (\n <Details\n iconValue=\"location\"\n linkUrl={\n LocationLink && LocationLink.value\n ? LocationLink.value\n : \"\"\n }\n linkName={Location}\n size=\"24\"\n mapInfo={\n StorefrontId && StorefrontId.value\n ? StorefrontId.value\n : \"\"\n }\n />\n )}\n {HidePublishDate && !HidePublishDate.value && ScheduleTime && ScheduleTime.value && (\n <Details\n iconValue=\"time\"\n linkName={ScheduleTime}\n size=\"24\"\n />\n )}\n </div>\n </RiseAndFade>\n </div>\n );\n })}\n </div>\n </div>\n </BaseComponent>\n )}\n </div>\n );\n};\n\nexport default FeaturePromotionsCampaignFeaturedWhatsOn;\n","import React from \"react\";\nimport {\n Text,\n Link,\n Image,\n Placeholder\n} from \"@sitecore-jss/sitecore-jss-react\";\nimport Badge from \"../../../Common/Badge\";\nimport Details from \"../../../Common/Details\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\n\nconst FeaturePromotionsCategoryHeader = props => {\n const {\n Category: category = null,\n StoreDirectoryCta: storeDirectoryCta = null,\n Event: event = null\n } = props.fields || {};\n\n return (\n <div className=\"category-header-wrapper\">\n <div className=\"container\">\n <div className=\"d-flex justify-content-between align-items-end mb-4\">\n <div className=\"category-header-title\">\n <Text field={category} />\n </div>\n <div className=\"category-header-link\">\n <i className=\"icon icon-stores\" />\n <Link className=\"mx-2\" field={storeDirectoryCta} />\n <i className=\"icon icon-arrow-right\" />\n </div>\n </div>\n\n {event && (\n <div className=\"category-header-hero-wrapper\">\n <Image\n media={{ ...event.fields.Image.value, src: defaultImg }}\n data-src={event.fields.Image.value.src}\n className=\"category-header-hero-img img-fluid lazyload\"\n />\n <div className=\"category-header-content-badge\">\n {event.fields.StartDate && event.fields.StartDate.value && (\n <Badge type=\"hero\" startDate={event.fields.StartDate.value} />\n )}\n </div>\n <div className=\"category-header-content\">\n <div className=\"row\">\n <div className=\"col-12 col-md-8 col-lg-8 col-xl-8\">\n <div className=\"category-header-content-title\">\n <Text field={event.fields.Description} />\n </div>\n\n <div className=\"category-header-content-details\">\n <Details\n iconValue=\"location\"\n linkName={event.fields.Location}\n size=\"24\"\n />\n <Details\n iconValue=\"time\"\n linkName={event.fields.ScheduleTime}\n size=\"24\"\n />\n </div>\n </div>\n\n <div className=\"col-12 col-md-4 col-lg-4 col-xl-4\">\n <div className=\"quicklinks-wrapper\">\n <Placeholder\n name=\"jss-category-header-right\"\n rendering={props.rendering}\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n};\nexport default FeaturePromotionsCategoryHeader;\n","import React from \"react\";\r\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\r\n\r\nconst Highlight = props => {\r\n const { text } = props;\r\n if (text && text.value) {\r\n return (\r\n <div className=\"highlight-wrapper\">\r\n <Text field={text} />\r\n </div>\r\n );\r\n } else return null;\r\n};\r\nexport default Highlight;\r\n","import React from \"react\";\nimport { Text, Image, Link, RichText } from \"@sitecore-jss/sitecore-jss-react\";\nimport ScrollAnimation from \"react-animate-on-scroll\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport Details from \"../../../Common/Details\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\nimport Highlight from \"../../../Common/Highlight\";\n\nconst FeaturePromotionsCategorySpotlight = props => {\n const { Title: title = null, EventList: eventList = null } =\n props.fields || {};\n let MaxCount = 0;\n if (props.params && props.params.MaxCount) {\n MaxCount = props.params.MaxCount;\n }\n if (\n eventList &&\n eventList.length &&\n eventList.length > 0 &&\n eventList.length <= MaxCount\n ) {\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"container\">\n <div className=\"categoryspotlight-wrapper\">\n <div className=\"categoryspotlight-header-banner\" />\n <div className=\"categoryspotlight-content-wrapper\">\n <ScrollAnimation\n animateIn=\"animate__animated animate__fadeIn\"\n animateOnce={true}\n >\n <div className=\"categoryspotlight-header-title\">\n <Link field={title} />\n {/* <i className=\"icon icon-arrow-right\" /> */}\n </div>\n </ScrollAnimation>\n {eventList.length &&\n eventList.map((item, index) => {\n const {\n Thumbnail: thumbnail = null,\n PromotionName: name = null,\n PromotionType: promotionType = null,\n Summary: summary = null,\n LocationLink: locationLink = null,\n PromotionLocation: promotionLocation = null,\n PromotionLink: promotionLink = null,\n StorefrontId: storeFrontId = null,\n Validity: validity = null,\n OfferHighlight: offerHighlight = null\n } = item.fields || {};\n return (\n <div\n key={`myId-${index}`}\n className=\"categoryspotlight-tile-wrapper\"\n >\n <div className=\"categoryspotlight-tile\">\n <div className=\"animation-range\">\n <div className=\"categoryspotlight-tile-image-wrapper\">\n <div className=\"categoryspotlight-tile-image\">\n {promotionLink && promotionLink.value ? (\n <a href={promotionLink.value}>\n {thumbnail &&\n thumbnail.value &&\n thumbnail.value.src ? (\n <Image\n media={{\n ...thumbnail.value,\n src: defaultImg\n }}\n data-src={thumbnail.value.src}\n className=\"lazyload\"\n />\n ) : (\n <img src={defaultImg} alt=\"default\" />\n )}\n </a>\n ) : thumbnail &&\n thumbnail.value &&\n thumbnail.value.src ? (\n <Image\n media={{\n ...thumbnail.value,\n src: defaultImg\n }}\n data-src={thumbnail.value.src}\n className=\"lazyload\"\n />\n ) : (\n <img src={defaultImg} alt=\"default\" />\n )}\n {offerHighlight && offerHighlight.value && (\n <Highlight text={offerHighlight} />\n )}\n </div>\n </div>\n <div className=\"categoryspotlight-tile-info-title\">\n <span>\n {promotionLink && promotionLink.value ? (\n <a href={promotionLink.value}>\n <Text field={name} />\n </a>\n ) : (\n <Text field={name} />\n )}\n </span>\n </div>\n </div>\n <div className=\"categoryspotlight-tile-info-wrapper\">\n {summary && summary.value && (\n <div className=\"categoryspotlight-tile-info-description\">\n <span>\n <RichText field={summary} />\n </span>\n </div>\n )}\n {validity &&\n validity.value &&\n promotionType &&\n promotionType.value &&\n promotionType.value !== \"Article\" && (\n <Details\n iconValue=\"time\"\n linkName={validity}\n size=\"24\"\n />\n )}\n {promotionLocation && promotionLocation.value && (\n <Details\n iconValue=\"location\"\n linkUrl={locationLink && locationLink.value}\n linkName={promotionLocation}\n size=\"24\"\n mapInfo={\n storeFrontId && storeFrontId.value\n ? storeFrontId.value\n : \"\"\n }\n />\n )}\n {validity &&\n validity.value &&\n promotionType &&\n promotionType.value &&\n promotionType.value === \"Article\" && (\n <Details\n iconValue=\"time\"\n linkName={validity}\n size=\"24\"\n />\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </BaseComponent>\n );\n } else return null;\n};\n\nexport default FeaturePromotionsCategorySpotlight;\n","import React, { Fragment } from \"react\";\nimport { Text, Image, Link } from \"@sitecore-jss/sitecore-jss-react\";\nimport ScrollAnimation from \"react-animate-on-scroll\";\nimport Badge from \"../../../Common/Badge\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport Details from \"../../../Common/Details\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\nimport RiseAndFade from \"../../../Common/Animations/RiseAndFade\";\n\nconst FeaturePromotionsCategoryWhatsOn = props => {\n const {\n Title: title = null,\n Subtext: subtext = null,\n Position: position = null,\n EventList: eventList = null,\n Links: links = null\n } = props.fields || {};\n\n let MaxCount = 0;\n if (props.params && props.params.MaxCount) {\n MaxCount = props.params.MaxCount;\n }\n let align = true;\n\n if (position && position.value && position.value.toLowerCase() === \"left\") {\n align = false;\n }\n if (eventList && eventList.length && eventList.length == MaxCount) {\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"categorywhatson-container\">\n <div\n className={`categorywhatson-main-header-${\n align ? \"right\" : \"left\"\n }`}\n >\n <div className=\"container\">\n <div className=\"row no-gutters\">\n <div className={`d-none ${align ? \"col-1 d-lg-block\" : \"\"}`} />\n <div\n className={`categorywhatson-header-container col-12 col-lg-11 header-text-${\n align ? \"right\" : \"left\"\n }`}\n >\n <ScrollAnimation\n animateIn=\"animate__animated animate__fadeIn\"\n animateOnce={true}\n >\n <div className=\"categorywhatson-header-title\">\n <Link field={title} />\n </div>\n <div className=\"categorywhatson-header-sub\">\n <Text field={subtext} />\n </div>\n {links && links.length && (\n <div className=\"categorywhatson-header-buttons\">\n {links.map((item, index) => {\n const {\n LinkText: linkText = null,\n LinkUrl: linkUrl = null\n } = item.fields || {};\n if (\n linkText &&\n linkText.value &&\n linkUrl &&\n linkUrl.value\n ) {\n return (\n <a\n href={linkUrl.value}\n key={`myButtonId-${index}`}\n className={`btn tertiary-btn ${\n index < 5\n ? index < 4\n ? index < 3\n ? \"\"\n : \"d-none d-md-inline-block\"\n : \"d-none d-lg-inline-block\"\n : \"d-none\"\n }`}\n >\n {linkText.value}\n </a>\n );\n }\n })}\n </div>\n )}\n </ScrollAnimation>\n </div>\n </div>\n </div>\n </div>\n <div className=\"categorywhatson-tile-wrapper\">\n <div className=\"container\">\n <div className=\"row no-gutters\">\n {eventList &&\n eventList.length !== undefined &&\n eventList.map((item, index) => {\n const {\n Thumbnail: thumbnail = null,\n StartDate: startDate = null,\n EndDate: endDate = null,\n EventText: eventText = null,\n PromotionName: name = null,\n LocationLink: locationLink = null,\n PromotionLocation: location = null,\n ScheduleTime: scheduleTime = null,\n PromotionLink: promotionLink = null,\n PromotionType: promotionType = null,\n StorefrontId: storeFrontId = null,\n IsRetailerContent: isRetailerContent = null,\n IsLogoAsThumbnail: isLogoAsThumbnail = null,\n Retailer: retailerName = null,\n HidePublishDate: HidePublishDate = null\n } = item.fields || {};\n\n let value = 0;\n let showLocation = true;\n if (index == 1) {\n value = 6;\n } else if (index == 2) {\n value = 8;\n }\n\n if (\n promotionType &&\n promotionType.value &&\n promotionType.value.toLowerCase().indexOf(\"article\") !==\n -1\n ) {\n showLocation = false;\n }\n\n return (\n <div key={`myId-${index}`} className=\"col-10 col-md-4\">\n <RiseAndFade position={value}>\n <div className=\"animation-range\">\n <div\n className={`categorywhatson-content-img-wrapper ${\n isLogoAsThumbnail && isLogoAsThumbnail.value\n ? \"display_retailer_logo\"\n : \"\"\n }`}\n >\n {promotionLink && promotionLink.value ? (\n <a href={promotionLink.value}>\n {thumbnail &&\n thumbnail.value &&\n thumbnail.value.src ? (\n <div className=\"include_logo_padding\">\n <Image\n media={{\n ...thumbnail.value,\n src: defaultImg\n }}\n data-src={thumbnail.value.src}\n className=\"categorywhatson-content-image lazyload\"\n />\n </div>\n ) : (\n <Fragment>\n {isRetailerContent &&\n isRetailerContent.value && (\n <div className=\"display_retailer_name\">\n <Text field={retailerName} />\n </div>\n )}\n <img\n alt=\"default\"\n src={defaultImg}\n className=\"categorywhatson-content-image\"\n />\n </Fragment>\n )}\n </a>\n ) : thumbnail &&\n thumbnail.value &&\n thumbnail.value.src ? (\n <Image\n media={{\n ...thumbnail.value,\n src: defaultImg\n }}\n data-src={thumbnail.value.src}\n className=\"categorywhatson-content-image lazyload\"\n />\n ) : (\n <img\n alt=\"default\"\n src={defaultImg}\n className=\"categorywhatson-content-image\"\n />\n )}\n <div className=\"categorywhatson-img-badge\">\n <Badge\n type=\"list\"\n startDate={startDate ? startDate.value : \"\"}\n endDate={endDate ? endDate.value : \"\"}\n badgeText={eventText ? eventText.value : \"\"}\n />\n </div>\n </div>\n\n {promotionType && promotionType.value && (\n <div className=\"categorywhatson-details-type\">\n <Text field={promotionType} />\n </div>\n )}\n <div className=\"categorywhatson-details-title\">\n {promotionLink && promotionLink.value ? (\n <a href={promotionLink.value}>\n <Text field={name} />\n </a>\n ) : (\n <Text field={name} />\n )}\n </div>\n </div>\n {location && location.value && showLocation && (\n <Details\n iconValue=\"location\"\n linkUrl={locationLink && locationLink.value}\n linkName={location}\n size=\"24\"\n mapInfo={\n storeFrontId && storeFrontId.value\n ? storeFrontId.value\n : \"\"\n }\n />\n )}\n {HidePublishDate && !HidePublishDate.value && scheduleTime && scheduleTime.value && (\n <Details\n iconValue=\"time\"\n linkName={scheduleTime}\n size=\"24\"\n />\n )}\n </RiseAndFade>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </div>\n </BaseComponent>\n );\n } else return null;\n};\n\nexport default FeaturePromotionsCategoryWhatsOn;\n","import React from \"react\";\nimport { Text, Image, Link } from \"@sitecore-jss/sitecore-jss-react\";\nimport ScrollAnimation from \"react-animate-on-scroll\";\nimport Badge from \"../../../Common/Badge\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport Details from \"../../../Common/Details\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\nimport RiseAndFade from \"../../../Common/Animations/RiseAndFade\";\n\nconst FeaturePromotionsSimilarPromotions = props => {\n const {\n Title: title = null,\n Subtext: subtext = null,\n EventList: eventList = null\n } = props.fields || {};\n\n let list;\n\n if (eventList && eventList.length && eventList.length > 2) {\n list = (\n <BaseComponent margin=\"standard\">\n <div className=\"similarpromotions-wrapper\">\n <div className=\"similarpromotions-banner\">\n <div className=\"container\">\n <div className=\"similarpromotions-header\">\n <ScrollAnimation\n animateIn=\"animate__animated animate__fadeIn\"\n animateOnce={true}\n >\n <div className=\"title\">\n <Link field={title} />\n <i className=\"icon icon-arrow-right\" />\n </div>\n <div className=\"subtitle\">\n <Text field={subtext} />\n </div>\n </ScrollAnimation>\n </div>\n </div>\n </div>\n <div className=\"similarpromotions-tile-wrapper\">\n <div className=\"container\">\n <div className=\"row no-gutters\">\n {eventList.map((listItem, index) => {\n const {\n PromotionLink: promotionLink = null,\n Thumbnail: thumbnail = null,\n StartDate: startDate = null,\n EndDate: endDate = null,\n EventText: eventText = null,\n PromotionType: promotionType = null,\n PromotionName: promotionName = null,\n Name: name = null,\n LocationLink: locationLink = null,\n PromotionLocation: location = null,\n ScheduleTime: scheduleTime = null,\n IsRetailerContent: isRetailerContent = null,\n IsLogoAsThumbnail: isLogoAsThumbnail = null,\n Retailer: retailerName = null,\n HidePublishDate: HidePublishDate = null,\n StorefrontId: storefrontId = null\n } = listItem.fields || {};\n \n let value = 0;\n if (index == 1) {\n value = 6;\n } else if (index == 2) {\n value = 8;\n }\n\n return (\n <div key={`myId-${index}`} className=\"col-10 col-md-4\">\n <RiseAndFade position={value}>\n <div className=\"animation-range\">\n <div\n className={`content-img-wrapper ${\n isLogoAsThumbnail && isLogoAsThumbnail.value\n ? \"display_retailer_logo\"\n : \"\"\n }`}\n >\n <a href={promotionLink.value}>\n {thumbnail &&\n thumbnail.value &&\n !thumbnail.value.src &&\n isRetailerContent &&\n isRetailerContent.value && (\n <div className=\"display_retailer_name\">\n <Text field={retailerName} />\n </div>\n )}\n <div className=\"include_logo_padding\">\n <Image\n media={{\n ...thumbnail.value,\n src: defaultImg\n }}\n data-src={thumbnail.value.src}\n className=\"content-img lazyload\"\n />\n </div>\n </a>\n <div className=\"img-badge\">\n <Badge\n type=\"list\"\n startDate={startDate ? startDate.value : null}\n endDate={endDate ? endDate.value : \"\"}\n badgeText={eventText ? eventText.value : \"\"}\n />\n </div>\n </div>\n <div className=\"details-type\">\n <Text field={promotionType} />\n </div>\n <div className=\"details-title\">\n <a href={promotionLink.value}>\n <Text\n field={promotionName ? promotionName : name}\n />\n </a>\n </div>\n </div>\n\n {location && location.value && (\n <Details\n iconValue=\"location\"\n linkUrl={locationLink && locationLink.value}\n mapInfo={storefrontId && storefrontId.value}\n linkName={location}\n size=\"24\"\n />\n )}\n {HidePublishDate && !HidePublishDate.value && scheduleTime && scheduleTime.value && (\n <Details\n iconValue=\"time\"\n linkName={scheduleTime}\n size=\"24\"\n />\n )}\n </RiseAndFade>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </div>\n </BaseComponent>\n );\n } else {\n list = \"\";\n }\n\n return list;\n};\nexport default FeaturePromotionsSimilarPromotions;\n","import React from \"react\";\nimport FeaturePromotionsSimilarPromotions from \"../SimilarPromotions\";\n\nconst FeaturePromotionsFeaturedPromotions = props => {\n const {\n Title: Title = null,\n ShortDescription: Subtext = null,\n PromotionList: EventList = null\n } = props.fields || {};\n return (\n <FeaturePromotionsSimilarPromotions\n fields={{ Title, Subtext, EventList }}\n />\n );\n};\n\nexport default FeaturePromotionsFeaturedPromotions;\n","import React from \"react\";\nimport { Image, Text, RichText } from \"@sitecore-jss/sitecore-jss-react\";\nimport Badge from \"../../../Common/Badge\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport Details from \"../../../Common/Details\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\n\nconst FeaturePromotionsHeroPromotion = props => {\n const { PromotionHero: PromotionHero = null, PageHero: PageHero = null } =\n props.fields || {};\n\n if (PromotionHero && PromotionHero.fields) {\n const {\n HeroImage: HeroImage = null,\n StartDate: StartDate = null,\n EndDate: EndDate = null,\n TargetUrl: TargetUrl = null,\n Location: Location = null,\n LocationLink: LocationLink = null,\n PromotionDate: PromotionDate = null,\n PromotionText: PromotionText = null\n } = PromotionHero.fields || {};\n if (HeroImage && HeroImage.value && HeroImage.value.src) {\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"genericcontent-heropromotion\">\n <div className=\"container\">\n <Image\n media={{ ...HeroImage.value, src: defaultImg }}\n data-src={HeroImage.value.src}\n className=\"lazyload category-header-hero-img\"\n />\n {StartDate && StartDate.value && (\n <div className=\"promotion-header-content\">\n <Badge\n type=\"hero\"\n startDate={StartDate.value}\n endDate={EndDate && EndDate.value ? EndDate.value : \"\"}\n />\n </div>\n )}\n <div className=\"promotion-info\">\n <div className=\"promotion-text\">\n {TargetUrl && TargetUrl.value ? (\n <a href={TargetUrl.value}>\n <Text field={PromotionText} />\n </a>\n ) : (\n <Text field={PromotionText} />\n )}\n </div>\n {Location && Location.value && (\n <Details\n iconValue=\"location\"\n linkUrl={\n LocationLink && LocationLink.value\n ? LocationLink.value\n : \"\"\n }\n linkName={Location}\n size=\"24\"\n />\n )}\n {PromotionDate && PromotionDate.value && (\n <Details\n iconValue=\"time\"\n linkName={PromotionDate}\n size=\"24\"\n />\n )}\n </div>\n </div>\n </div>\n </BaseComponent>\n );\n } else return null;\n } else if (PageHero && PageHero.fields) {\n const {\n HeroImage = null,\n HeroDescription = null,\n HeroSubcategoryDetails = null\n } = PageHero.fields || {};\n if (HeroImage && HeroImage.value && HeroImage.value.src) {\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"genericcontent-heropromotion\">\n <div className=\"container\">\n <Image\n media={{ ...HeroImage.value, src: defaultImg }}\n data-src={HeroImage.value.src}\n className=\"lazyload category-header-hero-img\"\n />\n <div className=\"promotion-info col-12 col-md-8\">\n <div className=\"generic-text\">\n <Text field={HeroDescription} />\n </div>\n </div>\n {HeroSubcategoryDetails && HeroSubcategoryDetails.value && (\n <div className=\"generic-details col-12 col-md-9\">\n <input\n type=\"checkbox\"\n className=\"read-more-state\"\n id=\"post-2\"\n />\n <div className=\"read-more-wrap\">\n <RichText field={HeroSubcategoryDetails} />\n </div>\n <label htmlFor=\"post-2\" className=\"read-more-trigger\"></label>\n </div>\n )}\n </div>\n </div>\n </BaseComponent>\n );\n }\n else if (HeroDescription && HeroDescription.value || HeroSubcategoryDetails && HeroSubcategoryDetails.value) {\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"genericcontent-heropromotion no-image\">\n <div className=\"container\">\n {HeroDescription &&\n HeroDescription.value &&\n <div className=\"promotion-info col-12 col-md-8\">\n <div className=\"generic-text\">\n <Text field={HeroDescription} />\n </div>\n </div>\n }\n\n {HeroSubcategoryDetails && HeroSubcategoryDetails.value && (\n <div className=\"generic-details col-12 col-md-9\">\n <input\n type=\"checkbox\"\n className=\"read-more-state\"\n id=\"post-2\"\n />\n <div className=\"read-more-wrap\">\n <RichText field={HeroSubcategoryDetails} />\n </div>\n <label htmlFor=\"post-2\" className=\"read-more-trigger\"></label>\n </div>\n )}\n </div>\n </div>\n </BaseComponent>\n );\n }\n else return null;\n } else return null;\n};\n\nexport default FeaturePromotionsHeroPromotion;\n","import React from \"react\";\nimport {\n Text,\n Image,\n Placeholder,\n Link,\n RichText\n} from \"@sitecore-jss/sitecore-jss-react\";\nimport Details from \"../../../Common/Details\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\n\nconst FeaturePromotionsPromotionDetails = props => {\n const {\n PromotionCategory = null,\n PromotionName = null,\n Summary = null,\n LocationLink = null,\n PromotionLocation = null,\n ScheduleTime = null,\n Description = null,\n RetailerLogo = null,\n Duration = null,\n Capacity = null,\n Price = null,\n BookNow = null,\n AddToCalendarCta = null,\n StorefrontLink = null,\n StorefrontId = null\n } = props.fields || {};\n\n return (\n <div className=\"promotiondetails-wrapper\">\n <div className=\"container\">\n <div className=\"row\">\n <div className=\"col-12 col-md-8\">\n <div className=\"promotions-content\">\n {PromotionCategory && PromotionCategory.value && (\n <div className=\"promotions-category\">\n <Text field={PromotionCategory} />\n </div>\n )}\n {PromotionName && PromotionName.value && (\n <h1 className=\"promotions-name\">\n <Text field={PromotionName} />\n </h1>\n )}\n {Summary && Summary.value && (\n <div className=\"promotions-summary\">\n <RichText field={Summary} />\n </div>\n )}\n\n {RetailerLogo && RetailerLogo.value && RetailerLogo.value.src && (\n <div className=\"event-logo-mobile\">\n <a href={StorefrontLink ? StorefrontLink.value : \"#\"}>\n <Image\n media={{ ...RetailerLogo.value, src: defaultImg }}\n data-src={RetailerLogo.value.src}\n className=\"lazyload\"\n />\n </a>\n </div>\n )}\n\n\n {(PromotionLocation.value || Duration.value || ScheduleTime.value || Capacity.value) && (\n \n <div className=\"details\">\n <div className=\"row\">\n {PromotionLocation && PromotionLocation.value && (\n <div className=\"col-12 col-md-6\">\n <Details\n iconValue=\"location\"\n linkUrl={LocationLink && LocationLink.value}\n linkName={PromotionLocation}\n size=\"24\"\n mapInfo={\n StorefrontId && StorefrontId.value\n ? StorefrontId.value\n : \"\"\n }\n />\n </div>\n )}\n {Duration && Duration.value ? (\n <div className=\"col-12 col-md-6\">\n <Details iconValue=\"time\" linkName={Duration} size=\"24\" />\n </div>\n ) : (\n <div className=\"d-none d-md-block col-md-6\" />\n )}\n {ScheduleTime && ScheduleTime.value && (\n <div className=\"col-12 col-md-6\">\n <Details\n iconValue=\"calendar\"\n linkName={ScheduleTime}\n size=\"24\"\n />\n </div>\n )}\n {Capacity && Capacity.value && (\n <div className=\"col-12 col-md-6\">\n <Details\n iconValue=\"seats\"\n linkName={Capacity}\n size=\"24\"\n />\n </div>\n )}\n </div>\n </div>\n )}\n {Description && Description.value && (Description.value != \"<span></span>\") && (\n <div className=\"promotions-description\">\n <RichText field={Description} />\n </div>\n )}\n\n {Price && Price.value && (\n <div className=\"price-wrapper\">\n <div className=\"label\">Price</div>\n <div className=\"val\">\n <Text field={{ value: `$${Price.value}` }} />\n </div>\n </div>\n )}\n\n {BookNow && BookNow.value && (\n <div className=\"button-links\">\n {BookNow && BookNow.value && BookNow.value.href && (\n <div>\n <Link field={BookNow} className=\"btn primary-btn\" />\n </div>\n )}\n\n {BookNow &&\n BookNow.value &&\n BookNow.value.href &&\n AddToCalendarCta &&\n AddToCalendarCta.value && (\n <div>\n <a\n href={AddToCalendarCta.value}\n className=\"btn secondary-btn\"\n >\n Add to Calendar\n </a>\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n\n <div className=\"col-12 col-md-4\">\n {RetailerLogo && RetailerLogo.value && RetailerLogo.value.src && (\n <div className=\"event-logo-wrapper\">\n <a href={StorefrontLink ? StorefrontLink.value : \"#\"}>\n <Image\n media={{ ...RetailerLogo.value, src: defaultImg }}\n data-src={RetailerLogo.value.src}\n className=\"event-logo lazyload\"\n />\n </a>\n </div>\n )}\n <div className=\"quicklinks-wrapper\">\n <Placeholder\n name=\"jss-quicklinks-right\"\n rendering={props.rendering}\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default FeaturePromotionsPromotionDetails;\n","import React from \"react\";\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\nconst FeaturePromotionsPromotionSchedules = props => {\n let {\n Title: Title = null,\n Schedules: Schedules = null,\n CalendarGoal: CalendarGoal = null,\n BookEventGoal: BookEventGoal = null\n } = props.fields;\n if (Title && Title.value && Schedules && Schedules.length) {\n return (\n <div className=\"promotions-schedules-wrapper container\">\n <div className=\"title d-none d-md-block\">\n <Text field={Title} />\n </div>\n {Schedules.map((scheduleItem, scheduleIndex) => {\n let {\n PromotionDate: PromotionDate = null,\n PromotionTime: PromotionTime = null,\n Price: Price = null,\n AddToCalendar: AddToCalendar = null,\n BookNow: BookNow = null,\n SoldOut: SoldOut = null\n } = scheduleItem.fields;\n let eventAvailable = false;\n if (SoldOut && SoldOut.value.toLowerCase() === \"false\") {\n eventAvailable = true;\n }\n const onClickCalendarButton = event => {\n event.preventDefault();\n let { href, target } = event.currentTarget;\n if (!target) target = \"_self\";\n let data = {\n GoalID: event.currentTarget.getAttribute(\"datagoalid\")\n };\n fetch(\"/api/sitecore/analytics/TriggerGoalAjax\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(data)\n });\n\n setTimeout(() => {\n window.open(href, target);\n }, 200);\n };\n return (\n <div\n key={`scheduleRowId-${scheduleIndex}`}\n className={`row no-gutters align-items-center ${\n eventAvailable ? \"eventAvailable\" : \"eventUnavailable\"\n }`}\n >\n <div className=\"col-12 col-md\">\n <div className=\"date\">\n <Text field={PromotionDate} />\n </div>\n </div>\n <div className=\"col-12 col-md\">\n <div className=\"time\">\n <Text field={PromotionTime} />\n </div>\n </div>\n <div className=\"col-12 col-md-1\">\n {Price && Price.value && (\n <div className=\"price\">\n $\n <Text field={Price} />\n </div>\n )}\n </div>\n <div className=\"col-12 col-md align-self-right desktop\">\n {eventAvailable &&\n AddToCalendar &&\n AddToCalendar.value &&\n CalendarGoal &&\n CalendarGoal.value(\n <a\n datagoalid={CalendarGoal.value}\n href={AddToCalendar.value}\n onClick={onClickCalendarButton}\n >\n <button className=\"btnAddToCalendar\">\n Add to Calendar\n </button>\n </a>\n )}\n </div>\n <div className=\"col-12 col-md align-self-center book-sold desktop\">\n {eventAvailable ? (\n BookNow &&\n BookNow.value &&\n BookNow.value.href &&\n BookNow.value.text &&\n BookEventGoal &&\n BookEventGoal.value(\n <a\n datagoalid={BookEventGoal.value}\n href={BookNow.value.href}\n onClick={onClickCalendarButton}\n >\n <button className=\"btnBookNow\">\n {BookNow.value.text}\n </button>\n </a>\n )\n ) : (\n <div className=\"soldOut\">Sold Out</div>\n )}\n </div>\n <div className=\"col-12 col-md align-self-center book-sold mobile\">\n {eventAvailable ? (\n BookNow &&\n BookNow.value &&\n BookNow.value.href &&\n BookNow.value.text &&\n BookEventGoal &&\n BookEventGoal.value(\n <a\n datagoalid={BookEventGoal.value}\n href={BookNow.value.href}\n onClick={onClickCalendarButton}\n >\n <button className=\"btnBookNow\">\n {BookNow.value.text}\n </button>\n </a>\n )\n ) : (\n <div className=\"soldOut\">Sold Out</div>\n )}\n </div>\n <div className=\"col-12 col-md align-self-right mobile\">\n {eventAvailable &&\n AddToCalendar &&\n AddToCalendar.value &&\n CalendarGoal &&\n CalendarGoal.value && (\n <a\n datagoalid={CalendarGoal.value}\n href={AddToCalendar.value}\n onClick={onClickCalendarButton}\n >\n <button className=\"btnAddToCalendar\">\n Add to Calendar\n </button>\n </a>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n } else return null;\n};\nexport default FeaturePromotionsPromotionSchedules;\n","import React from \"react\";\nimport { Text, RichText, Image } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport Details from \"../../../Common/Details\";\nimport ScrollAnimation from \"react-animate-on-scroll\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\nimport Highlight from \"../../../Common/Highlight\";\n\nconst FeaturePromotionsStorefrontWhatsOn = props => {\n const { TitleLink = null, Title = null, PromotionList = [] } =\n props.fields || {};\n let storeFrontWhatsOnLayout = \"\";\n\n if (PromotionList && PromotionList.length > 0) {\n storeFrontWhatsOnLayout = (\n <BaseComponent margin=\"custom\">\n <div className=\"container\">\n <div className=\"storefront-whatson__wrapper font-regular\">\n <ScrollAnimation\n animateIn=\"animate__animated animate__fadeIn\"\n animateOnce={true}\n >\n <div className=\"storefront-whatson__header\">\n {TitleLink && TitleLink.value ? (\n <a href={TitleLink.value} target=\"\">\n <Text field={Title} />\n </a>\n ) : (\n <Text field={Title} />\n )}\n </div>\n </ScrollAnimation>\n\n <div className=\"storefront-whatson__content\">\n {PromotionList.map((item, index) => {\n const {\n PromotionName = null,\n Summary = null,\n Duration = null,\n OfferHighlight = null,\n Thumbnail = null,\n PromotionLink = null,\n IsRetailerContent = null,\n IsLogoAsThumbnail = null,\n Retailer = null\n } = item.fields || {};\n\n let imageLayout = (\n <div\n className={\n IsLogoAsThumbnail && IsLogoAsThumbnail.value\n ? \"display_retailer_logo\"\n : \"\"\n }\n >\n {Thumbnail &&\n Thumbnail.value &&\n !Thumbnail.value.src &&\n IsRetailerContent &&\n IsRetailerContent.value && (\n <div className=\"display_retailer_name\">\n <Text field={Retailer} />\n </div>\n )}\n <div className=\"include_logo_padding\">\n <Image\n media={{ ...Thumbnail.value, src: defaultImg }}\n data-src={Thumbnail.value.src}\n className=\"lazyload\"\n />\n {OfferHighlight && OfferHighlight.value && (\n <Highlight text={OfferHighlight} />\n )}\n </div>\n </div>\n );\n\n return (\n <div\n className=\"storefront-whatson__item\"\n key={\"storefront-whatson-promo-list\" + index}\n >\n <div\n className={`storefront-whatson__animation ${\n PromotionLink && PromotionLink.value\n ? \"animation-range\"\n : \"\"\n }`}\n >\n <div className=\"storefront-whatson__image\">\n {PromotionLink && PromotionLink.value ? (\n <a href={PromotionLink.value} target=\"\">\n {imageLayout}\n </a>\n ) : (\n imageLayout\n )}\n </div>\n {PromotionName && PromotionName.value && (\n <div className=\"storefront-whatson__title\">\n {PromotionLink && PromotionLink.value ? (\n <a href={PromotionLink.value} target=\"\">\n <span>\n <Text field={PromotionName} />\n </span>\n <i className=\"icon icon-arrow-right\" />\n </a>\n ) : (\n <Text field={PromotionName} />\n )}\n </div>\n )}\n </div>\n\n <div className=\"storefront-whatson__details\">\n {Summary && Summary.value && (\n <div className=\"storefront-whatson__description\">\n <RichText field={Summary} />\n </div>\n )}\n {Duration && Duration.value && (\n <Details\n iconValue=\"time\"\n linkName={Duration}\n size=\"24\"\n />\n )}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </BaseComponent>\n );\n }\n return storeFrontWhatsOnLayout;\n};\n\nexport default FeaturePromotionsStorefrontWhatsOn;\n","import React from \"react\";\nimport { Text, Image, Link } from \"@sitecore-jss/sitecore-jss-react\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\n\nconst FeaturePromotionsWhatsOn = props => {\n const { Title: title = null, EventList: eventList = null } =\n props.fields || {};\n\n const getDate = function(date) {\n let d = new Date(date);\n return d.getDate();\n };\n\n const getMonth = function(date) {\n const month = [];\n month[0] = \"Jan\";\n month[1] = \"Feb\";\n month[2] = \"Mar\";\n month[3] = \"Apr\";\n month[4] = \"May\";\n month[5] = \"Jun\";\n month[6] = \"Jul\";\n month[7] = \"Aug\";\n month[8] = \"Sep\";\n month[9] = \"Oct\";\n month[10] = \"Nov\";\n month[11] = \"Dec\";\n\n let d = new Date(date);\n return month[d.getMonth()];\n };\n if (eventList && eventList.length) {\n return (\n <div className=\"container\">\n <div className=\"whatson-container\">\n <div className=\"whatson-header-banner\">\n <div className=\"whatson-header-title\">\n <Link field={title} />\n </div>\n {/* <div className=\"whatson-header-sub\">\n <Text field={subtext} />\n </div> */}\n </div>\n\n {eventList &&\n eventList.map((listItem, index) => {\n const {\n Thumbnail: thumbnail = null,\n StartDate: startDate = null,\n Name: name = null,\n Description: description = null,\n Location: location = null,\n ScheduleTime: scheduleTime = null\n } = listItem.fields || {};\n return (\n <div\n key={`myId-${index}`}\n className=\"whatson-content-container\"\n >\n <div className=\"row\">\n <div className=\"whatson-content\">\n <div className=\"col-auto\">\n <Image\n media={{ ...thumbnail.value, src: defaultImg }}\n data-src={thumbnail.value.src}\n className=\"whatson-content-image lazyload\"\n />\n <div className=\"whatson-content-date\">\n <span className=\"whatson-content-date-day\">\n {getDate(startDate.value)}\n </span>\n <br />\n <span className=\"whatson-content-date-month\">\n {getMonth(startDate.value)}\n </span>\n </div>\n </div>\n\n <div className=\"col\">\n <div className=\"whatson-content-info-container\">\n <div className=\"whatson-content-info-title\">\n <span>\n <Text field={name} />\n </span>\n </div>\n <div className=\"whatson-content-info-description\">\n <span>\n <Text field={description} />\n </span>\n </div>\n <div className=\"whatson-content-info-items\">\n <i className=\"icon icon-location\" />\n <u>\n <Text field={location} />\n </u>\n </div>\n <div className=\"whatson-content-info-items\">\n <i className=\"icon icon-time\" />\n <Text field={scheduleTime} />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n } else return null;\n};\nexport default FeaturePromotionsWhatsOn;\n","import React, { Component } from \"react\";\nimport { withSitecoreContext } from \"@sitecore-jss/sitecore-jss-react\";\nimport ContentTileList from \"../../../Common/ContentTileList\";\nimport axios from \"axios\";\nimport TagManager from \"react-gtm-module\";\nimport InfiniteScroll from \"react-infinite-scroll-component\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport LazyLoading from \"../../../Common/LazyLoading\";\nimport SitecoreContextFactory from \"../../../../lib/SitecoreContextFactory\";\nimport _ from \"lodash\";\nimport { valueHelper } from \"../../../../helper/Animations\";\n\nclass FeaturePromotionsWhatsOnList extends Component {\n constructor(props) {\n super(props);\n this.state = {\n listing: [],\n hasMoreItems: true,\n currentPage: 1,\n totalCount: 0,\n searchResultCountText: \"\",\n showClearButton: false,\n showLoader: true,\n isScrolling: false,\n selectedCategory: \"\"\n };\n this.searchTerm = React.createRef();\n }\n\n componentDidMount() {\n this.setState(\n { selectedCategory: this.getUrlParameter(\"filter_cat\") },\n () => this.getResultsList(1)\n );\n }\n\n componentDidUpdate(prevProps) {\n if (\n this.props.sitecoreContext &&\n this.props.sitecoreContext.whatsOnMainFilter\n ) {\n if (\n prevProps.sitecoreContext.whatsOnMainFilter !==\n this.props.sitecoreContext.whatsOnMainFilter\n ) {\n this.clearSearch();\n this.setState(\n {\n selectedCategory: this.props.sitecoreContext.whatsOnMainFilter\n },\n () => this.getResultsList(1)\n );\n }\n }\n }\n\n handleSearchFilter() {\n this.getResultsList(1);\n if (this.searchTerm.current && this.searchTerm.current.value !== \"\") {\n this.setState({ showClearButton: true });\n } else {\n this.setState({ showClearButton: false });\n }\n }\n\n handleClearButton = () => {\n this.searchTerm.current.value = \"\";\n this.setState({ showClearButton: false });\n this.getResultsList(1);\n };\n\n clearSearch() {\n this.searchTerm.current.value = \"\";\n this.setState({ showClearButton: false });\n }\n\n showResultsCount() {\n let returnStoreCount;\n if (this.state.searchResultCountText) {\n returnStoreCount = (\n <div className=\"col-auto whatsonsearch-resultscount\">\n {this.state.searchResultCountText}\n </div>\n );\n } else {\n returnStoreCount = \"\";\n }\n return returnStoreCount;\n }\n\n textFieldToLowercase(textField) {\n let value = this.capitalizeWord(textField.value.toLowerCase());\n return { value };\n }\n\n capitalizeWord(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n categoryMainHandler = category => {\n let selectedCategory = this.textFieldToLowercase(category).value;\n if (selectedCategory === \"Article\") {\n selectedCategory = \"News\";\n }\n this.updateMainFilter(selectedCategory);\n // this.setState({ selectedCategory }, () => this.getResultsList(1));\n };\n\n updateMainFilter(filterName) {\n const sitecoreContext = this.props.sitecoreContext;\n SitecoreContextFactory.setSitecoreContext({\n ...sitecoreContext,\n whatsOnMainFilter: filterName,\n refresh: true\n });\n }\n\n composeResultsList() {\n const { listing } = this.state;\n const { NoSearchResultText: noSearchResultText = null } =\n this.props.fields || {};\n let list;\n\n if (listing.length < 1) {\n if (noSearchResultText && noSearchResultText.value) {\n list = <div className=\"col no-results\">{noSearchResultText.value}</div>;\n } else {\n list = (\n <div className=\"col no-results\">No result. Please try again.</div>\n );\n }\n } else {\n list = listing.map((listItem, index) => {\n const {\n PromotionType,\n Name,\n Location,\n PromotionDateText,\n LocationLink,\n Thumbnail,\n PromotionLink,\n AddToCalendarCta,\n IsRetailerContent,\n IsLogoAsThumbnail,\n Retailer,\n HidePublishDate,\n RetailerId\n } = listItem;\n\n\n return (\n <ContentTileList\n index\n category={PromotionType}\n name={Name}\n nameLink={PromotionLink}\n location={Location}\n locationLink={LocationLink}\n retailerId={RetailerId}\n openTime={(HidePublishDate && !HidePublishDate.value) && PromotionDateText}\n thumbnail={Thumbnail}\n addToCalendarLink={AddToCalendarCta}\n categoryMainHandler={this.categoryMainHandler}\n position={valueHelper(index, 4, 3)}\n retailerName={Retailer}\n isRetailerContent={IsRetailerContent}\n isLogoAsThumbnail={IsLogoAsThumbnail}\n />\n );\n });\n }\n return list;\n }\n\n getResultsList(pageNumber, isInfiniteScroll) {\n let keywords = \"\";\n let url = \"\";\n let promotionType = \"\";\n let pageId = \"\";\n let dbName = \"\";\n const { selectedCategory } = this.state;\n\n if (selectedCategory) {\n if (selectedCategory !== \"all\") {\n promotionType = selectedCategory;\n }\n }\n if (\n this.searchTerm.current.value &&\n /\\S/.test(this.searchTerm.current.value)\n ) {\n keywords = this.searchTerm.current.value.replace(/\\s/g, \",\");\n TagManager.dataLayer({\n dataLayer: {\n event: \"performedWOLS\",\n searchTermWOL: this.searchTerm.current.value\n },\n dataLayerName: \"dataLayer\"\n });\n } else {\n keywords = \"\";\n }\n let contextInfo = window.document.getElementsByName(\"ContextItem\")[0];\n pageId = contextInfo.value;\n dbName = contextInfo.dataset.targetDb;\n\n url = `/api/sitecore/promotions/search?pageId=${pageId}&dbName=${dbName}&keyword=${keywords}&promotionType=${promotionType}&pageNumber=${pageNumber}&pageSize=12`;\n\n if (isInfiniteScroll) {\n this.setState({ isScrolling: true });\n } else {\n this.setState({ showLoader: true });\n }\n axios({\n url,\n method: \"GET\"\n })\n .then(responseRaw => {\n let response = responseRaw.data ? responseRaw.data : null;\n if (response && response.ResultList) {\n const lastPage = Math.ceil(response.TotalCount.value / 12);\n const list =\n pageNumber > 1\n ? this.state.listing.concat(response.ResultList)\n : response.ResultList;\n this.setState({\n ...this.state,\n listing: list,\n totalCount: response.TotalCount.value,\n searchResultCountText:\n response.SearchResultCountText &&\n response.SearchResultCountText.value\n ? response.SearchResultCountText.value\n : \"\",\n currentPage: response.Page.value,\n hasMoreItems: response.Page.value == lastPage ? false : true\n });\n }\n this.setState({\n showLoader: false,\n isScrolling: false\n });\n })\n .catch(error => {\n // just handle error\n });\n }\n\n getUrlParameter(querystringParam) {\n querystringParam = querystringParam\n .replace(/[\\[]/, \"\\\\[\")\n .replace(/[\\]]/, \"\\\\]\");\n var regex = new RegExp(\"[\\\\?&]\" + querystringParam + \"=([^&#]*)\");\n var results = regex.exec(window.location.search);\n return results === null\n ? \"\"\n : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\n }\n\n loadResultsList() {\n this.getResultsList(this.state.currentPage + 1, true);\n }\n\n render() {\n const { SearchHelpText: searchHelpText = null } = this.props.fields || {};\n const { showLoader, isScrolling } = this.state;\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"whatson-list-container\">\n <div className=\"container\">\n <div className=\"no-gutters whatsonsearch-row\">\n {/* ---------- SEARCH BAR ---------- */}\n <div className=\"whatsonsearch-searchbar\">\n <input\n className=\"form-control\"\n type=\"text\"\n placeholder={\n searchHelpText && searchHelpText.value\n ? searchHelpText.value\n : \"Search\"\n }\n ref={this.searchTerm}\n onChange={_.debounce(e => {\n this.handleSearchFilter(e);\n }, 1000)}\n />\n {this.state.showClearButton && (\n <button\n className=\"clear-icon\"\n type=\"button\"\n onClick={this.handleClearButton}\n >\n <i className=\"icon icon-close\" />\n </button>\n )}\n </div>\n {/* ---------- RESULTS COUNT ---------- */}\n {this.showResultsCount()}\n </div>\n {/* <hr /> */}\n <InfiniteScroll\n className=\"whatsonsearch-wrapper\"\n style={{ height: \"auto\", overflow: \"hidden\" }}\n dataLength={this.state.listing.length}\n next={this.loadResultsList.bind(this)}\n hasMore={this.state.hasMoreItems}\n // loader={<h4>Loading...</h4>}\n >\n {!showLoader && (\n <div className=\"content-tile-list-wrapper\">\n <div className=\"row\">{this.composeResultsList()}</div>\n </div>\n )}\n {(showLoader || isScrolling) && <LazyLoading />}\n </InfiniteScroll>\n </div>\n </div>\n </BaseComponent>\n );\n }\n}\nexport default withSitecoreContext()(FeaturePromotionsWhatsOnList);\n","import React from \"react\";\nimport FeaturedRecipeTiles from \"../../../Common/Tiles/FeaturedRecipe\";\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\nimport ScrollAnimation from \"react-animate-on-scroll\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\n\nconst FeatureRecipeFeaturedRecipe = props => {\n const { Title, TitleLink, Recipes } = props.fields;\n if (Title && Title.value && Recipes && Recipes.length) {\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"featured-recipe-wrapper\">\n <div className=\"container\">\n <div className=\"featured-recipe-header-wrapper col-12 col-md-11\">\n <ScrollAnimation\n animateIn=\"animate__animated animate__fadeIn\"\n animateOnce={true}\n >\n <div className=\"featured-recipe-header-text\">\n {TitleLink && TitleLink.value && TitleLink.value.href ? (\n <React.Fragment>\n <a {...TitleLink.value}>\n <Text field={Title} />\n </a>\n <i className=\"icon icon-chevron-right\" />\n </React.Fragment>\n ) : (\n <Text field={Title} />\n )}\n </div>\n </ScrollAnimation>\n </div>\n </div>\n <FeaturedRecipeTiles data={Recipes} />\n </div>\n </BaseComponent>\n );\n } else return null;\n};\n\nexport default FeatureRecipeFeaturedRecipe;\n","import React, { Component } from \"react\";\nimport { Text, Image, RichText } from '@sitecore-jss/sitecore-jss-react';\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\n\nclass FeatureRecipeRecipeDetails extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showIngredients: true,\n showMethods: false\n };\n }\n\n componentDidMount() {\n const {\n Ingredients,\n LinkedStoreList,\n Methods,\n } = this.props.fields || {};\n\n if ((Ingredients && Ingredients.length > 0) || (LinkedStoreList && LinkedStoreList.length > 0)) {\n this.setState({\n showIngredients: true,\n showMethods: false\n })\n } else {\n if (Methods && Methods.legnth > 0) {\n this.setState({\n showIngredients: false,\n showMethods: true\n })\n }\n }\n }\n\n handleClickIngredient = () => {\n this.setState({\n showIngredients: true,\n showMethods: false\n })\n }\n handleClickMethod = () => {\n this.setState({\n showIngredients: false,\n showMethods: true\n })\n }\n\n renderPrep = () => {\n const {\n PrepTime,\n CookTime,\n Serves,\n Difficulty,\n } = this.props.fields || {};\n let prepLayout;\n\n if ((PrepTime && PrepTime.value) || (CookTime && CookTime.value)\n || (Serves && Serves.value) || (Difficulty && Difficulty.value)) {\n prepLayout =\n <div className=\"recipe-details__prep\">\n {PrepTime &&\n PrepTime.value &&\n <div className=\"recipe-details__prep--item\">\n <div className=\"recipe-details__prep--item-header\">Prep time</div>\n <div className=\"recipe-details__prep--item-description\">\n <Text field={PrepTime} />\n </div>\n </div>\n }\n {CookTime &&\n CookTime.value &&\n <div className=\"recipe-details__prep--item\">\n <div className=\"recipe-details__prep--item-header\">Cook time</div>\n <div className=\"recipe-details__prep--item-description\">\n <Text field={CookTime} />\n </div>\n </div>\n }\n {Serves &&\n Serves.value &&\n <div className=\"recipe-details__prep--item\">\n <div className=\"recipe-details__prep--item-header\">Serves</div>\n <div className=\"recipe-details__prep--item-description\">\n <Text field={Serves} />\n </div>\n </div>\n }\n {Difficulty &&\n Difficulty.value &&\n <div className=\"recipe-details__prep--item\">\n <div className=\"recipe-details__prep--item-header\">Difficulty</div>\n <div className=\"recipe-details__prep--item-description\">\n <Text field={Difficulty} />\n </div>\n </div>\n }\n </div>\n }\n return prepLayout;\n }\n\n renderIngredients = (showIngredients) => {\n const {\n Ingredients,\n LinkedStoresHeader,\n LinkedStoreList,\n } = this.props.fields || {};\n\n let ingredientsLayout;\n if ((Ingredients && Ingredients.length > 0) || (LinkedStoreList && LinkedStoreList.length > 0)) {\n ingredientsLayout =\n <div className={`recipe-details__ingredient ${showIngredients ? \"is-active\" : \"\"}`}>\n <div className=\"recipe-details__ingredient--header\">Ingredients</div>\n {Ingredients &&\n Ingredients.length > 0 &&\n <div className=\"recipe-details__ingredient--item-wrapper\">\n {Ingredients.map((item, index) => {\n const {\n Header,\n Ingredients\n } = item.fields;\n return (\n <div key={Header.value + index}\n className=\"recipe-details__ingredient--item\">\n <div className=\"recipe-details__ingredient--item-title\">\n <Text field={Header} />\n </div>\n <div className=\"recipe-details__ingredient--item-description\">\n <RichText field={Ingredients} />\n </div>\n </div>\n )\n })\n }\n </div>\n }\n {LinkedStoreList &&\n LinkedStoreList.length > 0 &&\n <div className=\"recipe-details__stores\">\n {LinkedStoresHeader &&\n LinkedStoresHeader.value &&\n <div className=\"recipe-details__stores--title\">\n <Text field={LinkedStoresHeader} />\n </div>\n }\n <div className=\"recipe-details__stores--wrapper\">\n {LinkedStoreList.map((item, index) => {\n const {\n Name,\n Logo,\n StoreLink\n } = item.fields;\n\n let logoLayout;\n logoLayout =\n <div className=\"recipe-details__stores--item\">\n <div className=\"recipe-details__stores--item-image\">\n <Image\n media={{\n ...Logo.value,\n src: defaultImg\n }}\n data-src={Logo.value.src}\n className=\"lazyload\"\n />\n </div>\n <div className=\"recipe-details__stores--item-name\">\n <Text field={Name} />\n </div>\n </div>\n\n return (\n <div key={Name.value + index}\n className=\"recipe-details__stores--content\">\n <div className=\"animation-range\">\n {StoreLink && StoreLink.value ?\n <a href={StoreLink.value}>\n {logoLayout}\n </a>\n :\n logoLayout\n }\n </div>\n </div>\n )\n })\n }\n </div>\n </div>\n }\n </div>\n }\n return ingredientsLayout\n }\n\n renderMethod = (showMethods) => {\n const {\n Methods,\n } = this.props.fields || {};\n let methodLayout;\n if (Methods && Methods.length > 0) {\n methodLayout =\n <div className={`recipe-details__method ${showMethods ? \"is-active\" : \"\"}`}>\n <div className=\"recipe-details__method--header\">Method</div>\n <div className=\"recipe-details__method--item-wrapper\">\n {Methods.map((item, index) => {\n const {\n StepNumber,\n StepDescription,\n Image: image = null,\n } = item.fields;\n return (\n <div key={StepNumber.value + index}\n className=\"recipe-details__method--item\">\n <div className=\"recipe-details__method--number\">\n <Text field={StepNumber} />\n </div>\n <div className=\"recipe-details__method--description\">\n <RichText field={StepDescription} />\n </div>\n {image &&\n image.value &&\n image.value.src &&\n <div className=\"recipe-details__method--image-wrapper\">\n <div className=\"recipe-details__method--image\">\n <Image\n media={{\n ...image.value,\n src: defaultImg\n }}\n data-src={image.value.src}\n className=\"recipe-details__method--image-img lazyload\"\n />\n </div>\n </div>\n }\n </div>\n )\n })\n }\n </div>\n </div>\n }\n return methodLayout;\n }\n\n renderButtons = (showIngredients, showMethods) => {\n const {\n Ingredients,\n LinkedStoreList,\n Methods,\n } = this.props.fields || {};\n\n let btnLayout;\n if ((Ingredients && Ingredients.length > 0) || (LinkedStoreList && LinkedStoreList.length > 0)\n || (Methods && Methods.legnth > 0)) {\n btnLayout =\n <div className=\"recipe-details__button\">\n <button onClick={this.handleClickIngredient}\n className={`recipe-details__button--btn ${showIngredients ? \"is-active\" : \"\"}`}>\n Ingredients\n </button>\n <button onClick={this.handleClickMethod}\n className={`recipe-details__button--btn ${showMethods ? \"is-active\" : \"\"}`}>\n Method\n </button>\n </div>\n }\n return btnLayout;\n }\n render() {\n const {\n RecipeTitle,\n RecipeDescription,\n Notes\n } = this.props.fields || {};\n\n const {\n showIngredients,\n showMethods\n } = this.state;\n return (\n <div className=\"recipe-details font-regular\">\n <BaseComponent margin=\"standard\">\n <div className=\"container\">\n {RecipeTitle &&\n RecipeTitle.value &&\n <h1 className=\"recipe-details__title\">\n <Text field={RecipeTitle} />\n </h1>\n }\n {this.renderPrep()}\n {RecipeDescription &&\n RecipeDescription.value &&\n <div className=\"recipe-details__description\">\n <RichText field={RecipeDescription} />\n </div>\n }\n {this.renderButtons(showIngredients, showMethods)}\n {this.renderIngredients(showIngredients)}\n {this.renderMethod(showMethods)}\n {Notes &&\n Notes.value &&\n <div className=\"recipe-details__notes\">\n <div className=\"recipe-details__notes--header\">Notes</div>\n <div className=\"recipe-details__notes--description\">\n <RichText field={Notes} />\n </div>\n </div>\n }\n </div>\n </BaseComponent>\n </div>\n )\n }\n};\n\nexport default FeatureRecipeRecipeDetails;\n","import React, { Component } from \"react\";\nimport { Text, Image } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport ContentTileList from \"../../../Common/ContentTileList\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\nimport axios from \"axios\";\nimport InfiniteScroll from \"react-infinite-scroll-component\";\nimport LazyLoading from \"../../../Common/LazyLoading\";\nimport { valueHelper } from \"../../../../helper/Animations\";\nimport Subnav from \"../../../Common/Subnav\";\n\nclass FeatureRecipeRecipeListingFilter extends Component {\n constructor(props) {\n super(props);\n this.state = {\n recipeListData: {\n pageId: \"\",\n dbName: \"\",\n pageSize: 1,\n filter_tag: [],\n filter_occasion: \"\"\n },\n recipeListing: [],\n currentPage: 1,\n totalCount: 0,\n showLoader: true,\n isScrolling: false,\n hasMoreItems: true\n };\n }\n\n componentDidMount() {\n let contextInfo = window.document.getElementsByName(\"ContextItem\")[0];\n let pageId = contextInfo.value;\n let dbName = contextInfo.dataset.targetDb;\n let tagCategory = \"\";\n let occassionCategory = \"\";\n let tagCategoryQSName = \"filter_tag\";\n let occassionCategoryQSName = \"filter_occasion\";\n tagCategory = this.getUrlParameter(tagCategoryQSName);\n occassionCategory = this.getUrlParameter(occassionCategoryQSName);\n let tagCategoryList = [];\n if (tagCategory !== \"\") {\n tagCategoryList = tagCategory.split(\",\");\n }\n this.setState(\n {\n ...this.state,\n recipeListData: {\n pageId: pageId,\n dbName: dbName,\n pageSize: 12,\n filter_tag: tagCategoryList,\n filter_occasion: occassionCategory\n }\n },\n () => this.getRecipeList(1)\n );\n }\n\n getUrlParameter(querystringParam) {\n querystringParam = querystringParam\n .replace(/[\\[]/, \"\\\\[\")\n .replace(/[\\]]/, \"\\\\]\");\n var regex = new RegExp(\"[\\\\?&]\" + querystringParam + \"=([^&#]*)\");\n var results =\n window && window.location && window.location.search\n ? regex.exec(window.location.search)\n : null;\n return results === null\n ? \"\"\n : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\n }\n\n getRecipeList = async (pageNumber, isInfiniteScroll) => {\n const {\n pageId,\n dbName,\n pageSize,\n filter_tag,\n filter_occasion\n } = this.state.recipeListData;\n\n const data = {\n pageId,\n dbName,\n pageNumber,\n pageSize,\n filter_tag: filter_tag.toString(),\n filter_occasion\n };\n\n if (isInfiniteScroll) {\n this.setState({ isScrolling: true });\n } else {\n this.setState({ showLoader: true });\n }\n\n const url = \"/api/sitecore/recipe/GetRecipes\";\n axios({\n url,\n method: \"GET\",\n params: data\n })\n .then(responseRaw => {\n let response = responseRaw.data ? responseRaw.data : null;\n if (response && response.Recipes) {\n const lastPage = Math.ceil(response.TotalCount.value / 12);\n const list =\n pageNumber > 1\n ? this.state.recipeListing.concat(response.Recipes)\n : response.Recipes;\n const totalCount =\n response.TotalCount && response.TotalCount.value\n ? response.TotalCount.value\n : 0;\n const page =\n response.Page && response.Page.value ? response.Page.value : 1;\n\n this.setState({\n ...this.state,\n recipeListing: list,\n totalCount: totalCount,\n currentPage: page,\n hasMoreItems: page == lastPage ? false : true\n });\n }\n this.setState({\n showLoader: false,\n isScrolling: false\n });\n })\n .catch(error => {\n // just handle error\n console.log(error);\n this.setState({\n showLoader: false,\n isScrolling: false\n });\n });\n };\n\n handleClickMeal = value => {\n const { filter_occasion } = this.state.recipeListData;\n\n if (filter_occasion == value) {\n return;\n }\n\n this.setState(\n {\n recipeListData: {\n ...this.state.recipeListData,\n filter_occasion: value\n },\n currentPage: 1\n },\n () => this.getRecipeList(1)\n );\n };\n\n handleClickTaste = event => {\n const element = event.target;\n const elementId = element.id;\n let tagList = this.state.recipeListData.filter_tag;\n if (/is-active/.test(element.classList.value)) {\n tagList = tagList.filter(function (arrValue) {\n return elementId.indexOf(arrValue) < 0;\n });\n } else {\n tagList.push(elementId);\n }\n this.setState(\n {\n recipeListData: {\n ...this.state.recipeListData,\n filter_tag: tagList\n },\n currentPage: 1\n },\n () => this.getRecipeList(1)\n );\n element.classList.toggle(\"is-active\");\n };\n\n loadRecipeList() {\n this.getRecipeList(this.state.currentPage + 1, true);\n }\n\n renderMeals(Occasions) {\n const { filter_occasion } = this.state.recipeListData;\n return (\n <Subnav\n tabs={Occasions}\n hasAllTab\n allTabQuery=\"\"\n defaultName=\"Name\"\n defaultFilter=\"Id\"\n selected={filter_occasion}\n updateFilter={filter => this.handleClickMeal(filter)}\n />\n );\n }\n\n renderTaste(Tags) {\n const { filter_tag } = this.state.recipeListData;\n return (\n <div className=\"recipe-listing__taste\">\n <div className=\"recipe-listing__taste--label\">Filter by:</div>\n <ul className=\"recipe-listing__taste--filter\">\n {Tags.map((item, index) => {\n const { Name = null, Id = null } = item.fields;\n let isActive = \"\";\n if (filter_tag.length > 0) {\n filter_tag.forEach(function (item, index) {\n if (item == Id.value) {\n isActive = \"is-active\";\n }\n });\n }\n return (\n <li\n key={`taste-${Id.value}-${index}`}\n className={`recipe-listing__taste--filter-list ${isActive}`}\n id={Id && Id.value ? Id.value : \"\"}\n onClick={this.handleClickTaste}\n >\n <Text field={Name} />\n </li>\n );\n })}\n </ul>\n </div>\n );\n }\n\n renderRecipes(recipeListing) {\n const { NoResultsText } = this.props.fields || {};\n let recipeLayout;\n if (recipeListing && recipeListing.length > 0) {\n recipeLayout = (\n <div className=\"content-tile-list-wrapper\">\n <div className=\"row\">\n {recipeListing.map((item, index) => {\n const {\n RecipeTitle = null,\n Thumbnail = null,\n CookTime = null,\n Serves = null,\n Difficulty = null,\n RecipeLink = null\n } = item;\n\n return (\n <ContentTileList\n index\n name={RecipeTitle}\n nameLink={RecipeLink}\n thumbnail={Thumbnail}\n cookTime={CookTime}\n serves={Serves}\n difficulty={Difficulty}\n position={valueHelper(index, 4, 3)}\n />\n );\n })}\n </div>\n </div>\n );\n } else {\n recipeLayout = (\n <div className=\"recipe-listing__content--noresult\">\n {NoResultsText && NoResultsText.value ? (\n <Text field={NoResultsText} />\n ) : (\n \"No result. Please try again.\"\n )}\n </div>\n );\n }\n return recipeLayout;\n }\n\n render() {\n const { Occasions = [], Tags = [] } = this.props.fields || {};\n\n const { showLoader, isScrolling, recipeListing } = this.state;\n\n return (\n <div className=\"recipe-listing font-regular\">\n <BaseComponent margin=\"standard\">\n {Occasions && Occasions.length > 0 && this.renderMeals(Occasions)}\n\n <div className=\"container\">\n {Tags && Tags.length > 0 && this.renderTaste(Tags)}\n <InfiniteScroll\n style={{ height: \"auto\", overflow: \"auto\" }}\n dataLength={recipeListing.length}\n next={this.loadRecipeList.bind(this)}\n hasMore={this.state.hasMoreItems}\n >\n <div className=\"recipe-listing__content--wrapper\">\n {!showLoader && this.renderRecipes(recipeListing)}\n {(showLoader || isScrolling) && <LazyLoading />}\n </div>\n </InfiniteScroll>\n </div>\n </BaseComponent>\n </div>\n );\n }\n}\n\nexport default FeatureRecipeRecipeListingFilter;\n","import React from 'react';\nimport { Text } from '@sitecore-jss/sitecore-jss-react';\nimport Details from \"../../../Common/Details\";\n\nconst FeatureRecipeRecipeQuickLinksMenu = (props) => {\n const {\n Occassion = [],\n Tags = []\n } = props.fields || {};\n return (\n <div className=\"recipe-quicklinks-menu font-regular\">\n {((Occassion && Occassion.length > 0) ||\n (Tags || Tags.length > 0)) &&\n <div className=\"recipe-quicklinks-menu__wrapper\">\n {\n Occassion &&\n Occassion.length > 0 &&\n <div className=\"recipe-quicklinks-menu__occassion\">\n <div className=\"recipe-quicklinks-menu__occassion--title\">Occasion</div>\n <div className=\"recipe-quicklinks-menu__occassion--list\">\n {\n Occassion.map((item, index) => {\n const {\n Name = null,\n IconClass = null,\n Link = null\n } = item.fields || {}\n return (\n <Details\n key={Name.value + index}\n iconValue={IconClass && IconClass.value ? IconClass.value : \"cupcake\"}\n linkUrl={Link && Link.value\n ? Link.value\n : \"\"}\n linkName={Name}\n size=\"24\"\n noLocation={true}\n />\n )\n })\n }\n </div>\n </div>\n }\n {\n Tags &&\n Tags.length > 0 &&\n <div className=\"recipe-quicklinks-menu__tags\">\n <div className=\"recipe-quicklinks-menu__tags--title\">Tags</div>\n <div className=\"recipe-quicklinks-menu__tagsn--list\">\n {\n Tags.map((item, index) => {\n const {\n Name = null,\n Link = null\n } = item.fields || {}\n\n return (\n <div key={Name.value + index}\n className=\"recipe-quicklinks-menu__tags--item\">\n {Link &&\n Link.value ?\n <a href={Link && Link.value ? Link.value : \"\"}>\n <Text field={Name} />\n </a>\n : <Text field={Name} />\n }\n </div>\n )\n })\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n )\n};\n\nexport default FeatureRecipeRecipeQuickLinksMenu;\n\n","import React from \"react\";\r\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\r\n\r\nconst CategoryResults = ({ title, data }) => {\r\n return (\r\n <div className=\"search-list\">\r\n <div className=\"title\">\r\n <Text field={title} />\r\n </div>\r\n <div className=\"content-list\">\r\n <ul>\r\n {data.map((item, index) => {\r\n try {\r\n const {\r\n CategoryName: CategoryName = null,\r\n PageTitle: PageTitle = null,\r\n Link: Link = null\r\n } = item || {};\r\n return (\r\n <li key={`myId-${index}`}>\r\n <a href={Link.value}>\r\n <Text\r\n field={CategoryName === null ? PageTitle : CategoryName}\r\n />\r\n </a>\r\n </li>\r\n );\r\n } catch (error) {\r\n //Catch error\r\n }\r\n })}\r\n </ul>\r\n </div>\r\n </div>\r\n );\r\n};\r\nexport default CategoryResults;\r\n","import React, { Component, Fragment } from \"react\";\r\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\r\nimport SearchSkeleton from \"../../../Common/Animations/SearchSkeleton\";\r\nimport AutosuggestHighlightMatch from \"autosuggest-highlight/match\";\r\nimport AutosuggestHighlightParse from \"autosuggest-highlight/parse\";\r\nimport defaultImage from \"../../../../assets/img/placeholders/gray.png\";\r\nimport TagManager from \"react-gtm-module\";\r\nimport _ from \"lodash\";\r\nimport axios from \"axios\";\r\n\r\nimport {\r\n disableBodyScroll,\r\n enableBodyScroll\r\n} from \"../../../../helper/ScrollHelper\";\r\n\r\nclass SearchBar extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n centreId:\r\n props.fields && props.fields.CentreId && props.fields.CentreId.value\r\n ? props.fields.CentreId.value.replace(/{|},|}/g, \"\")\r\n : null,\r\n searchTerm: null,\r\n searchResults: null,\r\n noResults: false,\r\n noResultsMessage: \"\",\r\n recentSearches: null,\r\n showLoader: false,\r\n topSearches: null\r\n };\r\n this.getSearchResults = _.debounce(this.getSearchResults, 1000);\r\n }\r\n\r\n componentDidMount() {\r\n if (window && window.outerWidth >= 992) {\r\n window.addEventListener(\"resize\", this.handleBlur);\r\n }\r\n this.getRecentSearch(this.state.centreId);\r\n this.getTopSearches();\r\n }\r\n\r\n getTopSearches = () => {\r\n let topSearches = [];\r\n if (\r\n this.props.fields &&\r\n this.props.fields.TopSearches &&\r\n this.props.fields.TopSearches.length\r\n ) {\r\n this.props.fields.TopSearches.map(el =>\r\n el.fields && el.fields.SearchTerm && el.fields.SearchTerm.value\r\n ? topSearches.push(el.fields.SearchTerm.value)\r\n : null\r\n );\r\n }\r\n this.setState({ topSearches });\r\n };\r\n\r\n handleScroll = () => {\r\n if (window && window.outerWidth < 992) {\r\n if (this.state.searchTerm) {\r\n disableBodyScroll();\r\n } else {\r\n enableBodyScroll();\r\n }\r\n }\r\n };\r\n\r\n handleBlur = () => {\r\n this.resetState();\r\n document.querySelector(\".nav-item .icon-close\") &&\r\n document.querySelector(\".nav-item .icon-close\").click();\r\n };\r\n\r\n resetState = () => {\r\n this.setState({\r\n searchTerm: \"\",\r\n searchResults: null,\r\n noResults: false,\r\n noResultsMessage: \"\",\r\n showLoader: false\r\n });\r\n };\r\n\r\n renderInfo = (title, section, icon, icon2) => {\r\n if (section && section.length) {\r\n const { centreId } = this.state;\r\n return (\r\n <div className=\"search-info-wrapper\">\r\n <div className=\"section-container\">\r\n <div className=\"section-title\">{title}</div>\r\n {section.map((term, index) => {\r\n while (index < 3) {\r\n return (\r\n <div\r\n key={`recent-search-term-${index}`}\r\n className=\"section-content\"\r\n onClick={e => {\r\n if (!/clear/.test(e.target.id)) {\r\n this.handleSearch(term);\r\n this.handleFocus();\r\n }\r\n }}\r\n >\r\n <i className={`icon icon-${icon}`} />\r\n <div className=\"term\">{term}</div>\r\n {icon2 && (\r\n <i\r\n id={`${title}-clear-${term}`}\r\n className={`icon icon-${icon2}`}\r\n onClick={() =>\r\n this.setRecentSearch(\r\n \"remove\",\r\n centreId.split(\"-\").pop(),\r\n index\r\n )\r\n }\r\n />\r\n )}\r\n </div>\r\n );\r\n }\r\n })}\r\n </div>\r\n </div>\r\n );\r\n } else return null;\r\n };\r\n\r\n renderResults = (results, show) => {\r\n return (\r\n <div className={`search-results-wrapper ${show ? \"show-results\" : \"\"}`}>\r\n {results && results.length ? (\r\n results.map((item, index) => {\r\n const {\r\n Name: name,\r\n Link: link,\r\n Type: type,\r\n Thumbnail: thumbnail,\r\n IsRetailerContent = null,\r\n IsLogoAsThumbnail = null,\r\n Retailer\r\n } = item;\r\n return (\r\n <a\r\n href={(link && link.value) || null}\r\n key={`search-result-${index}`}\r\n >\r\n <div className=\"search-result-row\">\r\n <div\r\n className={`thumbnail ${\r\n IsLogoAsThumbnail && IsLogoAsThumbnail.value\r\n ? \"display_retailer_logo\"\r\n : \"\"\r\n }`}\r\n >\r\n <div className=\"include_logo_padding\">\r\n {thumbnail && thumbnail.value ? (\r\n <img src={thumbnail.value} />\r\n ) : (\r\n <Fragment>\r\n {/* {IsRetailerContent && IsRetailerContent.value && (\r\n <div className=\"display_retailer_name\">\r\n <Text field={Retailer} />\r\n </div>\r\n )} */}\r\n <img src={defaultImage} />\r\n </Fragment>\r\n )}\r\n </div>\r\n </div>\r\n <div className=\"search-result-col\">\r\n <div className=\"name\">\r\n {this.renderSuggestion(name, this.state.searchTerm)}\r\n </div>\r\n <div className=\"type\">\r\n <Text field={type} />\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n );\r\n })\r\n ) : (\r\n <div className=\"no-results\">{this.state.noResultsMessage}</div>\r\n )}\r\n </div>\r\n );\r\n };\r\n\r\n renderContent = () => {\r\n const {\r\n recentSearches,\r\n topSearches,\r\n searchTerm,\r\n searchResults,\r\n noResults,\r\n showLoader\r\n } = this.state;\r\n\r\n if (searchTerm) {\r\n return (\r\n <React.Fragment>\r\n {this.renderResults(\r\n searchResults,\r\n (searchResults && searchResults.length) || noResults\r\n )}\r\n {showLoader && (\r\n <div className={`search-skeleton-wrapper`}>\r\n <SearchSkeleton />\r\n <SearchSkeleton />\r\n <SearchSkeleton opacity=\"0.8\" />\r\n <SearchSkeleton opacity=\"0.6\" />\r\n <SearchSkeleton opacity=\"0.4\" />\r\n <SearchSkeleton opacity=\"0.2\" />\r\n </div>\r\n )}\r\n </React.Fragment>\r\n );\r\n } else {\r\n return (\r\n <React.Fragment>\r\n {this.renderInfo(\"Recent searches\", recentSearches, \"time\", \"close\")}\r\n {this.renderInfo(\"Top searches\", topSearches, \"outlined-search\")}\r\n </React.Fragment>\r\n );\r\n }\r\n };\r\n\r\n handleSearch = async keyword => {\r\n const term =\r\n keyword && /\\S/.test(keyword) ? keyword.replace(/&/g, \"%26\") : null;\r\n const { centreId } = this.state;\r\n\r\n this.setState(\r\n {\r\n searchTerm: keyword,\r\n noResults: false,\r\n searchResults: null,\r\n showLoader: true\r\n },\r\n () => this.handleScroll()\r\n );\r\n\r\n if (term && centreId) {\r\n this.getSearchResults(term, centreId);\r\n }\r\n };\r\n\r\n /**\r\n * changes '%26' characters to /&/\r\n * @param {string} term \r\n * @returns \r\n */\r\n cleanRecentSearchTerm = (term) => {\r\n return term.replace(\"%26\", \"&\")\r\n };\r\n\r\n getSearchResults = async (term, centreId) => {\r\n \r\n if (term.length > 2) {\r\n this.setRecentSearch(\"add\", centreId, this.cleanRecentSearchTerm(term));\r\n }\r\n TagManager.dataLayer({\r\n dataLayer: {\r\n event: \"performedSearch\",\r\n searchTerm: term\r\n },\r\n dataLayerName: \"dataLayer\"\r\n });\r\n const url = `/api/sitecore/search/searchBar?keyword=${term}¢reId=${centreId}`;\r\n try {\r\n let response = await axios({\r\n method: \"GET\",\r\n url\r\n });\r\n if (response && response.data) {\r\n if (response.data.SearchResults && response.data.SearchResults.length) {\r\n this.setState({\r\n searchResults: response.data.SearchResults,\r\n noResults: false,\r\n noResultsMessage: \"\",\r\n showLoader: false\r\n });\r\n } else {\r\n this.setState({\r\n searchResults: [],\r\n noResults: true,\r\n noResultsMessage: \"No results. Please try another keyword.\",\r\n showLoader: false\r\n });\r\n }\r\n } else {\r\n this.setState({\r\n searchResults: [],\r\n noResults: true,\r\n noResultsMessage: \"Something went wrong. Please try again.\",\r\n showLoader: false\r\n });\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n this.setState({\r\n searchResults: [],\r\n noResults: true,\r\n noResultsMessage: \"Something went wrong. Please try again.\",\r\n showLoader: false\r\n });\r\n }\r\n };\r\n\r\n getRecentSearch = centreId => {\r\n const terms = localStorage.getItem(\r\n `RecentSearchFor${centreId.split(\"-\").pop()}`\r\n );\r\n let recentSearches = [];\r\n if (terms) {\r\n if (terms.indexOf(\",\") !== -1) {\r\n terms.split(\",\").map(item => {\r\n recentSearches.push(item);\r\n });\r\n } else {\r\n recentSearches.push(terms);\r\n }\r\n }\r\n this.setState({ recentSearches });\r\n };\r\n\r\n setRecentSearch = (func, centreId, item) => {\r\n const { recentSearches } = this.state;\r\n let items = recentSearches;\r\n\r\n if (func === \"add\") {\r\n const termExists = items.findIndex(el => el === item);\r\n if (termExists > -1) {\r\n items.splice(termExists, 1);\r\n }\r\n if (items.length === 3) {\r\n items.pop();\r\n }\r\n items.unshift(item);\r\n } else {\r\n items.splice(item, 1);\r\n }\r\n this.setState({ recentSearches: items });\r\n localStorage.setItem(`RecentSearchFor${centreId.split(\"-\").pop()}`, items);\r\n };\r\n\r\n handleKeyDown = e => {\r\n const code = e.charCode || e.keyCode;\r\n if (code === 27) {\r\n this.setState({ searchTerm: \"\" }, () => this.handleScroll());\r\n }\r\n };\r\n\r\n handleFocus = () => {\r\n if (document) {\r\n document.querySelector(\"#consumer-search-bar\").focus();\r\n }\r\n };\r\n\r\n renderSuggestion = (suggestion, query) => {\r\n const name = suggestion.value;\r\n const matches = AutosuggestHighlightMatch(name, query);\r\n const parts = AutosuggestHighlightParse(name, matches);\r\n return parts.map((part, index) => {\r\n const className = part.highlight ? \"highlight\" : null;\r\n return (\r\n <span className={`name ${className}`} key={index}>\r\n {part.text}\r\n </span>\r\n );\r\n });\r\n };\r\n\r\n render() {\r\n const { searchTerm, searchResults, noResults } = this.state;\r\n return (\r\n <div className=\"search-bar-container\" id=\"search-bar\">\r\n <div className=\"searchbar\">\r\n {searchTerm ? (\r\n (searchResults && searchResults.length) || noResults ? (\r\n <i className=\"icon icon-outlined-search\" />\r\n ) : (\r\n <div className=\"mini-loader\" />\r\n )\r\n ) : (\r\n <i className=\"icon icon-outlined-search\" />\r\n )}\r\n <input\r\n autoFocus={true}\r\n id=\"consumer-search-bar\"\r\n type=\"text\"\r\n placeholder=\"Search for anything\"\r\n onKeyDown={e => this.handleKeyDown(e)}\r\n value={searchTerm}\r\n onChange={e => this.handleSearch(e.target.value)}\r\n />\r\n <div className=\"search-cancel\" onClick={() => this.handleBlur()}>\r\n Cancel\r\n </div>\r\n </div>\r\n {this.renderContent()}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default SearchBar;\r\n","import React from \"react\";\r\nimport { Text, Link, Image } from \"@sitecore-jss/sitecore-jss-react\";\r\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\r\n\r\nconst StoreResults = ({ title, data }) => {\r\n return (\r\n <div className=\"search-storedirectory\">\r\n <div className=\"title\">\r\n <Link field={title} />\r\n <i className=\"icon icon-arrow-right\" />\r\n </div>\r\n <div className=\"content-list\">\r\n <ul className=\"list\">\r\n {data.map((item, index) => {\r\n const {\r\n RetailerLink: RetailerLink = null,\r\n Logo: Logo = null,\r\n RetailerName: RetailerName = null\r\n } = item || {};\r\n return (\r\n <li key={`myId-${index}`}>\r\n <div className=\"row align-items-center no-gutters\">\r\n <div className=\"col-auto defaultImg\">\r\n <a href={RetailerLink.value}>\r\n {Logo && Logo.value ? (\r\n <Image\r\n media={{ ...Logo.value, src: Logo.value.src }}\r\n data-src={Logo.value.src}\r\n className=\"lazyload\"\r\n />\r\n ) : (\r\n <img src={defaultImg} />\r\n )}\r\n </a>\r\n </div>\r\n <div className=\"col\">\r\n <a href={RetailerLink.value}>\r\n <Text field={RetailerName} />\r\n </a>\r\n </div>\r\n </div>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default StoreResults;\r\n","import React, { Fragment } from \"react\";\r\nimport { Text, Link, Image, RichText } from \"@sitecore-jss/sitecore-jss-react\";\r\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\r\n\r\nconst WhatsOnResults = ({ title, data }) => {\r\n return (\r\n <div className=\"search-whatson\">\r\n <div className=\"title\">\r\n <Link field={title} />\r\n <i className=\"icon icon-arrow-right\" />\r\n </div>\r\n <div className=\"row\">\r\n {/* ------------------- WHATS ON ------------------- */}\r\n <div className=\"col col-auto\">\r\n {data.map((item, index) => {\r\n const {\r\n PromotionLink: PromotionLink = null,\r\n Thumbnail: Thumbnail = null,\r\n PromotionType: PromotionType = null,\r\n PromotionDetails: PromotionDetails = null,\r\n IsRetailerContent = null,\r\n IsLogoAsThumbnail = null,\r\n Retailer\r\n } = item || {};\r\n return (\r\n <div\r\n key={`promID-${index}`}\r\n className=\"row no-gutters whatson-item\"\r\n >\r\n <div\r\n className={`col col-auto whatson-img ${\r\n IsLogoAsThumbnail && IsLogoAsThumbnail.value\r\n ? \"display_retailer_logo\"\r\n : \"\"\r\n }`}\r\n >\r\n <a href={PromotionLink.value}>\r\n {Thumbnail && Thumbnail.value && Thumbnail.value.src ? (\r\n <div className=\"include_logo_padding\">\r\n <Image\r\n media={{\r\n ...Thumbnail.value,\r\n src: Thumbnail.value.src\r\n }}\r\n data-src={Thumbnail.value.src}\r\n className=\"whatson-image lazyload\"\r\n />\r\n </div>\r\n ) : (\r\n <Fragment>\r\n {IsRetailerContent && IsRetailerContent.value && (\r\n <div className=\"display_retailer_name\">\r\n <Text field={Retailer} />\r\n </div>\r\n )}\r\n <img src={defaultImg} className=\"whatson-image\" />\r\n </Fragment>\r\n )}\r\n </a>\r\n </div>\r\n <div className=\"col whatson-details\">\r\n <div className=\"type\">\r\n <Text field={PromotionType} />\r\n </div>\r\n <div className=\"whatson-description\">\r\n <a href={PromotionLink.value}>\r\n <RichText field={PromotionDetails} />\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default WhatsOnResults;\r\n","import React, { Component } from \"react\";\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\nimport CategoryResults from \"../CategoryResults\";\nimport StoreResults from \"../StoreResults\";\nimport WhatsOnResults from \"../WhatsOnResults\";\nimport TagManager from \"react-gtm-module\";\nimport axios from \"axios\";\nimport _ from \"lodash\";\nimport LazyLoading from \"../../../Common/LazyLoading\";\n\nclass SiteSearch extends Component {\n constructor(props) {\n super(props);\n this.state = {\n storeDirectoryLabel: \"\",\n categoriesLabel: \"\",\n whatsOnLabel: \"\",\n pagesLabel: \"\",\n noSearchResult: \"\",\n SearchHelpText: props.fields.SearchHelpText || {},\n SearchAdditionalText: props.fields.SearchAdditionalText || {},\n CentreId: props.fields.CentreId || {},\n storeItems: [],\n categoryItems: [],\n whatsOnItems: [],\n pageItems: [],\n showLoader: false\n };\n this.searchTerm = React.createRef();\n this.handleSearch = _.debounce(this.handleSearch, 1000);\n }\n\n handleSearch = () => {\n let url = \"\";\n let base = \"\";\n let keyword = \"\";\n let centreId = \"\";\n\n if (this.state.CentreId && this.state.CentreId.value) {\n centreId = this.state.CentreId.value.replace(/{|},|}/g, \"\");\n\n //populate keyword\n if (\n this.searchTerm.current.value &&\n /\\S/.test(this.searchTerm.current.value)\n ) {\n // base = this.searchTerm.current.value.replace(/\\s/g, \",\");\n base = this.searchTerm.current.value;\n keyword = base.replace(/&/g, \"%26\");\n TagManager.dataLayer({\n dataLayer: {\n event: \"performedSearch\",\n searchTerm: this.searchTerm.current.value\n },\n dataLayerName: \"dataLayer\"\n });\n } else {\n this.setState({\n noSearchResult: \"\",\n storeItems: [],\n categoryItems: [],\n whatsOnItems: [],\n pageItems: []\n });\n return null;\n }\n this.setState({\n showLoader: true\n });\n url = `/api/sitecore/search/search?keyword=${keyword}¢reId=${centreId}`;\n\n axios({\n url,\n method: \"GET\"\n })\n .then(responseRaw => {\n let response = responseRaw.data ? responseRaw.data : null;\n if (response) {\n if (this.searchTerm.current.value.length === 0) {\n this.setState({\n storeItems: [],\n categoryItems: [],\n whatsOnItems: [],\n pageItems: []\n });\n } else {\n if (response.RetailerList) {\n this.setState({\n storeItems: response.RetailerList,\n storeDirectoryLabel: response.StoreDirectoryLabel\n });\n }\n if (response.Categories) {\n this.setState({\n categoryItems: response.Categories,\n categoriesLabel: response.CategoriesLabel\n });\n }\n if (response.WhatsOn) {\n this.setState({\n whatsOnItems: response.WhatsOn,\n whatsOnLabel: response.WhatsOnLabel\n });\n }\n if (response.Pages) {\n this.setState({\n pageItems: response.Pages,\n pagesLabel: response.PagesLabel\n });\n }\n if (\n response.RetailerList.length === 0 &&\n response.Categories.length === 0 &&\n response.WhatsOn.length === 0 &&\n response.Pages.length === 0\n ) {\n this.setState({ noSearchResult: response.NoSearchResult });\n } else {\n this.setState({ noSearchResult: \"\" });\n }\n }\n }\n this.setState({\n showLoader: false\n });\n })\n\n .catch(error => {\n // just handle error\n });\n } else return null;\n };\n\n showRetailerList = () => {\n var {\n storeItems: storeItems = null,\n storeDirectoryLabel: storeDirectoryLabel = null\n } = this.state || {};\n if (storeItems.length > 0) {\n return (\n <div className=\"col col-12 col-sm-6\">\n <StoreResults title={storeDirectoryLabel} data={storeItems} />\n </div>\n );\n } else {\n return null;\n }\n };\n\n showCatgeoryList = () => {\n var {\n categoryItems: categoryItems = null,\n whatsOnItems: whatsOnItems = null,\n pageItems: pageItems = null,\n categoriesLabel: categoriesLabel = null\n } = this.state || {};\n if (categoryItems.length > 0) {\n if (whatsOnItems.length > 0 || pageItems.length > 0) {\n return (\n <React.Fragment>\n <CategoryResults title={categoriesLabel} data={categoryItems} />\n <hr />\n </React.Fragment>\n );\n } else {\n return <CategoryResults title={categoriesLabel} data={categoryItems} />;\n }\n } else {\n return null;\n }\n };\n\n showPromotionList = () => {\n var {\n whatsOnLabel: whatsOnLabel = null,\n whatsOnItems: whatsOnItems = null,\n pageItems: pageItems = null\n } = this.state || {};\n if (whatsOnItems.length > 0) {\n if (pageItems.length > 0) {\n return (\n <React.Fragment>\n <WhatsOnResults title={whatsOnLabel} data={whatsOnItems} />\n <hr />\n </React.Fragment>\n );\n } else {\n return <WhatsOnResults title={whatsOnLabel} data={whatsOnItems} />;\n }\n } else {\n return null;\n }\n };\n\n showPageList = () => {\n var { pageItems: pageItems = null, pagesLabel: pagesLabel = null } =\n this.state || {};\n if (pageItems.length > 0) {\n return <CategoryResults title={pagesLabel} data={pageItems} />;\n } else {\n return null;\n }\n };\n\n showNoResults = () => {\n if (this.state.noSearchResult)\n return (\n <div className=\"no-results\">\n <Text field={this.state.noSearchResult} />\n </div>\n );\n };\n\n render() {\n const { showLoader, SearchAdditionalText } = this.state;\n return (\n <div className=\"search-wrapper container\">\n <div className=\"row no-gutters\">\n <div className=\"col search-searchbar align-items-center\">\n <i className=\"icon icon-outlined-search\" />\n <input\n className=\"form-control rounded-0\"\n autoFocus={true}\n type=\"text\"\n ref={this.searchTerm}\n placeholder={this.state.SearchHelpText.value}\n onChange={this.handleSearch}\n />\n </div>\n </div>\n {SearchAdditionalText && SearchAdditionalText.value ? (\n <div className=\"additional-hint\">\n <Text field={SearchAdditionalText} />\n </div>\n ) : null}\n {!showLoader && (\n <div className=\"results-wrapper\">\n {this.showNoResults()}\n <div className=\"row\">\n {this.showRetailerList()}\n <div className=\"col\">\n {this.showCatgeoryList()}\n {this.showPromotionList()}\n {this.showPageList()}\n </div>\n </div>\n </div>\n )}\n {showLoader && <LazyLoading />}\n </div>\n );\n }\n}\n\nexport default SiteSearch;\n","import React, { Component } from \"react\";\nimport SiteSearch from \"../SiteSearch\";\nimport SearchBar from \"../SearchBar\";\n\nclass FeatureSearchSearchModal extends Component {\n render() {\n if (this.props.isSimple) {\n return <SearchBar fields={this.props.fields} />;\n } else {\n return <SiteSearch fields={this.props.fields} />;\n }\n }\n}\n\nexport default FeatureSearchSearchModal;\n","import React from \"react\";\nimport { Text, Image } from \"@sitecore-jss/sitecore-jss-react\";\nimport { get } from \"lodash\";\nimport ScrollAnimation from \"react-animate-on-scroll\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\nimport RiseAndFade from \"../../../Common/Animations/RiseAndFade\";\nimport { valueHelper } from \"../../../../helper/Animations\";\n\nclass FeatureSocialInstagramGallery extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isHomepage: false\n };\n }\n\n componentDidMount() {\n if (window && window.location && window.location.pathname) {\n if (window.location.pathname === \"/\") {\n this.setState({ isHomepage: true });\n }\n }\n }\n render() {\n const {\n InstagramGalleryLink,\n InstagramGalleryLinkText,\n InstagramGalleryTitle,\n InstagramFeed\n } = this.props.fields;\n\n const { isHomepage } = this.state;\n\n let list;\n if (InstagramFeed.length >= 8) {\n list = InstagramFeed.slice(0, 8);\n } else if (InstagramFeed.length >= 4) {\n list = InstagramFeed.slice(0, 4);\n } else {\n return null;\n }\n\n return (\n <BaseComponent margin=\"standard\">\n <div\n className={`socialinstagram-container ${\n isHomepage ? \"instagram-homepage\" : \"instagram-storefront\"\n }`}\n >\n <div className=\"socialinstagram-banner\" />\n <div className=\"container\">\n <div className=\"socialinstagram-content-wrapper\">\n <div className=\"socialinstagram-header-wrapper\">\n <ScrollAnimation\n animateIn=\"animate__animated animate__fadeIn\"\n animateOnce={true}\n >\n <div className=\"socialinstagram-header-title\">\n <Text field={InstagramGalleryLinkText} />\n </div>\n\n <div className=\"socialinstagram-header-description\">\n <a\n href={get(InstagramGalleryLink, \"value\", \"#\")}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <span>\n <Text field={InstagramGalleryTitle} />\n </span>\n <i className=\"icon icon-external-link\" />\n </a>\n </div>\n </ScrollAnimation>\n </div>\n\n <div className=\"socialinstagram-tile-wrapper\">\n <div className=\"row\">\n {list &&\n list.map((item, index) => {\n const {\n ImageUrl,\n ImageCaption,\n InstagramLink,\n InstagramLinkText\n } = item.fields || {};\n return (\n <div\n className=\"socialinstagram-tile-container\"\n key={`tileID-${index}`}\n >\n <RiseAndFade position={valueHelper(index, 4)}>\n <div\n key={`myId-${index}`}\n className=\"socialinstagram-tile\"\n >\n {get(ImageUrl, \"value\", false) ? (\n <Image\n media={{ src: defaultImg }}\n data-src={ImageUrl.value}\n className=\"lazyload\"\n />\n ) : (\n <div className=\"no-logo\">\n <Text field={ImageCaption} />\n </div>\n )}\n <div className=\"socialinstagram-tile-details\">\n <div className=\"details-wrapper\">\n <div className=\"caption\">\n <Text\n field={{\n value: `${ImageCaption.value.substr(\n 0,\n 90\n )}...`\n }}\n />\n </div>\n <div className=\"link\">\n <a\n href={get(InstagramLink, \"value\", \"#\")}\n target=\"_black\"\n rel=\"noreferrer\"\n >\n <Text field={InstagramLinkText} />\n </a>\n <i className=\"icon icon-external\" />\n </div>\n </div>\n </div>\n </div>\n </RiseAndFade>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </div>\n </div>\n </BaseComponent>\n );\n }\n}\n\nexport default FeatureSocialInstagramGallery;\n","import React from \"react\";\nimport { Text, Link, Image } from \"@sitecore-jss/sitecore-jss-react\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\n\nconst FeatureStoreDirectoryDirectoryHeader = props => {\n const {\n Title = null,\n CentreMapURL = null,\n HeroImage = null\n } = props.fields || {};\n\n return (\n <div className=\"container\">\n <div className=\"directoryheader-wrapper\">\n <div className=\"row\">\n <div className=\"col-sm-6 directoryheader-storedirectorytext\">\n <span>\n <Text field={Title} />\n </span>\n </div>\n <div className=\"col-md-6 mt-auto text-md-right directoryheader-centremaptext\">\n <span>\n <i className=\"icon icon-centre-map\" />\n <Link className=\"mx-2 mx-md-3\" field={CentreMapURL} />\n <i className=\"icon icon-arrow-right directoryheader-arrow\" />\n </span>\n </div>\n </div>\n </div>\n <div className=\"justify-content-center\">\n <Image\n media={{ ...HeroImage.value, src: defaultImg }}\n data-src={HeroImage.value.src}\n className=\"directoryheader-image lazyload\"\n />\n </div>\n </div>\n )\n};\n\nexport default FeatureStoreDirectoryDirectoryHeader;\n","import React, { Component } from \"react\";\nimport { Text, Image } from \"@sitecore-jss/sitecore-jss-react\";\nimport Details from \"../../../Common/Details\";\nimport RiseAndFade from \"../../../Common/Animations/RiseAndFade\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\n\nclass FeatureStoreDirectoryDirectoryList extends Component {\n handleClickBrauzBtn = id => {\n window.Brauz_open_book_a_stylist_dialog_with_selected_store(id);\n };\n\n render() {\n let {\n RetailerPageHref = null,\n HeroImage = null,\n Logo = null,\n RetailerName = null,\n StoreLocationLink = null,\n StoreLocation = null,\n OpeningTime = null,\n Rating = null,\n PriceLevel = null,\n ItemId = null,\n AcceptsOnlineBooking = null,\n BookingLabel = null,\n BookingUrl = null,\n HasBooking = null\n } = this.props.info || {};\n\n const value = this.props.value;\n const noDefaultValue = this.props.noDefaultImage;\n\n let retailerLink;\n let defaultImage;\n let defaultLogo;\n let ratingSection;\n if (RetailerPageHref && RetailerPageHref.value) {\n retailerLink = RetailerPageHref.value;\n } else retailerLink = \"/\";\n defaultImage = () => {\n if (HeroImage && HeroImage.value && HeroImage.value.src) {\n return (\n <div>\n {noDefaultValue ? (\n <Image media={{ ...HeroImage.value }} className=\"tile-image\" />\n ) : (\n <Image\n media={{ ...HeroImage.value, src: defaultImg }}\n data-src={HeroImage.value.src}\n className=\"tile-image lazyload\"\n />\n )}\n </div>\n );\n } else {\n return <div className=\"no-image\" />;\n }\n };\n\n defaultLogo = () => {\n if (Logo && Logo.value && Logo.value.src) {\n return (\n <div className=\"tile-logo-wrapper\">\n {noDefaultValue ? (\n <Image media={{ ...Logo.value }} className=\"tile-logo\" />\n ) : (\n <Image\n media={{ ...Logo.value, src: defaultImg }}\n data-src={Logo.value.src}\n className=\"tile-logo lazyload\"\n />\n )}\n </div>\n );\n } else {\n return (\n <div className=\"no-logo\">\n <Text field={RetailerName} />\n </div>\n );\n }\n };\n\n ratingSection = () => {\n let rating = [];\n let priceLevel = [];\n let ratingContainer = [];\n\n if (Rating && Rating.value) {\n const ratingValue = parseInt(Rating.value);\n\n for (let i = 1; i <= 5; i++) {\n if (i <= ratingValue) {\n rating.push(<div className=\"icon icon-star checked\" key={i} />);\n } else {\n rating.push(<div className=\"icon icon-star\" key={i} />);\n }\n }\n }\n\n if (PriceLevel && PriceLevel.value) {\n const priceLevelValue = parseInt(PriceLevel.value);\n if (priceLevelValue <= 1) {\n priceLevel.push(\n <i className=\"icon icon-dollar\" key={`priceLevelId1`} />\n );\n } else if (priceLevelValue === 2 || priceLevelValue === 3) {\n for (let i = 0; i < 2; i++) {\n priceLevel.push(\n <i className=\"icon icon-dollar\" key={`priceLevelId` + i} />\n );\n }\n } else if (priceLevelValue >= 4) {\n for (let i = 0; i < 3; i++) {\n priceLevel.push(\n <i className=\"icon icon-dollar\" key={`priceLevelId` + i} />\n );\n }\n }\n } else {\n priceLevel = \"\";\n }\n\n ratingContainer =\n rating.length || priceLevel ? (\n <div className=\"directorylist-storerating\">\n <div className=\"star\">{rating}</div>\n <div className=\"dollar\">\n <div className=\"pricelevel\">\n <span>{priceLevel}</span>\n </div>\n </div>\n </div>\n ) : (\n \"\"\n );\n\n return ratingContainer;\n };\n\n return (\n <div className=\"directorylist-card\">\n <RiseAndFade position={value}>\n <div className=\"animation-range\">\n <div className=\"directorylist-tile\">\n <a href={retailerLink}>\n {defaultImage()}\n {defaultLogo()}\n </a>\n </div>\n <div className=\"directorylist-storename\">\n <a href={retailerLink}>\n <Text field={RetailerName} />\n </a>\n </div>\n </div>\n <div className=\"directorylist-details\">\n {ratingSection()}\n {StoreLocation && StoreLocation.value && (\n <Details\n iconValue=\"location\"\n linkUrl={StoreLocationLink && StoreLocationLink.value}\n linkName={StoreLocation}\n size=\"24\"\n mapInfo={ItemId && ItemId.value ? ItemId.value : \"\"}\n />\n )}\n {OpeningTime && OpeningTime.value && (\n <Details iconValue=\"time\" linkName={OpeningTime} size=\"24\" />\n )}\n {AcceptsOnlineBooking && AcceptsOnlineBooking.value && (\n <div className=\"details-wrapper\">\n <i\n className=\"icon icon-calendar-2 mr-2\"\n style={{ fontSize: \"24px\" }}\n />\n <div className=\"text-block\">\n {HasBooking && HasBooking.value ? (\n <button\n onClick={() => this.handleClickBrauzBtn(ItemId.value)}\n >\n <Text field={BookingLabel} />\n </button>\n ) : BookingUrl && BookingUrl.value ? (\n <a href={BookingUrl.value} target=\"_blank\">\n <Text field={BookingLabel} />\n </a>\n ) : (\n <Text field={BookingLabel} />\n )}\n </div>\n </div>\n )}\n </div>\n </RiseAndFade>\n </div>\n );\n }\n}\n\nexport default FeatureStoreDirectoryDirectoryList;\n","import React, { Component, Fragment } from \"react\";\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\nimport axios from \"axios\";\nimport TagManager from \"react-gtm-module\";\nimport InfiniteScroll from \"react-infinite-scroll-component\";\nimport { find, debounce } from \"lodash\";\nimport LazyLoading from \"../../../Common/LazyLoading\";\nimport { valueHelper } from \"../../../../helper/Animations\";\nimport ContentTileList from \"../../../Common/ContentTileList\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\n\nclass FeatureStoreDirectoryDirectorySearch extends Component {\n constructor(props) {\n super(props);\n this.state = {\n listing: [],\n categoriesList: props.fields.Categories,\n hasMoreItems: true,\n currentPage: 1,\n totalCount: 0,\n showClearButton: false,\n filterCat: \"\",\n category: \"\",\n level: \"\",\n showLoader: true,\n isScrolling: false,\n isSearchFilter: false,\n isAfterPay: false,\n isGiftCard: false,\n isOnlineBooking: false,\n isOrderAndCollect: false,\n giftcardText: \"\",\n noStores: true,\n hideFirstRow: false //hide input and dropdown fields, store count\n };\n this.searchTerm = React.createRef();\n this.selectedCategory = React.createRef();\n }\n\n componentDidMount() {\n console.log(\"props search\");\n const {\n DisplayOnlineBookingFilter = null,\n BrauzFormId = null,\n Subcategory = null,\n HasSelectedStores = null\n } = this.props.fields || {};\n if (\n window.location.pathname &&\n window.location.pathname.toLowerCase().indexOf(\"/directory\") === -1\n ) {\n this.setState({ hideFirstRow: true });\n }\n if (\n window.location.pathname &&\n window.location.pathname.toLowerCase().indexOf(\"/directory\") === -1 &&\n (!HasSelectedStores || (HasSelectedStores && !HasSelectedStores.value)) &&\n (!Subcategory || (Subcategory && !Subcategory.value))\n ) {\n } else {\n let category = \"\";\n let categoryQSName = \"filter_cat\";\n category =\n (Subcategory && Subcategory.value) ||\n this.getUrlParameter(categoryQSName);\n let _this = this;\n if (category !== \"\") {\n this.selectedCategory.current.value = category;\n this.setState(\n {\n filterCat: category,\n category: category,\n isAfterPay: this.getUrlParameter(\"afterpay\"),\n isGiftCard: this.getUrlParameter(\"giftcards\"),\n isOnlineBooking: this.getUrlParameter(\"online_bookings\"),\n isOrderAndCollect: this.getUrlParameter(\"orderandcollect\")\n },\n () => {\n _this.getRetailerList(1, true);\n }\n );\n } else {\n this.selectedCategory.current.value = category;\n this.setState(\n {\n filterCat: category,\n category: category,\n isAfterPay: this.getUrlParameter(\"afterpay\"),\n isGiftCard: this.getUrlParameter(\"giftcards\"),\n isOnlineBooking: this.getUrlParameter(\"online_bookings\"),\n isOrderAndCollect: this.getUrlParameter(\"orderandcollect\"),\n level: 1\n },\n () => {\n _this.getRetailerList(1, true);\n }\n );\n }\n\n if (document) {\n setTimeout(() => {\n const metaCentre = document.querySelector('meta[name=\"centrename\"]');\n if (metaCentre && metaCentre.getAttribute(\"content\")) {\n this.setState({ giftcardText: metaCentre.getAttribute(\"content\") });\n }\n }, 1000);\n }\n\n if (\n DisplayOnlineBookingFilter &&\n DisplayOnlineBookingFilter.value &&\n BrauzFormId &&\n BrauzFormId.value\n ) {\n const brauzPackageURL =\n \"https://d3aq2u4yw77ivo.cloudfront.net/retailer-appointment/public/1.0/bookAStylist.prod.js\";\n this.loadScript(brauzPackageURL, () => {\n window.Brauz.initializeBrauzBookAStylist(BrauzFormId.value);\n });\n }\n }\n }\n\n loadScript(url = \"\", callback = () => {}) {\n if (url) {\n const script = document.createElement(\"script\");\n script.setAttribute(\"type\", \"text/javascript\");\n script.setAttribute(\"src\", url);\n document.body.appendChild(script);\n script.onload = callback;\n }\n }\n\n getRetailerList = async (pageNumber, isInfiniteScroll) => {\n let category = this.state.category;\n let isAfterPay = this.state.isAfterPay;\n let isGiftCard = this.state.isGiftCard;\n let isOnlineBooking = this.state.isOnlineBooking;\n let isOrderAndCollect = this.state.isOrderAndCollect;\n let keywords = \"\";\n let url = \"\";\n let pageId = \"\";\n let dbName = \"\";\n let data = \"\";\n\n // populate keywords\n if (\n this.searchTerm &&\n this.searchTerm.current &&\n this.searchTerm.current.value &&\n /\\S/.test(this.searchTerm.current.value)\n ) {\n keywords = this.searchTerm.current.value.replace(/\\s/g, \",\");\n TagManager.dataLayer({\n dataLayer: {\n event: \"performedSDS\",\n searchTermSD: this.searchTerm.current.value\n },\n dataLayerName: \"dataLayer\"\n });\n } else {\n keywords = \"\";\n }\n isAfterPay = isAfterPay ? true : false;\n isGiftCard = isGiftCard ? true : false;\n isOnlineBooking = isOnlineBooking ? true : false;\n isOrderAndCollect = isOrderAndCollect ? true : false;\n\n let contextInfo = window.document.getElementsByName(\"ContextItem\")[0];\n pageId = contextInfo.value;\n dbName = contextInfo.dataset.targetDb;\n url = `/api/sitecore/storedirectory/search`;\n data = {\n pageId: pageId,\n dbName: dbName,\n keyword: keywords,\n category: category,\n afterpay: isAfterPay,\n giftcard: isGiftCard,\n acceptbooking: isOnlineBooking,\n orderandcollect: isOrderAndCollect,\n pageNumber: pageNumber,\n pageSize: 12\n };\n\n if (isInfiniteScroll) {\n this.setState({\n isScrolling: true,\n isSearchFilter: false\n });\n } else {\n this.setState({\n showLoader: true,\n isSearchFilter: true\n });\n }\n\n await axios({\n url,\n method: \"GET\",\n params: data\n })\n .then(responseRaw => {\n let response = responseRaw.data ? responseRaw.data : null;\n if (response && response.ResultList) {\n const lastPage = Math.ceil(response.TotalCount.value / 12);\n const list =\n pageNumber > 1\n ? this.state.listing.concat(response.ResultList)\n : response.ResultList;\n this.setState({\n ...this.state,\n listing: list,\n totalCount: response.TotalCount.value,\n currentPage: response.Page.value,\n hasMoreItems: response.Page.value == lastPage ? false : true\n });\n if (list && list.length) {\n this.setState({ noStores: false });\n }\n }\n this.setState({\n showLoader: false,\n isScrolling: false\n });\n })\n .catch(error => {\n // just handle error\n console.log(error);\n });\n };\n\n loadRetailerList() {\n this.getRetailerList(this.state.currentPage + 1, true);\n }\n\n getUrlParameter(querystringParam) {\n querystringParam = querystringParam\n .replace(/[\\[]/, \"\\\\[\")\n .replace(/[\\]]/, \"\\\\]\");\n var regex = new RegExp(\"[\\\\?&]\" + querystringParam + \"=([^&#]*)\");\n var results =\n window && window.location && window.location.search\n ? regex.exec(window.location.search)\n : null;\n return results === null\n ? \"\"\n : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\n }\n\n // Event handlers\n handleSearchFilter = event => {\n this.getRetailerList(1);\n if (this.searchTerm.current && this.searchTerm.current.value !== \"\") {\n this.setState({ ...this.state, showClearButton: true });\n } else {\n this.setState({ ...this.state, showClearButton: false });\n }\n };\n\n handleClearButton = () => {\n this.searchTerm.current.value = \"\";\n this.setState({ ...this.state, showClearButton: false });\n this.getRetailerList(1);\n };\n\n handleSearchButton = () => {\n this.getRetailerList(1);\n };\n\n handleAcceptAfterPay = () => {\n this.setState({ isAfterPay: !this.state.isAfterPay }, () =>\n this.getRetailerList(1)\n );\n };\n\n handleAcceptGiftCard = () => {\n this.setState({ isGiftCard: !this.state.isGiftCard }, () =>\n this.getRetailerList(1)\n );\n };\n\n handleAcceptOnlineBookings = () => {\n this.setState({ isOnlineBooking: !this.state.isOnlineBooking }, () =>\n this.getRetailerList(1)\n );\n };\n\n handleAcceptOrderAndCollect = () => {\n this.setState({ isOrderAndCollect: !this.state.isOrderAndCollect }, () =>\n this.getRetailerList(1)\n );\n };\n\n handleCategoryFilter = e => {\n let categoryType = e.target.value === \"0\" ? \"all\" : \"category\";\n const selectedIndex = e.target.options.selectedIndex;\n TagManager.dataLayer({\n dataLayer: {\n event: \"performedSDCF\",\n categoryFilterSD: e.target.options[selectedIndex].getAttribute(\n \"data-key\"\n )\n },\n dataLayerName: \"dataLayer\"\n });\n if (categoryType === \"category\") {\n window.location.replace(`/Directory?filter_cat=${e.target.value}`);\n } else {\n window.location.replace(`/Directory`);\n }\n };\n\n showRetailerList = () => {\n const { NoResultsText: noResultsText = null } = this.props.fields || {};\n\n let returnRetailer;\n if (this.state.listing === false) {\n if (\n noResultsText.value &&\n noResultsText.value !== null &&\n noResultsText.value !== \"\"\n ) {\n returnRetailer = (\n <div className=\"col no-results\">{noResultsText.value}</div>\n );\n } else {\n returnRetailer = (\n <div className=\"col no-results\">No result. Please try again.</div>\n );\n }\n } else if (this.state.listing.length > 0) {\n returnRetailer = this.state.listing.map((listItem, index) => {\n const {\n RetailerName = null,\n RetailerPageHref = null,\n HeroImage = null,\n Logo = null,\n StoreLocation = null,\n StoreLocationLink = null,\n OpeningTime = null,\n Rating = null,\n PriceLevel = null,\n ItemId = null,\n AcceptsOnlineBooking = null,\n BookingIcon = null,\n BookingLabel = null,\n BookingUrl = null,\n HasBooking = null\n } = listItem;\n\n return (\n <ContentTileList\n index\n name={RetailerName}\n nameLink={RetailerPageHref}\n thumbnail={HeroImage}\n logo={Logo}\n location={StoreLocation}\n locationLink={StoreLocationLink}\n itemId={ItemId}\n openTime={OpeningTime}\n rating={Rating}\n price={PriceLevel}\n acceptsOnlineBooking={AcceptsOnlineBooking}\n bookingIcon={BookingIcon}\n bookingLabel={BookingLabel}\n bookingUrl={BookingUrl}\n hasBooking={HasBooking}\n position={valueHelper(index, 4, 3)}\n retailerId={ItemId}\n />\n );\n });\n } else {\n returnRetailer = (\n <div className=\"col no-results\">No result. Please try again.</div>\n );\n }\n return returnRetailer;\n };\n\n showStoreCount = () => {\n let returnStoreCount;\n let nounCheck = \"stores\";\n returnStoreCount = (\n <div className=\"col-auto directorysearch-storecount\">\n {this.state.totalCount} {nounCheck}\n </div>\n );\n return returnStoreCount;\n };\n\n showSearchPlaceholderText = () => {\n let { SearchPlaceholderText: searchPlaceholderText = \"Find something\" } =\n this.props.fields || {};\n\n if (searchPlaceholderText) {\n if (\n searchPlaceholderText.value &&\n searchPlaceholderText.value !== null &&\n searchPlaceholderText.value !== \"\"\n )\n searchPlaceholderText = searchPlaceholderText.value;\n }\n return searchPlaceholderText;\n };\n\n showAfterpayCheckbox = () => {\n let showAfterpay = null;\n let { AfterPayCheckboxText: afterPayCheckboxText = null } =\n this.props.fields || {};\n if (afterPayCheckboxText) {\n if (\n afterPayCheckboxText.value &&\n afterPayCheckboxText.value !== null &&\n afterPayCheckboxText.value !== \"\"\n ) {\n afterPayCheckboxText = afterPayCheckboxText.value;\n showAfterpay = (\n <div className=\"custom-control custom-checkbox\">\n <input\n type=\"checkbox\"\n className=\"custom-control-input\"\n id=\"acceptsAfterpayCB\"\n onChange={this.handleAcceptAfterPay}\n checked={this.state.isAfterPay}\n />\n <label className=\"custom-control-label\" htmlFor=\"acceptsAfterpayCB\">\n {afterPayCheckboxText}\n </label>\n </div>\n );\n }\n }\n return showAfterpay;\n };\n\n showGiftCardCheckbox = () => {\n let showGiftCard = null;\n let { DisplayGiftCardsCheckbox: DisplayGiftCardsCheckbox = null } =\n this.props.fields || {};\n if (DisplayGiftCardsCheckbox && DisplayGiftCardsCheckbox.value) {\n showGiftCard = (\n <div className=\"custom-control custom-checkbox\">\n <input\n type=\"checkbox\"\n className=\"custom-control-input\"\n id=\"acceptsGiftCardCB\"\n onChange={this.handleAcceptGiftCard}\n checked={this.state.isGiftCard}\n />\n <label className=\"custom-control-label\" htmlFor=\"acceptsGiftCardCB\">\n <span className=\"js-accept-gift-card\">\n Accepts {this.state.giftcardText} Gift Cards\n </span>\n </label>\n </div>\n );\n }\n\n return showGiftCard;\n };\n\n showOnlineBookingsCheckbox = () => {\n let showOnlineBookings = null;\n let { DisplayOnlineBookingFilter = null, OnlineBookingFilterLabel = null } =\n this.props.fields || {};\n if (DisplayOnlineBookingFilter && DisplayOnlineBookingFilter.value) {\n showOnlineBookings = (\n <div className=\"custom-control custom-checkbox\">\n <input\n type=\"checkbox\"\n className=\"custom-control-input\"\n id=\"acceptsOnlineBookingsCB\"\n onChange={this.handleAcceptOnlineBookings}\n checked={this.state.isOnlineBooking}\n />\n <label\n className=\"custom-control-label\"\n htmlFor=\"acceptsOnlineBookingsCB\"\n >\n {OnlineBookingFilterLabel && OnlineBookingFilterLabel.value ? (\n <Text field={OnlineBookingFilterLabel} />\n ) : (\n \"Accepts online bookings\"\n )}\n </label>\n {/* <div className=\"custom-control-new\">New</div> */}\n </div>\n );\n }\n\n return showOnlineBookings;\n };\n\n showOrderAndCollectCheckbox = () => {\n let showOrderAndCollect = null;\n let {\n DisplayOrderAndCollectCheckbox = null,\n OrderAndCollectCheckboxText = null\n } = this.props.fields || {};\n if (\n DisplayOrderAndCollectCheckbox &&\n DisplayOrderAndCollectCheckbox.value\n ) {\n showOrderAndCollect = (\n <div className=\"custom-control custom-checkbox\">\n <input\n type=\"checkbox\"\n className=\"custom-control-input\"\n id=\"acceptsOrderAndCollect\"\n onChange={this.handleAcceptOrderAndCollect}\n checked={this.state.isOrderAndCollect}\n />\n <label\n className=\"custom-control-label\"\n htmlFor=\"acceptsOrderAndCollect\"\n >\n {OrderAndCollectCheckboxText &&\n OrderAndCollectCheckboxText.value ? (\n <Text field={OrderAndCollectCheckboxText} />\n ) : (\n \"Accepts Order & Collect\"\n )}\n </label>\n {/* <div className=\"custom-control-new\">New</div> */}\n </div>\n );\n }\n return showOrderAndCollect;\n };\n\n showCategory() {\n let subCategoryMapping;\n let completeArray = [];\n let { filterCat: category, level } = this.state;\n let categoryType = \"sub\";\n if (this.state.categoriesList && this.state.categoriesList.length) {\n // check if category is main or sub\n this.state.categoriesList.map(listItem => {\n if (category && category === listItem.fields.Id.value) {\n categoryType = \"main\";\n }\n });\n\n this.state.categoriesList.map((listItem, mainIndex) => {\n if (\n category &&\n category !== listItem.fields.Id.value &&\n categoryType === \"sub\"\n ) {\n if (\n !find(listItem.fields.SubCategories, function(o) {\n return category === o.fields.Id.value;\n })\n ) {\n return;\n }\n }\n if (categoryType !== \"sub\" || level === 1) {\n if (mainIndex === 0) {\n completeArray.push(\n <option key=\"option-all\" value={0} data-key=\"All\">\n All\n </option>\n );\n }\n completeArray.push(\n <option\n key={`${listItem.fields.Name.value}-${mainIndex}`}\n className=\"directorysearch-mainCategory\"\n value={listItem.fields.Id.value}\n data-key={listItem.fields.Name.value}\n >\n {listItem.fields.Name.value}\n </option>\n );\n }\n subCategoryMapping = listItem.fields.SubCategories;\n subCategoryMapping.map((item, subIndex) => {\n completeArray.push(\n <option\n key={`${listItem.fields.Name.value}-sub-${subIndex}`}\n value={item.fields.Id.value}\n data-key={\n listItem.fields.Name.value + \" - \" + item.fields.Name.value\n }\n >\n {item.fields.Name.value}\n </option>\n );\n });\n });\n }\n return completeArray;\n }\n render() {\n const { showLoader, isScrolling, hideFirstRow, noStores } = this.state;\n const {\n Subcategory = null,\n Title = null,\n HasSelectedStores = null\n } = this.props.fields;\n const hideComponent =\n hideFirstRow &&\n (!HasSelectedStores || (HasSelectedStores && !HasSelectedStores.value)) &&\n (!Subcategory || (Subcategory && !Subcategory.value));\n if (hideComponent || (hideFirstRow && noStores)) {\n return null;\n } else {\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"directorysearch-wrapper container\">\n <form\n className={`directorysearch-form ${hideFirstRow ? \"d-none\" : \"\"}`}\n onSubmit={e => {\n e.preventDefault();\n }}\n >\n <div className=\"no-gutters\">\n {/* ---------- SEARCH BAR ---------- */}\n <div className=\"directorysearch-searchbar\">\n <input\n className=\"form-control search-box\"\n type=\"search\"\n placeholder={this.showSearchPlaceholderText()}\n ref={this.searchTerm}\n onChange={debounce(e => {\n this.handleSearchFilter(e);\n }, 1000)}\n />\n {this.state.showClearButton && (\n <button\n className=\"clear-icon\"\n type=\"button\"\n onClick={this.handleClearButton}\n >\n <i className=\"icon icon-close\" />\n </button>\n )}\n {!this.state.showClearButton && (\n <button\n className=\"search-icon\"\n type=\"button\"\n onClick={this.handleSearchButton}\n >\n <i className=\"icon icon-outlined-search\" />\n </button>\n )}\n </div>\n {/* ---------- CATEGORY LIST ---------- */}\n <Fragment>\n <div className=\"directorysearch-category\">\n <label className=\"select\">\n <select\n className=\"form-control\"\n ref={this.selectedCategory}\n onChange={e => {\n this.handleCategoryFilter(e);\n }}\n value={this.state.category}\n >\n {this.showCategory()}\n </select>\n </label>\n </div>\n </Fragment>\n {/* ---------- STORE COUNT ---------- */}\n {!showLoader && this.showStoreCount()}\n </div>\n </form>\n {hideFirstRow ? (\n <Fragment>\n <hr className=\"subcategory-title\" />\n <div>\n <Text field={Title} />\n </div>\n </Fragment>\n ) : (\n <hr className=\"d-none d-md-block\" />\n )}\n\n {/* ---------- CHECKBOX ----------\n *** ACCEPTS AFTERPAY\n *** ACCEPTS GIFT CARD\n *** ACCEPTS ONLINE BOOKINGS\n */}\n\n <div>\n {this.showAfterpayCheckbox()}\n {this.showGiftCardCheckbox()}\n {this.showOnlineBookingsCheckbox()}\n {this.showOrderAndCollectCheckbox()}\n </div>\n {/* ---------- RETAILER LIST PASS DATA ---------- */}\n <InfiniteScroll\n style={{ height: \"auto\", overflow: \"hidden\" }}\n dataLength={this.state.listing.length}\n next={this.loadRetailerList.bind(this)}\n hasMore={this.state.hasMoreItems}\n // scrollThreshold={hideFirstRow ? 0.5 : 0.8}\n scrollThreshold={0.5}\n >\n {!showLoader && (\n <div className=\"content-tile-list-wrapper store-directory\">\n <div className=\"row\">{this.showRetailerList()}</div>\n </div>\n )}\n {(showLoader || isScrolling) && (\n <div className=\"directorylist-wrapper\">\n <LazyLoading />\n </div>\n )}\n </InfiniteScroll>\n </div>\n </BaseComponent>\n );\n }\n }\n}\n\nexport default FeatureStoreDirectoryDirectorySearch;\n","import React, { Component, Fragment } from \"react\";\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\nimport axios from \"axios\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport Details from \"../../../Common/Details\";\nimport LazyLoading from \"../../../Common/LazyLoading\";\nimport InfiniteScroll from \"react-infinite-scroll-component\";\n\nclass FeatureStoreDirectoryMiniStoreDirectory extends Component {\n constructor(props) {\n super(props);\n this.state = {\n pageId: null,\n dbName: null,\n retailers: null,\n preview: null,\n noSelection: true,\n noResults: false,\n showContentLoader: false,\n currentPage: 1,\n totalCount: 0,\n showLoader: true,\n isScrolling: false,\n hasMoreItems: true\n };\n }\n\n componentDidMount() {\n let contextInfo = window.document.getElementsByName(\"ContextItem\")[0];\n const {\n BrauzFormId = null\n } = this.props.fields || {};\n\n this.setState(\n {\n pageId: contextInfo.value,\n dbName: contextInfo.dataset.targetDb\n },\n () => this.getRetailerList(1)\n );\n if (window) {\n window.addEventListener(\"resize\", this.handleScroll);\n }\n\n if (\n BrauzFormId &&\n BrauzFormId.value\n ) {\n const brauzPackageURL =\n \"https://d3aq2u4yw77ivo.cloudfront.net/retailer-appointment/public/1.0/bookAStylist.prod.js\";\n this.loadScript(brauzPackageURL, () => {\n window.Brauz.initializeBrauzBookAStylist(BrauzFormId.value);\n });\n }\n }\n\n loadScript(url = \"\", callback = () => {}) {\n if (url) {\n const script = document.createElement(\"script\");\n script.setAttribute(\"type\", \"text/javascript\");\n script.setAttribute(\"src\", url);\n document.body.appendChild(script);\n script.onload = callback;\n }\n }\n\n handleScroll = () => {\n if (\n window &&\n window.outerWidth < 992 &&\n (this.state.showContentLoader || this.state.preview)\n ) {\n this.disableScroll();\n } else {\n this.enableScroll();\n }\n };\n handleClick = () => {\n if (window && window.outerWidth < 992) {\n this.disableScroll();\n }\n };\n\n enableScroll = () => {\n document.querySelector(\"html\").style.overflowY = \"auto\";\n };\n disableScroll = () => {\n document.querySelector(\"html\").style.overflowY = \"hidden\";\n };\n\n getRetailerList = async (pageNumber, isInfiniteScroll) => {\n const { pageId, dbName } = this.state;\n\n const params = {\n pageId,\n dbName,\n pageNumber,\n pageSize: 12\n };\n\n if (isInfiniteScroll) {\n this.setState({ isScrolling: true });\n }\n\n try {\n let response = await axios({\n method: \"GET\",\n url: `/api/sitecore/ministoredirectory/minisearch`,\n params\n });\n if (response && response.data && response.data.ResultList) {\n const { TotalCount, Page, ResultList } = response.data;\n const lastPage = Math.ceil(TotalCount.value / 12);\n const list =\n pageNumber > 1 ? this.state.retailers.concat(ResultList) : ResultList;\n const totalCount =\n TotalCount && TotalCount.value ? TotalCount.value : 0;\n const page = Page && Page.value ? Page.value : 1;\n\n this.setState({\n ...this.state,\n retailers: list,\n totalCount: totalCount,\n currentPage: page,\n hasMoreItems: page == lastPage ? false : true,\n isScrolling: false,\n showLoader: false\n });\n } else {\n this.setState({\n showLoader: false,\n noResults: true\n });\n }\n } catch (error) {\n // handle error\n console.log(error);\n this.setState({\n showLoader: false,\n noResults: true\n });\n }\n };\n\n loadRetailerList() {\n this.getRetailerList(this.state.currentPage + 1, true);\n }\n\n getRetailerContent = async itemId => {\n const { pageId, dbName } = this.state;\n\n const params = {\n pageId,\n dbName,\n itemId: (itemId && itemId.value) || null\n };\n this.setState({ noSelection: false, showContentLoader: true });\n try {\n let response = await axios({\n method: \"GET\",\n url: `api/sitecore/ministoredirectory/getstorecontent`,\n params\n });\n if (response && response.data) {\n this.setState({ preview: response.data, showContentLoader: false });\n }\n } catch (error) {\n // handle error\n this.setState({\n showContentLoader: false\n });\n }\n };\n\n renderRetailerList = (retailers, isScrolling) => {\n const { NoResultsText } = this.props.fields;\n if (retailers && retailers.length) {\n return (\n <div className=\"col-12 col-lg-5\">\n {retailers.map((item, index) => {\n const {\n ItemId: itemId = null,\n OpeningTime: openingTime = null,\n RetailerName: retailerName = null,\n Logo: logo = null\n } = item;\n return (\n <div\n className=\"retailers-list\"\n key={`SDItem${index}`}\n onClick={() => {\n this.handleClick();\n this.getRetailerContent(itemId);\n }}\n >\n {logo && logo.value && logo.value.src ? (\n <div className=\"logo with-logo\">\n <img {...logo.value} className=\"lazyload\" />\n </div>\n ) : (\n <div className=\"logo\">\n {this.getRetailerLogo(retailerName && retailerName.value)}\n </div>\n )}\n <div className=\"info\">\n <div className=\"name\">\n <Text field={retailerName} />\n </div>\n <div className=\"hours\">\n <Text field={openingTime} />\n </div>\n </div>\n <i className=\"icon icon-chevron-right\" />\n </div>\n );\n })}\n {isScrolling && <LazyLoading />}\n </div>\n );\n } else {\n return (\n <div className=\"col-12\">\n <div className=\"no-results\">\n <Text field={NoResultsText} />\n </div>\n </div>\n );\n }\n };\n\n handleClickBrauzBtn = id => {\n window.Brauz_open_book_a_stylist_dialog_with_selected_store(id);\n };\n\n renderRetailerPreview = () => {\n const { preview, showContentLoader, noSelection, noResults } = this.state;\n const { NoSelectionText } = this.props.fields;\n if (!noSelection) {\n if (showContentLoader) {\n return (\n <Fragment>\n <div className=\"preview-blur\" />\n <div className=\"retailer-preview-container col-lg-6 offset-lg-1\">\n <div className=\"retailer-preview-loader\">\n <LazyLoading />\n </div>\n </div>\n </Fragment>\n );\n } else {\n if (preview) {\n const {\n RetailerName = null,\n Logo = null,\n OpeningTime = null,\n OpeningHours = null,\n StoreLocation = null,\n StoreLocationLink = null,\n ItemId = null,\n PhoneNumber = null,\n ExternalLink = null,\n FacebookLink = null,\n InstagramLink = null,\n BookingIcon = null,\n BookingLabel = null,\n BookingUrl = null,\n HasBooking = null\n } = preview;\n\n return (\n <Fragment>\n <div className=\"preview-blur\" />\n <div className=\"retailer-preview-container col-12 col-lg-6 offset-lg-1\">\n <div className=\"retailer-content\">\n <div className=\"close-wrapper\">\n <i\n className=\"icon icon-close d-lg-none\"\n onClick={() => {\n this.enableScroll();\n this.setState({ preview: null, noSelection: true });\n }}\n />\n </div>\n <div className=\"header\">\n <div className=\"name order-2 order-lg-1\">\n <Text field={RetailerName} />\n </div>\n {Logo && Logo.value && Logo.value.src ? (\n <div className=\"logo order-1 order-lg-2\">\n <img {...Logo.value} className=\"lazyload\" />\n </div>\n ) : (\n \"\"\n )}\n </div>\n {OpeningTime && OpeningTime.value ? (\n <div className=\"opening-hours-wrapper\">\n <i className=\"icon icon-time\" />\n <div className=\"opening-time\">\n <Text field={OpeningTime} />\n </div>\n </div>\n ) : OpeningHours && OpeningHours.length ? (\n <div className=\"opening-hours-wrapper\">\n <i className=\"icon icon-time\" />\n <div className=\"opening-hours\">\n {OpeningHours.map((item, index) => {\n const {\n Day: day = null,\n Time: primaryTime = null,\n SecondaryTime: secondaryTime = null\n } = item;\n return (\n <div\n className=\"opening-hour-item\"\n key={`SDItemHour${index}`}\n >\n <div className=\"col-4 col-md-2 col-lg-3 day\">\n <Text field={day} />\n </div>\n <div className=\"col-6 col-md-3 col-lg-6 primary-time\">\n <Text field={primaryTime} />\n </div>\n {secondaryTime && secondaryTime.value && (\n <div className=\"col-6 col-md-3 col-lg-6 secondary-time\">\n <Text field={secondaryTime} />\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n ) : (\n \"\"\n )}\n <Details\n iconValue=\"location mr-2\"\n linkUrl={StoreLocationLink && StoreLocationLink.value}\n linkName={StoreLocation}\n size=\"24\"\n withViewOnMap={true}\n mapInfo={ItemId && ItemId.value ? ItemId.value : \"\"}\n />\n {PhoneNumber && PhoneNumber.value && (\n <Details\n size=\"24\"\n iconValue=\"phone-call mr-2\"\n noLocation={true}\n linkName={PhoneNumber}\n linkUrl={`tel:${PhoneNumber.value}`}\n />\n )}\n {ExternalLink && ExternalLink.value && (\n <Details\n size=\"24\"\n iconValue=\"globe mr-2\"\n noLocation={true}\n linkName={ExternalLink}\n linkUrl={ExternalLink.value}\n />\n )}\n {FacebookLink && FacebookLink.value && (\n <Details\n size=\"24\"\n iconValue=\"facebook-2 mr-2\"\n noLocation={true}\n linkName={FacebookLink}\n linkUrl={FacebookLink.value}\n />\n )}\n {InstagramLink && InstagramLink.value && (\n <Details\n size=\"24\"\n iconValue=\"instagram-2 mr-2\"\n noLocation={true}\n linkName={this.getUsername(InstagramLink.value)}\n linkUrl={InstagramLink.value}\n />\n )}\n {HasBooking && HasBooking.value ? (\n <div className=\"details-wrapper\">\n {BookingIcon && BookingIcon.value ? (\n <i\n className={`icon icon-${BookingIcon.value} mr-2`}\n style={{ fontSize: \"24px\" }}\n />\n ) : (\n <i\n className=\"icon icon-calendar-2 mr-2\"\n style={{ fontSize: \"24px\" }}\n />\n )}\n <button\n onClick={() => this.handleClickBrauzBtn(ItemId.value)}\n >\n <Text field={BookingLabel} />\n </button>\n </div>\n ) : BookingUrl && BookingUrl.value ? (\n <div className=\"details-wrapper\">\n {BookingIcon && BookingIcon.value ? (\n <i\n className={`icon icon-${BookingIcon.value} mr-2`}\n style={{ fontSize: \"24px\" }}\n />\n ) : \n <i\n className=\"icon icon-calendar-2 mr-2\"\n style={{ fontSize: \"24px\" }}\n />\n }\n <a href={BookingUrl.value} target=\"_blank\">\n <Text field={BookingLabel} />\n </a>\n </div>\n ):\"\"}\n </div>\n </div>\n </Fragment>\n );\n } else {\n return (\n <div className=\"retailer-preview-container col-12 col-lg-6 offset-lg-1\">\n <div className=\"retailer-content\">\n <div className=\"no-info\">\n Something went wrong. Please try again.\n </div>\n </div>\n </div>\n );\n }\n }\n } else {\n if (!noResults) {\n return (\n <div className=\"retailer-preview-container d-none d-lg-block col-lg-6 offset-lg-1\">\n <div className=\"no-selection\">\n <Text field={NoSelectionText} />\n </div>\n </div>\n );\n }\n }\n };\n\n getUsername = link => {\n const result = link.match(\n /(?:(?:http|https):\\/\\/)?(?:www.)?(?:instagram.com|instagr.am)\\/([A-Za-z0-9-_]+)/\n );\n if (result && result[1] && result[1] !== \"explore\") {\n return { value: \"@\" + result[1] };\n } else return null;\n };\n\n getRetailerLogo = retailerName => {\n const initials = retailerName\n .match(/\\b(\\w)/g)\n .join(\"\")\n .slice(0, 2);\n\n return <div className=\"initials\">{initials.toUpperCase()}</div>;\n };\n\n render() {\n const { showLoader, isScrolling, retailers } = this.state;\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"mini-storedirectory-container\">\n <div className=\"container\">\n <InfiniteScroll\n style={{ height: \"auto\", overflow: \"auto\" }}\n dataLength={retailers && retailers.length}\n next={this.loadRetailerList.bind(this)}\n hasMore={this.state.hasMoreItems}\n scrollThreshold={0.5}\n />\n {showLoader && <LazyLoading />}\n {!showLoader && (\n <div className=\"mini-storedirectory-wrapper row\">\n {this.renderRetailerList(retailers, isScrolling)}\n\n {this.renderRetailerPreview()}\n </div>\n )}\n </div>\n </div>\n </BaseComponent >\n );\n }\n}\n\nexport default FeatureStoreDirectoryMiniStoreDirectory;\n","import React from \"react\";\nimport { Text, Image } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\nimport RiseAndFade from \"../../../Common/Animations/RiseAndFade\";\nimport GrayBanner from \"../../../Common/GrayBanner\";\nimport { valueHelper } from \"../../../../helper/Animations\";\n\nconst FeatureStorefrontCategoryDiscoverStores = props => {\n const { RetailerList: retailerList = null } = props.fields || {};\n\n if (retailerList && retailerList.length) {\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"categorydiscover-wrapper\">\n <GrayBanner fields={props.fields} />\n <div className=\"categorydiscover-tile-wrapper\">\n <div className=\"container\">\n <div className=\"row\">\n {retailerList &&\n retailerList.map((listItem, index) => {\n const {\n RetailerPageHref = null,\n Logo = null,\n RetailerName = null\n } = listItem.fields || {};\n\n return (\n <div className=\"col-8 col-md-2\" key={`tileID-${index}`}>\n <RiseAndFade position={valueHelper(index, 5)}>\n <div className=\"animation-range\">\n <div\n key={`myId-${index}`}\n className=\"categorydiscover-tile\"\n >\n <a\n href={\n RetailerPageHref && RetailerPageHref.value\n ? RetailerPageHref.value\n : \"\"\n }\n >\n <div className=\"categorydiscover-image\">\n {Logo && Logo.value && Logo.value.src ? (\n <Image\n media={{ ...Logo.value, src: defaultImg }}\n data-src={Logo.value.src}\n className=\"lazyload\"\n />\n ) : (\n <div className=\"no-logo\">\n <Text field={RetailerName} />\n </div>\n )}\n </div>\n </a>\n </div>\n <div className=\"categorydiscover-tile-title\">\n <a\n href={\n RetailerPageHref && RetailerPageHref.value\n ? RetailerPageHref.value\n : \"\"\n }\n >\n <Text field={RetailerName} />\n </a>\n </div>\n </div>\n </RiseAndFade>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </div>\n </BaseComponent>\n );\n } else {\n return \"\";\n }\n};\nexport default FeatureStorefrontCategoryDiscoverStores;\n","import React from \"react\";\nimport { Link, Text, Image } from \"@sitecore-jss/sitecore-jss-react\";\nimport ScrollAnimation from \"react-animate-on-scroll\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport Details from \"../../../Common/Details\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\nimport RiseAndFade from \"../../../Common/Animations/RiseAndFade\";\n\nconst FeatureStorefrontRecommendation = props => {\n const {\n StoreDirectoryLandingPage: storeDirectoryLandingPage = \"\",\n StoreDirectoryCtaText: storeDirectoryCtaText = \"\",\n StoreDirectoryCtaAnchor: storeDirectoryCtaAnchor = \"\",\n Title: Title = \"\",\n RetailerList: retailerList = \"\"\n } = props.fields || {};\n\n const storeDirectoryLinkField = {\n href: storeDirectoryLandingPage ? storeDirectoryLandingPage.value : null,\n text: storeDirectoryCtaText ? storeDirectoryCtaText.value : null,\n anchor: storeDirectoryCtaAnchor ? storeDirectoryCtaAnchor.value : null,\n linktype: \"internal\",\n class: \"\",\n title: storeDirectoryCtaText ? storeDirectoryCtaText.value : null,\n querystring: \"\"\n };\n\n let recommendation;\n\n if (\n props.rendering.dataSource &&\n props.rendering.dataSource !== \"\" &&\n retailerList &&\n retailerList.length === 3\n ) {\n recommendation = (\n <BaseComponent margin=\"standard\">\n <div className=\"recommendation-wrapper\">\n <div className=\"container\">\n <div className=\"recommendation-banner\">\n <div className=\"recommendation-header\">\n <ScrollAnimation\n animateIn=\"animate__animated animate__fadeIn\"\n animateOnce={true}\n >\n <div className=\"title\">\n <Link field={storeDirectoryLinkField} />\n <i className=\"icon icon-arrow-right ml-2\" />\n </div>\n <div className=\"subtitle\">\n <Text field={Title} />\n </div>\n </ScrollAnimation>\n </div>\n </div>\n </div>\n <div className=\"recommendation-tile-wrapper\">\n <div className=\"container\">\n <div className=\"row no-gutters\">\n {retailerList &&\n retailerList.map((item, index) => {\n const {\n HeroImage = null,\n Logo = null,\n RetailerName = null,\n StoreLocation = null,\n StoreLocationLink = null,\n OpeningTime = null,\n RetailerPageHref = null,\n ItemId = null\n } = item.fields;\n let value = 0;\n let guidRegex = new RegExp(/^{[a-z0-9-]}+$/i);\n if (index == 1) {\n value = 6;\n } else if (index == 2) {\n value = 8;\n }\n return (\n <div key={`myId-${index}`} className=\"col-10 col-md-4\">\n <RiseAndFade position={value}>\n <div className=\"animation-range\">\n <div className=\"recommendation-tile-wrapper-img-wrapper\">\n <a\n href={\n RetailerPageHref && RetailerPageHref.value\n ? RetailerPageHref.value\n : null\n }\n >\n {HeroImage &&\n HeroImage.value &&\n HeroImage.value.src ? (\n <Image\n media={{\n ...HeroImage.value,\n src: defaultImg\n }}\n data-src={HeroImage.value.src}\n className=\"recommendation-tile-wrapper-img lazyload\"\n />\n ) : (\n <div className=\"no-image\" />\n )}\n <div className=\"recommendation-tile-wrapper-logo\">\n {Logo && Logo.value && Logo.value.src ? (\n <Image\n media={{ ...Logo.value, src: defaultImg }}\n data-src={Logo.value.src}\n className=\"recommendation-tile-wrapper-img-thumb lazyload\"\n />\n ) : (\n <div className=\"no-logo\">\n <Text field={RetailerName} />\n </div>\n )}\n </div>\n </a>\n </div>\n\n <div className=\"details-title\">\n <a\n href={\n RetailerPageHref && RetailerPageHref.value\n ? RetailerPageHref.value\n : null\n }\n >\n <Text field={RetailerName} />\n </a>\n </div>\n </div>\n {StoreLocation && StoreLocation.value && (\n <Details\n iconValue=\"location\"\n linkUrl={\n StoreLocationLink && StoreLocationLink.value\n }\n linkName={StoreLocation}\n size=\"24\"\n mapInfo={\n ItemId &&\n ItemId.fields &&\n ItemId.fields.Guid &&\n ItemId.fields.Guid.value\n ? (guidRegex.test(ItemId.fields.Guid.value) ? \n ItemId.fields.Guid.value : \"{\" + ItemId.fields.Guid.value + \"}\")\n : \"\"\n }\n />\n )}\n {OpeningTime && OpeningTime.value && (\n <Details\n iconValue=\"time\"\n linkName={OpeningTime}\n size=\"24\"\n />\n )}\n </RiseAndFade>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </div>\n </BaseComponent>\n );\n } else {\n recommendation = \"\";\n }\n\n return recommendation;\n};\n\nexport default FeatureStorefrontRecommendation;\n","import React, { Component } from \"react\";\nimport axios from \"axios\";\nimport { Image, Text, Link, RichText } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\nimport FeatureMapsCentreMap from \"../../../Feature/Maps/CentreMap\";\nimport {\n CarouselProvider,\n Slider,\n Slide,\n ButtonBack,\n ButtonNext,\n DotGroup\n} from \"pure-react-carousel\";\nimport \"pure-react-carousel/dist/react-carousel.es.css\";\n\nclass RetailerStorefrontRetailerDetails extends Component {\n constructor(props) {\n super(props);\n this.state = {\n rating: null,\n price_level: null,\n categoryCount: 0,\n };\n }\n\n componentDidMount() {\n const {\n PlaceId = null,\n HasBooking = null,\n BrauzFormId = null\n } = this.props.fields || {};\n if (PlaceId) {\n this.getGoogleRating(PlaceId.value);\n }\n let centre = window.document.getElementsByName(\"ContextItem\")[0].dataset\n .centre;\n let el = window.document.getElementsByClassName(\"retailer-details__map--parking__details--available\");\n if (centre !== \"robina\" && el && el[0]) {\n el[0].classList.add(\"hidden\");\n }\n\n if (document) {\n setTimeout(() => {\n const metaCentre = document.querySelector('meta[name=\"centrename\"]');\n if (metaCentre) {\n const giftCardText =\n \"Accepts \" +\n metaCentre.getAttribute(\"content\") +\n \" Giftcards\";\n const giftCardContainer = document\n .getElementsByClassName(\"retailer-details__wrapper\")[0]\n .querySelectorAll(\".js-gift-card\");\n if (giftCardContainer) {\n for (var i = 0; i < giftCardContainer.length; ++i) {\n giftCardContainer[i].innerHTML = giftCardText.toLowerCase();\n }\n }\n }\n }, 1000);\n this.updateStorefrontUrl();\n this.categoryTagsDisplay();\n }\n\n if (window) {\n window.addEventListener(\"resize\", this.categoryTagsDisplay);\n }\n\n if (HasBooking && HasBooking.value && BrauzFormId && BrauzFormId.value) {\n const brauzPackageURL = \"https://d3aq2u4yw77ivo.cloudfront.net/retailer-appointment/public/1.0/bookAStylist.prod.js\";\n this.loadScript(brauzPackageURL, () => {\n window.Brauz.initializeBrauzBookAStylist(BrauzFormId.value);\n });\n }\n }\n\n updateStorefrontUrl = () => {\n const title = document.title;\n let state = \"\";\n let url = \"\";\n let urlHref = window.location.href;\n if (urlHref.indexOf(\"profile\") <= -1) {\n console.log(\"no-location\");\n const { LocationMapTargetId: locationMapTargetId = null } =\n this.props.fields || {};\n state = locationMapTargetId.value;\n if (locationMapTargetId && urlHref.slice(-2) !== \"#/\") {\n url = urlHref + \"#/profile?location=\" + state;\n window.history.pushState({ mapId: state }, title, url);\n } else {\n url = urlHref + \"profile?location=\" + state;\n window.history.pushState({ mapId: state }, title, url);\n }\n } else {\n url = urlHref.replace(\"#/#/\", \"#/\");\n window.history.pushState({ mapId: state }, title, url);\n }\n }\n\n categoryTagsDisplay = () => {\n if (window && window.outerWidth >= 992) {\n let categoryWrapper = document.querySelector(\".retailer-details__category\");\n\n if (categoryWrapper) {\n let hasShowAll = categoryWrapper.querySelector(\".show-all-list\");\n\n if (!hasShowAll) {\n let categoryLabel = categoryWrapper.querySelector(\".retailer-details__category--label\");\n let categoryList = categoryWrapper.querySelectorAll(\".retailer-details__category--link__list\");\n let categoryBtn = categoryWrapper.querySelector(\".retailer-details__category--link__more\");\n let totalWidth = 0;\n let hiddenListCount = 0;\n\n categoryBtn.classList.remove(\"is-hidden\");\n Array.prototype.slice.call(categoryList).map((categoryItem, index) => {\n categoryItem.classList.remove(\"is-hidden\");\n })\n\n let categoryWrapperWidth = categoryWrapper.clientWidth;\n let categoryLabelWidth = categoryLabel.clientWidth + 16;\n let categoryBtnWidth = categoryBtn.clientWidth + 15;\n\n Array.prototype.slice.call(categoryList).map((categoryItem, index) => {\n let categoryWidth = categoryItem.clientWidth + 8;\n totalWidth = categoryWidth + totalWidth;\n\n if (categoryWrapperWidth < (categoryLabelWidth + categoryBtnWidth + totalWidth)) {\n categoryItem.classList.add(\"is-hidden\");\n hiddenListCount++;\n }\n })\n if (hiddenListCount > 0) {\n this.setState({\n categoryCount: hiddenListCount\n })\n } else {\n categoryBtn.classList.add(\"is-hidden\");\n }\n }\n }\n }\n }\n loadScript(url = \"\", callback = () => { }) {\n if (url) {\n const script = document.createElement(\"script\");\n script.setAttribute(\"type\", \"text/javascript\");\n script.setAttribute(\"src\", url);\n document.body.appendChild(script);\n script.onload = callback;\n }\n }\n\n handleClickBrauzBtn = (id) => {\n window.Brauz_open_book_a_stylist_dialog_with_selected_store(id);\n }\n\n getGoogleRating(placeId) {\n let url = `/api/sitecore/placeratingandprice/GetPlaceRatingAndPrice?place_id=${placeId}`;\n axios({\n url,\n method: \"GET\"\n })\n .then(response => {\n if (\n response.data &&\n response.data.result &&\n response.data.status == \"OK\"\n ) {\n this.setState({\n rating: response.data.result.Rating\n ? response.data.result.Rating\n : null,\n price_level: response.data.result.Price_level\n ? response.data.result.Price_level\n : null\n });\n }\n })\n .catch(error => {\n console.log(error);\n });\n }\n\n renderRatings() {\n let ratingsLayout = \"\";\n let rating = [];\n let priceLevel = [];\n\n if (this.state.rating) {\n const ratingValue = parseInt(this.state.rating);\n\n for (let i = 1; i <= 5; i++) {\n if (i <= ratingValue) {\n rating.push(<div className=\"icon icon-star checked\" key={i} />);\n } else {\n rating.push(<div className=\"icon icon-star\" key={i} />);\n }\n }\n }\n\n if (this.state.price_level) {\n const priceLevelValue = parseInt(this.state.price_level);\n if (priceLevelValue <= 1) {\n priceLevel.push(\n <i className=\"icon icon-dollar\" key={`priceLevelId`} />\n );\n } else if (priceLevelValue === 2 || priceLevelValue === 3) {\n for (let i = 0; i < 2; i++) {\n priceLevel.push(\n <i className=\"icon icon-dollar\" key={`priceLevelId` + i} />\n );\n }\n } else if (priceLevelValue >= 4) {\n for (let i = 0; i < 3; i++) {\n priceLevel.push(\n <i className=\"icon icon-dollar\" key={`priceLevelId` + i} />\n );\n }\n }\n }\n if (rating.length > 0 || priceLevel.length > 0) {\n ratingsLayout =\n <div className=\"retailer-details__info--rating\">\n {priceLevel.length > 0 &&\n <div className=\"retailer-details__info--rating__dollar\">\n <span>{priceLevel}</span>\n </div>\n }\n {rating.length > 0 &&\n <div className=\"retailer-details__info--rating__star\">\n {rating}\n </div>\n }\n </div>\n }\n return ratingsLayout;\n }\n\n renderLogo = (Logo, retailerName) => {\n let logoLayout;\n\n if (Logo) {\n if (!Logo.value.src) {\n logoLayout =\n <div className=\"retailer-details__title\">\n <Text field={retailerName} />\n </div>\n\n } else {\n logoLayout =\n <Image\n className=\"img-fluid lazyload\"\n media={{\n ...Logo,\n src: defaultImg,\n alt: Logo && Logo.value && Logo.value.alt ? Logo.value.alt : \"\"\n }}\n data-src={Logo.value.src}\n />\n }\n } else {\n logoLayout =\n <div className=\"retailer-details__title\">\n <Text field={retailerName} />\n </div>\n }\n\n return logoLayout;\n };\n\n renderOpeningHours = () => {\n const {\n OpeningToday = null,\n OpeningHours = null,\n HideOpeningHours = null\n } = this.props.fields || {};\n let openingHoursLayout;\n\n openingHoursLayout = (\n <div className=\"retailer-details__info--openinghours\">\n {(HideOpeningHours == null || (HideOpeningHours && !HideOpeningHours.value)) && (\n <input\n type=\"checkbox\"\n id={`openingHoursUpdate`}\n className=\"retailer-details__info--openinghours__toggle\"\n />\n )}\n <label\n className={\n \"retailer-details__info--openinghours__title \" +\n (HideOpeningHours && HideOpeningHours.value ? \"hide-openinghours\" : \"\")\n }\n htmlFor={`openingHoursUpdate`}\n >\n <i className=\"icon icon-time\" />\n <span>\n <Text field={OpeningToday} />\n </span>\n </label>\n\n {(HideOpeningHours == null || (HideOpeningHours && !HideOpeningHours.value)) && (\n <div className=\"retailer-details__info--openinghours__content\">\n {OpeningHours &&\n OpeningHours.length > 0 &&\n OpeningHours.map((item, index) => {\n const {\n Day = null,\n Time = null,\n SecondaryTime = null\n } = item.fields || {};\n return (\n <div className=\"row\" key={`rowID-${index}`}>\n <div className=\"col-4 col-md-5 col-lg-4 col-xl-3 retailer-details__info--openinghours__content-col\">\n <Text field={Day} />\n </div>\n <div className=\"col-8 col-md-7 col-lg-8 col-xl-9 retailer-details__info--openinghours__content-col\">\n <Text field={Time} />\n {SecondaryTime && SecondaryTime.value && (\n <React.Fragment>\n <br />\n <Text field={SecondaryTime} />\n </React.Fragment>\n )}\n </div>\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n return openingHoursLayout;\n }\n\n renderActions = () => {\n let phoneLayout,\n bookingLayout,\n uberLayout,\n viewMenuLayout;\n\n let hasPhone = false,\n hasBookingUrl = false,\n hasUber = false,\n hasViewMenu = false,\n counter = 0;\n const {\n PhoneNumber = null,\n BookUberTitle = null,\n BookUberLink = null,\n ViewMenuURL = null,\n LocationMapTargetId = null,\n HasBooking = null,\n BookingIcon = null,\n BookingUrl = null,\n BrauzFormId = null,\n BookingLabel = null\n } = this.props.fields || {};\n\n if (PhoneNumber && PhoneNumber.value) {\n hasPhone = true;\n counter++;\n }\n if ((HasBooking && HasBooking.value && BrauzFormId && BrauzFormId.value) ||\n (BookingUrl && BookingUrl.value)) {\n hasBookingUrl = true;\n counter++;\n }\n if (BookUberTitle && BookUberTitle.value && BookUberLink && BookUberLink.value) {\n hasUber = true;\n counter++;\n }\n if (ViewMenuURL && ViewMenuURL.value && ViewMenuURL.value.href) {\n hasViewMenu = true;\n counter++;\n }\n if (PhoneNumber && PhoneNumber.value) {\n phoneLayout =\n <div className={`retailer-details__info--list__item has-action \n ${hasBookingUrl || hasUber || hasViewMenu ? \"is-half-width\" : \"\"}`}\n key=\"phoneLayout\">\n <i className=\"icon icon-phone-call\" />\n <div className=\"text-block\">\n <a href={\"tel:\" + PhoneNumber.value}>\n <Text field={PhoneNumber} />\n </a>\n </div>\n </div>\n }\n\n if ((HasBooking && HasBooking.value && BrauzFormId && BrauzFormId.value) ||\n (BookingUrl && BookingUrl.value)) {\n bookingLayout =\n <div className={`retailer-details__info--list__item has-action\n ${hasPhone || hasUber || hasViewMenu ? \"is-half-width\" : \"\"}`}\n key=\"bookingLayout\">\n {BookingIcon && BookingIcon.value ? (\n <i\n className={`icon icon-${BookingIcon.value}`}/>\n ) : \n <i className=\"icon icon-calendar-2\"/>\n }\n <div className=\"text-block\">\n {HasBooking.value ?\n <button onClick={() => this.handleClickBrauzBtn(LocationMapTargetId.value)}>\n <Text field={BookingLabel} />\n </button>\n : <a href={BookingUrl.value} target=\"_blank\">\n <Text field={BookingLabel} />\n </a>\n }\n\n </div>\n </div>\n }\n\n if (BookUberTitle && BookUberTitle.value && BookUberLink && BookUberLink.value) {\n uberLayout =\n <div className={`retailer-details__info--list__item is-uber has-action\n ${(counter == 1 || (hasPhone && hasBookingUrl && counter == 3)) ? \"\" : \"is-half-width\"}`}\n key=\"uberLayout\">\n <i className=\"icon icon-uber\" />\n <div className=\"text-block\">\n <a href={BookUberLink.value} target=\"_blank\">\n <Text field={BookUberTitle} />\n </a>\n </div>\n </div>\n }\n\n if (ViewMenuURL && ViewMenuURL.value && ViewMenuURL.value.href) {\n viewMenuLayout =\n <div className={`retailer-details__info--list__item has-action\n ${(counter == 1 || counter == 3) ? \"\" : \"is-half-width\"}`}\n key=\"viewMenuLayout\">\n <i className=\"icon icon-menu\" />\n <div className=\"text-block\">\n <a href={ViewMenuURL.value.href} target=\"_blank\">\n {\"View menu\"}\n </a>\n </div>\n </div>\n }\n\n return ([phoneLayout, bookingLayout, uberLayout, viewMenuLayout]);\n }\n\n renderTags = () => {\n let tagsLayout;\n const {\n IsVegetarian = null,\n IsKidsFriendly = null,\n AfterPay = null,\n GiftCards = null,\n OrderAndCollect = null,\n } = this.props.fields || {};\n\n if ((AfterPay && AfterPay.value) ||\n (GiftCards && GiftCards.value) ||\n (IsKidsFriendly && IsKidsFriendly.value) ||\n (IsVegetarian && IsVegetarian.value) ||\n (OrderAndCollect && OrderAndCollect.value)) {\n tagsLayout =\n <div className=\"retailer-details__tags\">\n\n {GiftCards && GiftCards.value &&\n <div className=\"retailer-details__tags--item\">\n <i className=\"icon icon-gift-card-2\" />\n <span className=\"js-gift-card\">\n {\"Giftcards\"}\n </span>\n </div>\n }\n\n {AfterPay && AfterPay.value &&\n <div className=\"retailer-details__tags--item\">\n <i className=\"icon icon-afterpay-2\" />\n <span>\n {\"Accepts AfterPay\"}\n </span>\n </div>\n }\n\n {IsVegetarian && IsVegetarian.value &&\n <div className=\"retailer-details__tags--item\">\n <i className=\"icon icon-leaf\" />\n <span>\n {\"Vegetarian\"}\n </span>\n </div>\n }\n\n {IsKidsFriendly && IsKidsFriendly.value &&\n <div className=\"retailer-details__tags--item\">\n <i className=\"icon icon-parent\" />\n <span>\n {\"Kids Friendly\"}\n </span>\n </div>\n }\n\n {OrderAndCollect && OrderAndCollect.value &&\n <div className=\"retailer-details__tags--item\">\n <i className=\"icon icon-order-and-collect\" />\n <span>\n {\"Accepts Order & Collect\"}\n </span>\n </div>\n }\n </div>\n }\n\n return tagsLayout;\n }\n\n renderSocialLink = () => {\n const {\n RetailerWebsite = null,\n FacebookLink = null,\n InstagramLink = null,\n } = this.props.fields || {};\n\n let socialLayout = \"\";\n\n if ((RetailerWebsite && RetailerWebsite.value) ||\n (FacebookLink && FacebookLink.value) ||\n (InstagramLink && InstagramLink.value)) {\n socialLayout =\n <div className=\"retailer-details__social\">\n {RetailerWebsite &&\n RetailerWebsite.value &&\n <a className=\"retailer-details__social--item\"\n href={RetailerWebsite.value}\n target=\"_blank\" >\n <i className=\"icon icon-globe\" />\n <div className=\"text-block\">\n {\"Website\"}\n </div>\n </a>\n }\n {FacebookLink &&\n FacebookLink.value &&\n <a className=\"retailer-details__social--item\"\n href={FacebookLink.value}\n target=\"_blank\" >\n <i className=\"icon icon-facebook-2\" />\n <div className=\"text-block\">\n {\"Facebook\"}\n </div>\n </a>\n }\n {InstagramLink &&\n InstagramLink.value &&\n <a className=\"retailer-details__social--item\"\n href={InstagramLink.value}\n target=\"_blank\" >\n <i className=\"icon icon-instagram-2\" />\n <div className=\"text-block\">\n {\"Instagram\"}\n </div>\n </a>\n }\n </div>\n }\n\n return socialLayout;\n }\n\n renderCategoryTags = () => {\n const {\n CategoryTags = null\n } = this.props.fields || {};\n\n const {\n categoryCount\n } = this.state;\n let categoryLayout;\n\n if (CategoryTags && CategoryTags.length > 0) {\n categoryLayout =\n <div className=\"retailer-details__category\">\n <div className=\"retailer-details__category--label\">\n {\"Tags\"}\n </div>\n <ul className=\"retailer-details__category--link\">\n {CategoryTags.map((item, index) => {\n const {\n CategoryName = null,\n CategoryLink = null\n } = item.fields || {}\n\n let categoryItem = \"\";\n\n if (CategoryName && CategoryName.value && CategoryLink && CategoryLink.value) {\n categoryItem =\n <li className=\"retailer-details__category--link__list\" key={CategoryName.value + index}>\n <a href={CategoryLink.value} target=\"\">\n <Text field={CategoryName} />\n </a>\n </li>\n }\n return categoryItem\n })\n }\n <li className={`retailer-details__category--link__more\n ${categoryCount == 0 ? \"is-hidden\" : \"\"}\n `}>\n <button onClick={this.categoryBtnOnClick}>\n {\"+\"}\n {categoryCount}\n {\" more\"}\n </button>\n </li>\n </ul>\n </div>\n }\n\n return categoryLayout;\n }\n\n categoryBtnOnClick = () => {\n let categoryLinkWrapper = document.querySelector(\".retailer-details__category--link\");\n if (categoryLinkWrapper) {\n categoryLinkWrapper.classList.add(\"show-all-list\");\n }\n }\n render() {\n const {\n Logo = null,\n RetailerName = null,\n RetailerDescription = null,\n StoreLocation = null,\n StoreLocationLink = null,\n BestParkingLabel = null,\n BestParking = null,\n ParkingAvailable = null,\n ParkingPageLink = null,\n HeroImage = null,\n HeaderCarousel = null,\n LocationMapTargetId = null,\n MapDetails = null,\n MapVenue = null,\n IconColour = null,\n IconCharacters = null,\n } = this.props.fields || {};\n\n const parkColour = (IconColour && IconColour.value ? IconColour.value : \"\");\n const parkText = (IconCharacters && IconCharacters.value ? IconCharacters.value : \"P\");\n\n return (\n <BaseComponent margin=\"custom\">\n <div className={`retailer-details__wrapper font-regular\n ${((HeroImage && HeroImage.value && HeroImage.value.src) || (HeaderCarousel &&\n HeaderCarousel.length > 0)) ? \"\" : \"no-banner\"}`}>\n <div className=\"retailer-details__banner\">\n {HeaderCarousel && HeaderCarousel.length > 0 ?\n <CarouselProvider\n totalSlides={HeroImage && HeroImage.value && HeroImage.value.src ? HeaderCarousel.length + 1 : HeaderCarousel.length}\n naturalSlideWidth={1}\n naturalSlideHeight={1}\n visibleSlides={1}\n step={1}\n >\n <Slider className={\"slider\"}>\n {HeroImage &&\n HeroImage.value &&\n HeroImage.value.src &&\n <Slide>\n <Image\n className=\"lazyload\"\n media={{ ...HeroImage.value, src: defaultImg }}\n data-src={HeroImage.value.src}\n />\n </Slide>\n }\n {HeaderCarousel.map((item, index) => {\n const {\n GalleryImage = null\n } = item.fields;\n let imageLayout;\n\n if (GalleryImage && GalleryImage.value && GalleryImage.value.src) {\n imageLayout =\n <Slide index={index} key={\"HeaderCarousel-Storefront\" + index}>\n <Image\n className=\"lazyload\"\n media={{ ...GalleryImage.value, src: defaultImg }}\n data-src={GalleryImage.value.src}\n />\n </Slide>\n }\n return imageLayout;\n })}\n </Slider>\n <div className=\"retailer-details__button\">\n <ButtonBack className=\"retailer-details__button--prev\">\n <i className=\"icon icon-arrow-left\" />\n </ButtonBack>\n <ButtonNext className=\"retailer-details__button--next\">\n <i className=\"icon icon-arrow-right\" />\n </ButtonNext>\n </div>\n <DotGroup />\n </CarouselProvider>\n : HeroImage && HeroImage.value && HeroImage.value.src ?\n <div className=\"retailer-details__banner--hero\">\n <Image\n className=\"lazyload\"\n media={{ ...HeroImage.value, src: defaultImg }}\n data-src={HeroImage.value.src}\n />\n </div>\n : \"\"\n }\n </div>\n <div className=\"container\">\n <div className=\"retailer-details__content\">\n <div className=\"row\">\n <div className=\"retailer-details__logo--wrapper col col-12 col-md-7 col-lg-8\">\n <div className=\"retailer-details__logo\">\n {this.renderLogo(Logo, RetailerName)}\n </div>\n <h1 className=\"retailer-details__name\">\n <Text field={RetailerName} />\n </h1>\n {RetailerDescription &&\n RetailerDescription.value &&\n <div className=\"retailer-details__description\">\n <RichText field={RetailerDescription} />\n </div>\n }\n {this.renderSocialLink()}\n </div>\n <div className=\"retailer-details__info col col-12 col-md-5 col-lg-4\">\n <div className=\"retailer-details__info--list\">\n <div className=\"retailer-details__info--list__item\">\n {this.renderOpeningHours()}\n </div>\n {this.renderActions()}\n </div>\n {this.renderRatings()}\n {this.renderSocialLink()}\n </div>\n </div>\n {((RetailerName && RetailerName.value && StoreLocation && StoreLocation.value)\n || (RetailerName && RetailerName.value && BestParking && BestParking.value)) &&\n <div className=\"retailer-details__map--info\">\n <div className=\"row\">\n <div className=\"col col-12 col-lg-8\">\n <div className=\"retailer-details__map--location\">\n <div className=\"retailer-details__map--location__logo\">\n {this.renderLogo(Logo, RetailerName)}\n <i className=\"icon icon-location\"></i>\n </div>\n {(RetailerName && RetailerName.value ||\n StoreLocation && StoreLocation.value) &&\n <div className=\"retailer-details__map--location__details\">\n {RetailerName && RetailerName.value &&\n <span className=\"retailer-details__map--location__details--name\">\n <Text field={RetailerName} />\n {\": \"}\n </span>\n }\n {StoreLocation && StoreLocation.value &&\n <span className=\"retailer-details__map--location__details--loc\">\n <Text field={StoreLocation} />\n </span>\n }\n </div>\n }\n </div>\n {BestParking &&\n BestParking.value &&\n <div className=\"retailer-details__map--parking\">\n <div className=\"retailer-details__map--parking__icon\" style={{ borderColor: parkColour, backgroundColor: parkColour }}>\n <div className=\"retailer-details__map--parking__icon-border\">\n <div className=\"retailer-details__map--parking__icon-text\">{parkText}</div>\n </div>\n </div>\n <div className=\"retailer-details__map--parking__details\">\n\n <span className=\"retailer-details__map--parking__details--best\">\n {BestParkingLabel && BestParkingLabel.value ?\n <Text field={BestParkingLabel} />\n : \"Best parking:\"\n }\n {\" \"}\n </span>\n <span className=\"retailer-details__map--parking__details--location\">\n <Text field={BestParking} />\n </span>\n {ParkingAvailable &&\n ParkingAvailable.value &&\n <span className=\"retailer-details__map--parking__details--available\">\n <Text field={ParkingAvailable} />\n {\" car spots available\"}\n </span>\n }\n </div>\n </div>\n }\n </div>\n <div className=\"col col-12 col-lg-4\">\n <div className=\"retailer-details__map--link-container\">\n {StoreLocationLink &&\n StoreLocationLink.value &&\n StoreLocationLink.value.href &&\n <div className={`retailer-details__map--link is-centre-map ${ParkingPageLink && ParkingPageLink.value && ParkingPageLink.value.href ? \"is-half-width\" : \"\"}`}>\n {(LocationMapTargetId && LocationMapTargetId.value) ?\n <a href={StoreLocationLink.value.href +\n \"#/profile?location=\" +\n LocationMapTargetId.value}\n target={StoreLocationLink.value.target} >\n {StoreLocationLink.value.text}\n </a> :\n <Link field={StoreLocationLink} />\n }\n </div>\n }\n\n {ParkingPageLink &&\n ParkingPageLink.value &&\n ParkingPageLink.value.href &&\n <div className={`retailer-details__map--link ${StoreLocationLink && StoreLocationLink.value && StoreLocationLink.value.href ? \"is-half-width\" : \"\"}`}>\n <Link field={ParkingPageLink} />\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n {MapVenue && MapVenue.value &&\n <div className=\"retailer-details__map\">\n <FeatureMapsCentreMap\n mapVenue={MapVenue.value}\n retailerStorefrontMap={true}\n MapDetails= {MapDetails}\n />\n </div>\n }\n\n <div className=\"container\">\n <div className=\"retailer-details__map--link-container is-desktop-hidden\">\n {StoreLocationLink &&\n StoreLocationLink.value &&\n StoreLocationLink.value.href &&\n <div className={`retailer-details__map--link is-centre-map ${ParkingPageLink && ParkingPageLink.value && ParkingPageLink.value.href ? \"is-half-width\" : \"\"}`}>\n {(LocationMapTargetId && LocationMapTargetId.value) ?\n <a href={StoreLocationLink.value.href +\n \"#/profile?location=\" +\n LocationMapTargetId.value}\n target={StoreLocationLink.value.target} >\n {StoreLocationLink.value.text}\n </a> :\n <Link field={StoreLocationLink} />\n }\n </div>\n }\n\n {ParkingPageLink &&\n ParkingPageLink.value &&\n ParkingPageLink.value.href &&\n <div className={`retailer-details__map--link ${StoreLocationLink && StoreLocationLink.value && StoreLocationLink.value.href ? \"is-half-width\" : \"\"}`}>\n <Link field={ParkingPageLink} />\n </div>\n }\n </div>\n {this.renderTags()}\n {this.renderCategoryTags()}\n </div>\n </div>\n </BaseComponent >\n );\n }\n}\n\nexport default RetailerStorefrontRetailerDetails;\n","import React, { Component } from \"react\";\nimport { Image } from \"@sitecore-jss/sitecore-jss-react\";\nimport { Swipeable } from \"react-swipeable\";\n\nconst IMG_WIDTH = \"320px\";\nconst IMG_HEIGHT = \"249px\";\nconst RIGHT = \"-1\";\nconst LEFT = \"+1\";\n\nconst buttonStyles = {\n height: IMG_HEIGHT,\n color: \"lightgrey\",\n fontSize: \"2em\"\n};\n\nclass FeatureStorefrontRetailerImageGallery extends Component {\n constructor(props) {\n super(props);\n this.galleryImages = props.fields.galleryImages;\n this.imageSet1 = \"\";\n this.imageSet2 = \"\";\n this.imageSet3 = \"\";\n this.imageSwipeable = \"\";\n this.swipeable = \"\";\n this.imageFiles = [];\n this.state = {\n imageIdx: 0,\n images: []\n };\n }\n\n componentWillMount() {\n let { galleryImages } = this;\n for (let key in galleryImages) {\n this.imageFiles.push(galleryImages[key].image.value.src);\n }\n this.setState({ images: this.imageFiles });\n }\n\n onSwiped(direction) {\n const change = direction === RIGHT ? RIGHT : LEFT;\n const adjustedIdx = this.state.imageIdx + Number(change);\n\n let newIdx;\n if (adjustedIdx >= this.state.images.length) {\n newIdx = 0;\n } else if (adjustedIdx < 0) {\n newIdx = this.state.images.length - 1;\n } else {\n newIdx = adjustedIdx;\n }\n this.setState({ imageIdx: newIdx });\n }\n\n startFunc = () => {\n let {\n galleryImages,\n imageSet1,\n imageSet2,\n imageSet3,\n imageFiles,\n swipeable\n } = this;\n const { imageIdx = 0 } = this.state;\n \n if (galleryImages && galleryImages.length >= 7) {\n imageSet2 = [];\n imageSet3 = [];\n imageFiles = [];\n for (let key in galleryImages) {\n let { src } = galleryImages[key].image.value;\n imageFiles.push(src);\n if (key == 0) {\n imageSet1 = (\n <Image\n key={`myId-${key}`}\n className={`gallery-image-1`}\n media={galleryImages[key].image}\n />\n );\n } else if (key < 4) {\n imageSet2.push(\n <Image\n key={`myId-${key}`}\n className={`gallery-thumbnail`}\n media={galleryImages[key].image}\n />\n );\n } else if (key < 7) {\n imageSet3.push(\n <Image\n key={`myId-${key}`}\n className={`gallery-thumbnail`}\n media={galleryImages[key].image}\n />\n );\n } else {\n break;\n }\n }\n\n const imageStyles = {\n width: IMG_WIDTH,\n height: IMG_HEIGHT,\n backgroundImage: `url(${imageFiles[imageIdx]})`\n };\n\n swipeable = (\n <div className=\"swipeContainer\">\n <Swipeable\n className=\"swipe\"\n trackMouse\n style={{ touchAction: \"none\" }}\n preventDefaultTouchmoveEvent\n onSwipedLeft={() => this.onSwiped(LEFT)}\n onSwipedRight={() => this.onSwiped(RIGHT)}\n >\n <div style={imageStyles}>\n <button\n onClick={() => this.onSwiped(RIGHT)}\n className=\"hollow float-left\"\n style={buttonStyles}\n >\n ⇦\n </button>\n <button\n onClick={() => this.onSwiped(LEFT)}\n className=\"hollow float-right\"\n style={buttonStyles}\n >\n ⇨\n </button>\n </div>\n </Swipeable>\n </div>\n );\n return (\n <div className=\"gallery-wrapper container-fluid \">\n <div className=\"gallery-banner\" />\n <div className=\"gallery-container-swipeable\">{swipeable}</div>\n <div className=\"gallery-container-normal\">\n {imageSet1}\n <div className=\"gallery-image-sm\">\n {imageSet2}\n <div className=\"w-100 d-none d-md-block\" />\n {imageSet3}\n </div>\n </div>\n </div>\n );\n } else if (galleryImages && galleryImages.length >= 3) {\n imageSet2 = [];\n\n for (let key in galleryImages) {\n if (key < 3) {\n imageSet2.push(\n <Image\n key={`myId-${key}`}\n className={`gallery-image-3`}\n media={galleryImages[key].image}\n />\n );\n }\n }\n\n return (\n <div className=\"gallery-wrapper container-fluid\">\n <div className=\"gallery-banner\" />\n <div className=\"gallery-container-swipeable\">{swipeable}</div>\n <div className=\"gallery-container-normal\">{imageSet2}</div>\n </div>\n );\n } else {\n return \"\";\n }\n };\n //END\n\n render() {\n return <React.Fragment>{this.startFunc()}</React.Fragment>;\n }\n}\n\nexport default FeatureStorefrontRetailerImageGallery;\n","import React, { Fragment } from \"react\";\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\nimport EmailPreference from \"../../../Common/EmailPreference\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport SubscribeForm from \"../../../Common/SubscribeForm/SubscribeForm\";\n\nclass SignUp extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n pageId: \"\",\n dbName: \"\",\n fname: \"\",\n lname: \"\",\n email: \"\",\n postcode: \"\",\n success: false,\n pageLoaded: false,\n fields: [ //form fields validation\n { name: \"fname\", error: false, message: \"\" },\n { name: \"lname\", error: false, message: \"\" },\n { name: \"email\", error: false, message: \"\" },\n { name: \"postcode\", error: false, message: \"\" },\n ]\n ,\n emailPrefResp: { //required field validation\n IsSuccessful: false,\n Message: \"\",\n ApiResponse: null\n },\n submitted: false,\n };\n }\n\n componentDidMount() {\n let contextInfo = window.document.getElementsByName(\"ContextItem\")[0];\n let pageId = contextInfo.value;\n let dbName = contextInfo.dataset.targetDb;\n\n this.setState({\n ...this.state,\n pageId: pageId,\n dbName: dbName,\n pageLoaded: true\n });\n }\n\n componentDidUpdate() {\n\n if (this.state.submitted) {\n const signupWrapper = document.body.querySelector(\".signup\")\n const invalidField = document.body.querySelector(\".box-error\")\n\n if (this.state.success) setTimeout(() => {\n if (signupWrapper) signupWrapper.scrollIntoView()\n }, 250)\n\n if (invalidField) {\n setTimeout(() => {\n invalidField.scrollIntoView()\n }, 250)\n }\n }\n\n }\n\n handlePreferencesResponse = (success, data, submitted) => {\n if (data.ApiResponse === 2 || data.ApiResponse === 5) { //duplicate email\n let fieldArrIndex = data.ApiResponse === 5 ? 3 : 2\n let fieldArr = this.state.fields\n fieldArr[fieldArrIndex].error = true\n fieldArr[fieldArrIndex].message = data.Message\n this.setState({\n ...this.state,\n success,\n submitted,\n emailPrefResp: { ...data },\n fields: fieldArr\n });\n } else {\n this.setState({ ...this.state, success, submitted, emailPrefResp: { ...data }, pageLoaded: success ? false : true })\n }\n }\n\n updateFieldsState = obj => {\n this.setState({ ...this.state, ...obj })\n }\n\n render() {\n const {\n SetSignUpTitle = null,\n SelectCategoriesDescription = null,\n SelectGenderDescription = null,\n PrivacyPolicyText = null,\n SubmitButtonLabel = null,\n Interests = null,\n GenderOptions = null,\n SuccessMessage = null,\n EnableRecaptcha = null,\n PrivateKey = null,\n PublicKey = null,\n FirstNameLabel = null,\n LastNameLabel = null,\n EmailLabel = null,\n PostcodeLabel = null\n } = this.props.fields || {};\n const {\n pageId,\n dbName,\n success,\n emailPrefResp,\n fields,\n pageLoaded,\n email,\n fname,\n lname,\n postcode\n } = this.state || {};\n\n const {\n IsSuccessful,\n Message,\n } = emailPrefResp\n\n const labels = {\n FirstNameLabel,\n LastNameLabel,\n EmailLabel,\n PostcodeLabel\n }\n\n const fieldsStates = { fname, lname, email, postcode }\n let emailPrefMessage = { value: Message }\n\n return (\n <BaseComponent margin=\"standard\">\n <div className={`signup ${success ? \"sucess-update\" : \"\"}`}>\n {\n pageLoaded &&\n <div>\n <div className=\"signup__email-header\"><Text field={SetSignUpTitle} /></div>\n {fields.length &&\n <SubscribeForm\n fields={fields}\n fieldsStates={fieldsStates}\n setFields={this.updateFieldsState}\n fieldsLabels={labels}\n />\n }\n\n <EmailPreference\n PageID={pageId}\n DBName={dbName}\n EmailAddress={email}\n FirstName={fname}\n LastName={lname}\n Postcode={postcode}\n Description={SelectCategoriesDescription}\n ButtonName={(SubmitButtonLabel && SubmitButtonLabel.value) ? SubmitButtonLabel.value : \"Submit\"}\n Interests={Interests}\n GenderDescription={SelectGenderDescription}\n GenderOptions={GenderOptions}\n RadioGroupName={\"signup-Gender\"}\n HideDropdown={false}\n EmailPreferenceResponse={(success, data, submitted) => {\n this.handlePreferencesResponse(success, data, submitted)\n }\n }\n Container={\"signup\"}\n Endpoint={\"signup\"}\n EnableRecaptcha={EnableRecaptcha}\n RecaptchaPublicKey={PublicKey}\n RecaptchaPrivateKey={PrivateKey}\n PrivacyPolicyText={PrivacyPolicyText}\n ValidateFields={fields}\n />\n </div>\n }\n {\n success &&\n <div className=\"signup__message\">\n <Text field={IsSuccessful ? SuccessMessage : emailPrefMessage} />\n </div>\n }\n </div>\n </BaseComponent>\n );\n }\n}\n\nexport default SignUp;\n","import React from \"react\";\r\n\r\nconst DetailsContainer = ({ image, details }) => {\r\n return <div className=\"subscribe-container\">\r\n <div className=\"row\">\r\n <div className=\"col-12 col-md-auto order-12 order-md-1 subscribe-content-wrapper\">\r\n {details}\r\n </div>\r\n <div className=\"col-12 col-md order-1 order-md-12 subscribe-image-wrapper\">\r\n {image}\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n\r\nexport default DetailsContainer","import React from \"react\";\r\n\r\nconst SpecialDetailsContainer = ({ image, details }) => {\r\n return <div className=\"subscribe-special-container\">\r\n <div className=\"subscribe-image\">{image}</div>\r\n <div className=\"subcribe-special-details\">\r\n <div className=\"row no-gutters\">\r\n <div className=\"col-12 col-md-7 col-xl-6 offset-md-4 offset-lg-5\">\r\n {details}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n\r\nexport default SpecialDetailsContainer","import React from \"react\";\r\nimport errorIcon from \"../../../../assets/icons/png/22px/error.png\";\r\nimport confirmedIcon from \"../../../../assets/icons/png/22px/confirmed.png\";\r\nimport { Text, RichText } from \"@sitecore-jss/sitecore-jss-react\";\r\n\r\nconst Details = ({ subscribeProps, state, handleDetailsUpdate, subscribe }) => {\r\n const { SubscribeButton, SubscribeTitle, SubscribeDescription, EmailPlaceholder } = subscribeProps\r\n const { isSpecial, message, error, email } = state\r\n\r\n const handleEmailChange = e => {\r\n let message = \"\";\r\n let error = false;\r\n\r\n handleDetailsUpdate({\r\n formData: {\r\n email: e.target.value\r\n },\r\n message: message,\r\n error: error\r\n })\r\n\r\n };\r\n\r\n return <React.Fragment>\r\n <div className=\"subscribe-header-wrapper\">\r\n <Text field={SubscribeTitle} />\r\n </div>\r\n <div className=\"subscribe-description-wrapper\">\r\n <RichText field={SubscribeDescription} />\r\n </div>\r\n <div className=\"row subscribe\">\r\n <div\r\n className={`col-12 subscribe-email col-md-8 ${isSpecial ? \"col-lg-7 col-xl-8\" : \"\"\r\n }`}\r\n >\r\n <div className=\"form-group\">\r\n <input\r\n type=\"text\"\r\n id=\"subscribeEmail\"\r\n className={\r\n \"form-control form-control-lg\" +\r\n (message ? \" box-message\" : \"\") +\r\n (error ? \" box-error\" : \"\")\r\n }\r\n required\r\n onChange={e => {\r\n handleEmailChange(e);\r\n }}\r\n value={email}\r\n />\r\n <label\r\n className=\"form-control-placeholder\"\r\n htmlFor=\"subscribeEmail\"\r\n >\r\n {EmailPlaceholder && EmailPlaceholder.value}\r\n </label>\r\n {error && (\r\n <img\r\n src={errorIcon}\r\n className=\"notify-indicator\"\r\n alt=\"notify-indicator\"\r\n />\r\n )}\r\n {/* {success && (\r\n <img\r\n src={confirmedIcon}\r\n className=\"notify-indicator\"\r\n alt=\"notify-indicator\"\r\n />\r\n )} */}\r\n {message !== \"\" && (\r\n <label\r\n className={\r\n (message ? \"text-message\" : \"\") +\r\n (error ? \" text-error\" : \"\")\r\n }\r\n >\r\n {message}\r\n </label>\r\n )}\r\n </div>\r\n </div>\r\n <div className=\"col-12 col-md-4\">\r\n <button\r\n className=\"subscribe-button\"\r\n onClick={() => {\r\n subscribe();\r\n }}\r\n >\r\n {SubscribeButton && SubscribeButton.value}\r\n </button>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n}\r\n\r\nexport default Details;","import React from \"react\";\r\nimport defaultImg from \"../../../../assets/img/placeholders/gray.png\";\r\n\r\nconst Image = ({ SubscribeImageUrl }) => {\r\n\r\n if (SubscribeImageUrl && SubscribeImageUrl.value) return (\r\n <img\r\n alt=\"subscribe\"\r\n src={defaultImg}\r\n data-src={SubscribeImageUrl.value}\r\n className=\"lazyload\"\r\n />\r\n )\r\n return \"\"\r\n}\r\n\r\nexport default Image;","import React from \"react\";\r\nimport DetailsContainer from \"./DetailsContainer\";\r\nimport SpecialDetailsContainer from \"./SpecialDetailsContainer\";\r\nimport Details from \"./Details\";\r\nimport Image from \"./Image\";\r\nconst SubscribeContainer = ({ isSpecial, subscribeProps, state, handleDetailsUpdate, subscribe, SubscribeImageUrl }) => {\r\n return (\r\n isSpecial ?\r\n <SpecialDetailsContainer\r\n image={\r\n <Image\r\n SubscribeImageUrl={SubscribeImageUrl}\r\n />\r\n }\r\n details={\r\n <Details\r\n subscribeProps={subscribeProps}\r\n state={state}\r\n handleDetailsUpdate={handleDetailsUpdate}\r\n subscribe={subscribe}\r\n />\r\n }\r\n />\r\n :\r\n <DetailsContainer\r\n image={\r\n <Image\r\n SubscribeImageUrl={SubscribeImageUrl}\r\n />\r\n }\r\n details={\r\n <Details\r\n subscribeProps={subscribeProps}\r\n state={state}\r\n handleDetailsUpdate={handleDetailsUpdate}\r\n subscribe={subscribe}\r\n />\r\n }\r\n />\r\n )\r\n}\r\n\r\nexport default SubscribeContainer","import React from \"react\";\nimport { Text, RichText } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport axios from \"axios\";\nimport { get } from \"lodash\";\nimport EmailPreference from \"../../../Common/EmailPreference\";\nimport SubscribeForm from \"../../../Common/SubscribeForm/SubscribeForm\";\nimport SubscribeContainer from \"./SubscribeContainer\";\n\nclass FeatureSubscribeSubscribe extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n formData: {\n pageId: \"\",\n dbName: \"\",\n fname: \"\",\n lname: \"\",\n postcode: \"\",\n email: \"\",\n fields: [\n { name: \"fname\", error: false, message: \"\" },\n { name: \"lname\", error: false, message: \"\" },\n { name: \"email\", error: false, message: \"\" },\n { name: \"postcode\", error: false, message: \"\" },\n ]\n },\n emailPrefResp: {\n IsSuccessful: false,\n Message: \"\",\n ApiResponse: null\n },\n // email validation\n message: \"\",\n error: false,\n success: false,\n modalOpen: false,\n };\n }\n\n validateFormat = value => {\n let re = new RegExp(\"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\\\.[a-zA-Z0-9-.]+$\");\n return re.test(String(value).toLowerCase());\n };\n\n componentDidMount() {\n let contextInfo = window.document.getElementsByName(\"ContextItem\")[0];\n let pageId = contextInfo.value;\n let dbName = contextInfo.dataset.targetDb;\n\n this.setState({\n ...this.state,\n formData: {\n ...this.state.formData,\n pageId: pageId,\n dbName: dbName,\n email: \"\",\n fname: \"\",\n lname: \"\",\n postcode: \"\",\n }\n });\n }\n\n componentDidUpdate() {\n\n if (this.state.modalOpen) {\n const modalWrapper = document.querySelector('.modal-wrapper')\n if (modalWrapper) {\n setTimeout(() => { modalWrapper.classList.add('modal-active') }, 1000)\n }\n }\n }\n subscribe = async (e) => {\n const url = `/api/sitecore/subscription/getuser`;\n\n const { pageId, dbName, email: emailAddress } = this.state.formData\n\n const data = { pageId, dbName, emailAddress }\n\n if (this.state.formData.email !== \"\") {\n if (!this.validateFormat(this.state.formData.email)) { //validate email\n this.setState({\n ...this.state,\n message: \"Please enter a valid email address\",\n error: true,\n success: false,\n modalOpen: false\n });\n } else {\n let response = await axios({\n method: \"POST\",\n url,\n data\n });\n\n if (response && response.data) {\n\n let success, error, modalOpen = false\n let message = ''\n if (response.data.IsSuccessful) {\n success = true\n modalOpen = true\n }\n else {\n error = true\n message = response.data.Message\n }\n\n this.setState({\n ...this.state,\n message,\n error,\n success,\n modalOpen\n });\n document.getElementsByTagName(\"body\")[0].classList.add(\"modal-open\");\n }\n }\n } else { //fall back\n this.setState({\n ...this.state,\n message: \"Please enter a valid email address\",\n error: true,\n success: false\n });\n }\n }\n\n handleEmailChange = e => {\n let message = \"\";\n let error = false;\n\n if (this.state.error && !this.validateFormat(e.target.value)) {\n message = \"Please enter a valid email address\";\n error = true;\n }\n\n this.setState({\n ...this.state,\n formData: {\n ...this.state.formData,\n email: e.target.value\n },\n message: message,\n error: error\n });\n };\n\n handleDetailsUpdate = obj => {\n this.setState({ ...this.state, ...obj, formData: { ...this.state.formData, ...obj.formData } })\n }\n\n handlePreferencesResponse = (success, data, submitted) => {\n if (data.ApiResponse === 2 || data.ApiResponse === 5) { //duplicate email\n let fieldArrIndex = data.ApiResponse === 5 ? 3 : 2\n let fieldArr = this.state.formData.fields\n fieldArr[fieldArrIndex].error = true\n fieldArr[fieldArrIndex].message = data.Message\n this.setState({\n ...this.state,\n success,\n submitted,\n emailPrefResp: { ...data },\n formData: { ...this.state.formData, fields: fieldArr }\n });\n } else {\n this.setState({\n formData: { ...this.state.formData, email: \"\", fname: \"\", lname: \"\", postcode: \"\" },\n success,\n submitted,\n emailPrefResp:\n { ...data },\n })\n if (success) { //close modal after 1500ms\n const modalWrapper = document.querySelector('.modal-wrapper')\n setTimeout(() => { modalWrapper.classList.remove('modal-active') }, 1000)\n setTimeout(() => {\n this.setState({ modalOpen: false })\n document.getElementsByTagName(\"body\")[0].classList.remove(\"modal-open\");\n }, 1500)\n }\n }\n }\n\n handleOnClose = e => {\n this.setState({\n success: false,\n modalOpen: false,\n formData: {\n ...this.state.formData,\n fname: \"\",\n lname: \"\",\n postcode: \"\",\n fields: [\n { name: \"fname\", error: false, message: \"\" },\n { name: \"lname\", error: false, message: \"\" },\n { name: \"email\", error: false, message: \"\" },\n { name: \"postcode\", error: false, message: \"\" },\n ]\n }\n });\n document.getElementsByTagName(\"body\")[0].classList.remove(\"modal-open\");\n };\n\n updateFieldsState = obj => {\n this.setState({ ...this.state, formData: { ...this.state.formData, ...obj } })\n }\n render() {\n let dataSource = get(this, \"props.rendering.dataSource\", null);\n let isSpecial = false;\n if (!dataSource) {\n return \"\";\n }\n const {\n SubscribeTitle = null,\n SubscribeDescription = null,\n SubscribeButton = null,\n EmailPlaceholder = null,\n SubscribeImageUrl = null,\n EmailPreferenceModalTitle = null,\n EmailPreferenceModalDescription = null,\n EmailPreferenceModalButton = null,\n Interests = null,\n FirstNameLabel = null,\n LastNameLabel = null,\n EmailLabel = null,\n PostcodeLabel = null,\n GenderGroupLabel = null,\n GenderOptions = null,\n Special = null\n } = this.props.fields || {};\n const { pageId, dbName, email, fname, lname, postcode, fields } = this.state.formData || {};\n\n const { message, error, modalOpen } = this.state || {};\n\n const labels = {\n FirstNameLabel,\n LastNameLabel,\n EmailLabel,\n PostcodeLabel\n }\n const fieldStates = { fname, lname, email, postcode }\n\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"d-block d-md-none pt-4\" />\n <div\n className={`subscribe-wrapper ${isSpecial ? \"subscribe-special-wrapper\" : \"\"\n }`}\n >\n <div className=\"container\">\n {/* Subscribe parent */}\n <SubscribeContainer\n isSpecial={Special && Special.value}\n subscribeProps={{ SubscribeButton, SubscribeTitle, SubscribeDescription, EmailPlaceholder }}\n state={{ message, error, isSpecial, email }}\n handleDetailsUpdate={(obj) => this.handleDetailsUpdate(obj)}\n subscribe={this.subscribe}\n SubscribeImageUrl={SubscribeImageUrl}\n />\n {/* Modal */}\n {modalOpen && (\n <div className=\"modal-wrapper\">\n <div className=\"container\">\n <i className=\"icon icon-close\" onClick={this.handleOnClose} />\n {fields.length &&\n <div className=\"modal-subscribe-form\">\n <div className=\"modal-subscribe-form__header\">\n\n <Text field={EmailPreferenceModalTitle} />\n </div>\n <div className=\"modal-subscribe-form-group-container\">\n <SubscribeForm fields={fields} fieldsStates={fieldStates} setFields={this.updateFieldsState} fieldsLabels={labels} />\n\n </div>\n </div>}\n <EmailPreference\n PageID={pageId}\n DBName={dbName}\n EmailAddress={email}\n FirstName={fname}\n LastName={lname}\n Postcode={postcode}\n Description={EmailPreferenceModalDescription}\n ButtonName={\n EmailPreferenceModalButton &&\n EmailPreferenceModalButton.value\n ? EmailPreferenceModalButton.value\n : \"Done\"\n }\n Interests={Interests}\n GenderDescription={GenderGroupLabel}\n GenderOptions={GenderOptions}\n RadioGroupName={\"Subscribe-Gender\"}\n IsModal={true}\n EmailPreferenceResponse={(success, data, submitted) => {\n this.handlePreferencesResponse(success, data, submitted)\n }}\n Container={'subscribe-wrapper'}\n Endpoint={'signup-subscribe'}\n />\n </div>\n </div>\n )}\n </div>\n </div>\n </BaseComponent>\n );\n }\n}\nexport default FeatureSubscribeSubscribe;","import React, { Component } from \"react\";\nimport { Text } from \"@sitecore-jss/sitecore-jss-react\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport axios from \"axios\";\n\nclass FeatureSubscribeUnsubscribe extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showTextarea: false,\n pageId: \"\",\n dbName: \"\",\n emailAddress: \"\",\n selectedOption: null,\n textArea: null,\n message: null,\n success: false,\n disabled: false\n };\n }\n\n onRadioButtonChange = event => {\n const value = event.target.value;\n this.setState({\n selectedOption: value,\n showTextarea: value.toLowerCase().indexOf(\"other\") !== -1 ? true : false\n });\n };\n\n onTextAreaChange = event => {\n const value = event.target.value;\n this.setState({\n textArea: value\n });\n };\n\n componentDidMount() {\n let contextInfo = window.document.getElementsByName(\"ContextItem\")[0];\n let pageId = contextInfo.value;\n let dbName = contextInfo.dataset.targetDb;\n this.setState({\n pageId,\n dbName,\n emailAddress: this.getUrlParameter(\"email\")\n });\n }\n\n getUrlParameter = name => {\n var regex = new RegExp(\"[\\\\?&]\" + name + \"=([^&#]*)\");\n var results = regex.exec(window.location.search);\n return results === null\n ? \"\"\n : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\n };\n\n submitForm = async () => {\n const {\n pageId,\n dbName,\n selectedOption,\n textArea,\n emailAddress\n } = this.state;\n const { SuccessMessage } = this.props.fields;\n const url = `/api/sitecore/subscription/unsubscribe`;\n\n this.setState({ disabled: true });\n\n let response = await axios({\n method: \"POST\",\n url,\n data: {\n pageId,\n dbName,\n emailAddress,\n unsubscribeReason: selectedOption,\n textArea\n }\n });\n\n if (response && response.data) {\n if (response.data.IsSuccessful) {\n this.setState({\n message:\n SuccessMessage && SuccessMessage.value\n ? SuccessMessage.value\n : response.data.Message,\n success: true\n });\n }\n }\n };\n\n render() {\n const {\n UnsubscribeTitle,\n ReasonTitle,\n UnsubscribeReasonOptions,\n RichtextPlaceholder,\n UnsubscribeButtonLabel\n } = this.props.fields;\n let {\n showTextarea,\n selectedOption,\n message,\n success,\n disabled\n } = this.state;\n return (\n <BaseComponent margin=\"standard\">\n <div className=\"unsubscribe-wrapper\">\n {success && message ? (\n <div className=\"unsubscribe-subheading\">\n <div className=\"unsubscribe-border\">{message}</div>\n </div>\n ) : (\n <React.Fragment>\n <div className=\"unsubscribe-subheading\">\n <Text field={UnsubscribeTitle} />\n </div>\n <div className=\"unsubscribe-form\">\n <div className=\"unsubscribe-form-title\">\n <Text field={ReasonTitle} />\n </div>\n <div className=\"unsubscribe-form-list\">\n {UnsubscribeReasonOptions && UnsubscribeReasonOptions.length\n ? UnsubscribeReasonOptions.map((item, index) => {\n const value = item.fields.Text.value;\n return (\n <div\n className=\"form-group\"\n key={`unsubscribe-option-${index}`}\n >\n <label>\n <input\n type=\"radio\"\n className=\"\"\n id={index}\n name=\"unsubscribe-option\"\n value={value}\n checked={selectedOption === value}\n onChange={this.onRadioButtonChange}\n disabled={disabled}\n />\n <span>{value}</span>\n </label>\n </div>\n );\n })\n : \"\"}\n </div>\n {showTextarea && (\n <div className=\"unsubscribe-form-input\">\n <textarea\n placeholder={RichtextPlaceholder.value}\n onChange={this.onTextAreaChange}\n disabled={disabled}\n />\n </div>\n )}\n <div className=\"unsubscribe-form-button\">\n <button\n className=\"unsubscribe-button btn primary-btn\"\n onClick={this.submitForm}\n disabled={selectedOption ? false : true}\n >\n <Text field={UnsubscribeButtonLabel} />\n </button>\n </div>\n </div>\n </React.Fragment>\n )}\n </div>\n </BaseComponent>\n );\n }\n}\n\nexport default FeatureSubscribeUnsubscribe;\n","import React from \"react\";\nimport { Text, RichText } from \"@sitecore-jss/sitecore-jss-react\";\nimport EmailPreference from \"../../../Common/EmailPreference\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\n\nclass UpdatePreferences extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n pageId: \"\",\n dbName: \"\",\n success: false,\n pageLoaded: false,\n };\n }\n\n componentDidMount() {\n let contextInfo = window.document.getElementsByName(\"ContextItem\")[0];\n let pageId = contextInfo.value;\n let dbName = contextInfo.dataset.targetDb;\n this.setState({\n ...this.state,\n pageId: pageId,\n dbName: dbName,\n pageLoaded: true\n });\n }\n\n componentDidUpdate() {\n if (this.state.success) {\n const updatePreferencesWrapper = document.body.querySelector('.update-preferences')\n setTimeout(() => {\n if (updatePreferencesWrapper) updatePreferencesWrapper.scrollIntoView()\n }, 250)\n }\n\n }\n\n handlePreferencesResponse = (value) => {\n this.setState({ ...value, pageLoaded: value.success ? false : true });\n }\n\n render() {\n const {\n SetPreferencesTitle = null,\n EmailPlaceholder = null,\n EmailAddress = null,\n SelectCategoriesTitle = null,\n SelectCategoriesDescription = null,\n SelectGenderDescription = null,\n PrivacyPolicyText = null,\n SubmitButtonLabel = null,\n Interests = null,\n GenderOptions = null,\n SuccessMessage = null\n } = this.props.fields || {};\n const {\n pageId,\n dbName,\n success,\n pageLoaded\n } = this.state || {};\n return (\n <BaseComponent margin=\"standard\">\n <div className={`update-preferences ${success ? \"sucess-update\" : \"\"}`}>\n {\n pageLoaded &&\n <div>\n <div className=\"update-preferences__email-header\"><Text field={SetPreferencesTitle} /></div>\n <div className=\"form-group form-single-line\">\n <label>{EmailPlaceholder && EmailPlaceholder.value ? EmailPlaceholder.value : \"Email\"}</label>\n <input type=\"text\" value={EmailAddress && EmailAddress.value ? EmailAddress.value : \"\"} readOnly />\n </div>\n <EmailPreference\n PageID={pageId}\n DBName={dbName}\n EmailAddress={EmailAddress && EmailAddress.value ? EmailAddress.value : \"\"}\n Title={SelectCategoriesTitle}\n Description={SelectCategoriesDescription}\n ButtonName={(SubmitButtonLabel && SubmitButtonLabel.value) ? SubmitButtonLabel.value : \"Submit\"}\n Interests={Interests}\n GenderDescription={SelectGenderDescription}\n GenderOptions={GenderOptions}\n RadioGroupName={\"Update-Preferences-Gender\"}\n HideDropdown={true}\n EmailPreferenceResponse={(success) =>\n this.handlePreferencesResponse({ success })\n }\n Endpoint={\"updatepreference\"}\n />\n <div className=\"update-preferences__button-description\"><RichText field={PrivacyPolicyText} /></div>\n </div>\n }\n {\n success &&\n <div className=\"update-preferences__message\"><Text field={SuccessMessage} /></div>\n }\n </div>\n </BaseComponent>\n );\n }\n}\n\nexport default UpdatePreferences;\n","export const Action_Constants = {\n show: \"{AAE07A52-46A4-49EF-98B0-C2595BAC2382}\",\n hide: \"{7F58C8DD-D7C0-4FB7-BB44-8EC6B5E1C3D9}\",\n enable: \"{5744A87E-E32C-42CC-862F-96842A0202BB}\",\n disable: \"{C698C993-549E-486A-A09C-BB8D830DA958}\",\n}\n\nexport const MatchType_Constants = {\n any: \"{365C94DA-C1CD-4783-A91D-0D17A16C7117}\",\n all: \"{4E50C172-7EA6-4989-82C3-75F24F80EF72}\",\n}\n\nexport const Operator_Constants = {\n is_equal_To: \"{1D38B217-A2EE-4E7B-B6ED-13E751462FEB}\",\n is_not_equal_to: \"{49F47E77-E8C5-46F9-BF39-78D6B0D40B48}\",\n contains: \"{BF8935A6-1976-43A0-ABA5-D0BC128A76EA}\",\n does_not_contain: \"{45AAB0FB-775B-40F5-B3B8-7CAE3ABBF643}\",\n starts_with: \"{FD10F291-3C2E-4AE7-8A67-2F8271CB3DF2}\",\n does_not_start_with: \"{6B92597D-F2E0-47D3-A40D-59AFB37EEDE5}\",\n ends_with: \"{D375ED5B-E156-4A2B-9F91-DFD5B03F0D78}\",\n does_not_end_with: \"{F3AC7A1A-3458-4385-BB65-860315313DB3}\",\n is_greater_than: \"{61FF63A0-375C-47BD-9986-1F81BD12BBBB}\",\n is_greater_than_or_equal_to: \"{062C6ED9-EA6E-4A88-AE54-C88E2147971D}\",\n is_less_than: \"{8FE41E53-AD87-4D24-B50F-EA0F6BDF739F}\",\n is_less_than_or_equal_to: \"{88AC1C6B-BAFE-40A7-BB75-E304C8EC29DD}\",\n}\n\nexport const FieldTypes_Constants = {\n RECAPTCHA: \"{E383BDE2-BC88-4278-83EF-832A15C9E94A}\"\n}","/*\n** Source Code: https://www.codehousegroup.com/insight-and-inspiration/tech-stream/sitecore-forms-and-jss-conditional-logic-in-react\n** Author: Aleksandar Kisimov\n*/\nimport { Action_Constants, MatchType_Constants, Operator_Constants } from \"../Constants\";\n\nconst handleActionType = (actionType, value) => {\n const actions = {\n [Action_Constants[\"show\"]]: () => {\n return !value;\n },\n [Action_Constants[\"hide\"]]: () => {\n return value;\n },\n [Action_Constants[\"enable\"]]: () => {\n return !value;\n },\n [Action_Constants[\"disable\"]]: () => {\n return value;\n }\n }\n\n return actions[actionType]();\n}\n\nconst validate = (operator, value, valueAgainst, isListBoxField) => {\n const operators = {\n [Operator_Constants[\"contains\"]]: () => {\n const regex = RegExp(`${value}`, \"g\");\n return regex.test(valueAgainst);\n },\n [Operator_Constants[\"does_not_contain\"]]: () => {\n const regex = RegExp(`${value}`, \"g\");\n return !(regex.test(valueAgainst));\n },\n [Operator_Constants[\"starts_with\"]]: () => {\n // const regex = RegExp(`^${valueAgainst}`);\n // return regex.test(value);\n return value.startsWith(valueAgainst);\n },\n [Operator_Constants[\"does_not_start_with\"]]: () => {\n // const regex = RegExp(`^${valueAgainst}`);\n // return !(regex.test(value));\n return !value.startsWith(valueAgainst);\n },\n [Operator_Constants[\"ends_with\"]]: () => {\n // const regex = RegExp(`${valueAgainst}$`);\n // return regex.test(value);\n return value.endsWith(valueAgainst);\n },\n [Operator_Constants[\"does_not_end_with\"]]: () => {\n // const regex = RegExp(`${valueAgainst}$`);\n // return !(regex.test(value));\n return !value.endsWith(valueAgainst);\n },\n [Operator_Constants[\"is_equal_To\"]]: () => {\n let result;\n if (isListBoxField) {\n const regex = RegExp(`${value}`, \"g\");\n result = regex.test(valueAgainst);\n } else {\n result = (value === valueAgainst);\n }\n return result;\n },\n [Operator_Constants[\"is_not_equal_to\"]]: () => {\n let result;\n if (isListBoxField) {\n const regex = RegExp(`${value}`, \"g\");\n result = !(regex.test(valueAgainst));\n } else {\n result = (value !== valueAgainst);\n }\n return result;\n },\n [Operator_Constants[\"is_greater_than\"]]: () => {\n return value > valueAgainst;\n },\n [Operator_Constants[\"is_greater_than_or_equal_to\"]]: () => {\n return value >= valueAgainst;\n },\n [Operator_Constants[\"is_less_than\"]]: () => {\n return value < valueAgainst;\n },\n [Operator_Constants[\"is_less_than_or_equal_to\"]]: () => {\n return value <= valueAgainst;\n }\n };\n\n if (typeof operators[operator] === 'undefined') {\n return false;\n }\n\n return operators[operator]();\n};\n\nconst getValidation = (elemValue, item, isListBoxField) => {\n let shouldHide;\n\n for (let i = 0; i < item.conditions.length; i += 1) {\n const value = item.conditions[i].value.toString().toLowerCase(),\n operator = item.conditions[i].operatorId,\n valueAgainst = elemValue.toString().toLowerCase();\n\n shouldHide = validate(operator, value, valueAgainst, isListBoxField);\n\n if (shouldHide) {\n break;\n }\n }\n let result = shouldHide;\n return handleActionType(item.actions[0].actionTypeId, result);\n};\n\n// Manual Trigger Event\nconst triggerEvent = (element, event) => {\n var evt;\n if (document.createEvent) {\n evt = document.createEvent(\"HTMLEvents\");\n evt.initEvent(event, true, true);\n evt.eventName = event;\n element.dispatchEvent(evt);\n } else {\n evt = document.createEventObject();\n evt.eventName = event;\n evt.eventType = event;\n element.fireEvent(\"on\" + evt.eventType, evt);\n }\n}\nexport const hideElement = (elemValue, fieldConditions, isListBoxField) => {\n setTimeout(() => {\n let shouldHide;\n for (let i = 0; i < fieldConditions.length; i += 1) {\n shouldHide = getValidation(elemValue, fieldConditions[i], isListBoxField);\n let actionsList = fieldConditions[i].actions;\n for (let j = 0; j < actionsList.length; j += 1) {\n let fieldId = actionsList[j].fieldId;\n let elemfieldId = document.querySelector('[data-fieldkey = \"' + fieldId + '\"]');\n let sectionField = \"\";\n let fieldList = \"\";\n if (elemfieldId) {\n if (shouldHide) {\n elemfieldId.classList.add(\"is-hidden\");\n elemfieldId.classList.remove(\"is-invalid\");\n elemfieldId.classList.remove(\"is-to-validate\");\n sectionField = elemfieldId.querySelector(\"fieldset\");\n if (sectionField) {\n fieldList = sectionField.querySelectorAll(\".form-group\");\n if (fieldList && fieldList.length > 0) {\n Array.prototype.slice.call(fieldList).map((elem, index) => {\n elem.classList.add(\"is-hidden\");\n elem.classList.remove(\"is-invalid\");\n elem.classList.remove(\"is-to-validate\");\n if (/form-single-line/g.test(elem.className)) {\n let inputElem = elem.querySelector(\"input\");\n if (inputElem) {\n inputElem.value = null;\n triggerEvent(inputElem, \"change\");\n }\n }\n if (/form-date/g.test(elem.className)) {\n let inputElem = elem.querySelector(\".react-datepicker-wrapper input\");\n if (inputElem) {\n inputElem.value = null;\n triggerEvent(inputElem, \"change\");\n }\n }\n if (/form-textarea/g.test(elem.className)) {\n let textArea = elem.querySelector(\"textarea\");\n if (textArea) {\n textArea.value = null;\n triggerEvent(textArea, \"change\");\n }\n }\n if (/form-checkbox-only/g.test(elem.className)) {\n let inputElem = elem.querySelector(\"input\");\n if (inputElem) {\n if (inputElem.checked) {\n inputElem.click();\n }\n }\n }\n if (/form-checkboxlist/g.test(elem.className)) {\n let inputElem = elem.querySelectorAll(\"input\");\n Array.prototype.slice.call(inputElem).map((elem, index) => {\n if (elem) {\n if (elem.checked) {\n elem.click();\n }\n }\n });\n }\n if (/form-radiobutton/g.test(elem.className)) {\n let inputElem = elem.querySelectorAll(\"input\");\n Array.prototype.slice.call(inputElem).map((elem, index) => {\n if (elem.value === \"null\") {\n elem.click();\n }\n });\n }\n if (/form-dropdown/g.test(elem.className)) {\n const hiddenOption = elem.querySelector(\".hidden-option\");\n if (hiddenOption) {\n hiddenOption.click();\n }\n }\n if (/form-listbox/g.test(elem.className)) {\n const selectElem = elem.querySelector(\"select\");\n selectElem.value = null;\n triggerEvent(selectElem, \"change\");\n }\n });\n }\n } else {\n if (/form-single-line/g.test(elemfieldId.className)) {\n let inputElem = elemfieldId.querySelector(\"input\");\n if (inputElem) {\n inputElem.value = null;\n triggerEvent(inputElem, \"change\");\n }\n }\n if (/form-date/g.test(elemfieldId.className)) {\n let inputElem = elemfieldId.querySelector(\".react-datepicker-wrapper input\");\n if (inputElem) {\n inputElem.value = null;\n triggerEvent(inputElem, \"change\");\n }\n }\n if (/form-textarea/g.test(elemfieldId.className)) {\n let textArea = elemfieldId.querySelector(\"textarea\");\n if (textArea) {\n textArea.value = null;\n triggerEvent(textArea, \"change\");\n }\n }\n if (/form-checkbox-only/g.test(elemfieldId.className)) {\n let inputElem = elemfieldId.querySelector(\"input\");\n if (inputElem) {\n if (inputElem.checked) {\n inputElem.click();\n }\n }\n }\n if (/form-checkboxlist/g.test(elemfieldId.className)) {\n let inputElem = elemfieldId.querySelectorAll(\"input\");\n Array.prototype.slice.call(inputElem).map((elem, index) => {\n if (elem) {\n if (elem.checked) {\n elem.click();\n }\n }\n });\n }\n if (/form-radiobutton/g.test(elemfieldId.className)) {\n let inputElem = elemfieldId.querySelectorAll(\"input\");\n Array.prototype.slice.call(inputElem).map((elem, index) => {\n if (elem.value === \"null\") {\n elem.click();\n }\n });\n }\n if (/form-dropdown/g.test(elemfieldId.className)) {\n const hiddenOption = elemfieldId.querySelector(\".hidden-option\");\n if (hiddenOption) {\n hiddenOption.click();\n }\n }\n if (/form-listbox/g.test(elemfieldId.className)) {\n const selectElem = elemfieldId.querySelector(\"select\");\n selectElem.value = null;\n triggerEvent(selectElem, \"change\");\n }\n }\n } else {\n elemfieldId.classList.remove(\"is-hidden\");\n elemfieldId.classList.add(\"is-to-validate\");\n\n sectionField = elemfieldId.querySelector(\"fieldset\");\n if (sectionField) {\n fieldList = sectionField.querySelectorAll(\".form-group\");\n if (fieldList && fieldList.length > 0) {\n Array.prototype.slice.call(fieldList).map((elem, index) => {\n elem.classList.remove(\"is-hidden\");\n elem.classList.add(\"is-to-validate\");\n\n if (/form-checkbox-only/g.test(elem.className)) {\n let hyperlinkLabel = elem.querySelector(\".hyperlink-container label\");\n let labelElem = elem.querySelector(\"label\");\n let labelHeight = hyperlinkLabel.clientHeight;\n labelElem.style.height = labelHeight + \"px\";\n }\n \n if (/form-checkboxlist/g.test(elem.className)) {\n let hyperlinkContainer = elem.querySelector(\".hyperlink-container\");\n let checkboxLabel;\n if (hyperlinkContainer) {\n checkboxLabel = hyperlinkContainer.querySelectorAll(\"label\");\n }\n \n if (checkboxLabel) {\n Array.prototype.slice.call(checkboxLabel).map((checkboxLabel, index) => {\n let checkboxLabelHeight = checkboxLabel.clientHeight;\n elem.querySelectorAll(\"label\")[index + 1].style.maxHeight = checkboxLabelHeight + \"px\";\n })\n }\n }\n });\n }\n } else {\n if (/form-checkbox-only/g.test(elemfieldId.className)) {\n let hyperlinkLabel = elemfieldId.querySelector(\".hyperlink-container label\");\n let labelElem = elemfieldId.querySelector(\"label\");\n let labelHeight = hyperlinkLabel.clientHeight;\n labelElem.style.height = labelHeight + \"px\";\n }\n\n if (/form-checkboxlist/g.test(elemfieldId.className)) {\n let hyperlinkContainer = elemfieldId.querySelector(\".hyperlink-container\");\n let checkboxLabel;\n if (hyperlinkContainer) {\n checkboxLabel = hyperlinkContainer.querySelectorAll(\"label\");\n }\n \n if (checkboxLabel) {\n Array.prototype.slice.call(checkboxLabel).map((checkboxLabel, index) => {\n let checkboxLabelHeight = checkboxLabel.clientHeight;\n elemfieldId.querySelectorAll(\"label\")[index + 1].style.maxHeight = checkboxLabelHeight + \"px\";\n })\n }\n }\n }\n }\n }\n }\n }\n return shouldHide;\n }, 250);\n};","import React, { Component } from \"react\";\nimport { FieldTypes } from '@sitecore-jss/sitecore-jss-react-forms';\nimport DatePicker from \"react-datepicker\";\nimport \"react-datepicker/dist/react-datepicker.css\";\nimport * as moment from \"moment\";\nimport ReCAPTCHA from \"react-google-recaptcha\";\nimport TagManager from \"react-gtm-module\";\nimport { hideElement } from \"../ConditionalRendering\";\nimport getAncestorElement from \"../../../../Common/Helper/GetAncestorElement\";\nimport { FieldTypes_Constants } from \"../Constants\";\n\nexport class ConditionalFieldWrapper extends Component {\n constructor(props) {\n super(props);\n this.state = {\n value: '',\n showDroplist: false,\n selectValue: null,\n startDate: null,\n verifiedRecaptcha: false,\n expiredRecaptcha: false,\n load: false,\n recaptchaLoaded: false,\n captchaValue: ''\n };\n }\n\n componentDidMount = () => {\n setTimeout(() => {\n this.setState({ load: true });\n }, 1500);\n if (document) {\n const { field } = this.props;\n if (field.model.fieldTypeItemId === FieldTypes.Button) {\n const formInputWrapper = document.getElementsByClassName(\"custom-form\")[0].querySelectorAll(\".form-group.form-single-line\");\n const formTextareaWrapper = document.getElementsByClassName(\"custom-form\")[0].querySelectorAll(\".form-group.form-textarea\");\n const formDateWrapper = document.getElementsByClassName(\"custom-form\")[0].querySelectorAll(\".form-group.form-date\");\n const formSpan = document.getElementsByClassName(\"custom-form\")[0].querySelectorAll(\"span\");\n const formParagraph = document.getElementsByClassName(\"custom-form\")[0].querySelectorAll(\"p\");\n const formH1 = document.getElementsByClassName(\"custom-form\")[0].querySelectorAll(\"h1\");\n const formH2 = document.getElementsByClassName(\"custom-form\")[0].querySelectorAll(\"h2\");\n const formH3 = document.getElementsByClassName(\"custom-form\")[0].querySelectorAll(\"h3\");\n const formH4 = document.getElementsByClassName(\"custom-form\")[0].querySelectorAll(\"h4\");\n const formH5 = document.getElementsByClassName(\"custom-form\")[0].querySelectorAll(\"h5\");\n const formH6 = document.getElementsByClassName(\"custom-form\")[0].querySelectorAll(\"h6\");\n const formHyperlink = document.getElementsByClassName(\"custom-form\")[0].querySelectorAll(\".has-hyperlink\");\n const checkboxlist = document.getElementsByClassName(\"custom-form\")[0].querySelectorAll(\".form-checkboxlist\");\n const listboxWrapper = document.getElementsByClassName(\"custom-form\")[0].querySelectorAll(\".form-listbox\");\n\n if (formInputWrapper) {\n Array.prototype.slice.call(formInputWrapper).map((formGroups, index) => {\n const inputElem = formGroups.querySelector(\"input\");\n if (inputElem.type === \"email\") {\n inputElem.type = \"text\";\n }\n\n this.addEvent(inputElem, \"focus\", this.handleOnInputFocus);\n this.addEvent(inputElem, \"blur\", this.handleOnInputBlur, true);\n this.addEvent(inputElem, \"keyup\", this.handleOnInputChange);\n this.addEvent(inputElem, \"change\", this.handleOnInputChange);\n })\n }\n if (formDateWrapper) {\n Array.prototype.slice.call(formDateWrapper).map((formGroups, index) => {\n const inputElem = formGroups.querySelector(\"input\");\n this.addEvent(inputElem, \"change\", this.handleConditionOnChangeDate);\n })\n }\n if (formTextareaWrapper) {\n Array.prototype.slice.call(formTextareaWrapper).map((formGroups, index) => {\n const textareaElem = formGroups.querySelector(\"textarea\");\n\n this.addEvent(textareaElem, \"blur\", this.handleOnInputBlur, true);\n this.addEvent(textareaElem, \"keyup\", this.handleOnInputChange);\n this.addEvent(textareaElem, \"change\", this.handleOnInputChange);\n })\n }\n if (listboxWrapper) {\n Array.prototype.slice.call(listboxWrapper).map((formGroups, index) => {\n const selectElem = formGroups.querySelector(\"select\")\n this.addEvent(selectElem, \"change\", this.handleOnChangeListbox);\n })\n }\n if (formHyperlink) {\n Array.prototype.slice.call(formHyperlink).map((formLinks, index) => {\n let formLabel = formLinks.querySelector(\".hyperlink-container\").querySelectorAll(\"label\");\n if (formLabel) {\n this.formUpdateHyperlink(formLabel);\n\n if (/form-checkbox-only/g.test(formLinks.className)) {\n let checkboxElem = formLinks.querySelector(\"input\");\n this.addEvent(checkboxElem, \"click\", this.handleClickCheckbox);\n let hyperlinkContainer = formLinks.querySelector(\".hyperlink-container\");\n setTimeout(() => {\n let labelHeight = hyperlinkContainer.querySelector(\"label\").clientHeight;\n let hyperlinkText = hyperlinkContainer.textContent;\n let formError = formLinks.querySelector(\".form-control-validation\");\n formLinks.querySelector(\"label\").style.height = labelHeight + \"px\";\n if (formError) {\n formError.innerHTML = hyperlinkText + \" is required.\";\n }\n }, 250)\n }\n\n if (/form-radiobutton/g.test(formLinks.className)) {\n let radioInput = formLinks.querySelectorAll(\"input\");\n for (var i = 0; i < radioInput.length; i++) {\n this.addEvent(radioInput[i], \"click\", this.handleClickRadio);\n }\n if (/form-required/g.test(formLinks.className)) {\n let labelList = formLinks.querySelectorAll(\"label\");\n let counter = (labelList.length - 1) / 2;\n labelList[counter].classList.add(\"hide-label\");\n }\n setTimeout(() => {\n let labelHeight = formLinks.querySelector(\"label\").clientHeight;\n let hyperlinkContainer = formLinks.querySelector(\".hyperlink-container\");\n formLinks.querySelector(\"label\").style.height = labelHeight + \"px\";\n hyperlinkContainer.style.top = (labelHeight + 26) + \"px\";\n }, 500)\n }\n }\n\n })\n }\n if (checkboxlist) {\n Array.prototype.slice.call(checkboxlist).map((checkboxlist, index) => {\n let formLabel = checkboxlist.querySelector(\"label\");\n let hyperlinkContainer = checkboxlist.querySelector(\".hyperlink-container\");\n let checkboxLabel;\n if (hyperlinkContainer) {\n checkboxLabel = hyperlinkContainer.querySelectorAll(\"label\");\n }\n\n if (formLabel) {\n if (formLabel.innerHTML.trim() == \"\") {\n let formError = checkboxlist.querySelector(\".form-control-validation\");\n checkboxlist.classList.add(\"no-title\");\n formLabel.classList.add(\"hide-label\")\n formError.innerHTML = \"Field is required. Please select atleast one of the choices.\";\n } else {\n if (hyperlinkContainer) {\n let formLabelHeight = formLabel.clientHeight + 24;\n hyperlinkContainer.style.top = formLabelHeight + \"px\";\n }\n }\n }\n if (checkboxLabel) {\n Array.prototype.slice.call(checkboxLabel).map((checkboxLabel, index) => {\n let checkboxLabelHeight = checkboxLabel.clientHeight;\n checkboxlist.querySelectorAll(\"label\")[index + 1].style.maxHeight = checkboxLabelHeight + \"px\";\n })\n }\n\n })\n }\n if (formSpan) {\n this.formUpdateHyperlink(formSpan);\n }\n if (formParagraph) {\n this.formUpdateHyperlink(formParagraph);\n }\n if (formH1) {\n this.formUpdateHyperlink(formH1);\n }\n if (formH2) {\n this.formUpdateHyperlink(formH2);\n }\n if (formH3) {\n this.formUpdateHyperlink(formH3);\n }\n if (formH4) {\n this.formUpdateHyperlink(formH4);\n }\n if (formH5) {\n this.formUpdateHyperlink(formH5);\n }\n if (formH6) {\n this.formUpdateHyperlink(formH6);\n }\n }\n this.handleConditionalLogic(field);\n }\n window.addEventListener(\"resize\", this.handleRadioStyle);\n }\n\n handleRadioStyle = () => {\n const formHyperlink = document.getElementsByClassName(\"custom-form\")[0].querySelectorAll(\".has-hyperlink\");\n if (formHyperlink) {\n Array.prototype.slice.call(formHyperlink).map((formLinks, index) => {\n let formLabel = formLinks.querySelector(\".hyperlink-container\").querySelectorAll(\"label\");\n if (formLabel) {\n if (/form-radiobutton/g.test(formLinks.className)) {\n let labelElem = formLinks.querySelector(\"label\");\n let hyperlinkContainer = formLinks.querySelector(\".hyperlink-container\");\n let labelHeight;\n labelElem.style.height = \"auto\";\n labelHeight = labelElem.clientHeight;\n labelElem.style.height = labelHeight + \"px\";\n hyperlinkContainer.style.top = (labelHeight + 26) + \"px\";\n }\n }\n\n })\n }\n }\n\n addEvent = (element, event, task, useCapture) => {\n // For all major browsers, except IE 8 and earlier\n if (element.addEventListener) {\n element.addEventListener(event, task, useCapture);\n // For IE 8 and earlier versions\n } else if (element.attachEvent) {\n element.attachEvent(\"on\" + event, task);\n }\n }\n\n removeEvent = (element, event, task, useCapture) => {\n // For all major browsers, except IE 8 and earlier\n if (element.removeEventListener) {\n element.removeEventListener(event, task, useCapture);\n }\n }\n\n // Manual Trigger Event\n triggerEvent = (element, event) => {\n var evt;\n var evtResult;\n if (document.createEvent) {\n evt = document.createEvent(\"HTMLEvents\");\n evt.initEvent(event, true, true);\n evt.eventName = event;\n evtResult = element.dispatchEvent(evt);\n } else {\n evt = document.createEventObject();\n evt.eventName = event;\n evt.eventType = event;\n evtResult = element.fireEvent(\"on\" + evt.eventType, evt);\n }\n }\n\n handleConditionalLogic = (field) => {\n if (field) {\n let fieldConditions = [];\n if (field.model) {\n fieldConditions = field.model.conditionSettings.fieldConditions;\n }\n if (fieldConditions.length > 0) {\n let fieldKey = field.model.conditionSettings.fieldKey;\n let elemFieldKey = document.querySelector('[data-fieldkey = \"' + fieldKey + '\"]');\n if (elemFieldKey) {\n if (/form-single-line/g.test(elemFieldKey.className)) {\n let inputVal = elemFieldKey.querySelector(\"input\").value;\n hideElement(inputVal, fieldConditions);\n }\n else if (/form-date/g.test(elemFieldKey.className)) {\n let inputVal = elemFieldKey.querySelector(\"input\").value;\n hideElement(inputVal, fieldConditions);\n }\n else if (/form-textarea/g.test(elemFieldKey.className)) {\n let textareaVal = elemFieldKey.querySelector(\"textarea\").value;\n hideElement(textareaVal, fieldConditions);\n }\n else if (/form-dropdown/g.test(elemFieldKey.className)) {\n let dropdownVal = elemFieldKey.querySelector(\".dropdown-btn\").value;\n hideElement(dropdownVal, fieldConditions);\n }\n else if (/form-checkbox-only/g.test(elemFieldKey.className)) {\n let checkboxElem = elemFieldKey.querySelector(\"input\");\n let checkboxVal = checkboxElem.checked;\n this.addEvent(checkboxElem, \"click\", this.handleClickCheckbox);\n hideElement(checkboxVal, fieldConditions);\n }\n else if (/form-radiobutton/g.test(elemFieldKey.className)) {\n let radioInput = elemFieldKey.querySelectorAll(\"input\");\n var radioValue = \"\";\n for (var i = 0; i < radioInput.length; i++) {\n if (radioInput[i].checked) {\n radioValue = radioInput[i].value;\n }\n this.addEvent(radioInput[i], \"click\", this.handleClickRadio);\n }\n hideElement(radioValue, fieldConditions);\n }\n else if (/form-listbox/g.test(elemFieldKey.className)) {\n let listboxSelect = elemFieldKey.querySelector(\"select\");\n hideElement(listboxSelect.value, fieldConditions);\n }\n }\n }\n }\n }\n\n formUpdateHyperlink = (element) => {\n Array.prototype.slice.call(element).map((formElement, index) => {\n let anchor = formElement.querySelector(\"a\");\n if (!anchor) {\n let textContent = formElement.innerHTML;\n if (/\\/a>/g.test(textContent)) {\n while (/\\/a>/g.test(textContent)) {\n textContent = textContent.replace(\"<a\", \"<a\");\n textContent = textContent.replace(\">\", \">\");\n textContent = textContent.replace(\"</a>\", \"</a>\");\n formElement.innerHTML = textContent;\n }\n }\n }\n\n })\n }\n\n handleOnInputFocus = (e) => {\n const inputElem = e.target;\n inputElem.parentElement.classList.add(\"input-focus\");\n }\n\n handleOnInputBlur = (e) => {\n const inputElem = e.target;\n if (inputElem.value) {\n inputElem.parentElement.classList.add(\"input-focus\");\n } else {\n inputElem.parentElement.classList.remove(\"input-focus\");\n }\n }\n\n handleOnInputChange = (event) => {\n let inputElem = event.target;\n let inputValue = inputElem.value;\n let requiredParentElem = getAncestorElement(inputElem, \"form-required\");\n let formElemParent = getAncestorElement(inputElem, \"form-single-line\");\n if (!formElemParent) {\n formElemParent = getAncestorElement(inputElem, \"form-textarea\")\n }\n if (requiredParentElem) {\n if (!(/is-hidden/g.test(requiredParentElem.className))) {\n if (inputValue) {\n requiredParentElem.classList.remove(\"is-invalid\");\n requiredParentElem.classList.remove(\"is-to-validate\");\n } else {\n if (event.keyCode != 9 && event.keyCode != 16) {\n requiredParentElem.classList.add(\"is-invalid\");\n requiredParentElem.classList.add(\"is-to-validate\");\n }\n }\n } else {\n requiredParentElem.classList.remove(\"is-invalid\");\n requiredParentElem.classList.remove(\"is-to-validate\");\n }\n }\n\n let dataCondition = formElemParent.getAttribute(\"data-fieldcondition\");\n if (dataCondition) {\n let fieldCondition = JSON.parse(dataCondition);\n if (fieldCondition.length > 0) {\n hideElement(inputElem.value, fieldCondition);\n }\n }\n }\n\n handleToggle = (e) => {\n e.target.focus();\n this.setState({ showDroplist: !this.state.showDroplist });\n }\n\n handleBlur = (e) => {\n if (this.state.showDroplist) {\n setTimeout(() => {\n this.setState({ showDroplist: !this.state.showDroplist });\n }, 250)\n\n }\n }\n\n onChangeSelection = (event) => {\n let listElem = event.target;\n const formElemParent = getAncestorElement(listElem, \"form-dropdown\");\n\n if (listElem.tagName.toLowerCase() === 'i') {\n listElem = listElem.parentElement;\n }\n\n // Set custom select value\n this.setState({ selectValue: listElem.textContent });\n\n // Get dropdown siblings and remove active class\n var allSiblings = [],\n node = listElem.parentNode.firstChild;\n\n while (node) {\n if (node !== listElem && node.nodeType === Node.ELEMENT_NODE)\n allSiblings.push(node);\n node = node.nextElementSibling || node.nextSibling;\n }\n allSiblings.map((siblings, index) => {\n siblings.classList.remove(\"active\");\n })\n\n // Add dropdown active class\n listElem.classList.add(\"active\");\n\n // Adjust Select value\n const selectElement = formElemParent.querySelector(\"select\");\n selectElement.value = listElem.getAttribute(\"value\");\n this.triggerEvent(selectElement, \"change\");\n this.formValidate(formElemParent);\n let dataCondition = formElemParent.getAttribute(\"data-fieldcondition\");\n if (dataCondition) {\n let fieldCondition = JSON.parse(dataCondition);\n if (fieldCondition.length > 0) {\n hideElement(listElem.textContent, fieldCondition);\n }\n }\n }\n\n handleOnChangeDate = (date, event) => {\n let parentElement = getAncestorElement(event.target, \"form-date\");\n const inputDate = parentElement.querySelector('input[type=\"date\"]');\n\n if (!moment(date)._isValid) {\n inputDate.setAttribute(\"value\", null);\n this.triggerEvent(inputDate, \"change\");\n this.setState({\n startDate: date\n });\n if (!(/is-hidden/g.test(parentElement.className))) {\n parentElement.classList.add(\"is-invalid\");\n parentElement.classList.add(\"is-to-validate\");\n }\n return false;\n }\n let dateMonth = (\"0\" + (date.getMonth() + 1)).slice(-2),\n dateDay = (\"0\" + date.getDate()).slice(-2),\n dateYear = date.getFullYear();\n const newDate = (dateYear) + \"-\" + (dateMonth) + \"-\" + (dateDay);\n this.setState({\n startDate: date\n });\n if (!(/is-hidden/g.test(parentElement.className))) {\n parentElement.classList.remove(\"is-invalid\");\n parentElement.classList.remove(\"is-to-validate\");\n } else {\n parentElement.classList.remove(\"is-invalid\");\n parentElement.classList.remove(\"is-to-validate\");\n }\n inputDate.setAttribute(\"value\", newDate);\n this.triggerEvent(inputDate, \"change\");\n };\n\n handleConditionOnChangeDate = (event) => {\n let dateElem = event.target;\n const formElemParent = getAncestorElement(dateElem, \"form-date\");\n let dataCondition = formElemParent.getAttribute(\"data-fieldcondition\");\n if (dataCondition) {\n let fieldCondition = JSON.parse(dataCondition);\n if (fieldCondition.length > 0) {\n hideElement(dateElem.value, fieldCondition);\n }\n }\n }\n\n handleOnClickCalendar = (e) => {\n const datePickerInput = e.target.nextElementSibling.querySelector(\"input\");\n datePickerInput.click();\n }\n\n handleClickCheckbox = (event) => {\n let checkboxElem = event.target;\n let checboxValue = checkboxElem.checked;\n const formElemParent = getAncestorElement(checkboxElem, \"form-checkbox-only\");\n let dataCondition = formElemParent.getAttribute(\"data-fieldcondition\");\n this.formCheckboxValidate(formElemParent);\n if (dataCondition) {\n let fieldCondition = JSON.parse(dataCondition);\n if (fieldCondition.length > 0) {\n hideElement(checboxValue, fieldCondition);\n }\n }\n }\n\n handleClickRadio = (event) => {\n let radioElem = event.target;\n const formElemParent = getAncestorElement(radioElem, \"form-radiobutton\");\n let dataCondition = formElemParent.getAttribute(\"data-fieldcondition\");\n this.formCheckboxValidate(formElemParent);\n if (dataCondition) {\n let fieldCondition = JSON.parse(dataCondition);\n if (fieldCondition.length > 0) {\n if (radioElem.checked) {\n hideElement(radioElem.value, fieldCondition);\n }\n }\n }\n }\n\n handleOnChangeListbox = (event) => {\n let selectElem = event.target;\n const formElemParent = getAncestorElement(selectElem, \"form-listbox\");\n let listboxOption = selectElem.querySelectorAll(\"option\");\n this.formValidate(formElemParent);\n let dataCondition = formElemParent.getAttribute(\"data-fieldcondition\");\n if (dataCondition) {\n let fieldCondition = JSON.parse(dataCondition);\n if (fieldCondition.length > 0) {\n let selectValue = [];\n for (var i = 0; i < listboxOption.length; i++) {\n if (listboxOption[i].selected) {\n selectValue.push(listboxOption[i].value);\n }\n }\n hideElement(selectValue.toString(), fieldCondition, true);\n }\n }\n }\n\n recaptchaLoaded = () => {\n this.setState({ recaptchaLoaded: true });\n }\n\n recaptchaExpired = () => {\n let recaptchaWrapper = document.querySelector(\".form-recaptcha\");\n let inputCaptcha = recaptchaWrapper.querySelector('input[type=\"hidden\"].fxt-captcha');\n inputCaptcha.value = '';\n this.setState({\n verifiedRecaptcha: false,\n expiredRecaptcha: true\n });\n }\n recaptchaVerifyResponse = (response) => {\n if (response) {\n let formWrapper = document.querySelector(\".custom-form form\");\n let inputCaptcha = formWrapper.querySelector('input[type=\"hidden\"].fxt-captcha');\n inputCaptcha.value = response;\n this.setState({\n verifiedRecaptcha: true,\n expiredRecaptcha: false,\n captchaValue : response\n });\n let submitBtn = formWrapper.querySelector(\"form button.customform-submit-btn\");\n submitBtn.removeAttribute(\"disabled\");\n } else {\n this.setState({ verifiedRecaptcha: false });\n }\n }\n\n // Manual Trigger Form Validation\n formValidate = (formWrapper) => {\n if (formWrapper.length > 0) {\n Array.prototype.slice.call(formWrapper).map((formGroups, index) => {\n let element;\n const inputElem = formGroups.querySelector(\"input\");\n const selectElem = formGroups.querySelector(\"select\");\n const textAreaElem = formGroups.querySelector(\"textarea\");\n\n if (selectElem) {\n element = selectElem;\n let parentElement = getAncestorElement(selectElem, \"form-required\");\n if (parentElement) {\n if (!(/is-hidden/g.test(parentElement.className))) {\n if (selectElem.value) {\n parentElement.classList.remove(\"is-invalid\");\n parentElement.classList.remove(\"is-to-validate\");\n } else {\n parentElement.classList.add(\"is-invalid\");\n parentElement.classList.add(\"is-to-validate\");\n }\n }\n }\n } else if (inputElem) {\n let dateParentWrapper = getAncestorElement(inputElem, \"form-date\");\n if (dateParentWrapper) {\n element = dateParentWrapper.querySelector(\".react-datepicker-wrapper input\");\n } else {\n element = inputElem;\n }\n let parentElement = getAncestorElement(inputElem, \"form-required\");\n if (parentElement) {\n if (!(/is-hidden/g.test(parentElement.className))) {\n if (inputElem.value) {\n parentElement.classList.remove(\"is-invalid\");\n parentElement.classList.remove(\"is-to-validate\");\n } else {\n parentElement.classList.add(\"is-invalid\");\n parentElement.classList.add(\"is-to-validate\");\n }\n }\n }\n } else if (textAreaElem) {\n element = textAreaElem;\n }\n\n if (!element.value) {\n element.value = null;\n }\n this.triggerEvent(element, \"change\");\n })\n } else if (formWrapper && formWrapper.length !== 0) {\n const selectElem = formWrapper.querySelector(\"select\");\n if (selectElem) {\n let parentElement = getAncestorElement(selectElem, \"form-required\");\n if (parentElement) {\n if (!(/is-hidden/g.test(parentElement.className))) {\n if (selectElem.value) {\n parentElement.classList.remove(\"is-invalid\");\n parentElement.classList.remove(\"is-to-validate\");\n } else {\n parentElement.classList.add(\"is-invalid\");\n parentElement.classList.add(\"is-to-validate\");\n }\n }\n }\n }\n }\n }\n\n // Validate checkbox and radio\n formCheckboxValidate = (formWrapper) => {\n if (formWrapper.length > 0) {\n Array.prototype.slice.call(formWrapper).map((formGroups, index) => {\n let inputElem = formGroups.querySelectorAll(\"input\");\n const parentWrapper = formGroups;\n parentWrapper.classList.add(\"no-check\");\n if (inputElem.length > 1) {\n Array.prototype.slice.call(inputElem).map((inputList, index) => {\n if (inputList.checked) {\n parentWrapper.classList.remove(\"no-check\");\n }\n });\n if (/form-required/g.test(formGroups.className)) {\n if (!(/is-hidden/g.test(formGroups.className))) {\n let hasCheck = false;\n let isEmpty = false;\n Array.prototype.slice.call(inputElem).map((inputList, index) => {\n if (inputList.checked) {\n hasCheck = true;\n if (inputList.value === \"\" || inputList.value === \"null\") {\n isEmpty = true;\n }\n }\n });\n if (hasCheck && !isEmpty) {\n formGroups.classList.remove(\"is-invalid\");\n formGroups.classList.remove(\"is-to-validate\");\n } else {\n formGroups.classList.add(\"is-invalid\");\n formGroups.classList.add(\"is-to-validate\");\n }\n }\n }\n } else {\n inputElem = formGroups.querySelector(\"input\");\n if (inputElem.checked) {\n parentWrapper.classList.remove(\"no-check\");\n }\n if (/form-required/g.test(parentWrapper.className)) {\n if (!(/is-hidden/g.test(parentWrapper.className))) {\n if (inputElem.checked) {\n parentWrapper.classList.remove(\"is-invalid\");\n parentWrapper.classList.remove(\"is-to-validate\");\n } else {\n parentWrapper.classList.add(\"is-invalid\");\n parentWrapper.classList.add(\"is-to-validate\");\n }\n }\n }\n }\n })\n }\n else if (formWrapper) {\n let inputElem = formWrapper.querySelectorAll(\"input\");\n if (/form-required/g.test(formWrapper.className)) {\n if (!(/is-hidden/g.test(formWrapper.className))) {\n let hasCheck = false;\n let isEmpty = false;\n if (inputElem.length > 0) {\n Array.prototype.slice.call(inputElem).map((inputList, index) => {\n if (inputList.checked) {\n hasCheck = true;\n if (inputList.value === \"\" || inputList.value === \"null\") {\n isEmpty = true;\n }\n }\n\n });\n }\n if (hasCheck && !isEmpty) {\n formWrapper.classList.remove(\"is-invalid\");\n formWrapper.classList.remove(\"is-to-validate\");\n } else {\n formWrapper.classList.add(\"is-invalid\");\n formWrapper.classList.add(\"is-to-validate\");\n }\n }\n }\n }\n\n }\n\n handleSubmit = (e) => {\n const customParentWrapper = getAncestorElement(e.target, \"custom-form\");\n const formElem = customParentWrapper.querySelector(\"form\");\n const formInputWrapper = customParentWrapper.querySelectorAll(\".form-group.form-single-line\");\n const formDateWrapper = customParentWrapper.querySelectorAll(\".form-group.form-date\");\n const formCheckboxWrapper = customParentWrapper.querySelectorAll(\".form-group.form-checkbox\");\n const formRadioWrapper = customParentWrapper.querySelectorAll(\".form-group.form-radiobutton\");\n const formTextAreaWrapper = customParentWrapper.querySelectorAll(\".form-group.form-textarea\");\n const formDropdownWrapper = customParentWrapper.querySelectorAll(\".form-group.form-dropdown\");\n const formListboxWrapper = customParentWrapper.querySelectorAll(\".form-group.form-listbox\");\n const recaptchaWrapper = customParentWrapper.querySelector(\".form-recaptcha\");\n const submitBtn = formElem.querySelector(\"button.customform-submit-btn\");\n\n if (submitBtn) {\n TagManager.dataLayer({\n dataLayer: {\n customFormSubmitBtnId: submitBtn.id\n },\n dataLayerName: \"dataLayer\"\n });\n }\n\n if (formCheckboxWrapper.length > 0) {\n this.formCheckboxValidate(formCheckboxWrapper);\n }\n if (formRadioWrapper.length > 0) {\n this.formCheckboxValidate(formRadioWrapper);\n }\n\n const noTickWrapper = customParentWrapper.querySelectorAll(\".form-group.is-Required.no-check\");\n const formRequiredWrapper = customParentWrapper.querySelectorAll(\".form-group.form-required\");\n if (recaptchaWrapper || formRequiredWrapper.length > 0) {\n let isVerifiedRecaptcha;\n let invalidForms = customParentWrapper.querySelectorAll(\".form-group.form-required.is-invalid\");\n let toValidateForms = customParentWrapper.querySelectorAll(\".form-group.form-required.is-to-validate\");\n if (recaptchaWrapper) {\n isVerifiedRecaptcha = /\\bverifiedRecaptcha\\b/g.test(recaptchaWrapper.className);\n if(!isVerifiedRecaptcha){\n recaptchaWrapper.classList.add(\"is-required\");\n }\n }\n if ((recaptchaWrapper && isVerifiedRecaptcha && invalidForms.length === 0 && toValidateForms.length === 0) ||\n (noTickWrapper.length > 0 || invalidForms.length === 0 && toValidateForms.length === 0)) {\n this.triggerEvent(formElem, \"submit\");\n } else {\n if (formInputWrapper.length > 0) {\n this.formValidate(formInputWrapper);\n }\n if (formDateWrapper.length > 0) {\n this.formValidate(formDateWrapper);\n }\n if (formTextAreaWrapper.length > 0) {\n this.formValidate(formTextAreaWrapper);\n }\n if (formDropdownWrapper.length > 0) {\n this.formValidate(formDropdownWrapper);\n }\n if (formListboxWrapper.length > 0) {\n this.formValidate(formListboxWrapper);\n }\n }\n } else {\n this.triggerEvent(formElem, \"submit\");\n }\n submitBtn.setAttribute(\"disabled\", \"\");\n \n setTimeout(() => {\n if (!formElem.querySelector(\".custom-form-button\")) {\n customParentWrapper.scrollIntoView();\n\n TagManager.dataLayer({\n dataLayer: {\n event: \"customFormSubmit\"\n },\n dataLayerName: \"dataLayer\"\n });\n }\n }, 5000);\n }\n\n render() {\n const { field } = this.props;\n const { verifiedRecaptcha, expiredRecaptcha, load } = this.state;\n let formDisplay,\n fieldKey,\n fieldCondition,\n fieldConditionData;\n\n if (field.model.fieldTypeItemId !== FieldTypes.TextField) {\n fieldKey = field.model.conditionSettings.fieldKey;\n fieldCondition = field.model.conditionSettings.fieldConditions;\n fieldConditionData = JSON.stringify(fieldCondition);\n\n // Layout for single line, number, telephone, email, password\n if (field.model.fieldTypeItemId === FieldTypes.SingleLineText\n || field.model.fieldTypeItemId === FieldTypes.NumberField\n || field.model.fieldTypeItemId === FieldTypes.Telephone\n || field.model.fieldTypeItemId === FieldTypes.Email\n || field.model.fieldTypeItemId === FieldTypes.Password) {\n let isRequired = false;\n if (/required/g.test(field.model.cssClass)) {\n isRequired = true;\n }\n formDisplay =\n <div className={`form-group form-single-line ${isRequired ? \"form-required is-to-validate\" : \"\"}`}\n data-fieldkey={fieldKey}\n data-fieldcondition={fieldConditionData}>\n {this.props.children}\n {isRequired &&\n <div className=\"form-control-validation-required\">\n <span>\n <i className=\"icon icon-danger\">!</i>\n <label>\n {field.model.title ? field.model.title : field.model.name}{\" is required\"}\n </label>\n </span>\n </div>\n }\n </div>\n }\n // Layout for date\n else if (field.model.fieldTypeItemId === FieldTypes.DateField) {\n fieldKey = field.model.conditionSettings.fieldKey;\n fieldCondition = field.model.conditionSettings.fieldConditions;\n fieldConditionData = JSON.stringify(fieldCondition);\n\n const defaultMinDate = new Date(\"1500-01-01T00:00:00Z\");\n const defaultMaxDate = (moment().add(5, 'years'))._d;\n const yearDropdownNum = moment()._d.getFullYear() - 1500;\n const minDate = field.model.min ? new Date(field.model.min) : defaultMinDate;\n const maxDate = field.model.max ? new Date(field.model.max) : defaultMaxDate;\n const initialDate = field.model.value ? new Date(field.model.value) : null;\n let isRequired = false;\n if (/required/g.test(field.model.cssClass)) {\n isRequired = true;\n }\n formDisplay =\n <div className={`form-group form-date ${isRequired ? \"form-required is-to-validate\" : \"\"}`}\n data-fieldkey={fieldKey}\n data-fieldcondition={fieldConditionData}>\n {this.props.children}\n {isRequired &&\n <div className=\"form-control-validation-required\">\n <span>\n <label>\n {field.model.title ? field.model.title : field.model.name}{\" is required\"}\n </label>\n </span>\n </div>\n }\n <i className=\"icon icon-calendar\" onClick={this.handleOnClickCalendar}></i>\n <DatePicker\n selected={this.state.startDate ? this.state.startDate : initialDate}\n onChange={this.handleOnChangeDate}\n dateFormat=\"dd/MM/yyyy\"\n placeholderText=\"DD/MM/YYYY\"\n minDate={minDate}\n maxDate={maxDate}\n dateFormatCalendar=\"MMMM\"\n showMonthDropdown={true}\n showYearDropdown={true}\n useWeekdaysShort={true}\n yearDropdownItemNumber={yearDropdownNum}\n />\n </div>\n }\n // Layout for checkbox\n else if (field.model.fieldTypeItemId === FieldTypes.Checkbox) {\n fieldKey = field.model.conditionSettings.fieldKey;\n fieldCondition = field.model.conditionSettings.fieldConditions;\n fieldConditionData = JSON.stringify(fieldCondition);\n\n let hyperlinkItems = <label htmlFor={field.valueField.id}>{field.model.title}</label>;\n let isRequired = false;\n if (/required/g.test(field.model.cssClass)) {\n isRequired = true;\n }\n formDisplay =\n <div className={\"form-group form-checkbox form-checkbox-only has-hyperlink \" +\n (field.model.required ? \"is-Required \" : \"\") +\n (isRequired ? \"form-required is-to-validate \" : \"\")\n } data-fieldkey={fieldKey} data-fieldcondition={fieldConditionData}>\n {this.props.children}\n <div className=\"hyperlink-container\">\n {hyperlinkItems}\n </div>\n </div>\n }\n // Layout for checkbox list\n else if (field.model.fieldTypeItemId === FieldTypes.CheckboxList) {\n fieldKey = field.model.conditionSettings.fieldKey;\n fieldCondition = field.model.conditionSettings.fieldConditions;\n fieldConditionData = JSON.stringify(fieldCondition);\n\n let hyperlinkItems = field.model.items.map((itemList, index) => {\n return (\n <label htmlFor={field.valueField.id + index} key={itemList.text + index}>{itemList.text}</label>\n )\n });\n let isRequired = false;\n if (/required/g.test(field.model.cssClass)) {\n isRequired = true;\n }\n formDisplay =\n <div className={\"form-group form-checkbox form-checkboxlist has-hyperlink \" +\n (field.model.required ? \"is-Required \" : \"\") +\n (isRequired ? \"form-required is-to-validate \" : \"\")\n } data-fieldkey={fieldKey} data-fieldcondition={fieldConditionData}>\n {this.props.children}\n <div className=\"hyperlink-container\">\n {hyperlinkItems}\n </div>\n </div>\n }\n // Layout for radio button\n else if (field.model.fieldTypeItemId === FieldTypes.RadioButtonList) {\n fieldKey = field.model.conditionSettings.fieldKey;\n fieldCondition = field.model.conditionSettings.fieldConditions;\n fieldConditionData = JSON.stringify(fieldCondition);\n let hasNullValue = false\n\n let hyperlinkItems = field.model.items.map((itemList, index) => {\n if (itemList && itemList.value === \"null\") {\n hasNullValue = true\n }\n return (\n <label htmlFor={field.valueField.id + index} key={itemList.text + index}>{itemList.text}</label>\n )\n\n });\n\n let isRequired = false;\n if (/required/g.test(field.model.cssClass)) {\n isRequired = true;\n }\n formDisplay =\n <div className={\"form-group form-radiobutton has-hyperlink \" +\n (field.model.required ? \"is-Required \" : \"\") +\n (isRequired ? \"form-required is-to-validate \" : \"\") +\n (hasNullValue ? \"has-null-value\" : \"\") +\n (field.model.title ? \"\" : \"no-label\")\n } data-fieldkey={fieldKey} data-fieldcondition={fieldConditionData}>\n {this.props.children}\n {isRequired &&\n <div className=\"form-control-validation-required\">\n {field.model.title ? field.model.title : field.model.name}{\" is required\"}\n </div>\n }\n <div className=\"hyperlink-container\">\n {hyperlinkItems}\n </div>\n </div>\n }\n // Layout for textarea\n else if (field.model.fieldTypeItemId === FieldTypes.MultipleLineText) {\n fieldKey = field.model.conditionSettings.fieldKey;\n let isRequired = false;\n if (/required/g.test(field.model.cssClass)) {\n isRequired = true;\n }\n formDisplay =\n <div className={`form-group form-textarea ${isRequired ? \"form-required is-to-validate\" : \"\"}`}\n data-fieldkey={fieldKey}\n data-fieldcondition={fieldConditionData}>\n {this.props.children}\n {isRequired &&\n <div className=\"form-control-validation-required\">\n <span>\n <i className=\"icon icon-danger\">!</i>\n <label>\n {field.model.title ? field.model.title : field.model.name}{\" is required\"}\n </label>\n </span>\n </div>\n }\n </div>\n }\n // Layout for dropdown list\n else if (field.model.fieldTypeItemId === FieldTypes.DropdownList) {\n fieldKey = field.model.conditionSettings.fieldKey;\n fieldCondition = field.model.conditionSettings.fieldConditions;\n fieldConditionData = JSON.stringify(fieldCondition);\n const { field: dropdownField = null } = this.props || {};\n let defaultDropdownValue = \"\";\n field.model.items &&\n field.model.items.map((dropdownList, index) => {\n if (dropdownList.selected === true) {\n defaultDropdownValue = dropdownList.text;\n }\n })\n let isRequired = false;\n if (/required/g.test(field.model.cssClass)) {\n isRequired = true;\n }\n formDisplay =\n <div className={`form-group form-dropdown ${isRequired ? \"form-required is-to-validate\" : \"\"}`}\n data-fieldkey={fieldKey}\n data-fieldcondition={fieldConditionData}>\n {this.props.children}\n {isRequired &&\n <div className=\"form-control-validation-required\">\n <span>\n <label>\n {field.model.title ? field.model.title : field.model.name}{\" is required\"}\n </label>\n </span>\n </div>\n }\n <div className=\"form-group custom-dropdown\">\n <div className=\"dropdown-container\">\n <div className={`dropdown-label ${this.state.showDroplist ? \"active\" : \"\"}`}\n onClick={this.handleToggle}\n onBlur={this.handleBlur}\n tabIndex=\"0\"\n >\n <div className={\"dropdown-placeholder \"\n + (defaultDropdownValue ? \"has-default-value \" : \"\")\n + (this.state.selectValue ? \"has-default-value \" : \"\")\n }>\n <div className=\"label\">{dropdownField.model.title}</div>\n <input\n type=\"button\"\n value={(this.state.selectValue ? this.state.selectValue : defaultDropdownValue)}\n className=\"dropdown-btn\"\n />\n </div>\n <i className=\"icon icon-arrow-down\"></i>\n </div>\n <ul className=\"dropdown-list\" hidden={!this.state.showDroplist}>\n {field.model.showEmptyItem &&\n <li className=\"hidden-option\"\n value={\"\"}\n onClick={this.onChangeSelection} >\n <i className=\"icon icon-check\"></i>{\"\"}\n </li>\n }\n {field.model.items &&\n field.model.items.map((dropdownList, index) => {\n return (\n <li className={dropdownList.selected ? \"active\" : \"\"}\n value={dropdownList.value}\n key={dropdownList.value + index}\n onClick={this.onChangeSelection} >\n <i className=\"icon icon-check\"></i>{dropdownList.text}\n </li>\n )\n })}\n </ul>\n </div>\n </div>\n </div>\n }\n //Layout for list box\n else if (field.model.fieldTypeItemId === FieldTypes.ListBox) {\n fieldKey = field.model.conditionSettings.fieldKey;\n fieldCondition = field.model.conditionSettings.fieldConditions;\n fieldConditionData = JSON.stringify(fieldCondition);\n let isRequired = false;\n if (/required/g.test(field.model.cssClass)) {\n isRequired = true;\n }\n formDisplay =\n <div className={`form-group form-listbox ${isRequired ? \"form-required is-to-validate\" : \"\"}`}\n data-fieldkey={fieldKey}\n data-fieldcondition={fieldConditionData}>\n {this.props.children}\n {isRequired &&\n <div className=\"form-control-validation-required\">\n <span>\n <label>\n {field.model.title ? field.model.title : field.model.name}{\" is required\"}\n </label>\n </span>\n </div>\n }\n <div className=\"hint\">\n *Tip: Hold the <b>Ctrl</b> (Windows) or <b>Command</b> (Mac) key down while selecting multiple items.\n </div>\n </div>\n }\n // Layout for recaptcha\n else if (field.model.fieldTypeItemId === FieldTypes_Constants[\"RECAPTCHA\"]) {\n if (load) {\n fieldKey = field.model.conditionSettings.fieldKey; \n let isRequired = field.model.required;\n let recaptchaId = field.valueField.id;\n let recaptchaName = field.valueField.name;\n\n formDisplay =\n <div className={\"form-group form-recaptcha\"\n + (isRequired ? \" form-required\" : \"\")\n + (verifiedRecaptcha ? \" verifiedRecaptcha\" : \" is-invalid\")\n + (expiredRecaptcha ? \" is-required\" : \"\")} \n data-fieldkey={fieldKey} data-fieldcondition=\"\">\n <input type=\"hidden\" id={recaptchaId} name={recaptchaName} class=\"fxt-captcha\" data-val-required=\"Please confirm you are not a robot.\" data-val=\"true\" value={this.state.captchaValue} />\n <ReCAPTCHA\n size=\"normal\"\n sitekey={field.model.captchaPublicKey ? field.model.captchaPublicKey : \"6LeqAfYUAAAAAGK1oZ1NzfVUFeC4kqJOe16XklGg\"}\n onChange={this.recaptchaVerifyResponse}\n onExpired={this.recaptchaExpired}\n asyncScriptOnLoad={this.recaptchaLoaded}\n />\n <div className=\"form-control-validation\">\n <span>\n <label>ReCaptcha is required</label>\n </span>\n </div>\n </div >\n }\n else {\n formDisplay = \"\";\n }\n\n }\n // Layout for button field\n else if (field.model.fieldTypeItemId === FieldTypes.Button) {\n fieldKey = field.model.conditionSettings.fieldKey;\n\n formDisplay =\n <div className={\"custom-form-button\"} data-fieldkey={fieldKey}>\n <button type=\"button\"\n className=\"customform-submit-btn\"\n value={field.model.title ? field.model.title : field.model.name}\n name={field.buttonField.name}\n id={field.buttonField.name}\n onClick={this.handleSubmit} >\n {field.model.title ? field.model.title : field.model.name}\n </button>\n </div >\n }\n // Default layout\n else {\n formDisplay =\n <div className=\"form-group\"\n data-fieldkey={fieldKey}\n >\n {this.props.children}\n </div>\n }\n } else {\n fieldKey = field.model.conditionSettings.fieldKey;\n\n formDisplay =\n <div className=\"form-element\" data-fieldkey={fieldKey}>\n {this.props.children}\n </div >\n }\n\n return (\n formDisplay\n )\n }\n\n};\n\nexport const ErrorComponent = (props) => {\n return (\n <div className=\"invalid-form\">\n {props.formErrors.map((error, index) => (\n <span key={`formError-${index}`}>\n <i className=\"icon icon-danger\">!</i>\n <label>{error}</label>\n </span>\n ))}\n </div>\n )\n};\n\nexport const FieldErrorComponent = (props) => (\n <div className=\"form-control-validation\">\n {props.errors.map((error, index) => (\n <span key={`fieldFormError-${index}`}>\n <i className=\"icon icon-danger\">!</i>\n <label>{error}</label>\n </span>\n ))}\n </div>\n);\n\nexport const CustomFetchForm = (frmData, endpoint) => \n fetch(endpoint, {\n method: 'POST',\n credentials: 'include',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: frmData.toUrlEncodedFormData()\n})\n .then(async response => {\n if (response.status != 200) {\n let indexUrl = endpoint.indexOf(\"/api\");\n let formChecker = document.querySelector(\"form[action=\" + \"'\" + endpoint + \"'\" + \"]\");\n let formChecker2 = document.querySelector(\"form[action=\" + \"'\" + endpoint.substring(indexUrl) + \"'\" + \"]\");\n let formParentWrapper = formChecker || formChecker2;\n if (formParentWrapper) {\n let hasConditionalInvalidField = formParentWrapper.querySelector(\".is-invalid\");\n let hasDefaultInvalidField = formParentWrapper.querySelector(\".form-group label.invalid\");\n let submitBtn = formParentWrapper.querySelector(\"button.customform-submit-btn\");\n \n if (hasConditionalInvalidField && hasDefaultInvalidField) {\n let conditionalTopPosition = hasConditionalInvalidField.getBoundingClientRect().top,\n defaultTopPosition = hasDefaultInvalidField.getBoundingClientRect().top;\n\n if (conditionalTopPosition < defaultTopPosition) {\n hasConditionalInvalidField.scrollIntoView()\n } else {\n hasDefaultInvalidField.scrollIntoView();\n }\n } else if (hasConditionalInvalidField) {\n hasConditionalInvalidField.scrollIntoView()\n } else if (hasDefaultInvalidField) {\n hasDefaultInvalidField.scrollIntoView();\n }\n\n submitBtn.removeAttribute(\"disabled\");\n }\n }\n let jsonResult = await response.json();\n if (jsonResult.success && jsonResult.newTabUrl) {\n window.open(jsonResult.newTabUrl, \"_self\");\n }\n return jsonResult;\n })\n .catch(error => {\n console.log(error);\n return { success: false, error: 'Something went wrong. Error was thrown when submit form' }\n })\n\n// Update Field JSON\nexport const UpdateFieldModel = (fields) => {\n let newField = fields;\n let fieldArray = [];\n\n if (fields.fields[0].fields) {\n fieldArray = fields.fields[0].fields;\n }\n else if (fields.fields) {\n fieldArray = fields.fields;\n }\n\n if (fieldArray.length > 0) {\n fieldArray.map((fieldItem, index) => {\n if (fieldItem.model.fieldTypeItemId === FieldTypes.RadioButtonList) {\n if (/required/g.test(fieldItem.model.cssClass)) {\n let hasAddedArray = false;\n fieldItem.model.items.map((item, index) => {\n const {\n itemId = null\n } = item || {};\n\n if (itemId == (fieldItem.model.name)) {\n hasAddedArray = true;\n }\n })\n if (!hasAddedArray) {\n let addedArray = {\n \"itemId\": fieldItem.model.name,\n \"selected\": false,\n \"text\": \"\",\n \"value\": \"\"\n }\n fieldItem.model.items.push(addedArray);\n }\n }\n }\n else if (fieldItem.model.fieldTypeItemId === FieldTypes.ListBox) {\n if (/required/g.test(fieldItem.model.cssClass)) {\n let hasAddedArray = false;\n fieldItem.model.items.map((item, index) => {\n const {\n itemId = null\n } = item || {};\n\n if (itemId == (fieldItem.model.name)) {\n hasAddedArray = true;\n }\n })\n if (!hasAddedArray) {\n let addedArray = {\n \"itemId\": fieldItem.model.name,\n \"selected\": false,\n \"text\": \"\",\n \"value\": \"\"\n }\n fieldItem.model.items.unshift(addedArray);\n }\n }\n }\n else if (fieldItem.model.fieldTypeItemId === FieldTypes.DropdownList) {\n fieldItem.model.showEmptyItem = true;\n }\n });\n }\n\n return newField;\n}","import { Form } from \"@sitecore-jss/sitecore-jss-react-forms\";\nimport React, { Component } from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport { sitecoreApiHost, sitecoreApiKey } from \"../../../../temp/config\";\nimport BaseComponent from \"../../../Base/BaseComponent\";\nimport {\n ConditionalFieldWrapper,\n CustomFetchForm,\n ErrorComponent,\n FieldErrorComponent,\n UpdateFieldModel\n} from \"./CustomizeForm\";\nimport { withSitecoreContext } from \"@sitecore-jss/sitecore-jss-react\";\n\nclass FoundationFormsForm extends Component {\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n render() {\n const { fields, history, sitecoreContext } = this.props;\n let message = \"\";\n //console.log(sitecoreContext);\n if (sitecoreContext && sitecoreContext.formInfo) {\n const {\n formExpired,\n formExpiredMessage,\n formLimitReached,\n formLimitReachedMessage\n } = sitecoreContext.formInfo;\n if ((formExpired && formLimitReached) || formExpired) {\n message = formExpiredMessage;\n } else if (formLimitReached) {\n message = formLimitReachedMessage;\n }\n }\n return (\n <div className=\"custom-form-container\">\n {fields && (\n <BaseComponent margin=\"standard\">\n <div className=\"custom-form\" id=\"js-custom-form\">\n {message ? (\n <h2>{message}</h2>\n ) : (\n <Form\n form={UpdateFieldModel(fields)}\n sitecoreApiHost={sitecoreApiHost}\n sitecoreApiKey={sitecoreApiKey}\n onRedirect={url => history.push(url)}\n fieldWrapperComponent={ConditionalFieldWrapper}\n errorComponent={ErrorComponent}\n fieldValidationErrorsComponent={FieldErrorComponent}\n formFetcher={CustomFetchForm}\n />\n )}\n </div>\n </BaseComponent>\n )}\n </div>\n );\n }\n}\n\nexport default withSitecoreContext()(withRouter(FoundationFormsForm));\n","import React from \"react\";\nimport { Placeholder } from \"@sitecore-jss/sitecore-jss-react\";\n\nconst FoundationLayoutTwoColumn7030 = props => {\n return (\n <div className=\"container\">\n <div className=\"row\">\n <div className=\"col-12 col-lg-9 col-xl-8 two-column-layout two-column-layout--left\">\n <Placeholder\n name=\"jss-two-column-70-30-left\"\n rendering={props.rendering}\n params={props.params}\n />\n </div>\n <div className=\"col-12 col-lg-3 col-xl-4 two-column-layout two-column-layout--right\">\n <Placeholder\n name=\"jss-two-column-70-30-right\"\n rendering={props.rendering}\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport default FoundationLayoutTwoColumn7030;\n","/* eslint-disable */\n// Do not edit this file, it is auto-generated at build time!\n// See scripts/generate-component-factory.js to modify the generation of this file.\nimport CommonAnimationsRiseAndFade from '../components/Common/Animations/RiseAndFade';\nimport CommonAnimationsSearchSkeleton from '../components/Common/Animations/SearchSkeleton';\nimport CommonHelperGetAncestorElement from '../components/Common/Helper/GetAncestorElement';\nimport CommonTilesFeaturedLifestyle from '../components/Common/Tiles/FeaturedLifestyle';\nimport CommonTilesFeaturedRecipe from '../components/Common/Tiles/FeaturedRecipe';\nimport FeatureBlogBlogDetails from '../components/Feature/Blog/BlogDetails';\nimport FeatureCampaignCampaignDetails from '../components/Feature/Campaign/CampaignDetails';\nimport FeatureCampaignCampaignTitle from '../components/Feature/Campaign/CampaignTitle';\nimport FeatureCategoryRelatedSubcategory from '../components/Feature/Category/RelatedSubcategory';\nimport FeatureCentreServicesCentreServicesHighlight from '../components/Feature/CentreServices/CentreServicesHighlight';\nimport FeatureCentreServicesCentreServicesListInlineImage from '../components/Feature/CentreServices/CentreServicesListInlineImage';\nimport FeatureCentreServicesCentreServicesListLeftImage from '../components/Feature/CentreServices/CentreServicesListLeftImage';\nimport FeatureCentreServicesFeaturedServicesHighlight from '../components/Feature/CentreServices/FeaturedServicesHighlight';\nimport FeatureCinemaNowShowing from '../components/Feature/Cinema/NowShowing';\nimport FeatureConsumerArticleArticleDetails from '../components/Feature/ConsumerArticle/ArticleDetails';\nimport FeatureConsumerHeaderHeader from '../components/Feature/ConsumerHeader/Header';\nimport FeatureConsumerNavigationHeaderSubNav from '../components/Feature/ConsumerNavigation/HeaderSubNav';\nimport FeatureCraftCraftDetails from '../components/Feature/Craft/CraftDetails';\nimport FeatureCraftCraftQuickLinksMenu from '../components/Feature/Craft/CraftQuickLinksMenu';\nimport FeatureFeaturedRetailerFeaturedRetailer from '../components/Feature/FeaturedRetailer/FeaturedRetailer';\nimport FeatureFormsContactUs from '../components/Feature/Forms/ContactUs';\nimport FeatureFormsContactUsInputFields from '../components/Feature/Forms/ContactUsInputFields';\nimport FeatureFormsNewsletter from '../components/Feature/Forms/Newsletter';\nimport FeatureGenericContentAdCampaign from '../components/Feature/GenericContent/AdCampaign';\nimport FeatureGenericContentConsumerFAQ from '../components/Feature/GenericContent/ConsumerFAQ';\nimport FeatureGenericContentConsumerFAQBlock from '../components/Feature/GenericContent/ConsumerFAQBlock';\nimport FeatureGenericContentGeneralNote from '../components/Feature/GenericContent/GeneralNote';\nimport FeatureGenericContentGeneralSection from '../components/Feature/GenericContent/GeneralSection';\nimport FeatureGenericContentGlobalFooter from '../components/Feature/GenericContent/GlobalFooter';\nimport FeatureGenericContentHero from '../components/Feature/GenericContent/Hero';\nimport FeatureGenericContentHeroDescription from '../components/Feature/GenericContent/HeroDescription';\nimport FeatureGenericContentHomepageHero from '../components/Feature/GenericContent/HomepageHero';\nimport FeatureGenericContentHomeQuickLinks from '../components/Feature/GenericContent/HomeQuickLinks';\nimport FeatureGenericContentImageGallery from '../components/Feature/GenericContent/ImageGallery';\nimport FeatureGenericContentImageTextBlock from '../components/Feature/GenericContent/ImageTextBlock';\nimport FeatureGenericContentObjectBlock from '../components/Feature/GenericContent/ObjectBlock';\nimport FeatureGenericContentQuickLinksMenu from '../components/Feature/GenericContent/QuickLinksMenu';\nimport FeatureGenericContentRichText from '../components/Feature/GenericContent/RichText';\nimport FeatureGenericContentServiceQuickLinksMenu from '../components/Feature/GenericContent/ServiceQuickLinksMenu';\nimport FeatureGenericContentTermsAndConditions from '../components/Feature/GenericContent/TermsAndConditions';\nimport FeatureGenericContentTextBlock from '../components/Feature/GenericContent/TextBlock';\nimport FeatureGenericContentTwoColumn7030 from '../components/Feature/GenericContent/TwoColumn-70-30';\nimport FeatureGettingHereGettingHereHeader from '../components/Feature/GettingHere/GettingHereHeader';\nimport FeatureHeaderGenericPageHeader from '../components/Feature/Header/GenericPageHeader';\nimport FeatureHeaderHomePageHeader from '../components/Feature/Header/HomePageHeader';\nimport FeatureHeaderPageHeader from '../components/Feature/Header/PageHeader';\nimport FeatureHeaderWhatsOnListHeader from '../components/Feature/Header/WhatsOnListHeader';\nimport FeatureLayoutInfoLayout from '../components/Feature/Layout/InfoLayout';\nimport FeatureLifestyleFeaturedLifestyle from '../components/Feature/Lifestyle/FeaturedLifestyle';\nimport FeatureLifestyleLifestyleListingFilter from '../components/Feature/Lifestyle/LifestyleListingFilter';\nimport FeatureMapsCentreMap from '../components/Feature/Maps/CentreMap';\nimport FeatureMapsGoogleMap from '../components/Feature/Maps/GoogleMap';\nimport FeatureMetricsPopularTimes from '../components/Feature/Metrics/PopularTimes';\nimport FeatureOpeningHoursCentreOpeningHours from '../components/Feature/OpeningHours/CentreOpeningHours';\nimport FeatureOpeningHoursMajorRetailersAndRestaurantsOpeningHours from '../components/Feature/OpeningHours/MajorRetailersAndRestaurantsOpeningHours';\nimport FeatureOpeningHoursOpeningHoursHeader from '../components/Feature/OpeningHours/OpeningHoursHeader';\nimport FeatureParkingCarPark from '../components/Feature/Parking/CarPark';\nimport FeatureParkingParkingInformation from '../components/Feature/Parking/ParkingInformation';\nimport FeatureParkingParkingRates from '../components/Feature/Parking/ParkingRates';\nimport FeatureParkingValetParking from '../components/Feature/Parking/ValetParking';\nimport FeaturePrecinctsCampaignFeaturedStoreList from '../components/Feature/Precincts/CampaignFeaturedStoreList';\nimport FeaturePrecinctsFeaturedPrecinct from '../components/Feature/Precincts/FeaturedPrecinct';\nimport FeaturePromotionsCampaignFeaturedWhatsOn from '../components/Feature/Promotions/CampaignFeaturedWhatsOn';\nimport FeaturePromotionsCategoryHeader from '../components/Feature/Promotions/CategoryHeader';\nimport FeaturePromotionsCategorySpotlight from '../components/Feature/Promotions/CategorySpotlight';\nimport FeaturePromotionsCategoryWhatsOn from '../components/Feature/Promotions/CategoryWhatsOn';\nimport FeaturePromotionsFeaturedPromotions from '../components/Feature/Promotions/FeaturedPromotions';\nimport FeaturePromotionsHeroPromotion from '../components/Feature/Promotions/HeroPromotion';\nimport FeaturePromotionsPromotionDetails from '../components/Feature/Promotions/PromotionDetails';\nimport FeaturePromotionsPromotionSchedules from '../components/Feature/Promotions/PromotionSchedules';\nimport FeaturePromotionsSimilarPromotions from '../components/Feature/Promotions/SimilarPromotions';\nimport FeaturePromotionsStorefrontWhatsOn from '../components/Feature/Promotions/StorefrontWhatsOn';\nimport FeaturePromotionsWhatsOn from '../components/Feature/Promotions/WhatsOn';\nimport FeaturePromotionsWhatsOnList from '../components/Feature/Promotions/WhatsOnList';\nimport FeatureRecipeFeaturedRecipe from '../components/Feature/Recipe/FeaturedRecipe';\nimport FeatureRecipeRecipeDetails from '../components/Feature/Recipe/RecipeDetails';\nimport FeatureRecipeRecipeListingFilter from '../components/Feature/Recipe/RecipeListingFilter';\nimport FeatureRecipeRecipeQuickLinksMenu from '../components/Feature/Recipe/RecipeQuickLinksMenu';\nimport FeatureSearchCategoryResults from '../components/Feature/Search/CategoryResults';\nimport FeatureSearchSearchBar from '../components/Feature/Search/SearchBar';\nimport FeatureSearchSearchModal from '../components/Feature/Search/SearchModal';\nimport FeatureSearchSiteSearch from '../components/Feature/Search/SiteSearch';\nimport FeatureSearchStoreResults from '../components/Feature/Search/StoreResults';\nimport FeatureSearchWhatsOnResults from '../components/Feature/Search/WhatsOnResults';\nimport FeatureSocialInstagramGallery from '../components/Feature/Social/InstagramGallery';\nimport FeatureStoreDirectoryDirectoryHeader from '../components/Feature/StoreDirectory/DirectoryHeader';\nimport FeatureStoreDirectoryDirectoryList from '../components/Feature/StoreDirectory/DirectoryList';\nimport FeatureStoreDirectoryDirectorySearch from '../components/Feature/StoreDirectory/DirectorySearch';\nimport FeatureStoreDirectoryMiniStoreDirectory from '../components/Feature/StoreDirectory/MiniStoreDirectory';\nimport FeatureStorefrontCategoryDiscoverStores from '../components/Feature/Storefront/CategoryDiscoverStores';\nimport FeatureStorefrontRecommendation from '../components/Feature/Storefront/Recommendation';\nimport FeatureStorefrontRetailerDetails from '../components/Feature/Storefront/RetailerDetails';\nimport FeatureStorefrontRetailerImageGallery from '../components/Feature/Storefront/RetailerImageGallery';\nimport FeatureSubscribeSignUp from '../components/Feature/Subscribe/SignUp';\nimport FeatureSubscribeSubscribe from '../components/Feature/Subscribe/Subscribe';\nimport FeatureSubscribeUnsubscribe from '../components/Feature/Subscribe/Unsubscribe';\nimport FeatureSubscribeUpdatePreferences from '../components/Feature/Subscribe/UpdatePreferences';\nimport FoundationFormsForm from '../components/Foundation/Forms/Form';\nimport FoundationLayoutTwoColumn7030 from '../components/Foundation/Layout/TwoColumn-70-30';\n\nconst components = new Map();\ncomponents.set('Common-Animations-RiseAndFade', CommonAnimationsRiseAndFade);\ncomponents.set('Common-Animations-SearchSkeleton', CommonAnimationsSearchSkeleton);\ncomponents.set('Common-Helper-GetAncestorElement', CommonHelperGetAncestorElement);\ncomponents.set('Common-Tiles-FeaturedLifestyle', CommonTilesFeaturedLifestyle);\ncomponents.set('Common-Tiles-FeaturedRecipe', CommonTilesFeaturedRecipe);\ncomponents.set('Feature-Blog-BlogDetails', FeatureBlogBlogDetails);\ncomponents.set('Feature-Campaign-CampaignDetails', FeatureCampaignCampaignDetails);\ncomponents.set('Feature-Campaign-CampaignTitle', FeatureCampaignCampaignTitle);\ncomponents.set('Feature-Category-RelatedSubcategory', FeatureCategoryRelatedSubcategory);\ncomponents.set('Feature-CentreServices-CentreServicesHighlight', FeatureCentreServicesCentreServicesHighlight);\ncomponents.set('Feature-CentreServices-CentreServicesListInlineImage', FeatureCentreServicesCentreServicesListInlineImage);\ncomponents.set('Feature-CentreServices-CentreServicesListLeftImage', FeatureCentreServicesCentreServicesListLeftImage);\ncomponents.set('Feature-CentreServices-FeaturedServicesHighlight', FeatureCentreServicesFeaturedServicesHighlight);\ncomponents.set('Feature-Cinema-NowShowing', FeatureCinemaNowShowing);\ncomponents.set('Feature-ConsumerArticle-ArticleDetails', FeatureConsumerArticleArticleDetails);\ncomponents.set('Feature-ConsumerHeader-Header', FeatureConsumerHeaderHeader);\ncomponents.set('Feature-ConsumerNavigation-HeaderSubNav', FeatureConsumerNavigationHeaderSubNav);\ncomponents.set('Feature-Craft-CraftDetails', FeatureCraftCraftDetails);\ncomponents.set('Feature-Craft-CraftQuickLinksMenu', FeatureCraftCraftQuickLinksMenu);\ncomponents.set('Feature-FeaturedRetailer-FeaturedRetailer', FeatureFeaturedRetailerFeaturedRetailer);\ncomponents.set('Feature-Forms-ContactUs', FeatureFormsContactUs);\ncomponents.set('Feature-Forms-ContactUsInputFields', FeatureFormsContactUsInputFields);\ncomponents.set('Feature-Forms-Newsletter', FeatureFormsNewsletter);\ncomponents.set('Feature-GenericContent-AdCampaign', FeatureGenericContentAdCampaign);\ncomponents.set('Feature-GenericContent-ConsumerFAQ', FeatureGenericContentConsumerFAQ);\ncomponents.set('Feature-GenericContent-ConsumerFAQBlock', FeatureGenericContentConsumerFAQBlock);\ncomponents.set('Feature-GenericContent-GeneralNote', FeatureGenericContentGeneralNote);\ncomponents.set('Feature-GenericContent-GeneralSection', FeatureGenericContentGeneralSection);\ncomponents.set('Feature-GenericContent-GlobalFooter', FeatureGenericContentGlobalFooter);\ncomponents.set('Feature-GenericContent-Hero', FeatureGenericContentHero);\ncomponents.set('Feature-GenericContent-HeroDescription', FeatureGenericContentHeroDescription);\ncomponents.set('Feature-GenericContent-HomepageHero', FeatureGenericContentHomepageHero);\ncomponents.set('Feature-GenericContent-HomeQuickLinks', FeatureGenericContentHomeQuickLinks);\ncomponents.set('Feature-GenericContent-ImageGallery', FeatureGenericContentImageGallery);\ncomponents.set('Feature-GenericContent-ImageTextBlock', FeatureGenericContentImageTextBlock);\ncomponents.set('Feature-GenericContent-ObjectBlock', FeatureGenericContentObjectBlock);\ncomponents.set('Feature-GenericContent-QuickLinksMenu', FeatureGenericContentQuickLinksMenu);\ncomponents.set('Feature-GenericContent-RichText', FeatureGenericContentRichText);\ncomponents.set('Feature-GenericContent-ServiceQuickLinksMenu', FeatureGenericContentServiceQuickLinksMenu);\ncomponents.set('Feature-GenericContent-TermsAndConditions', FeatureGenericContentTermsAndConditions);\ncomponents.set('Feature-GenericContent-TextBlock', FeatureGenericContentTextBlock);\ncomponents.set('Feature-GenericContent-TwoColumn-70-30', FeatureGenericContentTwoColumn7030);\ncomponents.set('Feature-GettingHere-GettingHereHeader', FeatureGettingHereGettingHereHeader);\ncomponents.set('Feature-Header-GenericPageHeader', FeatureHeaderGenericPageHeader);\ncomponents.set('Feature-Header-HomePageHeader', FeatureHeaderHomePageHeader);\ncomponents.set('Feature-Header-PageHeader', FeatureHeaderPageHeader);\ncomponents.set('Feature-Header-WhatsOnListHeader', FeatureHeaderWhatsOnListHeader);\ncomponents.set('Feature-Layout-InfoLayout', FeatureLayoutInfoLayout);\ncomponents.set('Feature-Lifestyle-FeaturedLifestyle', FeatureLifestyleFeaturedLifestyle);\ncomponents.set('Feature-Lifestyle-LifestyleListingFilter', FeatureLifestyleLifestyleListingFilter);\ncomponents.set('Feature-Maps-CentreMap', FeatureMapsCentreMap);\ncomponents.set('Feature-Maps-GoogleMap', FeatureMapsGoogleMap);\ncomponents.set('Feature-Metrics-PopularTimes', FeatureMetricsPopularTimes);\ncomponents.set('Feature-OpeningHours-CentreOpeningHours', FeatureOpeningHoursCentreOpeningHours);\ncomponents.set('Feature-OpeningHours-MajorRetailersAndRestaurantsOpeningHours', FeatureOpeningHoursMajorRetailersAndRestaurantsOpeningHours);\ncomponents.set('Feature-OpeningHours-OpeningHoursHeader', FeatureOpeningHoursOpeningHoursHeader);\ncomponents.set('Feature-Parking-CarPark', FeatureParkingCarPark);\ncomponents.set('Feature-Parking-ParkingInformation', FeatureParkingParkingInformation);\ncomponents.set('Feature-Parking-ParkingRates', FeatureParkingParkingRates);\ncomponents.set('Feature-Parking-ValetParking', FeatureParkingValetParking);\ncomponents.set('Feature-Precincts-CampaignFeaturedStoreList', FeaturePrecinctsCampaignFeaturedStoreList);\ncomponents.set('Feature-Precincts-FeaturedPrecinct', FeaturePrecinctsFeaturedPrecinct);\ncomponents.set('Feature-Promotions-CampaignFeaturedWhatsOn', FeaturePromotionsCampaignFeaturedWhatsOn);\ncomponents.set('Feature-Promotions-CategoryHeader', FeaturePromotionsCategoryHeader);\ncomponents.set('Feature-Promotions-CategorySpotlight', FeaturePromotionsCategorySpotlight);\ncomponents.set('Feature-Promotions-CategoryWhatsOn', FeaturePromotionsCategoryWhatsOn);\ncomponents.set('Feature-Promotions-FeaturedPromotions', FeaturePromotionsFeaturedPromotions);\ncomponents.set('Feature-Promotions-HeroPromotion', FeaturePromotionsHeroPromotion);\ncomponents.set('Feature-Promotions-PromotionDetails', FeaturePromotionsPromotionDetails);\ncomponents.set('Feature-Promotions-PromotionSchedules', FeaturePromotionsPromotionSchedules);\ncomponents.set('Feature-Promotions-SimilarPromotions', FeaturePromotionsSimilarPromotions);\ncomponents.set('Feature-Promotions-StorefrontWhatsOn', FeaturePromotionsStorefrontWhatsOn);\ncomponents.set('Feature-Promotions-WhatsOn', FeaturePromotionsWhatsOn);\ncomponents.set('Feature-Promotions-WhatsOnList', FeaturePromotionsWhatsOnList);\ncomponents.set('Feature-Recipe-FeaturedRecipe', FeatureRecipeFeaturedRecipe);\ncomponents.set('Feature-Recipe-RecipeDetails', FeatureRecipeRecipeDetails);\ncomponents.set('Feature-Recipe-RecipeListingFilter', FeatureRecipeRecipeListingFilter);\ncomponents.set('Feature-Recipe-RecipeQuickLinksMenu', FeatureRecipeRecipeQuickLinksMenu);\ncomponents.set('Feature-Search-CategoryResults', FeatureSearchCategoryResults);\ncomponents.set('Feature-Search-SearchBar', FeatureSearchSearchBar);\ncomponents.set('Feature-Search-SearchModal', FeatureSearchSearchModal);\ncomponents.set('Feature-Search-SiteSearch', FeatureSearchSiteSearch);\ncomponents.set('Feature-Search-StoreResults', FeatureSearchStoreResults);\ncomponents.set('Feature-Search-WhatsOnResults', FeatureSearchWhatsOnResults);\ncomponents.set('Feature-Social-InstagramGallery', FeatureSocialInstagramGallery);\ncomponents.set('Feature-StoreDirectory-DirectoryHeader', FeatureStoreDirectoryDirectoryHeader);\ncomponents.set('Feature-StoreDirectory-DirectoryList', FeatureStoreDirectoryDirectoryList);\ncomponents.set('Feature-StoreDirectory-DirectorySearch', FeatureStoreDirectoryDirectorySearch);\ncomponents.set('Feature-StoreDirectory-MiniStoreDirectory', FeatureStoreDirectoryMiniStoreDirectory);\ncomponents.set('Feature-Storefront-CategoryDiscoverStores', FeatureStorefrontCategoryDiscoverStores);\ncomponents.set('Feature-Storefront-Recommendation', FeatureStorefrontRecommendation);\ncomponents.set('Feature-Storefront-RetailerDetails', FeatureStorefrontRetailerDetails);\ncomponents.set('Feature-Storefront-RetailerImageGallery', FeatureStorefrontRetailerImageGallery);\ncomponents.set('Feature-Subscribe-SignUp', FeatureSubscribeSignUp);\ncomponents.set('Feature-Subscribe-Subscribe', FeatureSubscribeSubscribe);\ncomponents.set('Feature-Subscribe-Unsubscribe', FeatureSubscribeUnsubscribe);\ncomponents.set('Feature-Subscribe-UpdatePreferences', FeatureSubscribeUpdatePreferences);\ncomponents.set('Foundation-Forms-Form', FoundationFormsForm);\ncomponents.set('Foundation-Layout-TwoColumn-70-30', FoundationLayoutTwoColumn7030);\n\nexport default function componentFactory(componentName) {\n return components.get(componentName);\n};\n","import axios from 'axios';\n\n/**\n * Implements a data fetcher using Axios - replace with your favorite\n * SSR-capable HTTP or fetch library if you like. See HttpJsonFetcher<T> type\n * in sitecore-jss library for implementation details/notes.\n * @param {string} url The URL to request; may include query string\n * @param {any} data Optional data to POST with the request.\n */\nexport function dataFetcher(url, data) {\n return axios({\n url,\n method: data ? 'POST' : 'GET',\n data,\n // note: axios needs to use `withCredentials: true` in order for Sitecore cookies to be included in CORS requests\n // which is necessary for analytics and such\n withCredentials: true,\n });\n}\n","export default [\n \"canberracentre\",\n \"eastland\",\n \"robina\",\n \"westpoint\",\n \"woodgrove\",\n \"grandcentral\",\n \"castletowers\",\n \"castlemall\",\n \"coburnscentral\",\n \"hyperdome\",\n \"watergardens\",\n \"forestlake\",\n \"nerangmall\",\n \"pittwaterplace\",\n \"pacificwerribee\",\n \"pacificepping\",\n \"hinklercentral\",\n \"bathurstcity\",\n \"bigtop\",\n \"kipparing\",\n \"thevillage\",\n \"craigieburnjunction\",\n \"merrifieldcity\",\n \"domaincentral\"\n];\n","import React, { Component } from \"react\";\n\nclass BackToTop extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showBackToTop: false,\n };\n }\n componentDidMount() {\n if (window) {\n window.addEventListener('scroll', this.handleOnScroll);\n }\n }\n\n handleOnScroll = () => {\n if (document.documentElement.scrollTop > 20) {\n this.setState({ showBackToTop: true });\n const backToTopWrapper = document.querySelector(\".back-to-top__wrapper\")\n const footerContainer = document.querySelector(\".globalfooter-wrapper .container\");\n let backToTopPos = 0;\n\n if (footerContainer) {\n backToTopPos = window.getComputedStyle(footerContainer).getPropertyValue(\"margin-left\");\n } else {\n const centreMapContainer = document.querySelector(\".js-centremap .map-content\");\n const bodyContainer = document.querySelector(\".container\");\n\n if (centreMapContainer) {\n backToTopPos = window.getComputedStyle(centreMapContainer).getPropertyValue(\"margin-left\");\n backToTopWrapper.classList.add(\"has-centre-map\");\n } else if (bodyContainer) {\n backToTopPos = window.getComputedStyle(bodyContainer).getPropertyValue(\"margin-left\");\n }\n }\n backToTopWrapper.style.right = backToTopPos;\n }\n else {\n this.setState({ showBackToTop: false });\n }\n }\n\n handleOnClick = () => {\n // Check if using IE browser\n const ua = window.navigator.userAgent.toLowerCase();\n if ((/msie|trident/.test(ua))) {\n window.scroll(0, 0);\n } else {\n window.scroll({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n }\n }\n render() {\n const {\n showBackToTop\n } = this.state;\n return (\n <div>\n {showBackToTop &&\n <div className=\"back-to-top__wrapper font-regular\">\n <div className=\"container\">\n <button onClick={this.handleOnClick} className=\"back-to-top__button\">\n <span className=\"font-markpro-medium\">Back to top</span>\n <i className=\"icon icon-arrow-up\"></i>\n </button>\n </div>\n </div>\n }\n </div>\n )\n }\n}\n\nexport default BackToTop;\n","import React from \"react\";\nimport {\n Placeholder,\n VisitorIdentification\n} from \"@sitecore-jss/sitecore-jss-react\";\nimport Helmet from \"react-helmet\";\nimport \"lazysizes\";\nimport TagManager from \"react-gtm-module\";\nimport centreList from \"./centreList\";\nimport gtmIdList from \"./gtmIdList\";\nimport { get } from \"lodash\";\nimport \"./assets/themes/base.css\";\nimport \"animate.css/animate.min.css\";\nimport objectFitImages from \"object-fit-images\";\nimport BackToTop from \"./components/Common/BackToTop\";\n\nclass Layout extends React.Component {\n constructor(props) {\n super(props);\n this.state = { isReady: false, url: \"\", domain: \"\" };\n this.activeCentre = get(this, \"props.context.centreInfo.centre\", \"\");\n\n this.gtmId = this.activeCentre ? \"GTM-WGDKN7LC\" : \"GTM-XXXXXXX\";\n\n let validCentre = centreList.find(centre => this.activeCentre === centre);\n if (process.env.REACT_APP_THEME) {\n this.centre = process.env.REACT_APP_THEME;\n } else {\n this.centre = \"base\";\n }\n\n if (validCentre) {\n this.centre = validCentre;\n }\n\n let centreStyle = import(`./assets/themes/${this.centre}.css`);\n\n //this.pageTitlevalue = get(this, \"props.route.fields.PageTitle.value\", \"Page\");\n }\n\n // loadTheme = async () => {\n // let response = await import(`./assets/themes/${this.centre}.css`);\n // if (response) {\n // this.setState({ isReady: true });\n // }\n // };\n\n componentDidMount() {\n const { templateName = \"\", displayName = \"\" } = this.props.route || {};\n const templateList = [\n \"Category Landing Page\",\n \"Storefront Page\",\n \"Food Storefront Page\",\n \"Directory Page\"\n ];\n const { route, context } = this.props;\n\n let faviconSrc = get(context, \"centreInfo.faviconImage.value.src\", \"\");\n if (document) {\n const pagetitle = get(route, \"fields.PageTitle.value\", \"Page\");\n const centrename = get(context, \"centreInfo.displayname\", \"\");\n\n if (faviconSrc) {\n document.getElementById(\"favicon\").href = faviconSrc;\n }\n if (centrename) {\n if (pagetitle === centrename) {\n document.title = pagetitle;\n } else {\n document.title = pagetitle + \" | \" + centrename;\n }\n } else {\n document.title = pagetitle;\n }\n\n // document.querySelector('meta[property=\"og:url\"]').setAttribute(\"content\", window.location.href);\n // document.querySelector('meta[property=\"og:image\"]').setAttribute(\"content\", window.location.origin + get(route, \"fields.MetaImage.value.src\", \"\"));\n // document.querySelector('meta[name=\"twitter:url\"]').setAttribute(\"content\", window.location.href);\n // document.querySelector('meta[name=\"twitter:image\"]').setAttribute(\"content\", window.location.origin + get(route, \"fields.MetaImage.value.src\", \"\"));\n this.setState({\n url: window.location.href,\n domain: window.location.origin\n });\n\n // Canonical URL\n let canonicalSrc = get(route, \"fields.CanonicalUrl.value\", \"\");\n if (!canonicalSrc) {\n canonicalSrc = document.URL;\n }\n document.getElementById(\"canonical\").href = canonicalSrc;\n objectFitImages();\n }\n\n TagManager.initialize({ gtmId: this.gtmId });\n TagManager.initialize({ gtmId: \"GTM-5TKGJMX\" });\n if (templateList.includes(templateName)) {\n let category = \"\";\n let subCategory = \"\";\n let name = \"\";\n if (templateName === \"Category Landing Page\") {\n category = displayName;\n } else {\n name = displayName;\n category = get(context, \"categoryInfo.category\", \"\");\n subCategory = get(context, \"categoryInfo.subCategory\", \"\");\n }\n TagManager.dataLayer({\n dataLayer: {\n retail: {\n category,\n \"sub-category\": subCategory,\n name\n }\n },\n dataLayerName: \"dataLayer\"\n });\n }\n }\n\n render() {\n // if (!this.state.isReady) {\n // return null;\n // }\n const { route, context } = this.props;\n const { activeCentre } = this;\n const { url, domain } = this.state;\n let metaImage = \"\";\n let metaImageAlt = \"\";\n\n return (\n <React.Fragment>\n <Helmet>\n <title>\n {route.fields &&\n route.fields.PageTitle &&\n route.fields.PageTitle.value\n ? route.fields.PageTitle.value\n : \"Page\"}\n </title>\n\n {route.fields &&\n route.fields.MetaDescription &&\n route.fields.MetaDescription.value && (\n <meta\n name=\"description\"\n content={route.fields.MetaDescription.value}\n />\n )}\n\n {route.fields &&\n route.fields.RobotsTag &&\n route.fields.RobotsTag.value && (\n <meta name=\"robots\" content={route.fields.RobotsTag.value} />\n )}\n\n {context.centreInfo && context.centreInfo.displayname && (\n <meta name=\"centrename\" content={context.centreInfo.displayname} />\n )}\n\n {context.centreInfo && context.centreInfo.displayname && (\n <meta name=\"og:site_name\" content={context.centreInfo.displayname} />\n )}\n\n {route.fields\n ? route.fields.MetaImageUrl && route.fields.MetaImageUrl.value\n ? (metaImage = route.fields.MetaImageUrl.value) &&\n (metaImageAlt = route.fields.MetaImageAltText.value)\n : route.fields.MetaImage &&\n route.fields.MetaImage.value &&\n route.fields.MetaImage.value.src\n ? (metaImage = domain + route.fields.MetaImage.value.src) &&\n (metaImageAlt = route.fields.MetaImage.value.alt)\n : \"\"\n : \"\"}\n\n <meta property=\"og:type\" content=\"website\" />\n <meta\n property=\"og:title\"\n content={get(route, \"fields.PageTitle.value\", \"\")}\n />\n <meta\n property=\"og:description\"\n content={get(route, \"fields.MetaDescription.value\", \"\")}\n />\n <meta property=\"og:url\" itemProp=\"url\" content={url} />\n <meta property=\"og:image\" content={metaImage} />\n <meta property=\"og:image:alt\" content={metaImageAlt} />\n \n\n <meta\n name=\"twitter:title\"\n content={get(route, \"fields.PageTitle.value\", \"\")}\n />\n <meta\n name=\"twitter:description\"\n content={get(route, \"fields.MetaDescription.value\", \"\")}\n />\n <meta name=\"twitter:card\" content=\"website\" />\n <meta name=\"twitter:url\" content={url} />\n <meta name=\"twitter:image\" content={metaImage} />\n <meta name=\"twitter:image:alt\" content={metaImageAlt} />\n\n <link href=\"https://d1p5cqqchvbqmy.cloudfront.net/web2/release/mappedin-web.css\" rel=\"stylesheet\" />\n </Helmet>\n <VisitorIdentification />\n\n <input\n type=\"hidden\"\n value={route.itemId}\n data-target-db={route.databaseName}\n data-centre={this.centre}\n name=\"ContextItem\"\n />\n <Placeholder\n name=\"jss-header\"\n rendering={route}\n params={{ activeCentre }}\n />\n <Placeholder\n name=\"jss-body\"\n rendering={route}\n params={{ pageName: route.templateName }}\n />\n <Placeholder\n name=\"jss-footer\"\n rendering={route}\n params={{ pageName: route.name }}\n />\n\n <BackToTop />\n </React.Fragment>\n );\n }\n}\nexport default Layout;\n","import React from 'react';\n\n// Renders a route-not-found message when no route is available from Sitecore\n// The JSS equivalent of a 404 Not Found page.\n\n// This is invoked from RouteHandler when Sitecore returns no valid route data.\n// The NotFound component receives the Layout Service Context data, but no route data.\n// This can be used to power parts of your site, such as navigation, from LS context additions\n// without losing the ability to render them on your 404 pages :)\n\nconst NotFound = ({ context = { site: { name: '' }, language: '' } }) => (\n <React.Fragment>\n <h1>Page not found</h1>\n <p>This page does not exist.</p>\n <p>\n Site: {context.site && context.site.name}\n <br />\n Language: {context.language}\n </p>\n </React.Fragment>\n);\n\nexport default NotFound;\n","import React from 'react';\n//import i18n from 'i18next';\nimport Helmet from 'react-helmet';\nimport { isExperienceEditorActive, dataApi } from '@sitecore-jss/sitecore-jss-react';\nimport { dataFetcher } from './dataFetcher';\nimport config from './temp/config';\nimport Layout from './Layout';\nimport NotFound from './NotFound';\nimport SitecoreContextFactory from \"./lib/SitecoreContextFactory\";\n// Dynamic route handler for Sitecore items.\n// Because JSS app routes are defined in Sitecore, traditional static React routing isn't enough -\n// we need to be able to load dynamic route data from Sitecore after the client side route changes.\n// So react-router delegates all route rendering to this handler, which attempts to get the right\n// route data from Sitecore - and if none exists, renders the not found component.\n\n\nexport default class RouteHandler extends React.Component {\n constructor(props) {\n super(props);\n\n const ssrInitialState = props.ssrState;\n\n this.state = {\n notFound: true,\n routeData: ssrInitialState, // null when client-side rendering\n defaultLanguage: config.defaultLanguage,\n };\n\n\n // route data from react-router - if route was resolved, it's not a 404\n if (props.route !== null) {\n this.state.notFound = false;\n }\n // if we have an initial SSR state, and that state doesn't have a valid route data,\n // then this is a 404 route.\n if (ssrInitialState && (!ssrInitialState.sitecore || !ssrInitialState.sitecore.route)) {\n this.state.notFound = true;\n }\n // if we have an SSR state, and that state has language data, set the current language\n // (this makes the language of content follow the Sitecore context language cookie)\n // note that a route-based language (i.e. /de-DE) will override this default; this is for home.\n if (ssrInitialState && ssrInitialState.context && ssrInitialState.context.language) {\n this.state.defaultLanguage = ssrInitialState.context.language;\n }\n\n\n this.componentIsMounted = false;\n this.languageIsChanging = false;\n\n // tell i18next to sync its current language with the route language\n //this.updateLanguage();\n\n // update route when there is refresh in context\n var me = this;\n SitecoreContextFactory.subscribeToContext(context => {\n if (context.refresh) {\n let routeData = this.state.routeData;\n if (context !== null && context.route) {\n this.props.contextFactory.setSitecoreContext({\n ...context,\n refresh: false\n });\n if (routeData && routeData.sitecore) {\n routeData.sitecore.route = context.route;\n } else {\n routeData.sitecore = context;\n }\n me.setState({ routeData, notFound: false });\n } else {\n me.setState({ routeData, notFound: true });\n }\n }\n });\n }\n\n componentDidMount() {\n // once we initialize the route handler, we've \"used up\" the SSR data,\t\n // if it existed, so we want to clear it now that it's in react state.\t\n // future route changes that might destroy/remount this component should ignore any SSR data.\t\n // EXCEPTION: Unless we are still SSR-ing. Because SSR can re-render the component twice\t\n // (once to find GraphQL queries that need to run, the second time to refresh the view with\t\n // GraphQL query results)\t\n // We test for SSR by checking for Node-specific process.env variable.\t\n if (typeof window !== \"undefined\" && !this.props.ssrRenderComplete && this.props.setSsrRenderComplete) {\n this.props.setSsrRenderComplete(true);\n }\n\n // if no existing routeData is present (from SSR), get Layout Service fetching the route data\n if (!this.state.routeData) {\n this.updateRouteData();\n }\n this.componentIsMounted = true;\n }\n componentWillUnmount() {\n this.componentIsMounted = false;\n }\n /**\n * Loads route data from Sitecore Layout Service into state.routeData\n */\n updateRouteData() {\n let sitecoreRoutePath = this.props.route.match.params.sitecoreRoute || '/';\n if (!sitecoreRoutePath.startsWith('/')) {\n sitecoreRoutePath = `/${sitecoreRoutePath}`;\n }\n const language = this.props.route.match.params.lang || this.state.defaultLanguage;\n // get the route data for the new route\n getRouteData(sitecoreRoutePath, language).then((routeData) => {\n if (routeData !== null && routeData.sitecore && routeData.sitecore.route) {\n // set the sitecore context data and push the new route\n this.props.contextFactory.setSitecoreContext({\n route: routeData.sitecore.route,\n itemId: routeData.sitecore.route.itemId,\n ...routeData.sitecore.context,\n });\n this.setState({ routeData, notFound: false });\n } else {\n this.setState({ routeData, notFound: true });\n }\n });\n }\n /**\n * Updates the current app language to match the route data.\n */\n // updateLanguage() {\n // const newLanguage = this.props.route.match.params.lang || this.state.defaultLanguage;\n // if (i18n.language !== newLanguage) {\n // this.languageIsChanging = true;\n // i18n.changeLanguage(newLanguage, () => {\n // this.languageIsChanging = false;\n // // if the component is not mounted, we don't care\n // // (next time it mounts, it will render with the right language context)\n // if (this.componentIsMounted) {\n // // after we change the i18n language, we need to force-update React,\n // // since otherwise React won't know that the dictionary has changed\n // // because it is stored in i18next state not React state\n // this.forceUpdate();\n // }\n // });\n // }\n // }\n componentDidUpdate(previousProps) {\n const existingRoute = previousProps.route.match.url;\n const newRoute = this.props.route.match.url;\n // don't change state (refetch route data) if the route has not changed\n if (existingRoute === newRoute) {\n return;\n }\n // if in experience editor - force reload instead of route data update\n // avoids confusing Sitecore's editing JS\n if (isExperienceEditorActive()) {\n window.location.assign(newRoute);\n return;\n }\n //this.updateLanguage();\n this.updateRouteData();\n }\n render() {\n const { notFound, routeData } = this.state;\n // no route data for the current route in Sitecore - show not found component.\n // Note: this is client-side only 404 handling. Server-side 404 handling is the responsibility\n // of the server being used (i.e. node-headless-ssr-proxy and Sitecore intergrated rendering know how to send 404 status codes).\n if (notFound) {\n return (\n <div>\n <Helmet>\n <title>{\"Page not found\"}</title>\n </Helmet>\n <NotFound context={routeData.sitecore && routeData.sitecore.context} />\n </div>\n );\n }\n // Don't render anything if the route data or dictionary data is not fully loaded yet.\n // This is a good place for a \"Loading\" component, if one is needed.\n if (!routeData || this.languageIsChanging) {\n return null;\n }\n // Render the app's root structural layout\n return (\n <Layout\n context={routeData.sitecore.context}\n route={routeData.sitecore.route}\n />\n );\n }\n}\n\n\n/**\n * Gets route data from Sitecore. This data is used to construct the component layout for a JSS route.\n * @param {string} route Route path to get data for (e.g. /about)\n * @param {string} language Language to get route data in (content language, e.g. 'en')\n */\nfunction getRouteData(route, language) {\n const fetchOptions = {\n layoutServiceConfig: { host: config.sitecoreApiHost },\n querystringParams: { sc_lang: language, sc_apikey: config.sitecoreApiKey },\n fetcher: dataFetcher,\n };\n return dataApi.fetchRouteData(route, fetchOptions).catch((error) => {\n if (error.response && error.response.status === 404 && error.response.data) {\n return error.response.data;\n }\n console.error('Route data fetch error', error, error.response);\n return null;\n });\n}","import React from 'react';\nimport { SitecoreContext, SitecoreContextFactory } from '@sitecore-jss/sitecore-jss-react';\nimport { Route, Switch } from 'react-router-dom';\n//import { ApolloProvider } from 'react-apollo';\nimport componentFactory from './temp/componentFactory';\nimport RouteHandler from './RouteHandler';\n\n// This is the main JSX entry point of the app invoked by the renderer (server or client rendering).\n// By default the app's normal rendering is delegated to <RouteHandler> that handles the loading of JSS route data.\n// support languages in the URL prefix\n// e.g. /da-DK/path, or /en/path, or /path\nexport const routePatterns = [\n '/:lang([a-z]{2}-[A-Z]{2})/:sitecoreRoute*',\n '/:lang([a-z]{2})/:sitecoreRoute*',\n '/:sitecoreRoute*',\n];\n// wrap the app with:\n// ApolloProvider: provides an instance of Apollo GraphQL client to the app to make Connected GraphQL queries.\n// Not needed if not using connected GraphQL.\n// SitecoreContext: provides component resolution and context services via withSitecoreContext\n// Router: provides a basic routing setup that will resolve Sitecore item routes and allow for language URL prefixes.\nclass AppRoot extends React.Component {\n state = {\n ssrRenderComplete: false,\n contextFactory: new SitecoreContextFactory()\n }\n\n setSsrRenderComplete = ssrRenderComplete => {\n this.setState({\n ssrRenderComplete\n })\n }\n\n render() {\n const { path, Router, ssrState } = this.props;\n if (ssrState && ssrState.sitecore && ssrState.sitecore.route) {\n // set the initial sitecore context data if we got SSR initial state\n this.state.contextFactory.setSitecoreContext({\n route: ssrState.sitecore.route,\n itemId: ssrState.sitecore.route.itemId,\n ...ssrState.sitecore.context,\n });\n }\n\n const routeRenderFunction = (props) =>\n <RouteHandler\n route={props}\n ssrState={this.state.ssrRenderComplete ? null : ssrState}\n contextFactory={this.state.contextFactory}\n setSsrRenderComplete={this.setSsrRenderComplete}\n ssrRenderComplete={this.state.ssrRenderComplete}\n />;\n\n return (\n //<ApolloProvider client={graphQLClient}>\n <SitecoreContext componentFactory={componentFactory} contextFactory={this.state.contextFactory}>\n <Router location={path} context={{}}>\n <Switch>\n {routePatterns.map((routePattern) => (\n <Route key={routePattern} path={routePattern} render={routeRenderFunction} />\n ))}\n </Switch>\n </Router>\n </SitecoreContext>\n //</ApolloProvider>\n );\n }\n}\n\nexport default AppRoot;","import \"@babel/polyfill\";\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport AppRoot from './AppRoot';\n//import GraphQLClientFactory from './lib/GraphQLClientFactory';\n//import config from './temp/config';\nimport \"isomorphic-fetch\";\n//import i18ninit from './i18n';\n/* eslint-disable no-underscore-dangle */\nlet renderFunction = ReactDOM.render;\n/*\n SSR Data\n If we're running in a server-side rendering scenario,\n the server will provide JSON in the #__JSS_STATE__ element\n for us to acquire the initial state to run with on the client.\n This enables us to skip a network request to load up the layout data.\n We are emitting a quiescent script with JSON so that we can take advantage\n of JSON.parse()'s speed advantage over parsing full JS, and enable\n working without needing `unsafe-inline` in Content Security Policies.\n SSR is initiated from /server/server.js.\n*/\nlet __JSS_STATE__ = null;\nconst ssrRawJson = document.getElementById('__JSS_STATE__');\nif (ssrRawJson) {\n __JSS_STATE__ = JSON.parse(ssrRawJson.innerHTML);\n}\nif (__JSS_STATE__) {\n // when React initializes from a SSR-based initial state, you need to render with `hydrate` instead of `render`\n renderFunction = ReactDOM.hydrate;\n}\n/*\n GraphQL Data\n The Apollo Client needs to be initialized to make GraphQL available to the JSS app.\n Not using GraphQL? Remove this, and the ApolloContext from `AppRoot`.\n*/\n// Apollo supports SSR of GraphQL queries, so like JSS SSR, it has an object we can pre-hydrate the client cache from\n// to avoid needing to re-run GraphQL queries after the SSR page loads\n// const initialGraphQLState =\n// __JSS_STATE__ && __JSS_STATE__.APOLLO_STATE ? __JSS_STATE__.APOLLO_STATE : null;\n// const graphQLClient = GraphQLClientFactory(config.graphQLEndpoint, false, initialGraphQLState);\n/*\n App Rendering\n*/\n// initialize the dictionary, then render the app\n// note: if not making a multlingual app, the dictionary init can be removed.\n// i18ninit().then(() => {\n// });\n\n// HTML element to place the app into\nconst rootElement = document.getElementById('root');\nrenderFunction(\n <AppRoot\n path={window.location.pathname}\n Router={BrowserRouter}\n //graphQLClient={graphQLClient}\n ssrState={__JSS_STATE__}\n />,\n rootElement\n);","/* eslint-disable */\n// Do not edit this file, it is auto-generated at build time!\n// See scripts/bootstrap.js to modify the generation of this file.\nmodule.exports = {\n \"sitecoreApiKey\": \"D7898185-A43A-4641-9D17-399C4930EE7E\",\n \"sitecoreApiHost\": \"\",\n \"jssAppName\": \"consumer\",\n \"defaultLanguage\": \"en\",\n \"graphQLEndpointPath\": \"/api/consumer\",\n \"graphQLEndpoint\": \"/api/consumer?sc_apikey=D7898185-A43A-4641-9D17-399C4930EE7E\"\n};","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAalJREFUSA21lj1Ow0AQhZ8NBQ0ljYlQUBqukDMgYdG74QJIOQHiHkhu6FGQIq5CYxSFn4aShiaB95ZdbGuNvSHxSKPYuzPfm/X+JUKLvQCDFZBGwCnDRvTEhr/xt/gCZjEwHQAMbTbm+vZO0CdwzZ4LQnb8iLKFgCXf8j3g6gCQcM08gVfgjFXfErxfi+x4IeiDo8kOgftqKNtKewYuCb9bFy6CcpQrRkkEfkdgKxe8JloNDnkmcEXAuRuJEbDf/PE/lTeJ6nNxTk40J6ZaTWgI/IgjljdBq21i2UWCSEuRDXN662oRwMEX5pNXkf4zq1jSh7ucmJTdnXAf0d6igulpTBVtol5MbM3BqBf6D3QkAbf9+9BJzCrqg+yYEvDOD9e5hV+zD4pQ0ILLUx4az7giZvQsNIGr4kEeGi/2Ohttzo12zKSIB9oTRYZtQizEbLTYXhZ5W7DtS7jrx5ywMd95lnVaLjaFgN4PO3vqZVTjybGZicGlmbnbTcvUmD2/J5uI2NyJuwsEZlvder0yJSV1XRZUvqHrQm81xShWOdXKXRL7/rZt/G35BnXTd2DdYGr4AAAAAElFTkSuQmCC\""],"sourceRoot":""}