{"version":3,"sources":["webpack:///./src/themes/citta/views/site-picker.view.tsx?eb42","webpack:///./src/modules/citta-newsletter-subscribe-pop-up/citta-newsletter-subscribe-pop-up.view.tsx?eb05","webpack:///./src/modules/citta-newsletter-subscribe/citta-newsletter-subscribe.tsx?e327","webpack:///./src/modules/citta-newsletter-subscribe/citta-newsletter-subscribe.view.tsx?2f72","webpack:///./src/shared-utils/cookie-utilities.ts?4af2","webpack:///./src/modules/citta-pop-up-copy/citta-pop-up-copy.tsx?6889","webpack:///./src/modules/citta-pop-up-copy/citta-pop-up-copy.view.tsx?ee75","webpack:///./src/modules/citta-newsletter-subscribe-pop-up/citta-newsletter-subscribe-pop-up.tsx?58b7"],"names":["Market","MarketShort","country","NZL","AUS","USA","SitePickerView","React","constructor","props","super","_cookieExpirationInSeconds","this","context","app","config","marketPreferenceCookieAge","_cookieName","marketPreferenceCookieName","_geoCookieName","_hasOpenedCookieName","getMarket","url","arguments","length","undefined","indexOfCountry","indexOf","market","split","toLowerCase","NZ","toUpperCase","AU","US","_onCountryChange","bind","_togglePopover","_selectMarket","_locationInputRef","state","bottomPopoverOpen","requestedMarket","componentDidMount","hasOpenedCookie","GetCookie","request","cookies","requestUrl","href","setState","marketCookie","SetCookie","render","SitePicker","Module","Object","assign","_renderMarketPickerButton","_renderMarketPickerPopOver","_renderMarketPickerMobile","objDiv","document","getElementsByClassName","scrollTop","scrollHeight","Button","innerRef","className","onClick","siteOptions","map","item","index","title","siteName","siteRedirectUrl","destinationUrl","_mapCountryName","Popover","id","placement","isOpen","target","event","preventDefault","redirectUrl","currentTarget","text","isConsentGiven","setConsentCookie","window","location","newsletterSubscribe","message","header","closeButton","MessageTextProps","HeaderTextProps","cookieValue","Node","telemetry","error","CittaNewsletterSubscribe","emailAddressValue","formInputValues","moduleClassName","_newsletterCookieName","onRecaptchaChange","value","reCaptchaChecked","rCCError","_handleChange","name","e","emailAddress","eAError","reqError","eAValError","pPCError","isChecked","_PrivacyPolicyRef","current","checked","recaptchaWrapper","querySelector","classList","toggle","privacyPolicyChecked","console","log","_isEmailValid","email","test","_EmailAddressInputRef","_recaptchaRef","_handleSubscribe","responseReceived","responseError","responseSuccess","_this$props$data$acco","customer","data","accountInformation","result","Email","viewProps","_objectSpread","SubscribeWrapper","moduleProps","classnames","subscribeResponse","_getSubscribeResponse","subscribeForm","_renderForm","userEmail","_renderHiddenEmailAddress","renderView","style","display","responseMessage","FormWrapper","FormContainer","emailInput","_renderEmailInput","checkboxPrivacyPolicy","_renderCheckboxPrivacyPolicy","reCaptcha","_renderReCaptcha","subscribeButtton","_renderSubscribeButton","subscribeThanks","_renderSubscribeThanks","_renderAlert","ref","type","onChange","required","placeholder","emailInputPlaceholder","privacyPolicyText","privacyPolicyLink","reCaptchaOption","_renderRecaptchaAlert","ReCAPTCHA","sitekey","reCaptchaSiteKey","recaptchaErrorMessage","resources","role","subscribeButtonLabel","color","eA","eAVal","_this$_recaptchaRef$c","_postEmailContact","_clearValues","reset","response","MsDyn365","emarsysGroup","Message","Result","cookieAge","__decorate","computed","ICittaNewsletterSubscribeView","cookie","cookieName","get","exp","set","path","maxAge","CittaPopUpCopy","_internationalCookieName","_showErrors","emailErrorClass","_checkEmailError","_renderErrors","emailError","checkCookie","_timer","setInterval","stopTimer","clearInterval","_renderCloseLink","_setCookie","setTimeout","_viewport","device","Type","_handleSubmit","fNError","lNError","showResponseSuccess","_updateViewport","isBrowser","addEventListener","componentWillUnmount","removeEventListener","viewprops","image","_renderImage","_renderMessage","isMobile","ImageTextProps","_getSubmitResponse","formErrors","formErrorsNodeProps","successResponse","_renderSuccessResponse","showSuccessResponse","successResponseNodeProps","gridSettings","defaultImageSettings","viewports","xs","q","w","h","lg","xl","lazyload","desktopImage","Image","altText","imageSettings","loadFailureBehavior","successTextResponse","_renderSubmitButton","_renderSubmitThanks","size","_submit","submitButtonLabel","execute","_this$_recaptchaRef$c2","recaptchaValue","getValue","_this$_recaptchaRef$c3","_this$_recaptchaRef$c6","_postEntry","_this$_recaptchaRef$c5","_this$_recaptchaRef$c4","emarsysGroupId","optIn","dangerouslySetInnerHTML","getRichTextHtml","popoverMessage","_getViewport","innerWidth","sm","md","CittaNewsletterSubscribePopUp","slots"],"mappings":"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","file":"static/js/30.d67dba9077cb35ecd97d.chunk.js","sourcesContent":["// @ts-nockeck\r\n/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n// @ts-nockeck\r\nimport { ISitePickerViewProps } from '@msdyn365-commerce-modules/site-picker/src/modules/site-picker/./site-picker';\r\nimport { Button, Module, Popover } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { GetCookie, SetCookie } from '../../../shared-utils/cookie-utilities';\r\n\r\ninterface ISitePickerState {\r\n bottomPopoverOpen: boolean;\r\n requestedMarket: string;\r\n}\r\nenum Market {\r\n NZ = 'NZL',\r\n AU = 'AUS',\r\n US = 'USA'\r\n}\r\nenum MarketShort {\r\n NZL = 'NZ',\r\n AUS = 'AU',\r\n USA = 'US'\r\n}\r\n\r\nconst country = {\r\n NZL:'New Zealand',\r\n AUS:'Australia',\r\n USA: 'United States'\r\n}\r\n\r\n/**\r\n *\r\n * SitePickerView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class SitePickerView extends React.PureComponent {\r\n private _locationInputRef: React.RefObject;\r\n private _cookieExpirationInSeconds: number = this.props.context.app.config.marketPreferenceCookieAge && this.props.context.app.config.marketPreferenceCookieAge || 2592000;\r\n private _cookieName: string = this.props.context.app.config.marketPreferenceCookieName && this.props.context.app.config.marketPreferenceCookieName || '_msdyn365___market_preference';\r\n private _geoCookieName: string = 'd365mkt';\r\n private _hasOpenedCookieName: string = '_msdyn365___market_preference_has_opened';\r\n constructor(props: ISitePickerViewProps) {\r\n super(props);\r\n this._onCountryChange = this._onCountryChange.bind(this);\r\n this._togglePopover = this._togglePopover.bind(this);\r\n this._selectMarket = this._selectMarket.bind(this);\r\n\r\n // refs\r\n this._locationInputRef = React.createRef();\r\n\r\n this.getMarket = this.getMarket.bind(this);\r\n this.state = {\r\n bottomPopoverOpen: false,\r\n requestedMarket: ''\r\n };\r\n }\r\n public componentDidMount(): void {\r\n const hasOpenedCookie = GetCookie(this.props.context.request.cookies, this._hasOpenedCookieName);\r\n\r\n if (!hasOpenedCookie || hasOpenedCookie !== 'true') {\r\n const url = this.props.context.request.url && this.props.context.request.url.requestUrl && this.props.context.request.url.requestUrl.href;\r\n const requestedMarket = this.getMarket(url);\r\n // Auto-trigger if no market cookie saved and has not opened before\r\n const marketCookie = GetCookie(this.props.context.request.cookies, this._cookieName);\r\n if (!marketCookie || (marketCookie && marketCookie !== requestedMarket)) {\r\n this.setState({\r\n bottomPopoverOpen: true,\r\n requestedMarket: requestedMarket\r\n });\r\n }\r\n\r\n SetCookie(this.props.context.request.cookies, 'true', this._hasOpenedCookieName, this._cookieExpirationInSeconds);\r\n } \r\n else {\r\n const url = this.props.context.request.url && this.props.context.request.url.requestUrl && this.props.context.request.url.requestUrl.href;\r\n const requestedMarket = this.getMarket(url);\r\n\r\n this.setState({\r\n requestedMarket: requestedMarket\r\n });\r\n }\r\n }\r\n public render(): JSX.Element | null {\r\n const { SitePicker } = this.props;\r\n const { requestedMarket } = this.state;\r\n\r\n return (\r\n \r\n {this._renderMarketPickerButton()}\r\n {this._renderMarketPickerPopOver(requestedMarket)}\r\n {this._renderMarketPickerMobile(requestedMarket)}\r\n \r\n );\r\n }\r\n private getMarket = (url: string = ''): string => {\r\n let indexOfCountry = 3;\r\n if (url.indexOf('test.') > 0 || url.indexOf('cittab.') > 0) {\r\n indexOfCountry = 4;\r\n }\r\n let market = (url && url.length > 0) \r\n ? (url.indexOf('//') > -1 \r\n ? ((url.split('/')[indexOfCountry] === undefined || url.split('/')[indexOfCountry] === \"nz\"|| (url.split('/')[indexOfCountry].length > 2 && url.split('/')[indexOfCountry].toLowerCase() !== 'international' && url.split('/')[indexOfCountry].toLowerCase() !== 'intl'&& url.split('/')[indexOfCountry].toLowerCase() !== 'us') || url.split('/')[indexOfCountry] === '') \r\n ? Market.NZ \r\n : url.split('/')[indexOfCountry].toUpperCase()) \r\n : Market.NZ) \r\n : '';\r\n\r\n if (market === 'AU') {\r\n market = Market.AU;\r\n } else if (market.toLowerCase() === 'international' || market.toLowerCase() === 'intl' || market.toLowerCase() === 'us') { \r\n market = Market.US;\r\n }\r\n return market;\r\n };\r\n\r\n private _togglePopover(): void {\r\n this.setState({\r\n bottomPopoverOpen: !this.state.bottomPopoverOpen\r\n });\r\n //scroll to bottom.\r\n if(!this.state.bottomPopoverOpen) {\r\n var objDiv = document.getElementsByClassName(\"msc-modal\")[0];\r\n objDiv.scrollTop = objDiv.scrollHeight;\r\n }\r\n }\r\n private _renderMarketPickerButton(): React.ReactNode {\r\n const url = this.props.context.request.url && this.props.context.request.url.requestUrl && this.props.context.request.url.requestUrl.href;\r\n const requestedMarket = this.getMarket(url);\r\n return (\r\n <>\r\n \r\n {'Delivery'}\r\n {country[requestedMarket]}\r\n \r\n {/* {requestedMarket}\r\n */}\r\n \r\n \r\n );\r\n }\r\n private _renderMarketPickerMobile(requestedMarket: string): React.ReactNode {\r\n const siteOptions=this.props.config.siteOptions && this.props.config.siteOptions ;\r\n return (\r\n
\r\n { siteOptions && siteOptions.map((item, index) => (\r\n \r\n
\r\n {this._mapCountryName(item.siteName)}\r\n
\r\n \r\n ))\r\n }\r\n
\r\n );\r\n }\r\n\r\n private _mapCountryName(siteName?: string): string {\r\n return siteName && country[siteName] || country['INT'];\r\n }\r\n\r\n private _renderMarketPickerPopOver(requestedMarket: string): React.ReactNode {\r\n const siteOptions=this.props.config.siteOptions && this.props.config.siteOptions;\r\n return (\r\n \r\n\r\n
\r\n

Select your delivery country

\r\n { siteOptions && siteOptions.map((item, index) => (\r\n \r\n
\r\n {this._mapCountryName(item.siteName)}\r\n \r\n
\r\n \r\n ))\r\n }\r\n
\r\n \r\n );\r\n }\r\n\r\n\r\n private _selectMarket(event: React.MouseEvent): void {\r\n event.preventDefault();\r\n const redirectUrl = event.currentTarget.href;\r\n let market = Market.NZ;\r\n \r\n if(event.currentTarget.text === 'Australia') {\r\n market = Market.AU;\r\n } else if(event.currentTarget.text === 'United States') {\r\n market = Market.US;\r\n } else {\r\n market = Market.NZ;\r\n }\r\n const url = this.props.context.request.url && this.props.context.request.url.requestUrl && this.props.context.request.url.requestUrl.href;\r\n const requestedMarket = this.getMarket(url);\r\n if (market && market === requestedMarket) {\r\n // SAVE COOKIE ANYWAY\r\n SetCookie(this.props.context.request.cookies, market, this._cookieName, this._cookieExpirationInSeconds);\r\n SetCookie(this.props.context.request.cookies, 'false', this._hasOpenedCookieName, this._cookieExpirationInSeconds);\r\n SetCookie(this.props.context.request.cookies, MarketShort[market], this._geoCookieName, this._cookieExpirationInSeconds)\r\n let url = redirectUrl.split('?')[0]\r\n SetCookie(this.props.context.request.cookies, url, '_msdyn365___site_', this._cookieExpirationInSeconds)\r\n\r\n this._togglePopover();\r\n return;\r\n }\r\n this._onCountryChange(market, redirectUrl);\r\n }\r\n private _onCountryChange(market: Market, redirectUrl:string): void {\r\n if (market) {\r\n !this.props.context.request.cookies.isConsentGiven() && this.props.context.request.cookies.setConsentCookie();\r\n SetCookie(this.props.context.request.cookies, market, this._cookieName, this._cookieExpirationInSeconds);\r\n SetCookie(this.props.context.request.cookies, MarketShort[market], this._geoCookieName, this._cookieExpirationInSeconds)\r\n let url = redirectUrl.split('?')[0]\r\n SetCookie(this.props.context.request.cookies, url, '_msdyn365___site_', this._cookieExpirationInSeconds)\r\n window.location.assign(redirectUrl);\r\n }\r\n }\r\n}\r\nexport default SitePickerView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport { ICittaNewsletterSubscribePopUpViewProps } from './citta-newsletter-subscribe-pop-up';\r\n\r\nexport default (props: ICittaNewsletterSubscribePopUpViewProps) => {\r\n const { \r\n newsletterSubscribe,\r\n message,\r\n header,\r\n closeButton,\r\n MessageTextProps,\r\n HeaderTextProps,\r\n cookieValue\r\n } = props;\r\n\r\n if(!newsletterSubscribe || !newsletterSubscribe.length) {\r\n props.context.telemetry.error('newsletter content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n
\r\n
\r\n {closeButton}\r\n
\r\n {header &&
{header}
}\r\n {message &&

{message}

}\r\n\r\n {newsletterSubscribe}\r\n
\r\n );\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as MsDyn365 from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport { computed } from 'mobx';\r\nimport * as React from 'react';\r\nimport ReCAPTCHA from 'react-google-recaptcha';\r\nimport { ICittaNewsletterSubscribeData } from './citta-newsletter-subscribe.data';\r\nimport { ICittaNewsletterSubscribeProps } from './citta-newsletter-subscribe.props.autogenerated';\r\nimport { SetCookie } from '../../shared-utils/cookie-utilities';\r\n\r\ninterface ICittaNewsletteSubscriberFormState {\r\n emailAddress: string;\r\n privacyPolicyChecked: boolean;\r\n eAValError: boolean;\r\n eAError: boolean;\r\n pPCError: boolean;\r\n rCCError: boolean;\r\n reqError: boolean;\r\n responseReceived: boolean;\r\n responseError: boolean;\r\n responseSuccess: boolean;\r\n reCaptchaChecked: boolean;\r\n}\r\n\r\nexport interface ICittaSubscribeNewsletterForm {\r\n FormWrapper: INodeProps;\r\n FormContainer: INodeProps;\r\n emailInput: React.ReactNode;\r\n checkboxPrivacyPolicy: React.ReactNode;\r\n reCaptcha: React.ReactNode;\r\n subscribeButtton: React.ReactNode;\r\n subscribeThanks: React.ReactNode;\r\n}\r\n\r\nexport interface ICittaNewsletterSubscribeViewProps extends ICittaNewsletterSubscribeProps {\r\n SubscribeWrapper: IModuleProps;\r\n subscribeResponse: React.ReactNode;\r\n subscribeForm: ICittaSubscribeNewsletterForm;\r\n responseSuccess: boolean;\r\n userEmail: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * CittaNewsletterSubscribe component\r\n * @extends {React.PureComponent>}\r\n */\r\n\r\nclass CittaNewsletterSubscribe extends React.PureComponent, ICittaNewsletteSubscriberFormState> {\r\n private _EmailAddressInputRef: React.RefObject;\r\n private _PrivacyPolicyRef: React.RefObject;\r\n private _recaptchaRef: React.RefObject;\r\n\r\n private emailAddressValue: boolean = false;\r\n\r\n private formInputValues: boolean = false;\r\n\r\n private responseMessage: string | undefined;\r\n\r\n private moduleClassName: string = 'newsletterSubWrap';\r\n\r\n private _newsletterCookieName: string = 'cittaSignUp';\r\n\r\n private recaptchaErrorMessage: string | undefined;\r\n\r\n @computed public get userEmail(): Readonly {\r\n const customer = this.props.data.accountInformation?.result;\r\n return customer ? customer.Email : '';\r\n }\r\n\r\n constructor(props: ICittaNewsletterSubscribeProps) {\r\n super(props);\r\n this._EmailAddressInputRef = React.createRef();\r\n this._PrivacyPolicyRef = React.createRef();\r\n this._recaptchaRef = React.createRef();\r\n this._handleSubscribe = this._handleSubscribe.bind(this);\r\n\r\n this.state = {\r\n emailAddress: '',\r\n privacyPolicyChecked: false,\r\n eAValError: false,\r\n eAError: false,\r\n pPCError: false,\r\n rCCError: false,\r\n reqError: false,\r\n responseReceived: false,\r\n responseError: false,\r\n reCaptchaChecked: false,\r\n responseSuccess: false\r\n };\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const viewProps: ICittaNewsletterSubscribeViewProps = {\r\n ...(this.props as ICittaNewsletterSubscribeProps),\r\n SubscribeWrapper: {\r\n moduleProps: this.props,\r\n className: classnames(this.moduleClassName)\r\n },\r\n subscribeResponse: this._getSubscribeResponse(),\r\n subscribeForm: this._renderForm(),\r\n responseSuccess: this.state.responseSuccess,\r\n userEmail: this._renderHiddenEmailAddress()\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _renderHiddenEmailAddress(): React.ReactNode {\r\n return (\r\n this.userEmail && \r\n {this.userEmail}\r\n );\r\n }\r\n \r\n private _getSubscribeResponse(): React.ReactNode {\r\n return (\r\n this.state.responseReceived && this.responseMessage !== '' || undefined\r\n ? (\r\n
\r\n

{this.responseMessage}

\r\n
\r\n )\r\n : null\r\n );\r\n }\r\n\r\n private onRecaptchaChange = (value: string | null) => {\r\n if (value) {\r\n this.setState({ reCaptchaChecked: true, rCCError: false });\r\n } else {\r\n this.setState({ reCaptchaChecked: false });\r\n }\r\n }\r\n\r\n private _renderForm(): ICittaSubscribeNewsletterForm {\r\n return {\r\n FormWrapper: {\r\n className: 'newsletter-subscription',\r\n },\r\n FormContainer: {\r\n className: 'newsletter-subscription-div',\r\n },\r\n emailInput: this._renderEmailInput(),\r\n checkboxPrivacyPolicy: this._renderCheckboxPrivacyPolicy(),\r\n reCaptcha: this._renderReCaptcha(),\r\n subscribeButtton: this._renderSubscribeButton(),\r\n subscribeThanks: this._renderSubscribeThanks()\r\n };\r\n }\r\n\r\n private _renderEmailInput(): React.ReactNode {\r\n return (\r\n
\r\n {this.state.eAError || this.state.eAValError ? this._renderAlert('email-address-input') : ''}\r\n \r\n
\r\n );\r\n }\r\n\r\n private _renderAlert(className: string): JSX.Element {\r\n return <>;\r\n }\r\n\r\n private _renderCheckboxPrivacyPolicy(): React.ReactNode {\r\n return (\r\n
\r\n {this.state.pPCError ? this._renderAlert('checkbox-privacy-policy') : ''}\r\n
\r\n \r\n \r\n

{this.props.config.privacyPolicyText}Privacy Policy

\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n private _renderReCaptcha(): React.ReactNode {\r\n return (\r\n
\r\n {\r\n this.props.config.reCaptchaOption ?
\r\n {this.state.rCCError ? this._renderRecaptchaAlert('recaptcha-error') : ''}\r\n \r\n
: null\r\n }\r\n
\r\n );\r\n }\r\n\r\n private _renderRecaptchaAlert(className: string): JSX.Element {\r\n\r\n if (this.props.config.reCaptchaOption) {\r\n if (!this.state.reCaptchaChecked) {\r\n this.recaptchaErrorMessage = this.props.resources.recaptchaErrorMessage;\r\n }\r\n }\r\n\r\n const rCCError = this.state.rCCError;\r\n return (\r\n <>\r\n {rCCError && (\r\n \r\n {\r\n this.recaptchaErrorMessage &&\r\n <>\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n private _renderSubscribeButton(): React.ReactNode {\r\n return (\r\n
\r\n {this.props.config.subscribeButtonLabel}\r\n \r\n
\r\n );\r\n }\r\n\r\n private _renderSubscribeThanks(): React.ReactNode {\r\n return (\r\n
\r\n
\r\n Thanks!\r\n
\r\n
\r\n );\r\n }\r\n\r\n private _handleChange = (name: string) => (e: React.ChangeEvent) => {\r\n const value = e.target.value;\r\n switch (name) {\r\n case 'emailAddress': {\r\n this.setState({ emailAddress: value, eAError: false, reqError: false, eAValError: false, pPCError: false });\r\n break;\r\n }\r\n case 'privacyPolicy': {\r\n const isChecked = this._PrivacyPolicyRef.current && this._PrivacyPolicyRef.current.checked ? this._PrivacyPolicyRef.current.checked : false;\r\n const recaptchaWrapper = document.querySelector('.recaptcha');\r\n recaptchaWrapper && recaptchaWrapper.classList.toggle('newsletter-recapture-visable', !isChecked);\r\n this.setState({ privacyPolicyChecked: isChecked, reqError: false, eAValError: false, pPCError: false });\r\n break;\r\n }\r\n default: {\r\n console.log('No input box changes');\r\n this.setState({ reqError: false, eAValError: false, pPCError: false });\r\n }\r\n }\r\n }\r\n\r\n private _isEmailValid = (email: string): boolean => {\r\n const regex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return regex.test(email);\r\n };\r\n\r\n private async _handleSubscribe(e: React.MouseEvent | React.KeyboardEvent | React.FormEvent): Promise {\r\n this.emailAddressValue = (this._EmailAddressInputRef && this._EmailAddressInputRef.current && this._EmailAddressInputRef.current.value) ? true : false;\r\n\r\n const eA = (this._EmailAddressInputRef && this._EmailAddressInputRef.current && this._EmailAddressInputRef.current.value) ? this._EmailAddressInputRef.current.value : '';\r\n const eAVal = this._EmailAddressInputRef.current!.value;\r\n\r\n if (!this.emailAddressValue) {\r\n this.setState({\r\n eAError: true,\r\n reqError: true\r\n });\r\n } else if (!this._isEmailValid(eAVal)) {\r\n this.setState({\r\n eAValError: true\r\n });\r\n } else if (this.props.config.reCaptchaOption && !this.state.reCaptchaChecked) {\r\n this.setState({\r\n rCCError: true\r\n });\r\n } else if (!this._PrivacyPolicyRef.current!.checked) {\r\n this.setState({\r\n privacyPolicyChecked: false,\r\n pPCError: true\r\n });\r\n } else {\r\n this.formInputValues = (this.emailAddressValue) ? true : false;\r\n if (this.formInputValues && this.state.privacyPolicyChecked && !this.state.eAValError) {\r\n try {\r\n await this._postEmailContact(eA);\r\n\r\n this._clearValues();\r\n this._recaptchaRef.current?.reset();\r\n } catch (e) {\r\n console.log(e, 'Please fill the form!');\r\n }\r\n }\r\n }\r\n }\r\n\r\n private async _postEmailContact(email: string): Promise {\r\n // NB in test the post body will need to look like this: { content: { emailAddress: email } }\r\n\r\n /* tslint:disable */\r\n const response = await MsDyn365.commerceApiRequest(\r\n this.props.context.request,\r\n 'PostContact',\r\n 'post',\r\n {\r\n emailAddress: email,\r\n country: this.props.config.country,\r\n emarsysGroup: this.props.config.emarsysGroup\r\n }\r\n \r\n ) as any;\r\n \r\n this.responseMessage = response?.data.Message;\r\n this.setState({\r\n responseReceived: true,\r\n responseError: response?.data.Result === 'Error',\r\n responseSuccess: response?.data.Result !== 'Error',\r\n emailAddress: '',\r\n privacyPolicyChecked: false,\r\n reqError: false,\r\n eAValError: false,\r\n rCCError: false\r\n });\r\n\r\n if (response?.data.Result !== 'Error') {\r\n SetCookie(this.props.context.request.cookies, 'HIDE', this._newsletterCookieName, this.props.config.cookieAge || 30* 24 * 60 * 60)\r\n }\r\n /* tslint:enable */\r\n }\r\n\r\n private _clearValues(): void {\r\n if (this._PrivacyPolicyRef.current) {\r\n this._PrivacyPolicyRef.current.checked = false;\r\n const recaptchaWrapper = document.querySelector('.recaptcha');\r\n recaptchaWrapper && recaptchaWrapper.classList.toggle('newsletter-recapture-visable', true);\r\n }\r\n\r\n if (this._EmailAddressInputRef.current) {\r\n this._EmailAddressInputRef.current!.value = '';\r\n }\r\n }\r\n}\r\n\r\nexport default CittaNewsletterSubscribe;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { ICittaNewsletterSubscribeViewProps } from './citta-newsletter-subscribe';\r\n\r\n/**\r\n *\r\n * ICittaProductSkuView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class ICittaNewsletterSubscribeView extends React.PureComponent {\r\n\r\n public render(): JSX.Element | null {\r\n const { SubscribeWrapper, subscribeResponse, subscribeForm, responseSuccess, userEmail } = this.props;\r\n const { FormWrapper, FormContainer, emailInput, checkboxPrivacyPolicy, subscribeButtton, reCaptcha, subscribeThanks } = subscribeForm;\r\n return (\r\n \r\n {subscribeResponse}\r\n \r\n \r\n {emailInput}\r\n {checkboxPrivacyPolicy}\r\n {reCaptcha}\r\n {responseSuccess ? subscribeThanks : subscribeButtton}\r\n {userEmail}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\nexport default ICittaNewsletterSubscribeView;\r\n","import { ICookieValue } from '@msdyn365-commerce/core';\r\n\r\n// tslint:disable-next-line: no-any\r\nexport const GetCookie = (cookie: any, cookieName: string): string | undefined => {\r\n // tslint:disable-next-line: prefer-type-cast\r\n const marketCookie = cookie.get(cookieName) as ICookieValue | undefined;\r\n\r\n if (marketCookie && marketCookie.value && marketCookie.value.length > 0) {\r\n return marketCookie.value;\r\n } else {\r\n return undefined;\r\n }\r\n};\r\n\r\n// tslint:disable-next-line: no-any\r\nexport const SetCookie = (cookies: any, value: string, cookieName: string, exp: number): void => {\r\n if (value) {\r\n cookies.set(cookieName, value, { path: '/', maxAge: exp });\r\n }\r\n};","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport classnames from 'classnames';\r\nimport { getRichTextHtml } from '@msdyn365-commerce/core';\r\nimport ReCAPTCHA from 'react-google-recaptcha';\r\nimport * as MsDyn365 from '@msdyn365-commerce/core';\r\nimport { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { Image, IImageSettings } from '@msdyn365-commerce/core';\r\nimport { computed } from 'mobx';\r\nimport { ICittaPopUpCopyData } from './citta-pop-up-copy.data';\r\nimport { ICittaPopUpCopyProps } from './citta-pop-up-copy.props.autogenerated';\r\nimport { GetCookie, SetCookie } from '../../shared-utils/cookie-utilities';\r\nexport interface ICittaPopUpCopyState {\r\n cookieValue?: string;\r\n // firstName: string;\r\n // lastName: string;\r\n emailAddress: string;\r\n eAValError: boolean;\r\n eAError: boolean;\r\n fNError: boolean;\r\n lNError: boolean;\r\n rCCError: boolean;\r\n reqError: boolean;\r\n responseError: boolean;\r\n responseSuccess: boolean;\r\n responseReceived: boolean;\r\n showResponseSuccess: boolean;\r\n reCaptchaChecked: boolean;\r\n // firstNameErrorClass: string;\r\n // lastNameErrorClass: string;\r\n emailErrorClass: string;\r\n}\r\n\r\nexport interface ICittaPopUpCopyForm {\r\n FormWrapper: INodeProps;\r\n FormContainer: INodeProps;\r\n // firstAndLastNameInput: React.ReactNode;\r\n emailInput: React.ReactNode;\r\n reCaptcha: React.ReactNode;\r\n subscribeButtton: React.ReactNode;\r\n subscribeThanks: React.ReactNode;\r\n}\r\nexport interface ICittaPopUpCopyViewProps extends ICittaPopUpCopyProps {\r\n message: String;\r\n image: Image;\r\n cookieValue: string;\r\n closeButton: INodeProps\r\n MessageTextProps: INodeProps;\r\n ImageTextProps: INodeProps;\r\n isMobile: boolean;\r\n SubscribeWrapper: IModuleProps;\r\n subscribeForm:ICittaPopUpCopyForm;\r\n subscribeResponse: React.ReactNode;\r\n responseSuccess: boolean;\r\n showResponseSuccess: boolean;\r\n formErrors: React.ReactNode;\r\n formErrorsNodeProps: INodeProps;\r\n successResponse: React.ReactNode;\r\n showSuccessResponse: boolean;\r\n successResponseNodeProps: INodeProps;\r\n}\r\n\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\n/**\r\n *\r\n * CittaPopUpCopy component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CittaPopUpCopy extends React.PureComponent, ICittaPopUpCopyState> {\r\n // private _FirstNameInputRef: React.RefObject;\r\n // private _LastNameInputRef: React.RefObject;\r\n private _EmailAddressInputRef: React.RefObject;\r\n private _recaptchaRef: React.RefObject;\r\n\r\n // private firstNameValue: boolean = false;\r\n // private lastNameValue: boolean = false;\r\n private emailAddressValue: boolean = false;\r\n private formInputValues: boolean = false;\r\n private responseMessage: string | undefined;\r\n private moduleClassName: string = 'newsletterSubWrap';\r\n private recaptchaErrorMessage: string | undefined;\r\n\r\n\r\n @computed get isMobile(): boolean {\r\n return (this._viewport === 'xs' || this._viewport === 'sm');\r\n }\r\n private _viewport: GridSize;\r\n private _internationalCookieName: string = 'cittainternational';\r\n private _timer: any;\r\n\r\n constructor(props: ICittaPopUpCopyProps) {\r\n super(props);\r\n // this._FirstNameInputRef = React.createRef();\r\n // this._LastNameInputRef = React.createRef();\r\n this._EmailAddressInputRef = React.createRef();\r\n this._recaptchaRef = React.createRef();\r\n const cookieValue = GetCookie(props.context.request.cookies, this._internationalCookieName);\r\n this._viewport = props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\r\n this._handleSubmit = this._handleSubmit.bind(this);\r\n\r\n this.state = {\r\n cookieValue,\r\n // firstName: '',\r\n // lastName: '',\r\n emailAddress: '',\r\n fNError: false,\r\n lNError: false,\r\n eAError: false,\r\n eAValError: false,\r\n rCCError: false,\r\n reqError: false,\r\n responseReceived: false,\r\n responseError: false,\r\n reCaptchaChecked: false,\r\n responseSuccess: false,\r\n showResponseSuccess: false,\r\n // firstNameErrorClass: 'hide',\r\n // lastNameErrorClass: 'hide',\r\n emailErrorClass: 'hide',\r\n };\r\n \r\n this._updateViewport = this._updateViewport.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (MsDyn365.msdyn365Commerce.isBrowser && window.addEventListener) {\r\n window.addEventListener('resize', this._updateViewport);\r\n this._updateViewport();\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.msdyn365Commerce.isBrowser && window.removeEventListener) {\r\n window.removeEventListener('resize', this._updateViewport);\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n context\r\n } = this.props;\r\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\r\n\r\n if (this.state.cookieValue !== 'HIDE') {\r\n this.checkCookie();\r\n }\r\n\r\n if (this.state.cookieValue === 'HIDE' || !isConsentGiven) {\r\n this.stopTimer();\r\n return null;\r\n }\r\n\r\n const viewprops = {\r\n ...this.props,\r\n image: this._renderImage(),\r\n message: this._renderMessage(),\r\n closeButton: this._renderCloseLink(),\r\n SubscribeWrapper: {\r\n moduleProps: this.props,\r\n className: classnames(this.moduleClassName, this.props.config.className)\r\n },\r\n\r\n isMobile: this.isMobile,\r\n MessageTextProps: { className: 'ms-message__content' },\r\n ImageTextProps: { className: 'ms-image__content' },\r\n cookieValue: this.state.cookieValue,\r\n subscribeResponse: this._getSubmitResponse(),\r\n subscribeForm: this._renderForm(),\r\n responseSuccess: this.state.responseSuccess,\r\n showResponseSuccess: this.state.showResponseSuccess,\r\n formErrors: this._renderErrors(),\r\n formErrorsNodeProps: {\r\n className: 'competition-form-errors'\r\n },\r\n successResponse: this._renderSuccessResponse(),\r\n showSuccessResponse: this.state.responseSuccess,\r\n successResponseNodeProps: {\r\n className: 'competition-form-success'\r\n }\r\n };\r\n\r\n return this.props.renderView(viewprops) as React.ReactElement;\r\n }\r\n\r\n private _renderImage(): React.ReactNode {\r\n const gridSettings = this.props.context.request.gridSettings;\r\n\r\n let defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=480&h=680&m=6`, w: 0, h: 0 },\r\n lg: { q: `w=480&h=680&m=6`, w: 0, h: 0 },\r\n xl: { q: `w=480&h=680&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n let image = this.props.config.desktopImage;\r\n // if (this.isMobile) {\r\n // image = this.props.config.mobileImage;\r\n // defaultImageSettings = {\r\n // viewports: {\r\n // xs: { q: `w=680&h=480&m=6`, w: 0, h: 0 },\r\n // lg: { q: `w=680&h=480&m=6`, w: 0, h: 0 },\r\n // },\r\n // lazyload: true\r\n // };\r\n // } \r\n\r\n return (\r\n
\r\n {this.isMobile? null :\r\n }\r\n
\r\n );\r\n }\r\n private _getSubmitResponse(): React.ReactNode {\r\n return (\r\n this.state.responseReceived && this.responseMessage !== '' || undefined\r\n ? (\r\n
\r\n

{this.responseMessage}

\r\n
\r\n )\r\n : null\r\n );\r\n }\r\n \r\n private _renderSuccessResponse(): React.ReactNode {\r\n return (\r\n this.state.responseSuccess\r\n ? (\r\n
\r\n

{this.props.config.successTextResponse}

\r\n
\r\n )\r\n : null\r\n );\r\n }\r\n\r\n private _renderForm(): ICittaPopUpCopyForm {\r\n return {\r\n FormWrapper: {\r\n className: 'competition-form',\r\n },\r\n FormContainer: {\r\n className: 'competition-form-div',\r\n },\r\n // firstAndLastNameInput: this._renderFirstAndLastNameInput(),\r\n emailInput: this._renderEmailInput(),\r\n subscribeButtton: this._renderSubmitButton(),\r\n subscribeThanks: this._renderSubmitThanks(),\r\n reCaptcha: this._renderReCaptcha(),\r\n };\r\n }\r\n\r\n // private _renderFirstAndLastNameInput(): React.ReactNode {\r\n // return (\r\n //
\r\n //
\r\n // \r\n //
\r\n //
\r\n // \r\n //
\r\n //
\r\n // );\r\n // }\r\n\r\n private _renderEmailInput(): React.ReactNode {\r\n return (\r\n
\r\n {this.state.eAError || this.state.eAValError ? this._renderAlert('email-address-input') : ''}\r\n \r\n
\r\n );\r\n }\r\n\r\n\r\n private _renderAlert(className: string): JSX.Element {\r\n return <>;\r\n }\r\n\r\n private _renderRecaptchaAlert(className: string): JSX.Element {\r\n\r\n if (this.props.config.reCaptchaOption) {\r\n if (!this.state.reCaptchaChecked) {\r\n this.recaptchaErrorMessage = this.props.resources.recaptchaErrorMessage;\r\n }\r\n }\r\n\r\n const rCCError = this.state.rCCError;\r\n return (\r\n <>\r\n {rCCError && (\r\n \r\n {\r\n this.recaptchaErrorMessage &&\r\n <>\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n private _renderReCaptcha(): React.ReactNode {\r\n return (\r\n
\r\n
\r\n {this.state.rCCError ? this._renderRecaptchaAlert('recaptcha-error') : ''}\r\n this._submit()}\r\n />\r\n
\r\n
\r\n );\r\n }\r\n\r\n private _renderSubmitButton(): React.ReactNode {\r\n return (\r\n
\r\n {this.props.config.submitButtonLabel || 'subscribe'}\r\n \r\n
\r\n );\r\n }\r\n\r\n private _renderSubmitThanks(): React.ReactNode {\r\n return (\r\n
\r\n
\r\n Thanks!\r\n
\r\n
\r\n );\r\n }\r\n\r\n private _showErrors = (): void => {\r\n this.setState({\r\n emailErrorClass: this._checkEmailError() ? 'show' : 'hide',\r\n // firstNameErrorClass: (this._FirstNameInputRef.current && this._FirstNameInputRef.current.value.length === 0) ? 'show' : 'hide',\r\n // lastNameErrorClass: (this._LastNameInputRef.current && this._LastNameInputRef.current.value.length === 0) ? 'show' : 'hide',\r\n });\r\n }\r\n private _isEmailValid = (email: string): boolean => {\r\n const regex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return regex.test(email);\r\n };\r\n\r\n private _checkEmailError = (): boolean => {\r\n const email: string = this._EmailAddressInputRef.current && this._EmailAddressInputRef.current.value || '';\r\n if (email.length === 0) {\r\n return true;\r\n } else {\r\n return !this._isEmailValid(email);\r\n }\r\n }\r\n\r\n private _renderErrors = (): JSX.Element => {\r\n const {resources} = this.props;\r\n return (\r\n <>\r\n {/*
\r\n {resources.firstNameError}\r\n
\r\n
\r\n {resources.lastNameError}\r\n
*/}\r\n
\r\n {resources.emailError}\r\n
\r\n \r\n \r\n );\r\n }\r\n\r\n\r\n private _handleChange = (name: string) => (e: React.ChangeEvent | React.ChangeEvent) => {\r\n const value = e.target.value;\r\n switch (name) {\r\n // case 'firstName': {\r\n // this.setState({ firstName: value, fNError: false, reqError: false, eAValError: false});\r\n // break;\r\n // }\r\n // case 'lastName': {\r\n // this.setState({ lastName: value, lNError: false, reqError: false, eAValError: false});\r\n // break;\r\n // }\r\n case 'emailAddress': {\r\n this.setState({ emailAddress: value, eAError: false, reqError: false, eAValError: false});\r\n break;\r\n }\r\n default: {\r\n console.log('No input box changes');\r\n this.setState({ reqError: false, eAValError: false});\r\n }\r\n }\r\n }\r\n\r\n private _handleSubmit(e: React.MouseEvent | React.KeyboardEvent | React.FormEvent) {\r\n this._recaptchaRef.current?.execute()\r\n }\r\n\r\n private async _submit(): Promise {\r\n this._showErrors();\r\n \r\n // this.firstNameValue = (this._FirstNameInputRef && this._FirstNameInputRef.current && this._FirstNameInputRef.current.value) ? true : false;\r\n // this.lastNameValue = (this._LastNameInputRef && this._LastNameInputRef.current && this._LastNameInputRef.current.value) ? true : false;\r\n this.emailAddressValue = (this._EmailAddressInputRef && this._EmailAddressInputRef.current && this._EmailAddressInputRef.current.value) ? true : false; \r\n\r\n // const fN = (this._FirstNameInputRef && this._FirstNameInputRef.current && this._FirstNameInputRef.current.value) ? this._FirstNameInputRef.current.value : '';\r\n // const lN = (this._LastNameInputRef && this._LastNameInputRef.current && this._LastNameInputRef.current.value) ? this._LastNameInputRef.current.value : '';\r\n const eA = (this._EmailAddressInputRef && this._EmailAddressInputRef.current && this._EmailAddressInputRef.current.value) ? this._EmailAddressInputRef.current.value : '';\r\n const eAVal = this._EmailAddressInputRef.current!.value;\r\n\r\n const recaptchaValue = this._recaptchaRef.current?.getValue();\r\n // console.log('recaptchaValue', recaptchaValue, this._recaptchaRef.current);\r\n\r\n // if (!this.firstNameValue) {\r\n // this.setState({\r\n // fNError: true,\r\n // reqError: true\r\n // });\r\n // this._recaptchaRef.current?.reset();\r\n // } else if (!this.lastNameValue) {\r\n // this.setState({\r\n // lNError: true,\r\n // reqError: true\r\n // });\r\n // this._recaptchaRef.current?.reset();\r\n // } else if (!this.emailAddressValue) {\r\n if (!this.emailAddressValue) {\r\n this.setState({\r\n eAError: true,\r\n reqError: true\r\n });\r\n this._recaptchaRef.current?.reset();\r\n } else if (!this._isEmailValid(eAVal)) {\r\n this.setState({\r\n eAValError: true\r\n });\r\n this._recaptchaRef.current?.reset();\r\n } else if (!recaptchaValue) {\r\n this.setState({\r\n rCCError: true\r\n });\r\n this._recaptchaRef.current?.reset();\r\n } else {\r\n this.formInputValues = (this.emailAddressValue) ? true : false;\r\n if (this.formInputValues && !this.state.eAValError) {\r\n try {\r\n // await this._postEntry(fN, lN, eA);\r\n await this._postEntry(eA);\r\n\r\n this._clearValues();\r\n this._recaptchaRef.current?.reset();\r\n } catch (e) {\r\n console.log(e, 'Please fill in the form!');\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n // private async _postEntry(firstName: string, lastName: string, email: string): Promise {\r\n private async _postEntry(email: string): Promise {\r\n // NB in test the post body will need to look like this: { content: { emailAddress: email } }\r\n /* tslint:disable */\r\n\r\n let emarsysGroupId = this.props.config.emarsysGroupId;\r\n \r\n const response = await MsDyn365.commerceApiRequest(\r\n this.props.context.request,\r\n 'PostPopUpCopy',\r\n 'post',\r\n {\r\n // firstName: firstName,\r\n // lastName: lastName,\r\n emailAddress: email,\r\n country: this.props.config.country,\r\n emarsysGroupId: emarsysGroupId,\r\n optIn:true\r\n }\r\n \r\n ) as any;\r\n \r\n this.responseMessage = response?.data.Message;\r\n\r\n if (response?.data.Result !== 'Error') {\r\n this.setState({\r\n responseReceived: true,\r\n responseError: response?.data.Result === 'Error',\r\n responseSuccess: response?.data.Result !== 'Error',\r\n showResponseSuccess: true,\r\n emailAddress: '',\r\n // firstName: '',\r\n // lastName: '',\r\n reqError: false,\r\n eAValError: false,\r\n rCCError: false\r\n });\r\n\r\n setTimeout(this._setCookie, 1500)\r\n\r\n } else {\r\n this.setState({\r\n responseReceived: true,\r\n responseError: response?.data.Result === 'Error',\r\n responseSuccess: response?.data.Result !== 'Error',\r\n emailAddress: '',\r\n reqError: false,\r\n eAValError: false,\r\n rCCError: false\r\n });\r\n }\r\n }\r\n\r\n private _clearValues(): void {\r\n \r\n if (this._EmailAddressInputRef.current) {\r\n this._EmailAddressInputRef.current!.value = '';\r\n }\r\n // if (this._FirstNameInputRef.current) {\r\n // this._FirstNameInputRef.current!.value = '';\r\n // }\r\n // if (this._LastNameInputRef.current) {\r\n // this._LastNameInputRef.current!.value = '';\r\n // }\r\n }\r\n\r\n private _renderMessage(): React.ReactNode {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n private checkCookie = () => {\r\n if(!this._timer) {\r\n this._timer = setInterval(()=> {\r\n const cookieValue = GetCookie(this.props.context.request.cookies, this._internationalCookieName);\r\n if (cookieValue === 'HIDE') {\r\n this.setState({cookieValue: cookieValue })\r\n }\r\n }, 1000)\r\n }\r\n }\r\n\r\n private stopTimer = () => {\r\n clearInterval(this._timer);\r\n }\r\n\r\n private _renderCloseLink = () => {\r\n return (\r\n this._setCookie()}\r\n >x\r\n )\r\n };\r\n\r\n private _setCookie = () => {\r\n const { config } = this.props;\r\n this.setState({cookieValue: 'HIDING'})\r\n SetCookie(this.props.context.request.cookies, 'HIDE', this._internationalCookieName, config.cookieAge || 2592000)\r\n setTimeout(() => {\r\n this.setState({cookieValue: 'HIDE'})\r\n }, 3000)\r\n }\r\n\r\n private _getViewport(): GridSize {\r\n const { context } = this.props;\r\n\r\n // always render in mobile viewport on a mobile device\r\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n return 'xs';\r\n }\r\n\r\n if (MsDyn365.msdyn365Commerce.isBrowser && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n } else {\r\n return 'xl';\r\n }\r\n }\r\n }\r\n\r\n return 'lg';\r\n }\r\n\r\n private _updateViewport(): void {\r\n this._viewport = this._getViewport();\r\n }\r\n}\r\n\r\nexport default CittaPopUpCopy;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport { ICittaPopUpCopyViewProps } from './citta-pop-up-copy';\r\n\r\nexport default (props: ICittaPopUpCopyViewProps) => {\r\n const {\r\n message,\r\n closeButton,\r\n image,\r\n cookieValue,\r\n MessageTextProps,\r\n isMobile,\r\n ImageTextProps,\r\n subscribeForm,\r\n SubscribeWrapper,\r\n subscribeResponse,\r\n responseSuccess,\r\n showResponseSuccess,\r\n formErrors,\r\n formErrorsNodeProps,\r\n successResponseNodeProps,\r\n showSuccessResponse,\r\n successResponse\r\n } = props;\r\n\r\n const {\r\n FormWrapper,\r\n FormContainer,\r\n // firstAndLastNameInput,\r\n emailInput,\r\n subscribeButtton,\r\n subscribeThanks,\r\n reCaptcha,\r\n } = subscribeForm;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {closeButton}\r\n
\r\n
\r\n {image &&

{image}

}\r\n {message && \r\n

{message}

\r\n \r\n {subscribeResponse}\r\n {showSuccessResponse ?\r\n \r\n {successResponse}\r\n \r\n : \r\n \r\n {/* {firstAndLastNameInput} */}\r\n {emailInput}\r\n {reCaptcha}\r\n {responseSuccess && showResponseSuccess ? subscribeThanks : subscribeButtton}\r\n \r\n \r\n {formErrors}\r\n \r\n \r\n }\r\n \r\n
}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { Button, INodeProps} from '@msdyn365-commerce-modules/utilities';\r\nimport { ICittaNewsletterSubscribePopUpData } from './citta-newsletter-subscribe-pop-up.data';\r\nimport { ICittaNewsletterSubscribePopUpProps } from './citta-newsletter-subscribe-pop-up.props.autogenerated';\r\nimport { GetCookie, SetCookie } from '../../shared-utils/cookie-utilities';\r\nexport interface ICittaNewsletterSubscribePopUpState {\r\n cookieValue?: string;\r\n}\r\nexport interface ICittaNewsletterSubscribePopUpViewProps extends ICittaNewsletterSubscribePopUpProps {\r\n newsletterSubscribe: React.ReactNode[];\r\n message: String;\r\n header: String;\r\n closeButton?: INodeProps;\r\n MessageTextProps: INodeProps;\r\n HeaderTextProps: INodeProps;\r\n cookieValue: string;\r\n // state: ICittaNewsletterSubscribePopUpState;\r\n}\r\n\r\n/**\r\n *\r\n * CittaNewsletterSubscribePopUp component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CittaNewsletterSubscribePopUp extends React.PureComponent, ICittaNewsletterSubscribePopUpState> {\r\n private _newsletterCookieName: string = 'cittaSignUp';\r\n private _timer: any;\r\n constructor(props: ICittaNewsletterSubscribePopUpViewProps) {\r\n super(props);\r\n const cookieValue = GetCookie(props.context.request.cookies, this._newsletterCookieName);\r\n\r\n this.state = {\r\n cookieValue\r\n };\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n slots, \r\n config,\r\n context\r\n } = this.props;\r\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\r\n\r\n \r\n if(!this.props.slots || !this.props.slots.newsletterSubscribe || !this.props.slots.newsletterSubscribe.length) {\r\n this.props.context.telemetry.error('newsletter slots content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n if (this.state.cookieValue !== 'HIDE') {\r\n this.checkCookie();\r\n }\r\n\r\n if (this.state.cookieValue === 'HIDE' || !isConsentGiven) {\r\n this.stopTimer();\r\n return null;\r\n }\r\n\r\n const viewprops = {\r\n ...this.props,\r\n newsletterSubscribe: slots && slots.newsletterSubscribe,\r\n message: config.message,\r\n header: config.header || 'keep in touch',\r\n closeButton: this._renderCloseLink(),\r\n MessageTextProps: { className: 'ms-message__content' },\r\n HeaderTextProps: { className: 'ms-header__content' },\r\n cookieValue: this.state.cookieValue\r\n }\r\n\r\n return this.props.renderView(viewprops);\r\n }\r\n\r\n private checkCookie = () => {\r\n if(!this._timer) {\r\n this._timer = setInterval(()=> {\r\n const cookieValue = GetCookie(this.props.context.request.cookies, this._newsletterCookieName);\r\n if (cookieValue === 'HIDE') {\r\n this.setState({cookieValue: 'HIDING'})\r\n setTimeout(() => {\r\n this.setState({cookieValue: cookieValue })\r\n }, 3000)\r\n }\r\n }, 1000)\r\n }\r\n }\r\n\r\n private stopTimer = () => {\r\n clearInterval(this._timer);\r\n }\r\n\r\n private _renderCloseLink = () => {\r\n return (\r\n this._setCookie()}\r\n >x\r\n )\r\n };\r\n\r\n private _setCookie = () => {\r\n const { config } = this.props;\r\n this.setState({cookieValue: 'HIDING'})\r\n SetCookie(this.props.context.request.cookies, 'HIDE', this._newsletterCookieName, config.cookieAge || 2592000)\r\n setTimeout(() => {\r\n this.setState({cookieValue: 'HIDE'})\r\n }, 3000)\r\n }\r\n}\r\n\r\nexport default CittaNewsletterSubscribePopUp;\r\n"],"sourceRoot":""}