{"version":3,"file":"static/js/24.20f940ff4a103ad901e4.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/modules/video-player-mobility/components/additional-content.tsx?db49","webpack://Citta2.0/./src/modules/video-player-mobility/video-player-mobility.tsx?a855","webpack://Citta2.0/./src/modules/video-player-mobility/video-player-mobility.view.tsx?e267","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/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","/*!\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 * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAdditionalContentData, ILinksData } from '../video-player-mobility.props.autogenerated';\r\n\r\n/**\r\n * IVideoPlayerAdditionalContentProps: Interface for\r\n * Video Player Additional Content Component props.\r\n */\r\nexport interface IVideoPlayerAdditionalContentProps {\r\n requestContext: Msdyn365.IRequestContext;\r\n additionalContent: IAdditionalContentData | undefined;\r\n handleAdditionalTextChange(event: Msdyn365.ContentEditableEvent): void;\r\n handleAdditionalParagraphChange(event: Msdyn365.ContentEditableEvent): void;\r\n handleAdditionalLinkTextChange(linkIndex: number, event: Msdyn365.ContentEditableEvent): void;\r\n}\r\n\r\n/**\r\n * IVideoPlayerAdditionalContentProps: Interface for\r\n * Video Player Additional Content view props.\r\n */\r\nexport interface IVideoPlayerAdditionalContentViewProps {\r\n additionalContentNode: INodeProps;\r\n additionalContentItems?: IVideoPlayerAdditionalContentItemViewProps;\r\n}\r\n\r\n/**\r\n * IVideoPlayerAdditionalContentProps: Interface for\r\n * Video Player Additional Content Item view props.\r\n */\r\nexport interface IVideoPlayerAdditionalContentItemViewProps {\r\n heading: React.ReactNode;\r\n text: React.ReactNode;\r\n links: React.ReactNode;\r\n additionalContentItemContainer: INodeProps;\r\n additionalContentItemLinks: INodeProps;\r\n}\r\n\r\n/**\r\n * Renders additional content heading.\r\n * @param additionalContentHeading - Additional content heading.\r\n * @param props - Video Player Additional content component props.\r\n * @returns Heading Node.\r\n */\r\nconst renderHeading = (additionalContentHeading: string, props: IVideoPlayerAdditionalContentProps) => {\r\n const requestContext = props.requestContext;\r\n return (\r\n {\r\n props.handleAdditionalTextChange(event);\r\n },\r\n requestContext\r\n }}\r\n />\r\n );\r\n};\r\n\r\n/**\r\n * Renders additional content heading.\r\n * @param additionalContentParagraphText - Additional content paragraph text.\r\n * @param props - Video Player Additional content component props.\r\n * @returns Paragraph Node.\r\n */\r\nconst renderParagraph = (additionalContentParagraphText: string, props: IVideoPlayerAdditionalContentProps) => {\r\n const requestContext = props.requestContext;\r\n return (\r\n {\r\n props.handleAdditionalParagraphChange(event);\r\n },\r\n requestContext\r\n }}\r\n />\r\n );\r\n};\r\n\r\n/**\r\n * Renders additional content heading.\r\n * @param ctaLink - Additional content link.\r\n * @param props - Video Player Additional content component props.\r\n * @param linkIndex - Additional content link index.\r\n * @returns Link Node.\r\n */\r\nconst renderLinks = (ctaLink: ILinksData, props: IVideoPlayerAdditionalContentProps, linkIndex: number) => {\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: ctaLink.ariaLabel,\r\n className: 'ms-video-player__details__additional-content__cta__links',\r\n linkText: ctaLink.linkText,\r\n linkUrl: ctaLink.linkUrl.destinationUrl,\r\n openInNewTab: ctaLink.openInNewTab,\r\n role: 'link'\r\n };\r\n const requestContext = props.requestContext;\r\n return (\r\n {\r\n props.handleAdditionalLinkTextChange(linkIndex, event);\r\n },\r\n requestContext\r\n }}\r\n />\r\n );\r\n};\r\n\r\n/**\r\n * Create node for each additonal content item.\r\n * @param item - Video Player additonal content item props.\r\n * @param props - Video Player Additional content component props.\r\n * @returns IVideoPlayerAdditionalContentItemViewProps.\r\n */\r\nconst getAdditionalContentItems = (\r\n item: IAdditionalContentData,\r\n props: IVideoPlayerAdditionalContentProps\r\n): IVideoPlayerAdditionalContentItemViewProps => {\r\n const headingNode = item.heading && renderHeading(item.heading, props);\r\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props);\r\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\r\n return renderLinks(ctaLink, props, index);\r\n });\r\n\r\n return {\r\n heading: headingNode,\r\n text: paragraphNode,\r\n links: linksNode,\r\n additionalContentItemContainer: { className: 'ms-video-player__details__additional-content__container' },\r\n additionalContentItemLinks: { className: 'ms-video-player__details__additional-content__cta' }\r\n };\r\n};\r\n\r\n/**\r\n * VideoPlayerAdditionalContent component.\r\n * @param props - Video Player Additional content component props.\r\n * @returns Video Player Additional content view props.\r\n */\r\nexport const videoPlayerAdditionalContent = (\r\n props: IVideoPlayerAdditionalContentProps\r\n): IVideoPlayerAdditionalContentViewProps | undefined => {\r\n const { additionalContent } = props;\r\n if (!additionalContent) {\r\n return undefined;\r\n }\r\n\r\n const reactNodes: IVideoPlayerAdditionalContentItemViewProps = getAdditionalContentItems(additionalContent, props);\r\n return {\r\n additionalContentNode: { className: 'ms-video-player__details__additional-content' },\r\n additionalContentItems: reactNodes\r\n };\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as MsDyn365 from '@msdyn365-commerce/core';\r\nimport {\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n INodeProps,\r\n // isMobile,\r\n ITelemetryContent,\r\n // VariantType\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IVideoPlayerAdditionalContentViewProps, videoPlayerAdditionalContent } from './components/additional-content';\r\nimport { ILinksData, IVideoPlayerMobilityConfig, IVideoPlayerMobilityProps } from './video-player-mobility.props.autogenerated';\r\n\r\nexport interface IVideoPlayerViewProps extends IVideoPlayerMobilityProps<{}> {\r\n player: React.ReactNode;\r\n title?: React.ReactNode;\r\n text?: React.ReactNode;\r\n links?: React.ReactNode;\r\n detailsContainer?: INodeProps;\r\n detailsContainerCta?: INodeProps;\r\n additionalContent?: IVideoPlayerAdditionalContentViewProps;\r\n handleText?(): void;\r\n handleParagraph?(): void;\r\n handleAdditionalText?(): void;\r\n handleAdditionalParagraph?(): void;\r\n handleLink?(): void;\r\n handleAdditionalLink?(): void;\r\n}\r\n\r\n/**\r\n *\r\n * VideoPlayer component.\r\n * @extends {React.PureComponent>}\r\n */\r\nclass VideoPlayer extends React.PureComponent> {\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n // private readonly isMobileDevice: boolean;\r\n\r\n public constructor(props: IVideoPlayerMobilityProps) {\r\n super(props);\r\n // this.isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n }\r\n\r\n public render(): JSX.Element {\r\n const video: MsDyn365.IVideoData = this.props.config.video;\r\n let videolink = video._links && video._links.binaryReferences && video._links.binaryReferences[0].clientHref;\r\n let thumbnail = video.thumbnail?.src;\r\n \r\n const viewProps = {\r\n // Context for telemetry and raw data for C1 to do customization\r\n // Including computed data, state data and methods\r\n ...this.props,\r\n player: (\r\n \r\n \r\n ),\r\n title: this._getVideoDetailsHeading(),\r\n text: this._getVideoDetailsParagraph(),\r\n links: this._getVideoDetailsLinks(),\r\n detailsContainer: { className: 'ms-video-player__details' },\r\n detailsContainerCTA: { className: 'ms-video-player__details__cta' },\r\n additionalContent: videoPlayerAdditionalContent({\r\n requestContext: this.props.context.request,\r\n additionalContent: this.props.config.additionalContent,\r\n handleAdditionalTextChange: this.handleAdditionalTextChange,\r\n handleAdditionalParagraphChange: this.handleAdditionalParagraphChange,\r\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\r\n }),\r\n handleText: this.handleTextChange,\r\n handleParagraph: this.handleParagraphChange,\r\n handleAdditionalText: this.handleAdditionalTextChange,\r\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\r\n handleLink: this.handleLinkTextChange,\r\n handleAdditionalLink: this.handleAdditionalTextChange\r\n };\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Handle link text change.\r\n * @param linkIndex - The link index.\r\n * @param event - The dialog that is allowed to remain open.\r\n */\r\n public handleLinkTextChange(linkIndex: number, event: MsDyn365.ContentEditableEvent): void {\r\n if (this.props.config.links && this.props.config.links[Number(linkIndex)]) {\r\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\r\n }\r\n }\r\n\r\n /**\r\n * Handle text change.\r\n * @param event - The dialog that is allowed to remain open.\r\n */\r\n public handleTextChange = (event: MsDyn365.ContentEditableEvent): void => {\r\n this.props.config.heading!.text = event.target.value;\r\n };\r\n\r\n /**\r\n * Handle paragraph change.\r\n * @param event - The dialog that is allowed to remain open.\r\n */\r\n public handleParagraphChange = (event: MsDyn365.ContentEditableEvent): void => {\r\n this.props.config.paragraph = event.target.value;\r\n };\r\n\r\n /**\r\n * Handle additional text change.\r\n * @param event - The dialog that is allowed to remain open.\r\n */\r\n public handleAdditionalTextChange(event: MsDyn365.ContentEditableEvent): void {\r\n if (this.props.config.additionalContent) {\r\n this.props.config.additionalContent.heading = event.target.value;\r\n }\r\n }\r\n\r\n /**\r\n * Handle additional link text change.\r\n * @param linkIndex - The link index.\r\n * @param event - The dialog that is allowed to remain open.\r\n */\r\n public handleAdditionalLinkTextChange(linkIndex: number, event: MsDyn365.ContentEditableEvent): void {\r\n const additionalContent = this.props.config.additionalContent ?? {};\r\n if (additionalContent.links) {\r\n additionalContent.links[Number(linkIndex)].linkText = event.target.value;\r\n }\r\n }\r\n\r\n /**\r\n * Handle additional paragraph change.\r\n * @param event - The dialog that is allowed to remain open.\r\n */\r\n public handleAdditionalParagraphChange(event: MsDyn365.ContentEditableEvent): void {\r\n if (this.props.config.additionalContent) {\r\n this.props.config.additionalContent.subtext = event.target.value;\r\n }\r\n }\r\n\r\n /**\r\n * Get video details links.\r\n * @returns - React node.\r\n */\r\n private _getVideoDetailsLinks(): React.ReactNode[] | undefined {\r\n const { links } = this.props.config;\r\n const payLoad = getPayloadObject('click', this.telemetryContent, '');\r\n\r\n return links?.map((linkData: ILinksData, index: number) => {\r\n payLoad.contentAction.etext = linkData.linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\r\n const linkId = index;\r\n const editableLink: MsDyn365.ILinksData = {\r\n ariaLabel: linkData.ariaLabel,\r\n className: 'ms-video-player__details__cta__link',\r\n linkText: linkData.linkText,\r\n linkUrl: linkData.linkUrl.destinationUrl,\r\n openInNewTab: linkData.openInNewTab,\r\n role: 'button',\r\n additionalProperties: attributes\r\n };\r\n\r\n return (\r\n {\r\n this.handleLinkTextChange(index, event);\r\n },\r\n requestContext: this.props.context.request\r\n }}\r\n />\r\n );\r\n });\r\n }\r\n\r\n private _getVideoDetailsHeading(): React.ReactNode | undefined {\r\n const { heading } = this.props.config;\r\n\r\n return (\r\n heading && (\r\n \r\n )\r\n );\r\n }\r\n\r\n private _getVideoDetailsParagraph(): React.ReactNode | undefined {\r\n const { paragraph } = this.props.config;\r\n\r\n return (\r\n paragraph && (\r\n \r\n )\r\n );\r\n }\r\n}\r\n\r\nexport default VideoPlayer;\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 { Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IVideoPlayerAdditionalContentViewProps } from './components/additional-content';\r\nimport { IVideoPlayerViewProps } from './video-player-mobility';\r\n\r\n/**\r\n * Render Additional Content.\r\n * @param additionalContent - Additional content view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderAdditionalContent = (additionalContent: IVideoPlayerAdditionalContentViewProps) => {\r\n if (additionalContent.additionalContentItems) {\r\n return (\r\n \r\n <>\r\n {additionalContent.additionalContentItems.heading}\r\n \r\n {additionalContent.additionalContentItems.text}\r\n \r\n {additionalContent.additionalContentItems.links}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst VideoPlayerView: React.FC = props => {\r\n return (\r\n
\r\n {props.player}\r\n \r\n {props.title}\r\n {props.text}\r\n {props.additionalContent && renderAdditionalContent(props.additionalContent)}\r\n \r\n {props.links}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default VideoPlayerView;\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 { 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","getAdditionalContentItems","item","_item$links","headingNode","heading","renderHeading","additionalContentHeading","requestContext","Msdyn365","text","tag","editProps","onEdit","handleAdditionalTextChange","paragraphNode","subtext","renderParagraph","additionalContentParagraphText","handleAdditionalParagraphChange","linksNode","links","map","ctaLink","index","renderLinks","linkIndex","editableLink","ariaLabel","linkText","linkUrl","destinationUrl","openInNewTab","link","onTextChange","handleAdditionalLinkTextChange","additionalContentItemContainer","additionalContentItemLinks","videoPlayerAdditionalContent","additionalContent","additionalContentNode","additionalContentItems","VideoPlayer","handleTextChange","handleParagraphChange","paragraph","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","telemetry","_video$thumbnail","video","videolink","_links","binaryReferences","clientHref","thumbnail","src","player","width","controls","poster","_getVideoDetailsHeading","_getVideoDetailsParagraph","_getVideoDetailsLinks","detailsContainer","detailsContainerCTA","handleText","handleParagraph","handleAdditionalText","handleAdditionalParagraph","handleLink","handleLinkTextChange","handleAdditionalLink","_this$props$config$ad","payLoad","getPayloadObject","linkData","contentAction","etext","attributes","getTelemetryAttributes","linkId","additionalProperties","_heading$tag","renderModuleAttributes","detailsContainerCta","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","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","TileList","_telemetryContent","static","StringExtensions","isNullOrWhitespace","Heading","headingTag","_this$props$config$cl","propsCarousel","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","vertical","_createHeading","singleSlideCarouselComponentProps","tileItemContainer","tileListContainer","tileListHeading","tiles","slots","content","tileListView","tileItem","keyIndex"],"sourceRoot":""}