{"version":3,"file":"static/js/35.877405f8cbcaac55cf18.chunk.js","mappings":"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","sources":["webpack://Citta2.0/./src/modules/citta-commercial-header/components/nav-icon.tsx?8ec6","webpack://Citta2.0/./src/modules/citta-commercial-header/components/logo.tsx?2625","webpack://Citta2.0/./src/modules/citta-commercial-header/citta-commercial-header.tsx?6007","webpack://Citta2.0/./src/modules/citta-commercial-header/citta-commercial-header.view.tsx?42e4","webpack://Citta2.0/./src/modules/citta-subscribe-newsletter-form/citta-subscribe-newsletter-form.tsx?429d","webpack://Citta2.0/./src/modules/citta-subscribe-newsletter-form/citta-subscribe-newsletter-form.view.tsx?6e69","webpack://Citta2.0/./src/modules/interactive-feature-item/components/links.tsx?7423","webpack://Citta2.0/./src/modules/interactive-feature-item/interactive-feature-item.tsx?792c","webpack://Citta2.0/./src/modules/interactive-feature-item/interactive-feature-item.view.tsx?bdcc"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\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\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nexport interface INavIconProps {\r\n mobileHamburgerAriaLabel: string;\r\n isExpanded: boolean;\r\n targetId: string;\r\n telemetryContent?: ITelemetryContent;\r\n toggleNavBar(): void;\r\n}\r\n\r\n/**\r\n *\r\n * NavIcon component\r\n * @extends {React.PureComponent}\r\n */\r\n\r\n@observer\r\nexport class NavIcon extends React.Component {\r\n\r\n private attributes?: Msdyn365.IDictionary;\r\n\r\n constructor(props: INavIconProps) {\r\n super(props);\r\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.NavIcon);\r\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n }\r\n\r\n public render():JSX.Element {\r\n return (\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// import { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nexport interface ILogoProps {\r\n image: Msdyn365.IImageData;\r\n gridSettings?: Msdyn365.IGridSettings;\r\n link?: any;\r\n className?: string;\r\n requestContext: Msdyn365.IRequestContext;\r\n}\r\n\r\n\r\n/**\r\n *\r\n * Logo component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class Logo extends React.PureComponent {\r\n\r\n // private attributes?: Msdyn365.IDictionary;\r\n\r\n constructor(props: ILogoProps) {\r\n super(props);\r\n // const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.Logo);\r\n // this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n }\r\n public render():JSX.Element {\r\n return(\r\n
\r\n {this._renderLogo(this.props)}\r\n
\r\n );\r\n }\r\n\r\n private _renderLogo(config: ILogoProps):JSX.Element {\r\n if(config.link && config.link.linkUrl) {\r\n return(\r\n \r\n {this._renderImage(config)}\r\n \r\n );\r\n }\r\n return(\r\n this._renderImage(config)\r\n );\r\n }\r\n\r\n private _renderImage(config: ILogoProps): JSX.Element {\r\n const defaultImageSettings: Msdyn365.IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=132&h=28&m=6`, w: 0, h: 0 },\r\n lg: { q: `w=160&h=48&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Logo;","/*!\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/* eslint-disable no-duplicate-imports */\r\nimport {\r\n IModuleProps, \r\n INodeProps,\r\n Modal,\r\n ModalBody, \r\n ModalHeader\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { ICittaCommercialHeaderData } from './citta-commercial-header.data';\r\nimport { ICittaCommercialHeaderProps } from './citta-commercial-header.props.autogenerated';\r\n\r\nimport { NavIcon, Logo } from './components';\r\n\r\nexport interface IHeaderState {\r\n mobileMenuCollapsed: boolean;\r\n signinPopoverOpen: boolean;\r\n}\r\n\r\nexport interface IHeaderViewProps extends ICittaCommercialHeaderProps {\r\n HeaderTag: IModuleProps;\r\n loginLink?: React.ReactNode;\r\n menuBar?: React.ReactNode[];\r\n navIcon: React.ReactNode;\r\n MobileMenuContainer: INodeProps;\r\n MobileMenuHeader: React.ReactNode;\r\n MobileMenuBodyContainer: INodeProps;\r\n logo: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * Header component.\r\n * @extends {React.PureComponent>}\r\n */\r\n@observer\r\nclass CommercialHeader extends React.PureComponent, IHeaderState> {\r\n constructor(props: ICittaCommercialHeaderProps) {\r\n super(props);\r\n this.state = {\r\n mobileMenuCollapsed: true,\r\n signinPopoverOpen: false\r\n };\r\n\r\n this._toggleNavbar = this._toggleNavbar.bind(this);\r\n }\r\n \r\n public componentDidMount(): void {\r\n this._stickyHeaderSetup();\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- app config is generic\r\n const menuBarSlot = this._getSlot('menuBar');\r\n const navbarKey = 'header-nav-mobile';\r\n const headerClassName = classnames('commercial-header', this.props.config.className);\r\n \r\n const {logoLink, logoImage } = this.props.config;\r\n\r\n const viewProps: IHeaderViewProps = {\r\n ...(this.props as ICittaCommercialHeaderProps),\r\n ...(this.state),\r\n logo: ,\r\n\r\n HeaderTag: {\r\n moduleProps: this.props,\r\n className: classnames(headerClassName),\r\n tag: 'header'\r\n },\r\n menuBar: menuBarSlot && menuBarSlot.length && menuBarSlot || [],\r\n navIcon: ,\r\n // loginLink: this._getLoginLink(loginLink, loginLinkText),\r\n MobileMenuContainer: {\r\n tag: Modal,\r\n id: navbarKey,\r\n className: 'ms-header__mobile-hamburger',\r\n isOpen: !this.state.mobileMenuCollapsed,\r\n wrapClassName: `ms-header__citta-modal citta-header-mobile ${!this.state.mobileMenuCollapsed ? 'modal-open' : ''}`,\r\n toggle: this._toggleNavbar\r\n },\r\n MobileMenuHeader: (\r\n \r\n ),\r\n MobileMenuBodyContainer: {\r\n tag: ModalBody,\r\n className: 'ms-header__mobile-hamburger-menu-body',\r\n }\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _toggleNavbar(): void {\r\n console.log('set state', !this.state.mobileMenuCollapsed)\r\n this.setState({\r\n mobileMenuCollapsed: !this.state.mobileMenuCollapsed\r\n });\r\n this.state.mobileMenuCollapsed && this._setHeader(this.state.mobileMenuCollapsed);\r\n }\r\n\r\n private _getSlot(slotName: string): React.ReactNode[] | null {\r\n const { slots } = this.props;\r\n return (slots && slots[slotName] && slots[slotName].length && slots[slotName]) || null;\r\n }\r\n\r\n private _setHeader(lockHeader?: boolean): void {\r\n const headerElem = document.querySelector('.commercial-header');\r\n if (headerElem) {\r\n if (lockHeader || document.documentElement.scrollTop > 0) {\r\n headerElem.classList.add('lock-opaque');\r\n } else if (!window.document.body.classList.contains('search-open')) { \r\n headerElem.classList.remove('lock-opaque');\r\n }\r\n }\r\n }\r\n\r\n private _updateHeader(isInMobileMenu?: boolean): void {\r\n this._setHeader();\r\n }\r\n \r\n private _stickyHeaderSetup(): void {\r\n window.onscroll = () => {\r\n this._updateHeader();\r\n };\r\n this._updateHeader();\r\n }\r\n}\r\n\r\nexport default CommercialHeader;\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/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IHeaderViewProps } from './citta-commercial-header';\r\n\r\nconst headerView: React.FC = props => {\r\n const {\r\n HeaderTag,\r\n menuBar,\r\n MobileMenuContainer,\r\n MobileMenuBodyContainer,\r\n logo\r\n } = props;\r\n return (\r\n \r\n {props.navIcon}\r\n {_renderReactFragment(menuBar!)}\r\n {logo}\r\n \r\n \r\n { props.MobileMenuHeader }\r\n {_renderReactFragment(menuBar!)}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\r\n return (\r\n \r\n {items && items.length\r\n ? items.map((slot: React.ReactNode, index: number) => {\r\n return {slot};\r\n })\r\n : null}\r\n \r\n );\r\n}\r\n\r\nexport default headerView;\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 { getRichTextHtml } from '@msdyn365-commerce/core';\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 * as React from 'react';\r\nimport ReCAPTCHA from 'react-google-recaptcha';\r\nimport { ICittaSubscribeNewsletterFormData } from './citta-subscribe-newsletter-form.data';\r\nimport { ICittaSubscribeNewsletterFormProps } from './citta-subscribe-newsletter-form.props.autogenerated';\r\n\r\ninterface ICittaSubscribeNewsletterFormState {\r\n firstName: string;\r\n lastName: string;\r\n emailAddress: string;\r\n privacyPolicyChecked: boolean;\r\n eAValError: boolean;\r\n eAError: boolean;\r\n fNError: boolean;\r\n lNError: boolean;\r\n tsCsError: boolean;\r\n rCCError: boolean;\r\n reqError: boolean;\r\n responseReceived: boolean;\r\n responseError: boolean;\r\n responseSuccess: boolean;\r\n charactersLeft?: number;\r\n firstNameErrorClass: string;\r\n lastNameErrorClass: string;\r\n emailErrorClass: string;\r\n privacyPolicyErrorClass: string;\r\n reCaptchaChecked: boolean;\r\n}\r\n\r\nexport interface ICittaSubscribeNewsletterForm {\r\n FormWrapper: INodeProps;\r\n FormContainer: INodeProps;\r\n firstAndLastNameInput: React.ReactNode;\r\n emailInput: React.ReactNode;\r\n checkboxPrivacyPolicy: React.ReactNode;\r\n subscribeButtton: React.ReactNode;\r\n subscribeThanks: React.ReactNode;\r\n tsAndCsText: React.ReactNode;\r\n reCaptcha: React.ReactNode;\r\n}\r\n\r\n\r\nexport interface ICittaSubscribeNewsletterFormViewProps extends ICittaSubscribeNewsletterFormProps {\r\n SubscribeWrapper: IModuleProps;\r\n subscribeResponse: React.ReactNode;\r\n subscribeForm: ICittaSubscribeNewsletterForm;\r\n responseSuccess: 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\n/**\r\n *\r\n * CittaInStoreGiveawayForm component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CittaSubscribeNewsletterForm extends React.PureComponent, ICittaSubscribeNewsletterFormState> {\r\n private _FirstNameInputRef: React.RefObject;\r\n private _LastNameInputRef: React.RefObject;\r\n private _EmailAddressInputRef: React.RefObject;\r\n private _PrivacyPolicyRef: React.RefObject;\r\n\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\r\n // private phoneNumberValue: 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 constructor(props: ICittaSubscribeNewsletterFormProps) {\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._PrivacyPolicyRef = React.createRef();\r\n this._recaptchaRef = React.createRef();\r\n this._handleSubmit = this._handleSubmit.bind(this);\r\n\r\n this.state = {\r\n firstName: '',\r\n lastName: '',\r\n emailAddress: '',\r\n privacyPolicyChecked: false,\r\n fNError: false,\r\n lNError: false,\r\n eAValError: false,\r\n eAError: false,\r\n tsCsError: false,\r\n rCCError: false,\r\n reqError: false,\r\n responseReceived: false,\r\n responseError: false,\r\n responseSuccess: false,\r\n firstNameErrorClass: 'hide',\r\n lastNameErrorClass: 'hide',\r\n emailErrorClass: 'hide',\r\n privacyPolicyErrorClass: 'hide',\r\n reCaptchaChecked: false\r\n };\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const viewProps: ICittaSubscribeNewsletterFormViewProps = {\r\n ...(this.props as ICittaSubscribeNewsletterFormProps),\r\n SubscribeWrapper: {\r\n moduleProps: this.props,\r\n className: classnames(this.moduleClassName)\r\n },\r\n subscribeResponse: this._getSubmitResponse(),\r\n subscribeForm: this._renderForm(),\r\n responseSuccess: this.state.responseSuccess,\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 _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(): ICittaSubscribeNewsletterForm {\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 checkboxPrivacyPolicy: this._renderCheckboxPrivacyPolicy(),\r\n subscribeButtton: this._renderSubmitButton(),\r\n subscribeThanks: this._renderSubmitThanks(),\r\n tsAndCsText: this._renderTsCsText(),\r\n reCaptcha: this._renderReCaptcha()\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 _renderReCaptcha(): React.ReactNode {\r\n //recaptcha newsletter-recapture-visable\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 this._submit()}\r\n />\r\n
: null\r\n }\r\n
\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 _renderTsCsText(): React.ReactNode {\r\n return (\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 \r\n
\r\n );\r\n }\r\n\r\n private _renderCheckboxPrivacyPolicy(): React.ReactNode {\r\n return (\r\n
\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 _renderSubmitButton(): React.ReactNode {\r\n return (\r\n
\r\n {this.props.config.submitButtonLabel}\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 for Entering!\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 privacyPolicyErrorClass: this._PrivacyPolicyRef.current!.checked ? 'hide' : 'show'\r\n });\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 {resources.ppError}\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 case 'privacyPolicy': {\r\n const isChecked = this._PrivacyPolicyRef.current && this._PrivacyPolicyRef.current.checked ? this._PrivacyPolicyRef.current.checked : false;\r\n this.setState({ privacyPolicyChecked: isChecked, 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 _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 _handleSubmit(e: React.MouseEvent | React.KeyboardEvent | React.FormEvent): Promise {\r\n await 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 const recaptchaValue = this._recaptchaRef.current?.getValue();\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 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 (!this._PrivacyPolicyRef.current!.checked) {\r\n this.setState({\r\n privacyPolicyChecked: false,\r\n tsCsError: true\r\n });\r\n this._recaptchaRef.current?.reset();\r\n }\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\r\n this._clearValues();\r\n setTimeout(() => {\r\n window.location.reload();\r\n }, 6000);\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 private async _postEntry(firstName: string, lastName: string, 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 let emarsysCompetitionGroupId = this.props.config.emarsysCompetitionGroupId;\r\n let emarsysGroupName = this.props.config.emarsysGroupOptInName;\r\n\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 firstName: firstName,\r\n lastName: lastName,\r\n emailAddress: email,\r\n country: this.props.config.country,\r\n emarsysGroup: this.props.config.emarsysGroupId,\r\n emarsysCompetitionGroupId: emarsysCompetitionGroupId,\r\n emarsysGroupName: emarsysGroupName,\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\r\n if (MsDyn365.msdyn365Commerce.isBrowser && this.props.config.urlToOpenOnSuccess) {\r\n // @ts-ignore\r\n // window.location = this.props.config.urlToOpenOnSuccess;\r\n window.open(this.props.config.urlToOpenOnSuccess, '_blank');\r\n }\r\n\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 firstName: '',\r\n lastName: '',\r\n reqError: false,\r\n eAValError: false,\r\n rCCError: false\r\n });\r\n /* tslint:enable */\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 firstName: '',\r\n lastName: '',\r\n reqError: false,\r\n eAValError: false,\r\n rCCError: false\r\n });\r\n \r\n }\r\n\r\n }\r\n\r\n private _clearValues(): void {\r\n this._recaptchaRef.current?.reset();\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 if (this._PrivacyPolicyRef.current) {\r\n this._PrivacyPolicyRef.current.checked = false;\r\n }\r\n if (this._EmailAddressInputRef.current) {\r\n this._EmailAddressInputRef.current!.value = '';\r\n }\r\n }\r\n\r\n}\r\n\r\nexport default CittaSubscribeNewsletterForm;\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 { ICittaSubscribeNewsletterFormViewProps } from './citta-subscribe-newsletter-form';\r\n\r\n/**\r\n *\r\n * ICittaProductSkuView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class ICittaSubscribeNewsletterFormView extends React.PureComponent {\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n SubscribeWrapper,\r\n subscribeResponse,\r\n subscribeForm,\r\n responseSuccess,\r\n formErrors,\r\n formErrorsNodeProps,\r\n successResponseNodeProps,\r\n showSuccessResponse,\r\n successResponse\r\n } = this.props;\r\n\r\n const {\r\n FormWrapper,\r\n FormContainer,\r\n firstAndLastNameInput,\r\n emailInput,\r\n checkboxPrivacyPolicy,\r\n subscribeButtton,\r\n reCaptcha,\r\n subscribeThanks\r\n } = subscribeForm;\r\n\r\n return (\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 {checkboxPrivacyPolicy}\r\n {reCaptcha}\r\n {responseSuccess ? subscribeThanks : subscribeButtton}\r\n \r\n \r\n {formErrors}\r\n \r\n \r\n }\r\n \r\n );\r\n }\r\n}\r\nexport default ICittaSubscribeNewsletterFormView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../interactive-feature-item.props.autogenerated';\n\n/**\n * Interactive Feature links.\n */\nexport interface IInteractiveFeatureLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * IInteractiveFeatureLinks component.\n * @extends {React.PureComponent}\n */\nexport class InteractiveFeatureCollectionLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && ArrayExtensions.hasElements(editableLinks) ? (\n \n ) : null}\n
\n );\n }\n\n /**\n * IInteractiveFeatureLinks component.\n * @param linkdata - Link data.\n * @returns Editable links.\n */\n private readonly _mapEditableLinks = (linkdata?: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || !ArrayExtensions.hasElements(linkdata)) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n for (const link of linkdata) {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-interactive-feature-collection__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n }\n\n return editableLinks;\n };\n}\nexport default InteractiveFeatureCollectionLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { InteractiveFeatureCollectionLinks } from './components';\nimport { IHeadingData, IInteractiveFeatureItemProps } from './interactive-feature-item.props.autogenerated';\n\n/**\n * Interactive Feature Item view props.\n */\nexport interface IInteractiveFeatureItemViewProps extends IInteractiveFeatureItemProps<{}> {\n title: React.ReactNode;\n paragraph: React.ReactNode;\n image: React.ReactNode;\n links: React.ReactNode;\n featureItem: IModuleProps;\n isMosaic: boolean;\n indexItem?: number;\n itemCounter?: number;\n\n interactiveFeatureCollectionCarouselContainer: INodeProps;\n interactiveFeatureCollectionCarouselImage: INodeProps;\n interactiveFeatureCollectionCarouselContent: INodeProps;\n\n interactiveFeatureCollectionMosaicContainer: INodeProps;\n interactiveFeatureCollectionMosaicImage: INodeProps;\n interactiveFeatureCollectionMosaicDetails: INodeProps;\n}\n\n/**\n * Interactive Feature Item Extented props.\n */\nexport interface IInteractiveFeatureItemExtentedProps extends IInteractiveFeatureItemProps<{}> {\n isMosaic?: boolean;\n indexItem?: number;\n itemCounter?: number;\n}\n\n/**\n *\n * InteractiveFeatureItem component.\n * @extends {React.PureComponent}\n */\nexport class InteractiveFeatureItem extends React.PureComponent {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: IInteractiveFeatureItemProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { indexItem, itemCounter, isMosaic } = this.props;\n const { heading, paragraph, image, links } = this.props.config;\n const featureItemLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n\n const viewProps = {\n ...this.props,\n indexItem,\n itemCounter,\n isMosaic: isMosaic ? isMosaic : false,\n title: this._createHeading(heading),\n paragraph: this._createParagraph(paragraph),\n image: this._renderImage(image),\n links: featureItemLinks,\n featureItem: {\n moduleProps: this.props,\n className: ''\n },\n interactiveFeatureCollectionCarouselContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__container'\n },\n interactiveFeatureCollectionCarouselImage: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__image'\n },\n interactiveFeatureCollectionCarouselContent: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__heading'\n },\n interactiveFeatureCollectionMosaicContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-mosaic',\n 'aria-label': heading?.text,\n tabindex: '0',\n role: 'group'\n },\n interactiveFeatureCollectionMosaicImage: {\n className: 'ms-interactive-feature-collection-mosaic__image'\n },\n interactiveFeatureCollectionMosaicDetails: {\n className: 'ms-interactive-feature-collection-mosaic__details'\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles heading content change event.\n * @param event - Content editable event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param event - Content editable event.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.links?.[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n private _createParagraph(text?: Msdyn365.RichText): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createHeading(heading?: IHeadingData): React.ReactNode | null {\n if (!heading) {\n return null;\n }\n if (StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _renderImage(item?: Msdyn365.IImageData, isAriaHiddenAttribute?: boolean): React.ReactNode | null {\n // Even if image.src is null, we render the Image component to render the fallback SVG\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=328&h=459&m=6', w: 328, h: 459 },\n sm: { q: 'w=348&h=487&m=6', w: 348, h: 487 },\n md: { q: 'w=650&h=366&m=6', w: 650, h: 366 },\n lg: { q: 'w=650&h=366&m=6', w: 650, h: 366 },\n xl: { q: 'w=650&h=366&m=6', w: 650, h: 366 }\n },\n lazyload: true\n };\n const verifiedImageSettings = item?.imageSettings?.viewports ? item.imageSettings : defaultImageSettings;\n return (\n \n );\n }\n}\n\nexport default InteractiveFeatureItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IInteractiveFeatureItemViewProps } from './interactive-feature-item';\n\n/**\n * Enumerator used to make some calculations to set the proper classnames\n * using modular calculations to see if they are in a right or left column or on first or last row.\n */\nenum MagicNumber {\n modularDivisor = 4,\n caseNumberZero = 0,\n caseNumberOne = 1,\n caseNumberTwo = 2\n}\n\n/**\n * Feature Item View.\n * @param thisProps - Feature Item view props.\n * @param indexItem - Feature Item view props.\n * @param itemCounter - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */\nconst renderMosaic = (thisProps: IInteractiveFeatureItemViewProps, indexItem?: number, itemCounter?: number): JSX.Element | null => {\n const {\n title,\n paragraph,\n image,\n links,\n interactiveFeatureCollectionMosaicContainer,\n interactiveFeatureCollectionMosaicImage,\n interactiveFeatureCollectionMosaicDetails\n } = thisProps;\n const indexAux = indexItem ? indexItem + MagicNumber.caseNumberOne : MagicNumber.caseNumberOne;\n const itemCounterAux = itemCounter ? itemCounter : MagicNumber.caseNumberZero;\n const modularAux = indexAux % MagicNumber.modularDivisor;\n const firstRow = indexAux <= MagicNumber.caseNumberTwo ? 'firstRow' : '';\n const lastRow =\n itemCounterAux && (indexAux === itemCounterAux || indexAux === itemCounterAux - MagicNumber.caseNumberOne) ? 'lastRow' : '';\n const onCornerRight = modularAux === MagicNumber.caseNumberZero ? 'item-corner-right' : '';\n const onCornerLeft = modularAux === MagicNumber.caseNumberOne ? 'item-corner-left' : '';\n const containerClasses = classnames('ms-interactive-feature-collection-mosaic', onCornerLeft, onCornerRight, firstRow, lastRow);\n\n return (\n \n {image}\n \n {title}\n {paragraph}\n {links}\n \n \n );\n};\n\n/**\n * Feature Item View.\n * @param thisProps - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */ const renderCarousel = (thisProps: IInteractiveFeatureItemViewProps): JSX.Element | null => {\n const {\n title,\n paragraph,\n image,\n links,\n interactiveFeatureCollectionCarouselContainer,\n interactiveFeatureCollectionCarouselImage,\n interactiveFeatureCollectionCarouselContent\n } = thisProps;\n return (\n \n {image}\n \n {title}\n {paragraph}\n {links}\n \n \n );\n};\n\n/**\n * Feature Item View.\n * @param props - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */\nexport const FeatureItemViewComponent: React.FC = props => {\n const { isMosaic, featureItem, indexItem, itemCounter } = props;\n if (isMosaic) {\n return <>{renderMosaic(props, indexItem, itemCounter)};\n }\n return {renderCarousel(props)};\n};\n\nexport default FeatureItemViewComponent;\n"],"names":["NavIcon","React","constructor","props","super","payLoad","getPayloadObject","telemetryContent","TelemetryConstant","this","attributes","getTelemetryAttributes","render","Button","Object","assign","className","onClick","toggleNavBar","title","mobileHamburgerAriaLabel","isExpanded","targetId","__decorate","observer","Logo","_renderLogo","config","link","linkUrl","href","_renderImage","defaultImageSettings","viewports","xs","q","w","h","lg","lazyload","Msdyn365","image","gridSettings","imageSettings","loadFailureBehavior","editProps","key","requestContext","CommercialHeader","state","mobileMenuCollapsed","signinPopoverOpen","_toggleNavbar","bind","componentDidMount","_stickyHeaderSetup","menuBarSlot","_getSlot","navbarKey","headerClassName","classnames","logoLink","logoImage","viewProps","_objectSpread","logo","context","request","HeaderTag","moduleProps","tag","menuBar","length","navIcon","MobileMenuContainer","Modal","id","isOpen","wrapClassName","toggle","MobileMenuHeader","ModalHeader","MobileMenuBodyContainer","ModalBody","renderView","console","log","setState","_setHeader","slotName","slots","lockHeader","headerElem","document","querySelector","documentElement","scrollTop","classList","add","window","body","contains","remove","_updateHeader","isInMobileMenu","onscroll","_renderReactFragment","items","map","slot","index","Module","Node","CittaSubscribeNewsletterForm","firstNameValue","lastNameValue","emailAddressValue","formInputValues","moduleClassName","_showErrors","emailErrorClass","_checkEmailError","firstNameErrorClass","_FirstNameInputRef","current","value","lastNameErrorClass","_LastNameInputRef","privacyPolicyErrorClass","_PrivacyPolicyRef","checked","email","_EmailAddressInputRef","_isEmailValid","_renderErrors","resources","firstNameError","lastNameError","emailError","ppError","_handleChange","name","e","target","firstName","fNError","reqError","eAValError","lastName","lNError","emailAddress","eAError","isChecked","privacyPolicyChecked","test","_recaptchaRef","_handleSubmit","tsCsError","rCCError","responseReceived","responseError","responseSuccess","reCaptchaChecked","SubscribeWrapper","subscribeResponse","_getSubmitResponse","subscribeForm","_renderForm","formErrors","formErrorsNodeProps","successResponse","_renderSuccessResponse","showSuccessResponse","successResponseNodeProps","responseMessage","successTextResponse","FormWrapper","FormContainer","firstAndLastNameInput","_renderFirstAndLastNameInput","emailInput","_renderEmailInput","checkboxPrivacyPolicy","_renderCheckboxPrivacyPolicy","subscribeButtton","_renderSubmitButton","subscribeThanks","_renderSubmitThanks","tsAndCsText","_renderTsCsText","reCaptcha","_renderReCaptcha","_renderRecaptchaAlert","reCaptchaOption","recaptchaErrorMessage","role","ReCAPTCHA","ref","sitekey","reCaptchaSiteKey","size","onChange","_submit","type","placeholder","firstNamePlaceholderText","required","lastNamePlaceholderText","dangerouslySetInnerHTML","getRichTextHtml","privacyPolicyText","emailInputPlaceholder","privacyPolicyLink","submitButtonLabel","color","async","_this$_recaptchaRef$c","execute","_this$_recaptchaRef$c2","fN","lN","eA","eAVal","recaptchaValue","getValue","_this$_recaptchaRef$c3","_postEntry","_clearValues","setTimeout","location","reload","_this$_recaptchaRef$c8","reset","_this$_recaptchaRef$c7","_this$_recaptchaRef$c6","_this$_recaptchaRef$c5","_this$_recaptchaRef$c4","emarsysCompetitionGroupId","emarsysGroupName","emarsysGroupOptInName","response","MsDyn365","country","emarsysGroup","emarsysGroupId","data","Message","Result","isBrowser","urlToOpenOnSuccess","open","_this$_recaptchaRef$c9","ICittaSubscribeNewsletterFormView","InteractiveFeatureCollectionLinks","_mapEditableLinks","linkdata","ArrayExtensions","hasElements","editableLinks","linkText","contentAction","etext","editableLink","ariaLabel","destinationUrl","openInNewTab","additionalProperties","onTelemetryClick","push","links","onTextChange","InteractiveFeatureItem","_telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","telemetry","handleHeadingChange","event","heading","text","handleParagraphChange","paragraph","handleLinkTextChange","linkIndex","_this$props$config$li","Number","indexItem","itemCounter","isMosaic","featureItemLinks","_createHeading","_createParagraph","featureItem","interactiveFeatureCollectionCarouselContainer","interactiveFeatureCollectionCarouselImage","interactiveFeatureCollectionCarouselContent","interactiveFeatureCollectionMosaicContainer","tabindex","interactiveFeatureCollectionMosaicImage","interactiveFeatureCollectionMosaicDetails","onEdit","_heading$tag","StringExtensions","isNullOrWhitespace","item","isAriaHiddenAttribute","_item$imageSettings","_this$props$config$im","verifiedImageSettings","sm","md","xl","moduleType","typeName","imagePropertyName","moduleId","MagicNumber","FeatureItemViewComponent","renderMosaic","thisProps","indexAux","caseNumberOne","itemCounterAux","caseNumberZero","modularAux","modularDivisor","firstRow","caseNumberTwo","lastRow","onCornerRight","onCornerLeft","containerClasses","renderCarousel"],"sourceRoot":""}