{"version":3,"file":"static/js/20.bf0ec295a5db8b808639.chunk.js","mappings":"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","sources":["webpack://Citta2.0/./src/modules/citta-competition-form/citta-competition-form.tsx?b536","webpack://Citta2.0/./src/modules/citta-competition-form/citta-competition-form.view.tsx?95bb","webpack://Citta2.0/./src/themes/citta/views/reviews-list.view.tsx?dfc8","webpack://Citta2.0/./src/modules/notifications-list/notifications-list.tsx?8377","webpack://Citta2.0/./src/modules/notifications-list/notifications-list.view.tsx?d466","webpack://Citta2.0/./src/modules/tab-item/tab-item.tsx?b1b8","webpack://Citta2.0/./src/modules/tab-item/tab-item.view.tsx?ee3b","webpack://Citta2.0/./src/modules/tab/tab.tsx?9ac6","webpack://Citta2.0/./src/modules/tab/tab.view.tsx?a99d","webpack://Citta2.0/./src/modules/tile-list/tile-list.tsx?78cb","webpack://Citta2.0/./src/modules/tile-list/tile-list.view.tsx?1b00"],"sourcesContent":["/*!\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 { 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 { ICittaCompetitionFormData } from './citta-competition-form.data';\r\nimport { ICittaCompetitionFormProps } from './citta-competition-form.props.autogenerated';\r\n\r\ninterface ICittaCompetitionFormFormState {\r\n firstName: string;\r\n lastName: string;\r\n emailAddress: string;\r\n country: string;\r\n additionalText: string;\r\n termsAndContitionsChecked: boolean;\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 showResponseSuccess: boolean;\r\n reCaptchaChecked: boolean;\r\n charactersLeft?: number;\r\n firstNameErrorClass: string;\r\n lastNameErrorClass: string;\r\n emailErrorClass: string;\r\n tsCsErrorClass: string;\r\n}\r\n\r\nexport interface ICittaCompetitionFormForm {\r\n FormWrapper: INodeProps;\r\n FormContainer: INodeProps;\r\n firstAndLastNameInput: React.ReactNode;\r\n emailInput: React.ReactNode;\r\n countryInput: React.ReactNode;\r\n additionalTextInput: React.ReactNode;\r\n checkboxTermsAndConditions: 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\n\r\nexport interface ICittaCompetitionFormViewProps extends ICittaCompetitionFormProps {\r\n SubscribeWrapper: IModuleProps;\r\n subscribeResponse: React.ReactNode;\r\n subscribeForm: ICittaCompetitionFormForm;\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\n/**\r\n *\r\n * CittaCompetitionForm component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CittaCompetitionForm extends React.PureComponent, ICittaCompetitionFormFormState> {\r\n private _FirstNameInputRef: React.RefObject;\r\n private _LastNameInputRef: React.RefObject;\r\n private _EmailAddressInputRef: React.RefObject;\r\n private _AdditionalTextInputRef: React.RefObject;\r\n private _TermsAndContitionsRef: React.RefObject;\r\n private _PrivacyPolicyRef: 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 constructor(props: ICittaCompetitionFormProps) {\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._AdditionalTextInputRef = React.createRef();\r\n this._TermsAndContitionsRef = 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 country: 'NZ',\r\n additionalText: '',\r\n termsAndContitionsChecked: false,\r\n privacyPolicyChecked: false,\r\n eAValError: false,\r\n fNError: false,\r\n lNError: 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 reCaptchaChecked: false,\r\n responseSuccess: false,\r\n showResponseSuccess: false,\r\n charactersLeft: Number(this.props.resources.messageCharactersLimit) || 140,\r\n firstNameErrorClass: 'hide',\r\n lastNameErrorClass: 'hide',\r\n emailErrorClass: 'hide',\r\n tsCsErrorClass: 'hide'\r\n };\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const viewProps: ICittaCompetitionFormViewProps = {\r\n ...(this.props as ICittaCompetitionFormProps),\r\n SubscribeWrapper: {\r\n moduleProps: this.props,\r\n className: classnames(this.moduleClassName, this.props.config.className)\r\n },\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 _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 \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(): ICittaCompetitionFormForm {\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 countryInput: this._renderCountryInput(),\r\n additionalTextInput: this._renderAdditionalTextInput(),\r\n checkboxTermsAndConditions: this._renderCheckboxTermsAndConditions(),\r\n checkboxPrivacyPolicy: this._renderCheckboxPrivacyPolicy(),\r\n reCaptcha: this._renderReCaptcha(),\r\n subscribeButtton: this._renderSubmitButton(),\r\n subscribeThanks: this._renderSubmitThanks()\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 _renderAdditionalTextInput(): React.ReactNode {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n {`${this.state.charactersLeft} ${this.props.resources.messageCharactersLimitLeftText}`}\r\n
\r\n
\r\n );\r\n }\r\n private _onEditMessage = (event: React.KeyboardEvent): void => {\r\n const charactersLeft: number = this.state.charactersLeft || 0;\r\n const key: string = event.key.length > 1 ? '' : event.key;\r\n const textArea: HTMLTextAreaElement | null = this._AdditionalTextInputRef && this._AdditionalTextInputRef.current && this._AdditionalTextInputRef.current;\r\n const message = this._AdditionalTextInputRef && this._AdditionalTextInputRef.current && this._AdditionalTextInputRef.current.value || '';\r\n let messageEnterd: string = message || key;\r\n const charactersLimit = this.props.config.additionalTextCharactersLimit || 140;\r\n\r\n if (charactersLeft === 0 && event.which !== 8) {\r\n event.preventDefault();\r\n }\r\n if (charactersLeft <= 0) {\r\n messageEnterd = messageEnterd.substring(0, charactersLimit);\r\n textArea!.value = messageEnterd;\r\n }\r\n if (key.length === 1 || event.which === 8 || event.which === 46) {\r\n this.setState({\r\n additionalText: messageEnterd,\r\n charactersLeft: (charactersLimit - messageEnterd.length) >= 0 ? charactersLimit - messageEnterd.length : 0\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 private _renderCountryInput() : 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\r\n private _renderAlert(className: string): JSX.Element {\r\n return <>;\r\n }\r\n\r\n private _renderCheckboxTermsAndConditions(): React.ReactNode {\r\n return (\r\n
\r\n {this.state.tsCsError ? this._renderAlert('checkbox-privacy-policy') : ''}\r\n
\r\n \r\n \r\n

{this.props.config.termsAndConditionsText}Terms and Conditions

\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 {this.state.tsCsError ? 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\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 _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!\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 tsCsErrorClass: (this._TermsAndContitionsRef.current && !this._TermsAndContitionsRef.current.checked) ? 'show' : 'hide'\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.tsCsError}\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, tsCsError: false });\r\n break;\r\n }\r\n case 'lastName': {\r\n this.setState({ lastName: value, lNError: false, reqError: false, eAValError: false, tsCsError: false });\r\n break;\r\n }\r\n case 'emailAddress': {\r\n this.setState({ emailAddress: value, eAError: false, reqError: false, eAValError: false, tsCsError: false });\r\n break;\r\n }\r\n case 'country': {\r\n this.setState({ country: value, eAError: false, reqError: false, eAValError: false, tsCsError: false });\r\n break;\r\n }\r\n case 'additionalText': {\r\n this.setState({ additionalText: value, reqError: false, eAValError: false, tsCsError: false });\r\n break;\r\n }\r\n case 'termsAndConditions': {\r\n const isChecked = this._TermsAndContitionsRef.current && this._TermsAndContitionsRef.current.checked ? this._TermsAndContitionsRef.current.checked : false;\r\n const recaptchaWrapper = document.querySelector('.recaptcha');\r\n recaptchaWrapper && recaptchaWrapper.classList.toggle('newsletter-recapture-visable', !isChecked);\r\n this.setState({ termsAndContitionsChecked: isChecked, reqError: false, eAValError: false, tsCsError: 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, tsCsError: 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, tsCsError: 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 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 aT = (this._AdditionalTextInputRef && this._AdditionalTextInputRef.current && this._AdditionalTextInputRef.current.value) ? this._AdditionalTextInputRef.current.value : '';\r\n const eA = (this._EmailAddressInputRef && this._EmailAddressInputRef.current && this._EmailAddressInputRef.current.value) ? this._EmailAddressInputRef.current.value : '';\r\n const cT = this.state.country;\r\n\r\n const eAVal = this._EmailAddressInputRef.current!.value;\r\n const oI = this._PrivacyPolicyRef.current!.checked;\r\n\r\n if (!this.firstNameValue) {\r\n this.setState({\r\n fNError: true,\r\n reqError: true\r\n });\r\n } else if (!this.lastNameValue) {\r\n this.setState({\r\n lNError: true,\r\n reqError: true\r\n });\r\n } else 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._TermsAndContitionsRef.current!.checked) {\r\n this.setState({\r\n termsAndContitionsChecked: false,\r\n tsCsError: true\r\n });\r\n } else {\r\n this.formInputValues = (this.emailAddressValue) ? true : false;\r\n if (this.formInputValues && this.state.termsAndContitionsChecked && !this.state.eAValError) {\r\n try {\r\n await this._postEntry(fN, lN, eA, aT, oI, cT || 'NZ');\r\n\r\n this._clearValues();\r\n this._recaptchaRef.current?.reset();\r\n \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, additionalText: string, optIn: boolean, country: string): Promise {\r\n const urlSearchParams = new URLSearchParams(window.location.search);\r\n const params = urlSearchParams.get('store');\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 emarsysCompetitionGroupId = this.props.config.emarsysCompetitionGroupId,\r\n emarsysGroupIdAdditionalText = this.props.config.emarsysGroupIdAdditionalText,\r\n emarsysStoreNameGroupId = this.props.config.emarsysStoreNameGroupId;\r\n\r\n if (country === 'AU') {\r\n emarsysGroupId = this.props.config.emarsysGroupIdAU; \r\n emarsysCompetitionGroupId = this.props.config.emarsysCompetitionGroupIdAU;\r\n emarsysGroupIdAdditionalText = this.props.config.emarsysGroupIdAdditionalTextAU;\r\n emarsysStoreNameGroupId = this.props.config.emarsysStoreNameGroupIdAU;\r\n }\r\n\r\n const response = await MsDyn365.commerceApiRequest(\r\n this.props.context.request,\r\n 'PostContactEvent',\r\n 'post',\r\n {\r\n firstName: firstName,\r\n lastName: lastName,\r\n additionalText: additionalText,\r\n emailAddress: email,\r\n country: country,\r\n emarsysGroupId: emarsysGroupId,\r\n emarsysCompetitionGroupId: emarsysCompetitionGroupId,\r\n emarsysGroupIdAdditionalText: emarsysGroupIdAdditionalText,\r\n storeName: params || '',\r\n emarsysStoreNameGroupId: emarsysStoreNameGroupId,\r\n optIn: optIn\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 additionalText: '',\r\n termsAndContitionsChecked: false,\r\n reqError: false,\r\n eAValError: false,\r\n rCCError: false\r\n });\r\n\r\n // if (params) {\r\n // setTimeout(() => { \r\n // window.location.reload();\r\n // }, 6000);\r\n // } else {\r\n // const baseUrl = window.location.origin;\r\n // if (baseUrl.length) {\r\n // window.location.assign(`${baseUrl}${this.props.config.successUrl}`);\r\n // }\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 termsAndContitionsChecked: false,\r\n reqError: false,\r\n eAValError: false,\r\n rCCError: false\r\n });\r\n }\r\n\r\n // if (response?.data.Result !== 'Error') {\r\n // // const baseUrl = window.location.origin;\r\n // // if (baseUrl.length) {\r\n // // // window.location.assign(`${baseUrl}${this.props.config.successUrl}`);\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 // termsAndContitionsChecked: false,\r\n // reqError: false,\r\n // eAValError: false,\r\n // rCCError: false\r\n // });\r\n // }\r\n /* tslint:enable */\r\n }\r\n\r\n private _clearValues(): void {\r\n if (this._TermsAndContitionsRef.current) {\r\n this._TermsAndContitionsRef.current.checked = false;\r\n const recaptchaWrapper = document.querySelector('.recaptcha');\r\n recaptchaWrapper && recaptchaWrapper.classList.toggle('newsletter-recapture-visable', true);\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 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._AdditionalTextInputRef.current) {\r\n this._AdditionalTextInputRef.current!.value = '';\r\n }\r\n }\r\n\r\n}\r\n\r\nexport default CittaCompetitionForm;\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\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { ICittaCompetitionFormViewProps } from './citta-competition-form';\r\n\r\n/**\r\n *\r\n * ICittaProductSkuView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class ICittaCompetitionFormView extends React.PureComponent {\r\n\r\n public render(): JSX.Element | null {\r\n const { SubscribeWrapper, subscribeResponse, subscribeForm, responseSuccess, showResponseSuccess, formErrors, formErrorsNodeProps, successResponseNodeProps, showSuccessResponse, successResponse } = this.props;\r\n const { \r\n FormWrapper,\r\n FormContainer,\r\n firstAndLastNameInput,\r\n emailInput,\r\n countryInput,\r\n additionalTextInput,\r\n checkboxTermsAndConditions,\r\n checkboxPrivacyPolicy,\r\n subscribeButtton,\r\n reCaptcha,\r\n subscribeThanks\r\n } = subscribeForm;\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 {additionalTextInput}\r\n {countryInput}\r\n {checkboxTermsAndConditions}\r\n {checkboxPrivacyPolicy}\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\nexport default ICittaCompetitionFormView;\r\n","// @ts-nockeck\r\nimport { IReviewModalViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport { IReportReviewModalViewProps, IReviewCardViewProps, IReviewsListState, IReviewsListViewProps } from '@msdyn365-commerce-modules/ratings-reviews/src/modules/reviews-list';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst ReviewsListview: React.FC = props => {\r\n const {\r\n averageRating,\r\n filterByDropdown,\r\n moduleProps,\r\n noReviewsMessage,\r\n noReviewsWithFilterMessage,\r\n pageControls,\r\n refineReviewsProps,\r\n reportReviewModal,\r\n reviewsListProps,\r\n reviewCards,\r\n reviewCount,\r\n reviewModal,\r\n sortByDropdown,\r\n state,\r\n userReview\r\n } = props;\r\n\r\n if (!userReview && reviewCards.length === 0 && !state.isFilterApplied) {\r\n return {noReviewsMessage};\r\n }\r\n\r\n return (\r\n \r\n {averageRating}\r\n {reviewCount}\r\n \r\n {sortByDropdown}\r\n {filterByDropdown}\r\n \r\n \r\n {userReview && buildReviewCard(userReview)}\r\n {reviewCards.map(review => {\r\n return buildReviewCard(review);\r\n })}\r\n \r\n { reviewCards.length === 0 && state.isFilterApplied && noReviewsWithFilterMessage}\r\n {pageControls}\r\n {createReviewModal(reviewModal)}\r\n {createReportModal(reportReviewModal, state)}\r\n \r\n );\r\n};\r\n\r\nconst buildReviewCard = (props: IReviewCardViewProps) => {\r\n return (\r\n \r\n \r\n {props.rating}\r\n {props.name}\r\n {props.date}\r\n \r\n \r\n \r\n {props.reviewTitle}\r\n {props.reviewText}\r\n \r\n \r\n {props.responseName}\r\n {props.responseDate}\r\n {props.responseText}\r\n \r\n \r\n {props.ratingHelpfulLabel}\r\n {props.like}\r\n {props.dislike}\r\n {props.edit}\r\n {props.report}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst createReviewModal = (props: IReviewModalViewProps): JSX.Element => {\r\n return (\r\n \r\n {props.modalHeader}\r\n \r\n \r\n \r\n {props.rating}\r\n {props.ratingLabel}\r\n \r\n \r\n {props.titleLabel}\r\n {props.titleInput}\r\n \r\n \r\n {props.textLabel}\r\n {props.textInput}\r\n \r\n {props.privacyPolicyUrl}\r\n {props.error}\r\n \r\n \r\n \r\n {props.submitButton}\r\n {props.cancelButton}\r\n \r\n \r\n );\r\n};\r\n\r\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\r\n return (\r\n \r\n \r\n {state.reported ? props.headerSubmitted : props.header}\r\n \r\n \r\n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\r\n \r\n \r\n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ReviewsListview;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport {\n INotificationComponentsList,\n INotificationComponentsListState,\n INotificationComponentType,\n NotificationComponentsListsManager,\n NotificationEvents,\n NotificationFeedType\n} from '@msdyn365-commerce-modules/notifications-core';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { INotificationsListProps } from './notifications-list.props.autogenerated';\n\n/**\n * View for the notifications list which specifies the container and notifications items.\n */\nexport interface INotificationsListViewProps extends INotificationsListProps<{}> {\n container: IModuleProps;\n notificationsList: React.ReactNode;\n}\n\n/**\n * Configuration to make the list stickable to the page without overlapping any content on top.\n */\nexport interface INotificationComponentStickyConfiguration {\n /**\n * Minimum offset for top (default for the page).\n */\n minTopOffset: number;\n\n /**\n * Maximum offset for top (to limit the top offset while scrolling).\n */\n maxTopOffset: number;\n}\n\n/**\n * Stickable notification list state which defines the top position of the list at the moment.\n */\nexport interface IStickableNotificationComponentsListState extends INotificationComponentsListState {\n /**\n * The top position of the list on the page.\n */\n top?: number;\n}\n\n/**\n * A notification list which is operated by notification manager.\n * It is responsible for rendering the received notifications.\n */\nexport class NotificationComponentsList extends React.Component, IStickableNotificationComponentsListState>\n implements INotificationComponentsList {\n /**\n * The class name to use.\n */\n private static readonly _className: string = 'msc-notifications-list';\n\n /**\n * The feed which the list is responsible for displaying.\n */\n public readonly feed: NotificationFeedType;\n\n /**\n * Configuration which specifies if and how the list should be stickable.\n * If undefined, the configuration will not be used at all. And list will not be stickable.\n */\n private readonly _stickyConfiguration?: INotificationComponentStickyConfiguration;\n\n /**\n * The list of notification which should be shown in the list at the moment.\n * @remarks Should be used to retrieve the latest list of notifications\n * as the list from the state is updated only after rendering.\n */\n private _notificationsComponentList: INotificationComponentType[];\n\n /**\n * Unique identifier of the list.\n * Uses format 'NotificationComponentsList-GUID';.\n */\n private _instanceId?: string;\n\n /**\n * Initializes instance with the given props.\n * @param props - The configuration of the list.\n */\n public constructor(props: INotificationsListProps<{}>) {\n super(props);\n\n this.feed = props.config.feed;\n\n if (\n !ObjectExtensions.isNullOrUndefined(props.config.minTopOffset) &&\n !ObjectExtensions.isNullOrUndefined(props.config.maxTopOffset)\n ) {\n this._stickyConfiguration = {\n minTopOffset: props.config.minTopOffset,\n maxTopOffset: props.config.maxTopOffset\n };\n }\n\n this._notificationsComponentList = [];\n\n this.state = {\n notificationsComponentList: []\n };\n\n this._handleTopUpdate = this._handleTopUpdate.bind(this);\n this._getCurrentTopPosition = this._getCurrentTopPosition.bind(this);\n }\n\n /**\n * Specifies if the component should be re-rendered.\n * @param nextProps - The next configuration the component is receiving.\n * @param nextState - The next state the component is receiving.\n * @returns True if component should be re-rendered, false if component should not be changed.\n */\n public shouldComponentUpdate(\n nextProps: Readonly>,\n nextState: Readonly\n ): boolean {\n const isPropsDifferent =\n this.feed !== nextProps.config.feed ||\n this.props.config.maxNotificationsCount !== nextProps.config.maxNotificationsCount ||\n this.props.config.maxTopOffset !== nextProps.config.maxTopOffset ||\n this.props.config.minTopOffset !== nextProps.config.minTopOffset ||\n this.props.config.className !== nextProps.config.className ||\n this.props.id !== nextProps.id;\n const isStateDifferent =\n this.state.top !== nextState.top ||\n this.state.notificationsComponentList.length !== nextState.notificationsComponentList.length ||\n this.state.notificationsComponentList.every(value =>\n nextState.notificationsComponentList.find(otherValue => otherValue.props.notification.id === value.props.notification.id)\n );\n return isPropsDifferent || isStateDifferent;\n }\n\n /**\n * Adds the current instance to the global list of instances so that it becomes available for the notification manager.\n * In case the list is specified to be stickable, also subscribes to the scroll event to update the offsets.\n */\n public componentDidMount(): void {\n NotificationComponentsListsManager.subscribe(this);\n\n this._instanceId = `NotificationComponentsList-${Random.Guid.generateGuid()}`;\n\n if (MsDyn365.isBrowser && this._stickyConfiguration !== undefined) {\n window.addEventListener('scroll', this._handleTopUpdate);\n }\n }\n\n /**\n * Remove the instance from the global list of instances so that it becomes unavailable for the notification manager.\n * Unsubscribes itself from the notification events and scroll event.\n */\n public componentWillUnmount(): void {\n NotificationComponentsListsManager.unsubscribe(this);\n\n this._notificationsComponentList.forEach(component =>\n component.props.notification.events.getValue(NotificationEvents.RemovedFromList)?.unsubscribe(this._instanceId!)\n );\n\n if (MsDyn365.isBrowser && this._stickyConfiguration !== undefined) {\n window.removeEventListener('scroll', this._handleTopUpdate);\n }\n }\n\n /**\n * Adds a new notification to the list.\n * @param {INotificationComponentType} notificationComponent Data required to render the notification. @see INotificationComponentType.\n */\n public addNotificationComponent(notificationComponent: INotificationComponentType): void {\n if (this._instanceId === undefined) {\n return;\n }\n\n if (\n !ObjectExtensions.isNullOrUndefined(this.props.config.maxNotificationsCount) &&\n this._notificationsComponentList.length >= this.props.config.maxNotificationsCount\n ) {\n throw new Error('Notifications limit reached, cannot show more notifications.');\n }\n\n // Subscribe to the remove event to filter the removed notifications out from the list.\n notificationComponent.props.notification.events.getValue(NotificationEvents.RemovedFromList)?.subscribe({\n instanceId: this._instanceId,\n handler: () => {\n notificationComponent.props.notification.events\n .getValue(NotificationEvents.RemovedFromList)\n ?.unsubscribe(this._instanceId!);\n const newList = this._notificationsComponentList.filter(component => component !== notificationComponent);\n this._notificationsComponentList = newList;\n this.setState({ notificationsComponentList: this._notificationsComponentList });\n }\n });\n\n // Prepend the notification as newest should come to the top.\n this._notificationsComponentList.unshift(notificationComponent);\n this.setState({ notificationsComponentList: this._notificationsComponentList });\n this._handleTopUpdate();\n }\n\n public render(): React.ReactNode {\n const className = classnames(\n NotificationComponentsList._className,\n `${NotificationComponentsList._className}__${this.feed}`,\n this.props.config.className\n );\n\n const viewProps: INotificationsListViewProps = {\n ...this.props,\n container: {\n moduleProps: this.props,\n className,\n id: this._instanceId,\n style: { top: this.state.top }\n },\n notificationsList: this._renderNotificationsList()\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * Renders the list of notifications.\n * @returns React node with a list of notifications.\n */\n private _renderNotificationsList(): React.ReactNode {\n const hasNotifications = ArrayExtensions.hasElements(this.state.notificationsComponentList);\n const containerClassName = classnames(\n `${NotificationComponentsList._className}__scrollable`,\n hasNotifications\n ? `${NotificationComponentsList._className}__has-notifications`\n : `${NotificationComponentsList._className}__empty`\n );\n\n return (\n
\n {this.state.notificationsComponentList.map(component => {\n const ComponentClass = component.componentClass;\n return ;\n })}\n
\n );\n }\n\n /**\n * Retrieves current top offset position by looking at scroll position and rounding it to the stickable limits.\n */\n private _getCurrentTopPosition(): number | undefined {\n const configuration = this._stickyConfiguration;\n\n if (configuration === undefined) {\n return undefined;\n }\n\n let pageYOffset = 0;\n if (MsDyn365.isBrowser) {\n pageYOffset = window.pageYOffset;\n }\n\n return Math.max(Math.min(configuration.maxTopOffset, configuration.maxTopOffset - pageYOffset), configuration.minTopOffset);\n }\n\n /**\n * Updates the top offset on scroll event to make the list stickable.\n */\n private _handleTopUpdate(): void {\n const newTop = this._getCurrentTopPosition();\n this.setState({ top: newTop });\n }\n}\n\nexport default NotificationComponentsList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { INotificationsListViewProps } from './notifications-list';\n\nexport const NotificationsListView: React.FC = props => {\n return {props.notificationsList};\n};\n\nexport default NotificationsListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ITabItemData } from './tab-item.data';\nimport { ITabItemProps } from './tab-item.props.autogenerated';\n\nexport interface ITabItemViewProps {\n TabContentContainer: IModuleProps;\n TabHeaderContainer: IModuleProps;\n tabSlots: INodeProps;\n TabItemContent: INodeProps;\n tabItemType?: TabItemType;\n tabHeader: React.ReactNode;\n}\n\nexport interface ITabItemExtentedProps extends ITabItemProps {\n tabItemType?: TabItemType;\n isSelected?: boolean;\n itemIndex?: number;\n tabId?: string;\n}\n\nexport enum TabItemType {\n TabHeader,\n TabContent\n}\n\n/**\n *\n * TabItem component.\n * @extends {React.Component}\n */\n@observer\nclass TabItem extends React.PureComponent {\n private readonly moduleContentClassName: string = 'ms-tab-item-content';\n\n private readonly moduleHeaderClassName: string = 'ms-tab-item-header';\n\n constructor(props: ITabItemProps) {\n super(props);\n this._renderTabHeader = this._renderTabHeader.bind(this);\n }\n\n public render(): JSX.Element {\n const { slots, renderView, config, data, isSelected, itemIndex } = this.props;\n const index = itemIndex || 0;\n const contentID = getContentID(index, this.props.tabId || '');\n const activeContentIDResult = data && data.activeTabState && data.activeTabState.result;\n const shown =\n activeContentIDResult &&\n activeContentIDResult.tabId === this.props.tabId &&\n activeContentIDResult.activeContentIndex !== undefined\n ? activeContentIDResult.activeContentIndex === index\n : isSelected || false;\n const viewProps = {\n ...this.props,\n TabContentContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleContentClassName, config.className)\n },\n TabHeaderContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleHeaderClassName, config.className)\n },\n TabItemContent: {\n className: 'ms-tab-item-content__content',\n tag: 'section' as NodeTag,\n 'aria-hidden': !shown,\n role: 'tabpanel',\n tabIndex: shown ? 0 : -1,\n id: contentID\n },\n tabHeader: this._renderTabHeader(),\n tabSlots: slots\n };\n return renderView(viewProps) as React.ReactElement;\n }\n\n private _renderTabHeader(): React.ReactNode {\n return <>{this.props.config.tabItemTitle};\n }\n}\n\nexport const getContentID = (index: number, id: string) => {\n return `tab-item-content-${id}-${index}`;\n};\n\nexport default TabItem;\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 * as React from 'react';\n\nimport { ITabItemViewProps, TabItemType } from './tab-item';\n\nconst TabItemView: React.FC = props => {\n const { tabItemType, tabSlots, TabContentContainer, TabHeaderContainer, TabItemContent, tabHeader } = props;\n\n switch (tabItemType) {\n case TabItemType.TabContent:\n return (\n \n \n {tabSlots &&\n tabSlots.tabItemContent &&\n tabSlots.tabItemContent.length &&\n _renderTabItemContent(tabSlots.tabItemContent)}\n \n \n );\n case TabItemType.TabHeader:\n return {tabHeader};\n default:\n return null;\n }\n};\n\nconst _renderTabItemContent = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {items && items.length > 0\n ? items.map((item: React.ReactNode, index: number) => {\n return {item};\n })\n : null}\n \n );\n};\nexport default TabItemView;\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 { IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createTabStateInput, getContentID, TabItemType } from '../..';\nimport { ITabData } from './tab.data';\nimport { ITabProps } from './tab.props.autogenerated';\n\n/**\n *\n * Tab component.\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\nexport interface ITabViewProps extends ITabProps<{}> {\n heading?: React.ReactNode;\n TabContainer: IModuleProps;\n headerSection: INodeProps;\n tabHeaderSection: INodeProps;\n tabsSection: INodeProps;\n tabItemContainer: INodeProps;\n tabHeaders: React.ReactNode;\n tabContents: React.ReactNode;\n}\n\nexport interface ITabViewStates {\n currentTabIndex: number;\n}\n\n/**\n *\n * Tab component.\n * @extends {React.Component>}\n */\n@observer\nclass Tab extends React.Component, ITabViewStates> {\n public readonly tabIndexQuery: string = 'activeTab';\n\n private activeLink: HTMLLIElement | null;\n\n constructor(props: ITabProps) {\n super(props);\n const { defaultTabIndex } = this.props.config;\n const { slots } = this.props;\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n let initialIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\n const queryString: string =\n (this.props.context &&\n this.props.context.request &&\n this.props.context.request.query &&\n this.props.context.request.query.activeTab) ||\n '';\n let queryTabIndex: number = 0;\n if (queryString.indexOf(':') > 0) {\n const arr = queryString.split(':');\n const moduleId = arr[0];\n if (moduleId === this.props.id) {\n queryTabIndex = Number.parseInt(arr[1], 10);\n }\n }\n initialIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex - 1 : initialIndex;\n this.state = { currentTabIndex: initialIndex };\n\n this._getTabHeader = this._getTabHeader.bind(this);\n this._getTabContent = this._getTabContent.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._setGetParameter = this._setGetParameter.bind(this);\n this.activeLink = null;\n }\n\n public shouldComponentUpdate(nextProps: ITabProps, nextState: ITabViewStates): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { slots } = this.props;\n const { heading, className } = this.props.config;\n\n const headingComponent = heading && (\n \n );\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n\n // Const queryTabIndex = this.props.context && this.props.context.request && this.props.context.request.query && +this.props.context.request.query.activeTabIndex || 0;\n // let activeIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\n // activeIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex - 1 : activeIndex;\n\n const tabViewProps = {\n ...this.props,\n TabContainer: {\n moduleProps: this.props,\n className: classnames('ms-tab', className)\n },\n headerSection: { className: 'ms-tab-header-section' },\n tabsSection: { className: 'ms-tab-tabs-section', tag: 'ul' as NodeTag, role: 'tablist' },\n heading: headingComponent,\n config: this.props && this.props.config,\n tabItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-tab-content-section'\n },\n tabContents: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabContent(item, index)),\n tabHeaders: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabHeader(item, index))\n };\n return this.props.renderView(tabViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: MsDyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public componentDidUpdate(): void {\n const { data } = this.props;\n if (!this.props.context.request.params.isEditor) {\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\n if (dataActionTabId) {\n if (this.props.id === dataActionTabId) {\n this.activeLink && this.activeLink.focus();\n }\n } else {\n const queryString: string =\n (this.props.context &&\n this.props.context.request &&\n this.props.context.request.query &&\n this.props.context.request.query.activeTab) ||\n '';\n if (queryString.indexOf(':') > 0) {\n const arr = queryString.split(':');\n const moduleId = arr[0];\n if (moduleId === this.props.id) {\n this.activeLink && this.activeLink.focus();\n }\n }\n }\n }\n }\n\n /**\n *Set the activate link value on tab click.\n * @param link -Ref link value.\n */\n private readonly _refHandler = (link: HTMLLIElement | null) => {\n this.activeLink = link;\n };\n\n private _getTabHeader(item: React.ReactNode, index: number): React.ReactNode {\n const { data } = this.props;\n const activeContentIndex =\n data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.activeContentIndex;\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\n const selected =\n activeContentIndex !== undefined && dataActionTabId === this.props.id\n ? activeContentIndex === index\n : this.state.currentTabIndex === index;\n const contentID = getContentID(index, this.props.id);\n\n return (\n \n \n {React.cloneElement(item as React.ReactElement, {\n tabItemType: TabItemType.TabHeader,\n isSelected: index === this.state.currentTabIndex,\n itemIndex: index,\n tabId: this.props.id\n })}\n \n \n );\n }\n\n private readonly _onClick = (index: number, id: string) => (e: React.MouseEvent) => {\n const activeTabState = { activeContentIndex: index, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 1)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n };\n\n private readonly _onKeyDown = (index: number, id: string) => (e: React.KeyboardEvent) => {\n if (e.keyCode === 13) {\n const activeTabState = { activeContentIndex: index, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 1)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n\n if (e.keyCode === 39 || e.keyCode === 37) {\n const { slots } = this.props;\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n\n if (e.keyCode === 39) {\n // If we're at the end, go to the start\n if (index + 1 === slotLength) {\n index = -1;\n }\n const activeTabState = { activeContentIndex: index + 1, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index + 1 });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 2)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n\n // Move left\n } else if (e.keyCode === 37) {\n // If we're at the start, move to the end\n if (index === 0) {\n index = slotLength;\n }\n const activeTabState = { activeContentIndex: index - 1, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index - 1 });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n }\n };\n\n private _getTabContent(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, {\n tabItemType: TabItemType.TabContent,\n isSelected: index === this.state.currentTabIndex,\n itemIndex: index,\n tabId: this.props.id\n })}\n \n );\n }\n\n private _setGetParameter(requestContext: MsDyn365.IRequestContext, paramName: string, paramValue: string): string {\n let url;\n\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n url = new URL(window.location.href);\n } else {\n url = new URL(requestContext.url.requestUrl.href);\n }\n\n const params = new window.URLSearchParams(url.search);\n params.set(paramName, paramValue);\n url.search = decodeURIComponent(params.toString());\n return url.toString();\n }\n}\n\nexport default Tab;\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 * as React from 'react';\n\nimport { ITabViewProps } from './tab';\n\nconst tabView: React.FC = props => {\n const { heading, TabContainer, tabHeaders, tabContents } = props;\n if (!props.heading && !props.tabHeaders && !props.tabContents) {\n props.context.telemetry.error('Tab content is empty, module wont render');\n return null;\n }\n return (\n \n {heading}\n {tabHeaders}\n {tabContents}\n \n );\n};\n\nexport default tabView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n Heading,\n IComponentNodeProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ITileListProps, ITitleData } from './tile-list.props.autogenerated';\n\n/**\n * Tile-list view props.\n */\nexport interface ITileListViewProps extends ITileListProps<{}> {\n title?: React.ReactNode;\n tiles: React.ReactNode[];\n tileItemContainer: INodeProps;\n tileListContainer: INodeProps;\n tileListHeading: INodeProps;\n singleSlideCarouselComponentProps: INodeProps;\n}\n\n/**\n *\n * TileList component.\n * @extends {React.PureComponent>}\n */\nexport class TileList 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 private static _createHeading(heading?: ITitleData): React.ReactNode | null {\n if (!heading || !heading.text || StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n return ;\n }\n public constructor(props: ITileListProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const propsCarousel: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n\n const viewProps = {\n ...this.props,\n title: TileList._createHeading(title),\n singleSlideCarouselComponentProps: propsCarousel,\n tileItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-tile__item',\n role: 'listitem'\n },\n tileListContainer: { className: classnames('ms-tile-list', className) },\n tileListHeading: { className: 'ms-tile-list__heading' },\n tiles: this.props.slots.content\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n}\n\nexport default TileList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ITileListViewProps } from './tile-list';\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns Returns props.\n */\nexport const tileListView: React.FC = props => {\n const { title, tiles, tileListContainer, tileListHeading, tileItemContainer, singleSlideCarouselComponentProps } = props;\n return (\n \n {title}\n \n {tiles.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `tile-list-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n );\n};\n\nexport default tileListView;\n"],"names":["CittaCompetitionForm","React","constructor","props","super","firstNameValue","lastNameValue","emailAddressValue","formInputValues","moduleClassName","onRecaptchaChange","value","this","setState","reCaptchaChecked","rCCError","_onEditMessage","event","charactersLeft","state","key","length","textArea","_AdditionalTextInputRef","current","messageEnterd","charactersLimit","config","additionalTextCharactersLimit","which","preventDefault","substring","additionalText","_showErrors","emailErrorClass","_checkEmailError","firstNameErrorClass","_FirstNameInputRef","lastNameErrorClass","_LastNameInputRef","tsCsErrorClass","_TermsAndContitionsRef","checked","email","_EmailAddressInputRef","_isEmailValid","_renderErrors","resources","className","firstNameError","lastNameError","emailError","tsCsError","_handleChange","name","e","target","firstName","fNError","reqError","eAValError","lastName","lNError","emailAddress","eAError","country","isChecked","recaptchaWrapper","document","querySelector","classList","toggle","termsAndContitionsChecked","_PrivacyPolicyRef","privacyPolicyChecked","console","log","test","_recaptchaRef","_handleSubmit","bind","responseReceived","responseError","responseSuccess","showResponseSuccess","Number","messageCharactersLimit","render","viewProps","_objectSpread","SubscribeWrapper","moduleProps","classnames","subscribeResponse","_getSubmitResponse","subscribeForm","_renderForm","formErrors","formErrorsNodeProps","successResponse","_renderSuccessResponse","showSuccessResponse","successResponseNodeProps","renderView","responseMessage","successTextResponse","FormWrapper","FormContainer","firstAndLastNameInput","_renderFirstAndLastNameInput","emailInput","_renderEmailInput","countryInput","_renderCountryInput","additionalTextInput","_renderAdditionalTextInput","checkboxTermsAndConditions","_renderCheckboxTermsAndConditions","checkboxPrivacyPolicy","_renderCheckboxPrivacyPolicy","reCaptcha","_renderReCaptcha","subscribeButtton","_renderSubmitButton","subscribeThanks","_renderSubmitThanks","ref","type","onChange","placeholder","firstNamePlaceholderText","required","lastNamePlaceholderText","onKeyUp","additionalTextPlaceholderText","rows","messageCharactersLimitLeftText","_renderAlert","emailInputPlaceholder","id","termsAndConditionsText","href","termsAndConditionsLink","privacyPolicyText","privacyPolicyLink","reCaptchaOption","_renderRecaptchaAlert","ReCAPTCHA","sitekey","reCaptchaSiteKey","recaptchaErrorMessage","role","Button","title","submitButtonLabel","color","onClick","async","fN","lN","aT","eA","cT","eAVal","oI","_this$_recaptchaRef$c","_postEntry","_clearValues","reset","optIn","params","URLSearchParams","window","location","search","get","emarsysGroupId","emarsysCompetitionGroupId","emarsysGroupIdAdditionalText","emarsysStoreNameGroupId","emarsysGroupIdAU","emarsysCompetitionGroupIdAU","emarsysGroupIdAdditionalTextAU","emarsysStoreNameGroupIdAU","response","MsDyn365","context","request","storeName","data","Message","Result","ICittaCompetitionFormView","Module","Object","assign","Node","buildReviewCard","cardProps","headerProps","rating","date","cardBodyProps","reviewProps","reviewTitle","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","ratingHelpfulLabel","like","dislike","edit","report","createReviewModal","modal","modalHeader","modalBody","form","inputRow","ratingLabel","titleLabel","titleInput","textLabel","textInput","privacyPolicyUrl","error","modalFooter","submitButton","cancelButton","createReportModal","reported","headerSubmitted","header","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton","averageRating","filterByDropdown","noReviewsMessage","noReviewsWithFilterMessage","pageControls","refineReviewsProps","reportReviewModal","reviewsListProps","reviewCards","reviewCount","reviewModal","sortByDropdown","userReview","isFilterApplied","map","review","NotificationComponentsList","feed","ObjectExtensions","isNullOrUndefined","minTopOffset","maxTopOffset","_stickyConfiguration","_notificationsComponentList","notificationsComponentList","_handleTopUpdate","_getCurrentTopPosition","shouldComponentUpdate","nextProps","nextState","isPropsDifferent","maxNotificationsCount","isStateDifferent","top","every","find","otherValue","notification","componentDidMount","NotificationComponentsListsManager","subscribe","_instanceId","Random","Guid","generateGuid","isBrowser","undefined","addEventListener","componentWillUnmount","unsubscribe","forEach","component","_component$props$noti","events","getValue","NotificationEvents","RemovedFromList","removeEventListener","addNotificationComponent","notificationComponent","_notificationComponen","Error","instanceId","handler","_notificationComponen2","newList","filter","unshift","_className","container","style","notificationsList","_renderNotificationsList","hasNotifications","ArrayExtensions","hasElements","containerClassName","maxHeight","ComponentClass","componentClass","configuration","pageYOffset","Math","max","min","newTop","NotificationsListView","TabItemType","TabItem","moduleContentClassName","moduleHeaderClassName","_renderTabHeader","slots","isSelected","itemIndex","index","contentID","getContentID","tabId","activeContentIDResult","activeTabState","result","shown","activeContentIndex","TabContentContainer","TabHeaderContainer","TabItemContent","tag","tabIndex","tabHeader","tabSlots","tabItemTitle","__decorate","observer","_renderTabItemContent","items","item","tabItemType","TabContent","tabItemContent","TabHeader","Tab","tabIndexQuery","handleHeadingChange","heading","text","_refHandler","link","activeLink","_onClick","actionContext","update","createTabStateInput","currentTabIndex","requestContext","newUrl","_setGetParameter","String","history","pushState","path","_onKeyDown","keyCode","slotLength","tabItems","defaultTabIndex","initialIndex","queryString","query","activeTab","queryTabIndex","indexOf","arr","split","parseInt","_getTabHeader","_getTabContent","headingComponent","editProps","onEdit","tabViewProps","TabContainer","headerSection","tabsSection","tabItemContainer","tabContents","tabHeaders","componentDidUpdate","isEditor","dataActionTabId","focus","selected","onKeyDown","paramName","paramValue","url","URL","requestUrl","set","decodeURIComponent","toString","telemetry","TileList","_telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","static","StringExtensions","isNullOrWhitespace","Heading","headingTag","_this$props$config$cl","propsCarousel","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","telemetryContent","vertical","_createHeading","singleSlideCarouselComponentProps","tileItemContainer","tileListContainer","tileListHeading","tiles","content","tileListView","tileItem","keyIndex"],"sourceRoot":""}