{"version":3,"file":"static/js/36.81299e8e3607fe4ab312.chunk.js","mappings":"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","sources":["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/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-subscribe-newsletter-form/citta-subscribe-newsletter-form.tsx?429d","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.view.tsx?6e69","webpack://Citta2.0/./src/modules/interactive-feature-item/interactive-feature-item.view.tsx?bdcc"],"sourcesContent":["/*!\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","/*---------------------------------------------------------------------------------------------\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/*!\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\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 * 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 { 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":["InteractiveFeatureCollectionLinks","React","constructor","_mapEditableLinks","linkdata","ArrayExtensions","hasElements","editableLinks","link","payLoad","getPayloadObject","this","props","telemetryContent","linkText","contentAction","etext","attributes","getTelemetryAttributes","editableLink","ariaLabel","className","linkUrl","destinationUrl","openInNewTab","role","additionalProperties","onClick","onTelemetryClick","push","render","links","Msdyn365","editProps","onTextChange","requestContext","InteractiveFeatureItem","super","_telemetryContent","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","handleHeadingChange","event","config","heading","text","target","value","handleParagraphChange","paragraph","handleLinkTextChange","linkIndex","_this$props$config$li","Number","indexItem","itemCounter","isMosaic","image","featureItemLinks","viewProps","_objectSpread","title","_createHeading","_createParagraph","_renderImage","featureItem","moduleProps","interactiveFeatureCollectionCarouselContainer","tag","interactiveFeatureCollectionCarouselImage","interactiveFeatureCollectionCarouselContent","interactiveFeatureCollectionMosaicContainer","tabindex","interactiveFeatureCollectionMosaicImage","interactiveFeatureCollectionMosaicDetails","renderView","onEdit","_heading$tag","StringExtensions","isNullOrWhitespace","item","isAriaHiddenAttribute","_item$imageSettings","_this$props$config$im","verifiedImageSettings","imageSettings","viewports","xs","q","w","h","sm","md","lg","xl","lazyload","Object","assign","gridSettings","loadFailureBehavior","key","moduleType","typeName","imagePropertyName","moduleId","id","NavIcon","TelemetryConstant","Button","toggleNavBar","mobileHamburgerAriaLabel","isExpanded","targetId","__decorate","observer","Logo","_renderLogo","href","defaultImageSettings","CommercialHeader","state","mobileMenuCollapsed","signinPopoverOpen","_toggleNavbar","bind","componentDidMount","_stickyHeaderSetup","menuBarSlot","_getSlot","navbarKey","headerClassName","classnames","logoLink","logoImage","logo","HeaderTag","menuBar","length","navIcon","MobileMenuContainer","Modal","isOpen","wrapClassName","toggle","MobileMenuHeader","ModalHeader","MobileMenuBodyContainer","ModalBody","console","log","setState","_setHeader","slotName","slots","lockHeader","headerElem","document","querySelector","documentElement","scrollTop","classList","add","window","body","contains","remove","_updateHeader","isInMobileMenu","onscroll","CittaSubscribeNewsletterForm","firstNameValue","lastNameValue","emailAddressValue","formInputValues","moduleClassName","_showErrors","emailErrorClass","_checkEmailError","firstNameErrorClass","_FirstNameInputRef","current","lastNameErrorClass","_LastNameInputRef","privacyPolicyErrorClass","_PrivacyPolicyRef","checked","email","_EmailAddressInputRef","_isEmailValid","_renderErrors","resources","firstNameError","lastNameError","emailError","ppError","_handleChange","name","e","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","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","_renderReactFragment","items","map","slot","index","Module","Node","ICittaSubscribeNewsletterFormView","MagicNumber","FeatureItemViewComponent","renderMosaic","thisProps","indexAux","caseNumberOne","itemCounterAux","caseNumberZero","modularAux","modularDivisor","firstRow","caseNumberTwo","lastRow","onCornerRight","onCornerLeft","containerClasses","renderCarousel"],"sourceRoot":""}