{"version":3,"sources":["webpack:///src/modules/password-reset/components/password-reset-button.tsx?7c39","webpack:///src/modules/password-reset/components/password-reset-error.tsx?5bd3","webpack:///src/modules/password-reset/components/password-reset-input.tsx?7f32","webpack:///src/modules/password-reset/components/password-reset-label.tsx?2eed","webpack:///src/modules/password-reset/components/password-reset-loading-icon.tsx?29cc","webpack:///src/modules/password-reset/components/password-reset-loading-message.tsx?a735","webpack:///src/modules/password-reset/password-reset.tsx?2fc7","webpack:///./src/themes/stemichelle-new/views/smwe-sign-up.view.tsx?3a72","webpack:///./src/modules/smwe-footer-item/smwe-footer-item.view.tsx?2a6b","webpack:///src/modules/social-share/social-share.view.tsx?76da","webpack:///src/modules/password-reset/password-reset.view.tsx?f872","webpack:///src/modules/site-picker/site-picker.view.tsx?dcff","webpack:///src/modules/account-address-tile/account-address-tile.view.tsx?0b73","webpack:///./src/modules/smwe-sign-up/smwe-sign-up.view.tsx?c609","webpack:///src/modules/fabrikam/views/cart.view.tsx?8115","webpack:///src/modules/loyalty-sign-up/components/loyalty-sign-up-small-components.tsx?d781","webpack:///src/modules/loyalty-sign-up/loyalty-sign-up.tsx?f29d","webpack:///src/modules/aad-generic/aad-generic.view.tsx?ecad","webpack:///src/modules/aad-generic/aad-generic.tsx?d537","webpack:///src/modules/account-address-tile/components/account-address-tile-description.tsx?88b9","webpack:///src/modules/account-address-tile/components/account-address-tile-links.tsx?7e3f","webpack:///src/modules/account-address-tile/account-address-tile.tsx?4565","webpack:///src/modules/fabrikam/views/order-history.view.tsx?46de","webpack:///./src/modules/smwe-footer-item/smwe-footer-item.tsx?9798","webpack:///./src/dataActions/wine-club-signup.ts?d478","webpack:///./src/modules/wine-club/wine-club-confirmation.tsx?9cb0","webpack:///./src/modules/wine-club/wine-club-input-radio-checkbox.tsx?77c2","webpack:///./src/modules/wine-club/wine-club-countries.data.ts?310d","webpack:///./src/modules/wine-club/wine-club-input.data.ts?828d","webpack:///./src/modules/wine-club/wine-club-membership.tsx?a1b2","webpack:///./src/modules/wine-club/wine-club-input-dropdown.tsx?26e5","webpack:///./src/modules/wine-club/wine-club-input-text.tsx?f4a5","webpack:///./src/modules/wine-club/wine-club-shipping.tsx?14d9","webpack:///./src/modules/wine-club/wine-club.tsx?6363","webpack:///./src/themes/blend/views/smwe-sign-up.view.tsx?86b8","webpack:///src/modules/loyalty-sign-up/loyalty-sign-up.view.tsx?ed3f","webpack:///src/modules/account-loyalty-tile/components/account-loyalty-tile-description.tsx?a49e","webpack:///src/modules/account-loyalty-tile/components/account-loyalty-tile-links.tsx?0c40","webpack:///src/modules/account-loyalty-tile/account-loyalty-tile.tsx?b50e","webpack:///src/modules/account-order-templates-tile/account-order-templates-tile.view.tsx?90af","webpack:///./src/modules/promo-banner-cookie/promo-banner-cookie.tsx?d3ce","webpack:///./src/modules/lightbox/lightbox.tsx?fa91","webpack:///./src/modules/smwe-sign-up/components/smwe-sign-up-button.tsx?4965","webpack:///./src/modules/smwe-sign-up/components/smwe-sign-up-error.tsx?9c17","webpack:///./src/modules/smwe-sign-up/components/smwe-sign-up-input.tsx?70ac","webpack:///./src/modules/smwe-sign-up/components/smwe-sign-up-label.tsx?57c5","webpack:///./src/modules/smwe-sign-up/components/smwe-sign-up-loading-icon.tsx?050e","webpack:///./src/modules/smwe-sign-up/components/smwe-sign-up-loading-message.tsx?b5fb","webpack:///./src/modules/smwe-sign-up/components/smwe-sign-up-success.tsx?b5ca","webpack:///./src/modules/smwe-sign-up/smwe-sign-up.tsx?7a58","webpack:///src/modules/social-share/social-share.tsx?ed88","webpack:///./src/modules/product-data-entry/product-data-entry.tsx?c077","webpack:///src/modules/account-order-templates-tile/components/account-order-templates-tile-description.tsx?7b53","webpack:///src/modules/account-order-templates-tile/components/account-order-templates-tile-links.tsx?5371","webpack:///src/modules/account-order-templates-tile/account-order-templates-tile.tsx?db71","webpack:///src/modules/footer-item/footer-item.tsx?f8b4","webpack:///src/modules/site-picker/site-picker.tsx?35ca","webpack:///src/modules/account-loyalty-tile/account-loyalty-tile.view.tsx?c661","webpack:///./src/themes/elicit/views/smwe-sign-up.view.tsx?3000","webpack:///src/modules/footer-item/footer-item.view.tsx?235e","webpack:///./src/themes/fth/views/smwe-sign-up.view.tsx?786b"],"names":["PasswordResetButton","id","className","text","ariaLabel","disabled","telemetryContent","onClick","payLoad","getPayloadObject","attributes","getTelemetryAttributes","React","Button","Object","PasswordResetError","type","message","errorClassName","classnames","role","GetMaxLength","maxLength","parsedMaxLength","parseInt","isNaN","PasswordResetInput","value","pattern","onChange","undefined","PasswordResetLabel","forId","htmlFor","PasswordResetLoadingIcon","PasswordResetLoadingMessage","PasswordReset","constructor","props","super","moduleClassName","handleHeadingChange","event","this","config","heading","target","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","setTimeout","clearInterval","window","isInitialized","map","obj","ID","toLowerCase","newPasswordRegex","PAT","reenterPasswordRegex","resources","verifying_blurb","loadingMessage","assign","passwordDefaultRegex","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","componentDidMount","componentDidUpdate","render","viewProps","viewState","isShowLoading","passwordReset","moduleProps","loading","modal","tag","Modal","isOpen","modalBody","ModalBody","icon","PasswordResetLoadingIconComponent","PasswordResetLoadingMessageComponent","defaultAADConainer","style","display","aadConainer","Msdyn365","editProps","onEdit","requestContext","passwordResetLocalAccount","_renderLocalAccount","renderView","localAccount","items","_renderInput","newPasswordLabelText","confirmPasswordLabelText","errorMessage","PasswordResetErrorComponent","key","passwordEntryMismatchError","requiredFieldMissingError","fieldIncorrectError","buttonsWrapper","buttons","PasswordResetButtonComponent","saveButtonAriaLabel","saveButtonText","cancelButtonText","verificationSuccessModal","verificationSuccessModalMessage","labelText","wrapper","label","PasswordResetLabelComponent","input","PasswordResetInputComponent","__decorate","observable","observer","SignUpItem","Node","SignUpEmailVerification","email","buttonWrapper","successMessage","button","SignUpLoading","_showPassword","newPasswordState","document","getElementById","reenterPasswordState","iconElements","getElementsByClassName","i","length","SignUpView","signUp","signUpLocalAccount","Module","emailVerification","disclaimer","pwRequirements","item","isNewPassword","isRequired","error","index","LocalAccount","FooterItemView","FooterItem","_renderElement","HeadingContainer","Link","linkText","image","SocialShareView","SocialShareList","SocialShareItemElements","SocialShareItem","SocialShare","SocialShareElement","PasswordResetItem","PasswordResetLoading","PasswordResetView","_renderSitePicker","_renderSiteOptionsList","SitePickerMenuList","SitePickerMenuListItem","SitePickerMenuListItemArray","options","onMouseLeave","resetSiteOptionsState","isMobileView","SitePicker","SitePickerMobileContainer","SitePickerMobileMenuList","SitePickerMobileMenuListItem","renderSiteOptions","_renderMobileView","SitePickerMenu","SitePickerMenuSpan","siteOptionsState","_renderDesktopView","AccountAddressTileView","AccountAddressTile","description","links","_renderPromotions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","_renderCartlines","cartLines","storeSelector","backToShoppingButton","waitingComponent","cartLoadingStatus","cartDataResult","mulitplePickUp","emailDeliveryModeCode","emptyCartText","cartLine","cartline","_renderBOPISBlock","_renderGroupBOPISBlock","addToOrderTemplate","addToWishlist","remove","pickUpInStore","data","DeliveryMode","shipInsteadDisplayText","shipToAddressDisplayText","pickItUpDisplayText","pickUpAtStoreWithLocationText","changeStoreDisplayText","isBopisSelected","TelemetryConstant","PickupInStore","puckUpinStoreAttribute","ContainerProps","orgUnitName","callbacks","toggleBopis","_renderErrorBlock","errorData","errors","Wrapper","header","_renderOrderSummarylines","orderSummaryLines","OrderSummaryItems","promoCode","subtotal","shipping","otherCharge","tax","totalDiscounts","orderTotal","_renderCartLinesGroup","cartLinesGroup","cartlines","_renderCartLinesGroupHeader","_countItems","actionContext","channel","EmailDeliveryModeCode","mulitplePickUpEnabled","count","pickUpText","shippingText","emailshippingText","groupTitle","_renderCartLinesGroupTitle","countItem","reduce","Quantity","itemLabel","itemsLabel","suffix","deliveryOption","CartView","renderModuleAttributes","title","promotionOptions","CartlinesWrapper","orderSummaryHeading","OrderSummaryWrapper","orderSummaryLineitems","OrderSummaryErrors","checkoutAsSignInUserButton","checkoutAsGuestButton","createTemplateFromCartButton","SignUpText","LoyaltySignUp","handleMemberHeadingChange","memberHeading","_issueLoyalty","user","isAuthenticated","state","clicked","setState","IssueLoyaltyInput","apiSettings","issueLoyalty","then","location","catch","debug","SignIn","loyaltySignInAttributes","contentAction","etext","SignUp","loyaltySignUpAttributes","LoyaltyDetailLink","loyaltyDetailsLinkAttributes","LoyaltyTermsLink","loyaltyTermsLinkAttributes","signInUrl","loyaltyCard","termsUrl","loyaltyJoinUrl","origin","signInurl","completeClass","classname","hasLoyaltyAccount","result","CardTenderTypeValue","status","signInLink","href","joinLoyaltyButtonText","signUpText","loyaltyProgramText","signUpButton","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","aadGeneric","aadAPIConainer","AadGeneric","$i2e","$element","insertServiceContent","getElementContent","initialize","shouldComponentUpdate","nextProps","IAccountAddressTileDescription","_mapEditableLinks","linkdata","editableLinks","forEach","link","editableLink","linkUrl","destinationUrl","openInNewTab","additionalProperties","push","AccountAddressTileLinks","onTextChange","handleLinkTextChange","linkIndex","accountAddressTileDescriptionForSingleAddress","accountAddressTileDescriptionForMultipleAddresses","address","customerInformation","addressCount","accountAddressTileDescription","format","IsAsyncCustomer","LinksComponent","DescriptionComponent","OrderHistoryOrderInfomation","orderInformationProps","salesId","receiptId","channelName","createdDate","amount","channelReferenceId","OrderHistoryGroupDelivery","deliveryProps","processing","trackingInfo","OrderHistoryGroup","groupProps","delivery","salesLinesProps","salesLines","salesLine","LineId","OrderHistoryGroups","groupsProps","groups","group","OrderHistoryHeader","headerProps","orderCountLabel","extraActions","OrderHistorySalesOder","salesOrderProps","orderInfomation","orderDetailsLink","OrderHistoryList","listProps","salesOrders","salesOrder","OrderHistoryView","orderHistoryProps","alert","emptyMessage","backToShoppingLink","list","moreButton","footerItemClassName","_createHeading","_createImageMarkup","_createText","_createLinkText","ItemContainer","Heading","ariaHiddenAttr","src","Image","gridSettings","imageSettings","viewports","xs","q","w","h","lg","lazyload","loadFailureBehavior","WineClubInput","shouldCacheOutput","getCacheKey","getCacheObjectType","dataCacheType","createWineClubInput","inputData","createWineClubSignUpInput","WineClubId","wineClubId","AddressEmail","addressEmail","AddressFirstName","addressFirstName","AddressLastName","addressLastName","AddressLine1","addressLine1","AddressLine2","addressLine2","AddressPhone","addressPhone","City","city","Country","country","CustomerId","customerId","DeliveryPreference","deliveryPreference","IsGifted","isGifted","State","Zipcode","zipcode","async","wineClubAction","ctx","execute","action","WineClubConfirmation","shippingAddress","fields","wineClub_confirmationHeading","wineClub_confirmationText","wineClub_confirmationShippingAddressHeading","firstName","lastName","address1","address2","zip","phone","wineClub_buttonBack","renderButton","toggleStep","wineClub_buttonSignup","renderSubmit","WineClubInputRadioCheckbox","checked","handleChange","countries","getInputs","wineClub_membershipTypeLabel","required","wineClub_membershipTypeOptionIsNotGifted","wineClub_membershipTypeOptionIsGifted","validation","validate","wineClub_membershipTypeValidationMessage","match","WineClubMembership","_validateFields","bind","wineClub_membershipHeading","wineClub_membershipText","_renderMembershipInputs","renderValidation","wineClub_membershipErrorMessage","wineClub_buttonNext","handleNext","membershipInput","find","option","isChecked","membership","resetAddressSelect","WineClubInputDropdown","_renderOptions","isSelected","WineClubInputText","onBlur","_blurInput","validateInput","WineClubShipping","includes","wineClub_shippingHeading","wineClub_shippingTextIsGifted","wineClub_shippingText","_renderAddressDropdown","isAddressSelected","selectedAddress","_renderShippingForm","wineClub_shippingErrorMessage","_renderAddresses","_renderSelectedAddress","customerAddresses","FullAddress","showForm","wineClub_shippingSelectEnter","wineClub_shippingSelectLabel","handleAddressChange","Name","Street","ZipCode","ThreeLetterISORegionName","Phone","_renderShippingInputs","_renderShippingCountry","shippingInputs","filter","shippingInputsIsGifted","_getValue","invalidInput","emptyInput","WineClub","fieldsDefault","addressMap","moduleData","serverData","submitSuccess","submitFailure","step","components","confirmation","customerEmail","emailAddress","_renderValidation","_renderButton","_renderSubmit","_toggleStep","_handleChange","_handleAddressChange","_resetAddressSelect","_handleNext","_handleSubmit","StepComponent","_renderStep","_renderHeading","onSubmit","wineClub_formSuccess","_renderText","failureMessage","headingTag","toggle","getAttribute","_handleAddressUpdate","_handleAddressClear","_handleAssignEmail","addressMapContent","fullNameArray","split","slice","join","preventDefault","clubId","customerAccountNumber","response","Message","wineClub_formFailure","Error","JSON","stringify","LoyaltySignUpView","IAccountLoyaltyTileDescription","AccountLoyaltyTileLinks","AccountLoyaltyTile","signUpLinkText","viewLinkText","signUpLinkAriaLabel","viewLinkAriaLabel","accountLoyaltySummary","accountLoyaltyMemberSummary","url","CardNumber","points","RewardPoints","rewardPoint","ActivePoints","AccountOrderTemplatesTileView","AccountOrderTemplatesTile","PromoBannerCookie","bannerDismissed","_closeModal","bodyClass","_isCookieSet","body","classList","add","hostname","cookie","cookies","setConsentCookie","console","log","backgroundColor","_renderContent","dismissible","_setCookie","cookieMaxAge","set","path","maxAge","promoBannerCookie","get","_target","color","textColor","_renderTitle","RichTextComponent","Lightbox","_openModal","defaultOpenState","launchLightboxButton","_launchLightboxButton","hasLaunchLightboxButton","launchLightboxButtonText","autoFocus","fade","horizontalPosition","verticalPosition","zIndex","applicationNode","ModalHeader","modalHeader","slots","content","slot","buttonText","prevState","SignUpButton","SignUpError","SignUpInput","SignUpLabel","SignUpLoadingIcon","SignUpLoadingMessage","SignUpSuccess","successClassName","emailRegex","isEmailVerificationRequried","VERIFY","UX_INPUT_TYPE","PAT_DESC","invalidPasswordError","invalidEmailAddressError","errorMessages","required_field","emailEntered","SignUpLoadingIconComponent","SignUpLoadingMessageComponent","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","emailAddressLabelText","passwordLabelText","verificationCodeLabelText","SignUpButtonComponent","sendCodeButtonAriaLabel","_isFormValid","sendCodeButtonText","verifyCodeButtonAriaLabel","verifyCodeButtonText","resendCodeButtonAriaLabel","resendCodeButtonText","changeEmailButtonAriaLabel","changeEmailButtonText","SignUpSuccessComponent","verificationCodeSendSuccess","emailAddressVerifiedSuccess","SignUpErrorComponent","retryError","retryNotAllowedError","throttledError","codeExpiredError","serverError","invalidEmailError","signUpButtonArialabel","signUpButtonText","cancelButtonArialabel","requiredFieldMissingSummaryError","SignUpLabelComponent","SignUpInputComponent","e","socialShareItems","isConsentGiven","viewprops","caption","orientation","tabIndex","ProductDataEntry","hasTastingNotes","productTastingNotesItems","hasAttributes","productAttributesItems","customClass","productImage","_renderHeroImage","productCaption","_renderRichText","productHeading","productSubHeading","productDescription","productTastingNotesHeading","_renderTastingNotesItems","productAttributesHeading","_renderProductAttributesItems","defaultImageSettings","idx","tastingNotesCustomClass","tastingNotesIcon","tastingNotesName","attributeCustomClass","attributeName","attributeText","AccountOrderTemplatesTileDescription","AccountOrderTemplatesTileLinks","RetailB2BEcommerceFeatureState","featureState","params","isEditor","IsEnabled","IsB2b","accountOrderTemplatesTileDescription","orderTemplates","orderTemplatesCount","handleTextChange","EditableLink","_createLink","onTelemetryClick","PureComponent","_cookieName","_cookieExpirationInSeconds","_escFunction","keyCode","expandSiteOptions","nextFocus","activeElement","_sitePickerMenuButton","current","contains","_sitePickerMenuNode","_resetSiteOptionsState","focus","_handleOutsideClick","createRef","_renderSiteOptions","_updateViewport","viewport","device","Type","isMobile","MsDyn365","isBrowser","addEventListener","resizeThrottledEventHandler","addThrottledEvent","componentWillUnmount","removeEventListener","ref","Drawer","toggleButtonText","openGlyph","closeGlyph","glyphPlacement","_renderSitePickerImage","expandSiteOptionsState","currentTarget","cookieConfig","xl","siteOptions","siteImage","imageProps","siteRedirectUrl","siteName","altText","_getViewport","innerWidth","sm","md","computed","AccountLoyaltyTileView"],"mappings":"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EAAUwa,qBACpB7b,KAAKL,MAAMmc,aACPza,EAAUwa,oBACV,WACA7b,KAAKL,MAAMoc,WACX,yBAGP1a,GAAaA,EAAU2a,uBACpBhc,KAAKL,MAAMsc,aACP5a,EAAU2a,sBACV,iCAxC9Bf,EAAoB,sBADzBzV,KACKyV,GAmDSA,QCnDf,IAAMiB,EAAN,cAAyCje,YAM9BiE,SACH,OACIjE,uBAAKV,UAAU,cACXU,yBAAOV,UAAU,oBACbU,yBACIV,UAAU,mBACVc,KAAM2B,KAAKL,MAAMtB,KACjBf,GAAI0C,KAAKL,MAAMrC,GAAE,aACL0C,KAAKL,MAAMsW,OAASjW,KAAKL,MAAMsW,MAC3CjX,MAAOgB,KAAKL,MAAMX,MAClBmd,QAASnc,KAAKL,MAAMwc,QACpBjd,SAAUc,KAAKL,MAAMyc,eAExBpc,KAAKL,MAAMX,UAnB1Bkd,EAA0B,sBAD/B1W,KACK0W,GA2BSA,Q,UC3CR,MAAMG,EAAsB,CAC/B,cACA,gBACA,UACA,UACA,iBACA,UACA,SACA,WACA,aACA,sBACA,YACA,UACA,QACA,mBACA,YACA,UACA,aACA,UACA,UACA,8BACA,WACA,UACA,UACA,SACA,yBACA,UACA,SACA,UACA,UACA,qBACA,WACA,SACA,iCACA,SACA,WACA,eACA,UACA,WACA,2BACA,SACA,qBACA,iBACA,2BACA,OACA,QACA,yBACA,mBACA,gBACA,WACA,UACA,QACA,wCACA,eACA,aACA,UACA,OACA,UACA,SACA,iBACA,UACA,eACA,WACA,WACA,qBACA,UACA,sBACA,cACA,oBACA,UACA,UACA,WACA,mBACA,iBACA,eACA,UACA,SACA,gBACA,wCACA,8BACA,iBACA,SACA,UACA,UACA,QACA,YACA,SACA,+BACA,UACA,aACA,OACA,mCACA,YACA,WACA,gBACA,4BACA,SACA,QACA,mCACA,WACA,YACA,UACA,UACA,QACA,YACA,OACA,OACA,mBACA,cACA,SACA,QACA,sBACA,UACA,QACA,SACA,SACA,aACA,iBACA,WACA,SACA,aACA,OACA,SACA,UACA,UACA,UACA,QACA,gBACA,YACA,aACA,QACA,YACA,aACA,SACA,WACA,oBACA,OACA,QACA,mBACA,aACA,aACA,YACA,UACA,SACA,6BACA,UACA,SACA,WACA,aACA,aACA,sBACA,aACA,UACA,UACA,QACA,cACA,uBACA,gBACA,cACA,YACA,iBACA,wBACA,OACA,iBACA,wBACA,cACA,SACA,OACA,WACA,QACA,wBACA,kBACA,mBACA,WACA,OACA,cACA,WACA,SACA,WACA,cACA,QACA,UACA,UACA,SACA,SACA,QACA,SACA,aACA,wBACA,eACA,mBACA,SACA,aACA,eACA,qBACA,WACA,WACA,kBACA,UACA,eACA,gBACA,cACA,QACA,+BACA,iBACA,aACA,WACA,0BACA,aACA,gCACA,QACA,WACA,yBACA,YACA,SACA,cACA,QACA,eACA,SACA,WACA,WACA,cACA,gBACA,UACA,gBACA,sBACA,UACA,SACA,eACA,2BACA,SACA,SACA,UACA,uBACA,iBACA,gBACA,uCACA,UACA,aACA,UACA,eACA,YACA,UACA,0BACA,qBACA,oBACA,iBACA,sBACA,iBACA,SACA,YChPSC,EAAajb,GACf,CACH,CACI/D,GAAI,aACJ4H,MAAO7D,EAAUkb,6BACjBC,UAAU,EACVne,KAAM,QACNuK,QAAS,CACLvH,EAAUob,yCACVpb,EAAUqb,uCAEdC,WAAY,CACRC,SAAW5d,KACEA,EAEbV,QAAS+C,EAAUwb,2CAG3B,CACIvf,GAAI,YACJ2Y,MAAO,kBACP/Q,MAAO,aACPsX,UAAU,EACVne,KAAM,QAEV,CACIf,GAAI,WACJ2Y,MAAO,kBACP/Q,MAAO,YACPsX,UAAU,EACVne,KAAM,QAEV,CACIf,GAAI,QACJ2Y,MAAO,kBACP/Q,MAAO,gBACPsX,UAAU,EACVne,KAAM,OACNse,WAAY,CACRC,SAAW5d,MAEGA,IAASA,EAAM8d,MADX,qIAGlBxe,QAAS,iCAGjB,CACIhB,GAAI,QACJ2Y,MAAO,kBACP/Q,MAAO,eACPsX,UAAU,EACVne,KAAM,OACNse,WAAY,CACRC,SAAW5d,KAEGA,EAAM8d,MADF,s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","file":"static/js/7.33b3922da4b3b232869e.chunk.js","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPasswordResetButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst PasswordResetButton: React.FC = ({ id, className, text, ariaLabel, disabled, telemetryContent, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {text}\n );\n};\n\nexport default PasswordResetButton;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IPasswordResetErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst PasswordResetError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n\n};\n\nexport default PasswordResetError;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\n\nexport interface IPasswordResetInputProps {\n id?: string;\n // tslint:disable-next-line:no-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IPasswordResetInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst PasswordResetInput: React.FC = ({\n id,\n type,\n value,\n pattern,\n className,\n maxLength,\n onChange }) => (\n \n );\n\nexport default PasswordResetInput;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nexport interface IPasswordResetLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst PasswordResetLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default PasswordResetLabel;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nexport interface IPasswordResetLoadingIcon {\n className: string;\n}\n\nconst PasswordResetLoadingIcon: React.FC = ({ className }) => (\n
\n);\n\nexport default PasswordResetLoadingIcon;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nexport interface IPasswordResetLoadingMessage {\n className: string;\n message: string;\n}\n\nconst PasswordResetLoadingMessage: React.FC = ({ className, message }) => (\n
\n {message}\n
\n);\n\nexport default PasswordResetLoadingMessage;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody\n} from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\n\nimport PasswordResetButtonComponent from './components/password-reset-button';\nimport PasswordResetErrorComponent from './components/password-reset-error';\nimport PasswordResetInputComponent from './components/password-reset-input';\nimport PasswordResetLabelComponent from './components/password-reset-label';\nimport PasswordResetLoadingIconComponent from './components/password-reset-loading-icon';\nimport PasswordResetLoadingMessageComponent from './components/password-reset-loading-message';\nimport { IPasswordResetConfig, IPasswordResetProps } from './password-reset.props.autogenerated';\n\nexport interface IPasswordResetViewState {\n isShowLoading: boolean;\n}\n\nexport interface IPasswordResetItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IPasswordResetLocalAccount {\n localAccount: INodeProps;\n items: IPasswordResetItem[];\n errorMessage: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IPasswordResetLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IPasswordResetViewProps {\n className: string;\n viewState: IPasswordResetViewState;\n loading: IPasswordResetLoading;\n passwordReset: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n passwordResetLocalAccount: IPasswordResetLocalAccount;\n}\n\n/**\n *\n * PasswordReset component\n * @extends {React.Component>}\n */\n@observer\nclass PasswordReset extends React.Component> {\n\n private moduleClassName: string = 'ms-password-reset';\n private telemetryContent?: ITelemetryContent;\n @observable private newPasswordRegex: string;\n @observable private reenterPasswordRegex: string;\n\n @observable private isInitialized: boolean;\n\n // tslint:disable-next-line:no-any\n private initializationTimer: any;\n\n constructor(props: IPasswordResetProps) {\n super(props);\n // tslint:disable-next-line:max-line-length\n const passwordDefaultRegex = '^((?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d)|(?=.*[a-z])(?=.*[A-Z])(?=.*[^A-Za-z0-9])|(?=.*[a-z])(?=.*\\\\d)(?=.*[^A-Za-z0-9])|(?=.*[A-Z])(?=.*\\\\d)(?=.*[^A-Za-z0-9]))([A-Za-z\\\\d@#$%^&*\\\\-_+=[\\\\]{}|\\\\\\\\:\\',?/`~\\'();!]|\\\\.(?!@)){8,16}$';\n this.newPasswordRegex = passwordDefaultRegex;\n this.reenterPasswordRegex = passwordDefaultRegex;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // tslint:disable-next-line:no-string-literal\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // tslint:disable-next-line:no-string-literal\n window['$element']['initialize']();\n }\n }\n\n public render(): JSX.Element {\n const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n passwordReset: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: ,\n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading &&\n ,\n passwordResetLocalAccount: this._renderLocalAccount()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading!.text= event.target.value;\n\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => { this._isInitializationSuccessful(); }, 100);\n setTimeout(() => { clearInterval(this.initializationTimer); }, 10000);\n }\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private _isInitializationSuccessful = () => {\n // tslint:disable-next-line:no-string-literal\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n }\n\n private _prePopulateData = () => {\n // tslint:disable-next-line:no-string-literal\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // tslint:disable-next-line:no-string-literal\n window['SA_FIELDS']['AttributeFields'].map((obj: { ID: string; PAT: string }) => {\n switch (obj.ID.toLowerCase()) {\n case 'newpassword': {\n this.newPasswordRegex = obj.PAT;\n break;\n }\n case 'reenterpassword': {\n this.reenterPasswordRegex = obj.PAT;\n break;\n }\n default:\n }\n });\n }\n }\n\n private _updateErrorMessage = () => {\n const { resources } = this.props;\n\n // tslint:disable-next-line:no-string-literal\n if (window && window['CONTENT']) {\n\n const message = {\n verifying_blurb: resources.loadingMessage\n };\n\n // tslint:disable-next-line:no-string-literal\n Object.assign(window['CONTENT'], message);\n }\n }\n\n private _renderLocalAccount(): IPasswordResetLocalAccount {\n const { resources } = this.props;\n return {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('newPassword', 'password', resources.newPasswordLabelText, this.newPasswordRegex),\n this._renderInput('reenterPassword', 'password', resources.confirmPasswordLabelText, this.reenterPasswordRegex),\n ],\n errorMessage: [\n ,\n ,\n ,\n \n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`,\n },\n buttons: [\n ,\n \n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n }\n\n private _renderInput(id: string, type: string, labelText: string, pattern?: string): IPasswordResetItem {\n const className = `${this.moduleClassName}__account-item`;\n return (\n {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n\n }\n );\n }\n\n}\n\nexport default PasswordReset;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport {\r\n ISignUpEmailVerification, ISignUpItem, ISignUpLoading, ISignUpLocalAccount, ISignUpViewProps\r\n} from '../../../modules/smwe-sign-up/./smwe-sign-up';\r\n\r\nconst SignUpItem: React.FC = ({\r\n wrapper,\r\n label,\r\n errorMessage,\r\n input\r\n}) => {\r\n\r\n return (\r\n \r\n {label}\r\n {errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst SignUpEmailVerification: React.FC = ({\r\n email,\r\n buttonWrapper,\r\n buttons,\r\n successMessage,\r\n errorMessage\r\n}) => {\r\n return (\r\n <>\r\n \r\n {successMessage && successMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n \r\n {buttons && buttons.map((button: React.ReactNode) => {\r\n return (\r\n <>\r\n {button}\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n emailVerification,\r\n buttons,\r\n errorMessage,\r\n disclaimer,\r\n pwRequirements\r\n}) => {\r\n return (\r\n \r\n {items && items.map((item: ISignUpItem) => {\r\n const isNewPassword = item.key === 'newPassword';\r\n if (item.key === 'email' && emailVerification.isRequired) {\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n } else if (isNewPassword || item.key === 'reenterPassword') {\r\n return (\r\n \r\n {isNewPassword && pwRequirements}\r\n {item.label}\r\n {item.errorMessage}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n <>\r\n \r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((error: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {error}\r\n \r\n );\r\n })}\r\n {buttons && buttons.map((button: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {button}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n \r\n );\r\n};\r\n\r\nconst SignUpLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignUpView: React.FC = props => {\r\n const {\r\n signUp,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n heading,\r\n signUpLocalAccount\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n {heading}\r\n {LocalAccount(signUpLocalAccount)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = (event: React.MouseEvent) => {\r\n const newPasswordState = document.getElementById('newPassword') as HTMLInputElement;\r\n const reenterPasswordState = document.getElementById('reenterPassword') as HTMLInputElement;\r\n const iconElements = document.getElementsByClassName('ms-sign-up__password-icon');\r\n if (newPasswordState && reenterPasswordState && iconElements) {\r\n newPasswordState.type = (newPasswordState.type === 'password') ? 'text' : 'password';\r\n reenterPasswordState.type = (reenterPasswordState.type === 'password') ? 'text' : 'password';\r\n for (let i = 0; i < iconElements.length; i++) {\r\n iconElements[i].className = (iconElements[i].className === 'ms-sign-up__password-icon ms-sign-up__password-icon-show')\r\n ? 'ms-sign-up__password-icon ms-sign-up__password-icon-hide'\r\n : 'ms-sign-up__password-icon ms-sign-up__password-icon-show';\r\n }\r\n }\r\n};\r\n\r\nexport default SignUpView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IFooterViewProps } from './smwe-footer-item';\r\n\r\n/**\r\n *\r\n * FooterItemView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n const { FooterItem } = this.props;\r\n return(\r\n \r\n New footer module\r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n const {heading, HeadingContainer,Link, linkText, image} = props;\r\n if(heading) {\r\n return (\r\n \r\n {heading}\r\n {linkText}\r\n {image}\r\n \r\n );\r\n } else if(Link) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n return(\r\n <>\r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default FooterItemView;","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n*--------------------------------------------------------------------------------------------*/\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\nimport { ISocialShareViewProps } from './social-share';\n\nexport const SocialShareView: React.FC = props => {\n const { SocialShareList, SocialShareItemElements, SocialShareItem, SocialShare } = props;\n if (SocialShareItemElements.length === 0) {\n props.context.telemetry.error('Social media list is empty, module wont render');\n return null;\n }\n return (\n \n \n {SocialShareItemElements.map((SocialShareElement: ReactNode, index: number) => {\n return (\n \n {SocialShareElement}\n \n );\n })\n }\n \n \n );\n};\n\nexport default SocialShareView;","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\n\nimport {\n IPasswordResetItem, IPasswordResetLoading, IPasswordResetLocalAccount, IPasswordResetViewProps\n} from './password-reset';\n\nconst PasswordResetItem: React.FC = ({\n wrapper,\n label,\n errorMessage,\n input\n}) => {\n\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n\n return (\n \n {items && items.map((item: IPasswordResetItem) => {\n return (\n \n );\n })}\n {errorMessage && errorMessage.map((error: React.ReactNode, index: number) => {\n return (\n \n {error}\n \n );\n })}\n \n {buttons && buttons.map((button: React.ReactNode, index: number) => {\n return (\n \n {button}\n \n );\n })}\n \n\n \n \n \n \n );\n};\n\nconst PasswordResetLoading: React.FC = ({\n modal,\n modalBody,\n icon,\n message,\n}) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst PasswordResetView: React.FC = props => {\n\n const {\n passwordReset,\n viewState,\n loading,\n defaultAADConainer,\n aadConainer,\n heading,\n passwordResetLocalAccount\n } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(passwordResetLocalAccount)}\n \n \n );\n};\n\nexport default PasswordResetView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { ISitePickerViewProps } from './site-picker';\n\nexport default (props: ISitePickerViewProps) => {\n return (\n \n {_renderSitePicker(props)}\n \n );\n};\n\nconst _renderDesktopView = (props: ISitePickerViewProps) => {\n const { SitePickerMenu, SitePickerMenuSpan } = props;\n return (\n \n \n {props.config.heading?.text}\n \n \n {props.siteOptionsState ? _renderSiteOptionsList(props) : null}\n \n );\n};\n\nconst _renderSiteOptionsList = (props: ISitePickerViewProps): React.ReactNode => {\n const { SitePickerMenuList,\n SitePickerMenuListItem,\n SitePickerMenuListItemArray,\n } = props;\n const options = SitePickerMenuListItemArray!.map((item, index) => {\n return (\n \n {item}\n \n );\n }\n );\n return (\n \n {options}\n \n );\n};\n\nconst _renderMobileView = (props: ISitePickerViewProps): React.ReactNode => {\n const { SitePickerMobileContainer, SitePickerMobileMenuList, SitePickerMobileMenuListItem } = props;\n return (\n \n \n {props.SitePickerMenuListItemArray?.map((item, index) => {\n return (\n \n {item}\n \n );\n })}\n \n \n );\n};\n\nconst _renderSitePicker = (props: ISitePickerViewProps): React.ReactNode => {\n const { isMobileView, SitePicker } = props;\n return (\n \n {isMobileView ? _renderMobileView(props) : _renderDesktopView(props)}\n \n );\n};","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { IAccountAddressTileViewProps } from './account-address-tile';\n\nconst AccountAddressTileView: React.FC = props => {\n const { AccountAddressTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountAddressTileView;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport {\r\n ISignUpEmailVerification, ISignUpItem, ISignUpLoading, ISignUpLocalAccount, ISignUpViewProps\r\n} from './smwe-sign-up';\r\n\r\nconst SignUpItem: React.FC = ({\r\n wrapper,\r\n label,\r\n errorMessage,\r\n input\r\n}) => {\r\n\r\n return (\r\n \r\n {label}\r\n {errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst SignUpEmailVerification: React.FC = ({\r\n email,\r\n buttonWrapper,\r\n buttons,\r\n successMessage,\r\n errorMessage\r\n}) => {\r\n return (\r\n <>\r\n \r\n {successMessage && successMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n \r\n {buttons && buttons.map((button: React.ReactNode) => {\r\n return (\r\n <>\r\n {button}\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n emailVerification,\r\n buttons,\r\n errorMessage,\r\n disclaimer,\r\n pwRequirements\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignUpItem) => {\r\n const isNewPassword = item.key === 'newPassword';\r\n if (item.key === 'email' && emailVerification.isRequired) {\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n } else if (isNewPassword || item.key === 'reenterPassword') {\r\n return (\r\n <>\r\n {isNewPassword && pwRequirements}\r\n \r\n \r\n \r\n );\r\n }\r\n return (\r\n <>\r\n \r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((error: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {error}\r\n \r\n );\r\n })}\r\n {buttons && buttons.map((button: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {button}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n \r\n );\r\n};\r\n\r\nconst SignUpLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignUpView: React.FC = props => {\r\n\r\n const {\r\n signUp,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n heading,\r\n signUpLocalAccount\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n {heading}\r\n {LocalAccount(signUpLocalAccount)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = (event: React.MouseEvent) => {\r\n const newPasswordState = document.getElementById('newPassword') as HTMLInputElement;\r\n const reenterPasswordState = document.getElementById('reenterPassword') as HTMLInputElement;\r\n const iconElements = document.getElementsByClassName('sign-up-password-icon');\r\n if (newPasswordState && reenterPasswordState && iconElements) {\r\n newPasswordState.type = newPasswordState.type === 'password' ? 'text' : 'password';\r\n reenterPasswordState.type = reenterPasswordState.type === 'password' ? 'text' : 'password';\r\n for(let i = 0; i < iconElements.length; i++) {\r\n iconElements[i].className = iconElements[i].className === 'sign-up-password-icon icon-show-password' ? 'sign-up-password-icon icon-hide-password' :'sign-up-password-icon icon-show-password';\r\n }\r\n }\r\n};\r\n\r\nexport default SignUpView;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nimport {\n ICartlinesViewProps,\n ICartResources,\n ICartViewProps,\n IOrderSummaryErrors\n} from '@msdyn365-commerce-modules/cart';\n\nimport { ICartLineItemViewProps } from '@msdyn365-commerce-modules/cart/dist/types/modules/cart/components/cart-line-items-promotion';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { Button, getPayloadObject, getTelemetryAttributes, INodeProps, ITelemetryContent, Node, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\n\nconst CartView: React.FC = (props: ICartViewProps) => (\n
\n {props.title}\n {props.promotionOptions && _renderPromotions(props.promotionOptions)}\n {props.mulitplePickUpEnabled ? _renderCartLinesGroup(props, props.resources) :\n \n {_renderCartlines(props.cartlines, props.resources, props.storeSelector, props.backToShoppingButton, props.waitingComponent, props.cartLoadingStatus,\n props.cartDataResult, props.telemetryContent, props.mulitplePickUpEnabled, props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode)}\n \n }\n {props.orderSummaryHeading &&\n < Node {...props.OrderSummaryWrapper}>\n {props.orderSummaryHeading}\n {_renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {_renderErrorBlock(props.OrderSummaryErrors)}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.backToShoppingButton}\n {props.createTemplateFromCartButton}\n \n }\n {props.storeSelector}\n
\n);\n\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\n return (\n \n \n {promotions.promotionMessage}\n {promotions.promotionSeeAllLink}\n {promotions.promotionDialog}\n \n\n \n );\n\n};\n\nconst _renderCartlines = (cartLines: ICartlinesViewProps[] | undefined, resources: ICartResources, storeSelector: React.ReactNode | undefined,\n backToShoppingButton: React.ReactNode, waitingComponent: React.ReactNode, cartLoadingStatus: string,cartDataResult: boolean,\n telemetryContent?: ITelemetryContent, mulitplePickUp?: boolean, emailDeliveryModeCode?: string): JSX.Element[] | JSX.Element => {\n\n const { emptyCartText } = resources;\n\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n if (cartLines) {\n return cartLines.map((cartLine, index) => {\n return (\n
\n {cartLine.cartline}\n {mulitplePickUp ? null :\n _renderBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {\n mulitplePickUp ? (\n \n {_renderGroupBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n )\n : cartLine.addToOrderTemplate ? (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n ) : (\n <>\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n )\n }\n
\n );\n });\n } else {\n return (cartDataResult ?\n (\n
\n

{emptyCartText}

\n {backToShoppingButton}\n
\n ) : <>{waitingComponent}\n );\n }\n};\n\nconst _renderBOPISBlock = (cartLine: ICartlinesViewProps, resources: ICartResources, storeSelector: React.ReactNode | undefined, telemetryContent?: ITelemetryContent, emailDeliveryModeCode?: string): JSX.Element | null => {\n // If it is electronic item cart line, then return null for BOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { shipInsteadDisplayText, shipToAddressDisplayText, pickItUpDisplayText, pickUpAtStoreWithLocationText, changeStoreDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n const toggleBopis = (event: React.MouseEvent) => { return cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(!isBopisSelected); };\n const changeStore = (event: React.MouseEvent) => { return cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(true); };\n const payLoad = getPayloadObject('click',telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n
\n {isBopisSelected ? {pickUpAtStoreWithLocationText} : {shipToAddressDisplayText}}\n
\n {\n isBopisSelected &&\n
\n {cartLine.pickUpInStore.orgUnitName}\n \n
\n }\n \n
\n );\n};\n\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\n if (!errorData || errorData.errors.length === 0) {\n return null;\n }\n return (\n \n {errorData.header}\n {errorData.errors}\n \n );\n};\n\nconst _renderOrderSummarylines = (orderSummaryLines: IOrderSummaryLines | undefined, OrderSummaryItems: INodeProps, props: ICartViewProps): JSX.Element | null => {\n if (!orderSummaryLines) {\n return null;\n }\n return (\n \n {props.promoCode}\n {orderSummaryLines.subtotal}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.orderTotal}\n \n );\n};\n\nconst _renderCartLinesGroup = (props: ICartViewProps, resources: ICartResources,): JSX.Element | undefined => {\n if (props.cartLinesGroup && props.cartLinesGroup.length > 0) {\n return (\n
\n { props.cartLinesGroup?.map(cartlines => {\n // tslint:disable-next-line:jsx-key\n return (
\n {_renderCartLinesGroupHeader(cartlines[0],props.storeSelector, resources, _countItems(cartlines),props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode)}\n {_renderCartlines(cartlines, props.resources, props.storeSelector, props.backToShoppingButton, props.waitingComponent, props.cartLoadingStatus, props.cartDataResult,\n props.telemetryContent, props.mulitplePickUpEnabled, props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode)}\n
);\n })\n }\n
\n );\n } else {\n return (props.cartDataResult ?\n (\n
\n
\n

{props.resources.emptyCartText}

\n {props.backToShoppingButton}\n
\n
\n ) : <>{props.waitingComponent}\n );\n }\n};\n\nconst _renderCartLinesGroupHeader = (cartLine: ICartlinesViewProps, storeSelector: React.ReactNode | undefined, resources: ICartResources,count: number,emailDeliveryModeCode?:string) => {\n const isBopisSelected = cartLine?.pickUpInStore?.isBopisSelected;\n const { pickUpText, shippingText, emailshippingText } = resources;\n let groupTitle:string;\n\n groupTitle = isBopisSelected ? pickUpText: shippingText;\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText: groupTitle;\n\n return (\n \n
\n {

}\n {

{groupTitle}

}\n {_renderCartLinesGroupTitle(cartLine, resources, count)}\n
\n
\n );\n};\n\nconst _renderGroupBOPISBlock = (cartLine: ICartlinesViewProps, resources: ICartResources, storeSelector: React.ReactNode | undefined, telemetryContent?: ITelemetryContent, emailDeliveryModeCode?: string): JSX.Element | null => {\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n const toggleBopis = (event: React.MouseEvent) => { return cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(!isBopisSelected); };\n const changeStore = (event: React.MouseEvent) => { return cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(true); };\n const payLoad = getPayloadObject('click',telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {isBopisSelected ? : null }\n \n \n );\n};\n\nconst _countItems = (cartLine: ICartlinesViewProps[]): number => {\n let countItem = 0;\n countItem = cartLine.reduce((count, item) => {\n return count + (item.data?.cartline.Quantity || 0);\n // tslint:disable-next-line:align\n }, 0);\n return countItem;\n};\n\nconst _renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources,count: number) => {\n const isBopisSelected = cartLine?.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const suffix = count > 1 ? itemsLabel : itemLabel;\n return (\n \n \n {isBopisSelected ?

{cartLine?.pickUpInStore?.deliveryOption}{', '}{cartLine?.pickUpInStore?.orgUnitName}

: null}\n {

({count} {suffix})

}\n
\n
\n );\n};\n\nexport default CartView;","import React from 'react';\n\nexport const SignUpText: React.FC<{text: string}> = (props: {text: string}) => {\n return

{props.text}

;\n};\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport classname from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getPayloadObject, getTelemetryAttributes, getTelemetryObject, IModuleProps, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport {SignUpText} from './components/loyalty-sign-up-small-components';\nimport { ILoyaltySignUpData } from './loyalty-sign-up.data';\nimport { ILoyaltySignUpProps } from './loyalty-sign-up.props.autogenerated';\n\nexport interface IAccountLoyaltyJoinState {\n clicked: boolean;\n}\nexport interface ILoyaltySignUpViewProps extends ILoyaltySignUpProps {\n LoyaltySignUp: IModuleProps;\n heading: React.ReactNode;\n memberHeading: React.ReactNode;\n signInLink: React.ReactElement;\n signUpText: React.ReactElement;\n signUpButton: React.ReactElement;\n detailsLink: React.ReactElement;\n termsLink: React.ReactElement;\n loading: boolean;\n}\n\n/**\n *\n * LoyaltySignUp component\n * @extends {React.Component>}\n */\n@observer\nclass LoyaltySignUp extends React.Component, IAccountLoyaltyJoinState> {\n private telemetryContent?: ITelemetryContent;\n private loyaltySignInAttributes: Msdyn365.IDictionary | undefined;\n private loyaltySignUpAttributes: Msdyn365.IDictionary | undefined;\n private loyaltyDetailsLinkAttributes: Msdyn365.IDictionary | undefined;\n private loyaltyTermsLinkAttributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: ILoyaltySignUpProps) {\n super(props);\n this.state = { clicked: false };\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n this.loyaltySignInAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.SignUp;\n this.loyaltySignUpAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyDetailLink;\n this.loyaltyDetailsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsLink;\n this.loyaltyTermsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n }\n\n public render(): JSX.Element | null {\n const {\n config: {className, heading, memberHeading},\n resources,\n context: {\n actionContext,\n request: {\n user: {\n signInUrl,\n isAuthenticated\n }\n }\n },\n data: { loyaltyCard }\n } = this.props;\n\n const termsUrl = Msdyn365.getUrlSync('loyaltyTerms', actionContext);\n let loyaltyJoinUrl = `${Msdyn365.getUrlSync('loyaltyJoin', actionContext)}?joiningLoyalty=true`;\n if (window) {\n loyaltyJoinUrl = `${window.location.origin}${loyaltyJoinUrl}`;\n }\n const signInurl = `${signInUrl}?ru=${loyaltyJoinUrl}`;\n const completeClass = classname('ms-loyalty-signup', className);\n\n const hasLoyaltyAccount = loyaltyCard.result && loyaltyCard.result.CardTenderTypeValue !== undefined;\n\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltySignUp: {\n moduleProps: this.props,\n className: completeClass\n },\n loading: loyaltyCard.status === 'LOADING',\n heading: !hasLoyaltyAccount && heading && heading.text && (\n \n ),\n memberHeading: hasLoyaltyAccount && memberHeading && memberHeading.text && (\n \n ),\n signInLink: !isAuthenticated && ,\n signUpText: !hasLoyaltyAccount && ,\n signUpButton: !hasLoyaltyAccount && isAuthenticated && ,\n detailsLink: hasLoyaltyAccount &&\n ,\n termsLink: !hasLoyaltyAccount && \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading!.text= event.target.value;\n public handleMemberHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.memberHeading!.text= event.target.value;\n\n private _issueLoyalty = () => {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(() => {\n window.location.assign(Msdyn365.getUrlSync('loyalty', this.props.context.actionContext) || '');\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n }\n}\n\nexport default LoyaltySignUp;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\n\nimport { IAadGenericViewProps } from './aad-generic';\n\nexport default (props: IAadGenericViewProps) => {\n const {\n aadGeneric,\n aadConainer,\n aadAPIConainer,\n heading\n } = props;\n\n return (\n \n \n {heading}\n {aadAPIConainer}\n \n \n );\n};\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\n\nimport { IAadGenericData } from './aad-generic.data';\nimport { IAadGenericProps } from './aad-generic.props.autogenerated';\n\nexport interface IAadGenericViewProps extends IAadGenericProps {\n aadGeneric: IModuleProps;\n aadConainer: INodeProps;\n aadAPIConainer: React.ReactNode;\n heading?: React.ReactNode;\n}\n\n/**\n *\n * AadGeneric component\n * @extends {React.PureComponent>}\n */\nclass AadGeneric extends React.PureComponent> {\n private moduleClassName: string = 'ms-aad-generic';\n\n public componentDidMount(): void {\n // @ts-ignore\n const { $i2e, $element } = window || {};\n\n if ($i2e && $element) {\n $i2e.insertServiceContent($element.getElementContent());\n $element.initialize();\n }\n }\n\n public shouldComponentUpdate(nextProps:IAadGenericViewProps): boolean {\n\n if(nextProps.config.heading !== this.props.config.heading) {\n return true;\n }\n return false;\n }\n\n public render(): JSX.Element | null {\n const { className, heading } = this.props.config;\n\n const viewProps = {\n ...this.props,\n aadGeneric: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n aadConainer: {\n className: `${this.moduleClassName}__container`\n },\n aadAPIConainer:
,\n heading: heading && \n };\n\n return this.props.renderView(viewProps);\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.heading) {\n this.props.config.heading.text = event.target.value;\n }\n }\n}\n\nexport default AadGeneric;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\ninterface IAccountAddressTileDescription {\n description: string;\n}\n\nconst IAccountAddressTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n\nexport default IAccountAddressTileDescription;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport * as React from 'react';\nimport { ILinksData } from '../account-address-tile.props.autogenerated';\n\nexport interface IAccountAddressTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n /** The telemetry content */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountAddressTileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n\n return (\n
\n { editableLinks && editableLinks.length ?\n \n : null\n }\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if(!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link,index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-address-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountAddressTileLinks;","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { IAccountAddressTileData } from './account-address-tile.data';\nimport { IAccountAddressTileProps } from './account-address-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-address-tile-description';\nimport LinksComponent from './components/account-address-tile-links';\n\nexport interface IAccountAddressTileViewProps extends IAccountAddressTileProps {\n AccountAddressTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountAddress component\n * @extends {React.PureComponent>}\n */\nclass AccountAddressTile extends React.PureComponent> {\n\n private telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountAddressTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountAddressTileDescriptionForSingleAddress, accountAddressTileDescriptionForMultipleAddresses } = resources;\n const { address } = data;\n const customerInformation = data.customerInformation.result;\n const addressCount = (address && address.result && address.result.length) || 0;\n const accountAddressTileDescription = addressCount === 1 ? accountAddressTileDescriptionForSingleAddress : accountAddressTileDescriptionForMultipleAddresses;\n const description = format(accountAddressTileDescription, addressCount);\n\n const viewProps = {\n ...this.props,\n className: className,\n AccountAddressTile: {\n moduleProps: this.props,\n className: classnames('ms-account-address-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && customerInformation?.IsAsyncCustomer !== true &&\n ,\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading.text = event.target.value;\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if(this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountAddressTile;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { IGroup, IGroupDelivery, IGroups, IHeader, IList, IOrderHistoryViewProps, IOrderInformation, ISalesOrder } from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderHistoryOrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n channelName,\n createdDate,\n count,\n amount,\n channelReferenceId\n}) => (\n \n {channelName}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const OrderHistoryGroupDelivery: React.FC = ({ deliveryProps, heading, count, processing, address, trackingInfo }) => (\n \n {heading}\n {count}\n {processing}\n {address}\n {trackingInfo}\n \n);\n\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n {salesLine.salesLine}\n ))}\n \n )}\n \n);\n\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\n \n {heading}\n {orderCountLabel}\n {extraActions}\n \n);\n\nexport const OrderHistorySalesOder: React.FC = ({ salesOrderProps, orderInfomation, groups, orderDetailsLink }) => (\n \n {orderInfomation && }\n {groups && }\n {orderDetailsLink}\n \n);\n\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\n {salesOrders && salesOrders.map((salesOrder, index) => )}\n);\n\nconst OrderHistoryView: React.FC = ({\n orderHistoryProps,\n header,\n alert,\n loading,\n emptyMessage,\n backToShoppingLink,\n list,\n moreButton\n}) => (\n \n {header && }\n {loading}\n {alert && (\n <>\n {alert}\n {backToShoppingLink}\n \n )}\n {emptyMessage && (\n <>\n {emptyMessage}\n {backToShoppingLink}\n \n )}\n {list && }\n {moreButton && moreButton}\n \n);\n\nexport default OrderHistoryView;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Heading, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { IHeadingData, ILinkData, ISmweFooterItemConfig, ISmweFooterItemProps } from './smwe-footer-item.props.autogenerated';\r\n\r\nexport interface IFooterViewProps extends ISmweFooterItemProps {\r\n heading: React.ReactNode;\r\n image: React.ReactNode;\r\n text: React.ReactNode;\r\n linkText: React.ReactNode;\r\n className?:string;\r\n FooterItem: IModuleProps;\r\n HeadingContainer: INodeProps;\r\n ItemContainer: INodeProps;\r\n Link: INodeProps;\r\n}\r\n\r\n/**\r\n *\r\n * FooterItem component\r\n * @extends {React.PureComponent>}\r\n */\r\nexport class FooterItem extends React.PureComponent> {\r\n constructor(props: ISmweFooterItemProps) {\r\n super(props);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {heading, image, link, text} = this.props.config;\r\n const footerItemClassName = classnames('ms-footer__item', this.props.config.className);\r\n\r\n const viewProps: IFooterViewProps = {\r\n ... this.props,\r\n heading: this._createHeading(heading!),\r\n image: this._createImageMarkup(image!),\r\n text:this._createText(text!),\r\n linkText: this._createLinkText(link!),\r\n // @ts-ignore\r\n FooterItem: {\r\n moduleProps: this.props,\r\n className: footerItemClassName\r\n },\r\n // @ts-ignore\r\n HeadingContainer: {\r\n className: 'ms-footer__heading'\r\n },\r\n // @ts-ignore\r\n ItemContainer: {\r\n className: 'ms-footer__link__container'\r\n },\r\n // @ts-ignore\r\n Link: link && link.linkUrl && link.linkUrl.destinationUrl && {\r\n tag: 'a',\r\n className: 'ms-footer__link',\r\n href: link.linkUrl.destinationUrl,\r\n title:link.linkText,\r\n target: link.openInNewTab ? '_blank' : undefined\r\n },\r\n className:footerItemClassName\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _createLinkText(link: ILinkData): React.ReactNode | null {\r\n if(!link || !link.linkText) {\r\n return null;\r\n }\r\n\r\n return ({link.linkText});\r\n }\r\n\r\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\r\n if(!heading || !heading.text || !heading.text.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _createText(text: string): React.ReactNode | null {\r\n if (!text) {\r\n return null;\r\n }\r\n return
{text}
;\r\n }\r\n\r\n private _createImageMarkup(item: IImageData, ariaHiddenAttr?: boolean): React.ReactNode | null {\r\n if(!item || !item.src || !item.src.length) {\r\n return null;\r\n }\r\n\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=24&h=24&m=6`, w: 0, h: 0 },\r\n lg: { q: `w=24&h=24&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n return ;\r\n }\r\n}\r\n\r\nexport default FooterItem;\r\n","import * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\nimport { createWineClubSignUpInput } from './DataActionExtension.g';\r\n\r\n/**\r\n * WineClub Input Action\r\n */\r\n\r\nexport class WineClubInput implements Msdyn365.IActionInput {\r\n public input: IDataServiceRequest;\r\n\r\n constructor(input: IDataServiceRequest) {\r\n this.input = input;\r\n }\r\n\r\n public shouldCacheOutput = () => { return false; };\r\n public getCacheKey = () => { return 'IWineClubInput'; };\r\n public getCacheObjectType = () => 'IWineClubInput';\r\n public dataCacheType = (): Msdyn365.CacheType => 'application';\r\n}\r\n\r\nexport interface IWineClubInputData {\r\n result: string;\r\n Message: string;\r\n}\r\n\r\nexport interface IWineClubInfo {\r\n wineClubId: string;\r\n customerId: string;\r\n isGifted: boolean;\r\n deliveryPreference: string;\r\n addressFirstName: string;\r\n addressLastName: string;\r\n addressEmail: string;\r\n addressPhone: string;\r\n addressLine1: string;\r\n addressLine2: string;\r\n city: string;\r\n state: string;\r\n zipcode: string;\r\n country: string;\r\n}\r\n\r\nexport const createWineClubInput = (inputData: IWineClubInfo): WineClubInput => {\r\n return new WineClubInput(\r\n createWineClubSignUpInput({\r\n WineClubId: inputData.wineClubId,\r\n AddressEmail: inputData.addressEmail,\r\n AddressFirstName: inputData.addressFirstName,\r\n AddressLastName: inputData.addressLastName,\r\n AddressLine1: inputData.addressLine1,\r\n AddressLine2: inputData.addressLine2,\r\n AddressPhone: inputData.addressPhone,\r\n City: inputData.city,\r\n Country: inputData.country,\r\n CustomerId: inputData.customerId,\r\n DeliveryPreference: inputData.deliveryPreference,\r\n IsGifted: inputData.isGifted,\r\n State: inputData.state,\r\n Zipcode: inputData.zipcode\r\n })\r\n );\r\n};\r\n\r\nexport async function wineClubAction(input: WineClubInput, ctx: Msdyn365.IActionContext): Promise {\r\n return input.input.execute(ctx);\r\n}\r\n\r\nexport const IWineClubAction = Msdyn365.createObservableDataAction({\r\n action: >wineClubAction,\r\n input: createWineClubInput\r\n});","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { IWineClubStepComponentProps } from './wine-club.types';\r\n\r\n//==============================================================================\r\n/**\r\n * WineClubConfirmation component\r\n * @extends {React.Component}\r\n */\r\n//==============================================================================\r\n@observer\r\nclass WineClubConfirmation extends React.Component {\r\n\r\n //==========================================================================\r\n // Public Methods\r\n //==========================================================================\r\n\r\n public render(): JSX.Element {\r\n const { resources } = this.props;\r\n const shippingAddress = this.props.fields.shippingAddress;\r\n\r\n return (\r\n
\r\n
\r\n

{resources && resources.wineClub_confirmationHeading}

\r\n

{resources && resources.wineClub_confirmationText}

\r\n
\r\n
\r\n
\r\n
{resources && resources.wineClub_confirmationShippingAddressHeading}
\r\n

{shippingAddress.firstName} {shippingAddress.lastName}

\r\n

{shippingAddress.address1}

\r\n {shippingAddress.address2 ? (

{shippingAddress.address2}

) : null}\r\n

{shippingAddress.city}, {shippingAddress.state} {shippingAddress.zip}

\r\n

{shippingAddress.country}

\r\n

{shippingAddress.phone}

\r\n

{shippingAddress.email}

\r\n
\r\n
\r\n
\r\n {resources && resources.wineClub_buttonBack &&\r\n this.props.renderButton(\r\n resources.wineClub_buttonBack,\r\n 'shipping',\r\n this.props.toggleStep,\r\n 'wine-club-button-back'\r\n )\r\n }\r\n {resources && resources.wineClub_buttonSignup &&\r\n this.props.renderSubmit(\r\n resources.wineClub_buttonSignup,\r\n 'wine-club-button-signup'\r\n )\r\n }\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default WineClubConfirmation;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { IWineClubInputProps } from './wine-club.types';\r\n\r\n//==============================================================================\r\n/**\r\n * WineClubInputRadioCheckbox component\r\n * @extends {React.Component}\r\n */\r\n//==============================================================================\r\n@observer\r\nclass WineClubInputRadioCheckbox extends React.Component {\r\n\r\n //==========================================================================\r\n // Public Methods\r\n //==========================================================================\r\n\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n \r\n
\r\n\r\n );\r\n }\r\n}\r\n\r\nexport default WineClubInputRadioCheckbox;","export const countries: string[] = [\r\n 'Afghanistan',\r\n 'Aland Islands',\r\n 'Albania',\r\n 'Algeria',\r\n 'American Samoa',\r\n 'Andorra',\r\n 'Angola',\r\n 'Anguilla',\r\n 'Antarctica',\r\n 'Antigua and Barbuda',\r\n 'Argentina',\r\n 'Armenia',\r\n 'Aruba',\r\n 'Ascension Island',\r\n 'Australia',\r\n 'Austria',\r\n 'Azerbaijan',\r\n 'Bahamas',\r\n 'Bahrain',\r\n 'Bangladesh, Peoples Rep. of',\r\n 'Barbados',\r\n 'Belarus',\r\n 'Belgium',\r\n 'Belize',\r\n 'Benin, Peoples Rep. of',\r\n 'Bermuda',\r\n 'Bhutan',\r\n 'Bolivia',\r\n 'Bonaire',\r\n 'Bosnia-Herzegovina',\r\n 'Botswana',\r\n 'Brazil',\r\n 'British Indian Ocean Territory',\r\n 'Brunei',\r\n 'Bulgaria',\r\n 'Burkina Faso',\r\n 'Burundi',\r\n 'Cambodia',\r\n 'Cameroon, United Rep. of',\r\n 'Canada',\r\n 'Cape Verde Islands',\r\n 'Cayman Islands',\r\n 'Central African Republic',\r\n 'Chad',\r\n 'Chile',\r\n 'China, Peoples Rep. of',\r\n 'Christmas Island',\r\n 'Cocos Islands',\r\n 'Colombia',\r\n 'Comoros',\r\n 'Congo',\r\n 'Congo, The Democratic Republic of the',\r\n 'Cook Islands',\r\n 'Costa Rica',\r\n 'Croatia',\r\n 'Cuba',\r\n 'Curacao',\r\n 'Cyprus',\r\n 'Czech Republic',\r\n 'Denmark',\r\n 'Diego Garcia',\r\n 'Djibouti',\r\n 'Dominica',\r\n 'Dominican Republic',\r\n 'Ecuador',\r\n 'Egypt, Arab Rep. of',\r\n 'El Salvador',\r\n 'Equatorial Guinea',\r\n 'Eritrea',\r\n 'Estonia',\r\n 'Ethiopia',\r\n 'Falkland Islands',\r\n 'Faeroe Islands',\r\n 'Fiji Islands',\r\n 'Finland',\r\n 'France',\r\n 'French Guiana',\r\n 'French Polynesia (Moorea & Tahiti',\r\n 'French Southern Territories',\r\n 'Gabon Republic',\r\n 'Gambia',\r\n 'Georgia',\r\n 'Germany',\r\n 'Ghana',\r\n 'Gibraltar',\r\n 'Greece',\r\n 'Greenland (Kalaallit Nunaat)',\r\n 'Grenada',\r\n 'Guadeloupe',\r\n 'Guam',\r\n 'Guantanamo Bay (U.S. Naval Base)',\r\n 'Guatemala',\r\n 'Guernsey',\r\n 'Guinea Bissau',\r\n 'Guinea, Peoples Rev. Rep.',\r\n 'Guyana',\r\n 'Haiti',\r\n 'Heard Island and McDonald Island',\r\n 'Honduras',\r\n 'Hong Kong',\r\n 'Hungary',\r\n 'Iceland',\r\n 'India',\r\n 'Indonesia',\r\n 'Iran',\r\n 'Iraq',\r\n 'Ireland, Rep. of',\r\n 'Isle of Man',\r\n 'Israel',\r\n 'Italy',\r\n 'Ivory Coast Rep. of',\r\n 'Jamaica',\r\n 'Japan',\r\n 'Jersey',\r\n 'Jordan',\r\n 'Kazakhstan',\r\n 'Kenya, Rep of.',\r\n 'Kiribati',\r\n 'Kuwait',\r\n 'Kyrgyzstan',\r\n 'Laos',\r\n 'Latvia',\r\n 'Lebanon',\r\n 'Lesotho',\r\n 'Liberia',\r\n 'Libya',\r\n 'Liechtenstein',\r\n 'Lithuania',\r\n 'Luxembourg',\r\n 'Macao',\r\n 'Macedonia',\r\n 'Madagascar',\r\n 'Malawi',\r\n 'Malaysia',\r\n 'Maldives, Rep. of',\r\n 'Mali',\r\n 'Malta',\r\n 'Marshall Islands',\r\n 'Martinique',\r\n 'Mauritania',\r\n 'Mauritius',\r\n 'Mayotte',\r\n 'Mexico',\r\n 'Micronesia, Fed. States of',\r\n 'Moldova',\r\n 'Monaco',\r\n 'Mongolia',\r\n 'Montenegro',\r\n 'Montserrat',\r\n 'Morocco, Kingdom of',\r\n 'Mozambique',\r\n 'Myanmar',\r\n 'Namibia',\r\n 'Nepal',\r\n 'Netherlands',\r\n 'Netherlands Antilles',\r\n 'New Caledonia',\r\n 'New Zealand',\r\n 'Nicaragua',\r\n 'Niger Republic',\r\n 'Nigeria, Fed. Rep. of',\r\n 'Niue',\r\n 'Norfolk Island',\r\n 'North Mariana Islands',\r\n 'North Korea',\r\n 'Norway',\r\n 'Oman',\r\n 'Pakistan',\r\n 'Palau',\r\n 'Palestinian Territory',\r\n 'Panama, Rep. of',\r\n 'Papua New Guinea',\r\n 'Paraguay',\r\n 'Peru',\r\n 'Philippines',\r\n 'Pitcairn',\r\n 'Poland',\r\n 'Portugal',\r\n 'Puerto Rico',\r\n 'Qatar',\r\n 'Reunion',\r\n 'Romania',\r\n 'Russia',\r\n 'Rwanda',\r\n 'Samoa',\r\n 'Saipan',\r\n 'San Marino',\r\n 'Sao Tome and Principe',\r\n 'Saudi Arabia',\r\n 'Senegal Republic',\r\n 'Serbia',\r\n 'Seychelles',\r\n 'Sierra Leone',\r\n 'Singapore, Rep. of',\r\n 'Slovakia',\r\n 'Slovenia',\r\n 'Solomon Islands',\r\n 'Somolia',\r\n 'South Africa',\r\n 'South Georgia',\r\n 'South Korea',\r\n 'Spain',\r\n 'Sri Lanka, Dem. Soc. Rep. of',\r\n 'St. Barthelemy',\r\n 'St. Helena',\r\n 'St. Kits',\r\n 'St. Pierre and Miquelon',\r\n 'St. Martin',\r\n 'St Vincent and the Grenadines',\r\n 'Sudan',\r\n 'Suriname',\r\n 'Svalbard and Jan Mayen',\r\n 'Swaziland',\r\n 'Sweden',\r\n 'Switzerland',\r\n 'Syria',\r\n 'Tadzhikistan',\r\n 'Taiwan',\r\n 'Tanzania',\r\n 'Thailand',\r\n 'Timor-Leste',\r\n 'Togo, Rep. of',\r\n 'Tokelau',\r\n 'Tonga Islands',\r\n 'Trinidad and Tobago',\r\n 'Tunisia',\r\n 'Turkey',\r\n 'Turkmenistan',\r\n 'Turks and Caicos Islands',\r\n 'Tuvalu',\r\n 'Uganda',\r\n 'Ukraine',\r\n 'United Arab Emirates',\r\n 'United Kingdom',\r\n 'United States',\r\n 'United States Minor Outlying Islands',\r\n 'Uruguay',\r\n 'Uzbekistan',\r\n 'Vanuatu',\r\n 'Vatican City',\r\n 'Venezuela',\r\n 'Vietnam',\r\n 'Virgin Islands, British',\r\n 'Virgin Islands, US',\r\n 'Wallis and Futuna',\r\n 'Western Sahara',\r\n 'Yemen Arab Republic',\r\n 'Zaire, Rep. of',\r\n 'Zambia',\r\n 'Zimbabwe'\r\n];\r\n\r\n// tslint:disable-next-line: no-empty-interface\r\nexport interface IWineClubCountriesData {}","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { countries } from './wine-club-countries.data';\r\nimport { IWineClubResources } from './wine-club.props.autogenerated';\r\nimport { inputType } from './wine-club.types';\r\n\r\n// tslint:disable-next-line:max-func-body-length\r\nexport const getInputs = (resources: IWineClubResources): inputType[] => {\r\n return [\r\n {\r\n id: 'membership',\r\n label: resources.wineClub_membershipTypeLabel,\r\n required: true,\r\n type: 'radio',\r\n options: [\r\n resources.wineClub_membershipTypeOptionIsNotGifted,\r\n resources.wineClub_membershipTypeOptionIsGifted\r\n ],\r\n validation: {\r\n validate: (value: string): boolean => {\r\n return !!value;\r\n },\r\n message: resources.wineClub_membershipTypeValidationMessage\r\n }\r\n },\r\n {\r\n id: 'firstName',\r\n group: 'shippingAddress',\r\n label: 'First Name',\r\n required: true,\r\n type: 'text',\r\n },\r\n {\r\n id: 'lastName',\r\n group: 'shippingAddress',\r\n label: 'Last Name',\r\n required: true,\r\n type: 'text',\r\n },\r\n {\r\n id: 'email',\r\n group: 'shippingAddress',\r\n label: 'Email Address',\r\n required: true,\r\n type: 'text',\r\n validation: {\r\n validate: (value: string): boolean => {\r\n const email = /^[-a-z0-9!#$%&'*+/=?^_`{|}~]+(?:\\.[-a-z0-9!#$%&'*+/=?^_`{|}~]+)*@(?:[a-z0-9]+(?:-+[a-z0-9]+)*\\.)+(?:xn--[a-z0-9]+|[a-z]{2,16})$/i;\r\n return !!(value && value.match(email));\r\n },\r\n message: 'Enter a valid email address.'\r\n }\r\n },\r\n {\r\n id: 'phone',\r\n group: 'shippingAddress',\r\n label: 'Phone Number',\r\n required: true,\r\n type: 'text',\r\n validation: {\r\n validate: (value: string): boolean => {\r\n const phone = /^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;\r\n return !!(value.match(phone));\r\n },\r\n message: 'Enter a valid phone number.'\r\n }\r\n },\r\n {\r\n id: 'address1',\r\n group: 'shippingAddress',\r\n label: 'Address 1',\r\n required: true,\r\n type: 'text',\r\n },\r\n {\r\n id: 'address2',\r\n group: 'shippingAddress',\r\n label: 'Address 2',\r\n required: false,\r\n type: 'text',\r\n },\r\n {\r\n id: 'city',\r\n group: 'shippingAddress',\r\n label: 'City',\r\n required: true,\r\n type: 'text',\r\n },\r\n {\r\n id: 'state',\r\n group: 'shippingAddress',\r\n label: 'State',\r\n required: true,\r\n type: 'text',\r\n },\r\n {\r\n id: 'zip',\r\n group: 'shippingAddress',\r\n label: 'Zip',\r\n required: true,\r\n type: 'text',\r\n },\r\n {\r\n id: 'country',\r\n group: 'shippingAddress',\r\n label: 'Country',\r\n required: true,\r\n type: 'select',\r\n options: countries\r\n }\r\n ];\r\n};\r\n\r\n// tslint:disable-next-line: no-empty-interface\r\nexport interface IWineClubInputData {}","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport WineClubInputRadioCheckbox from './wine-club-input-radio-checkbox';\r\nimport { getInputs } from './wine-club-input.data';\r\nimport { IWineClubResources } from './wine-club.props.autogenerated';\r\nimport { IWineClubInputProps, IWineClubStepComponentProps } from './wine-club.types';\r\n\r\n//==============================================================================\r\n/**\r\n * WineClubMembership component\r\n * @extends {React.Component}\r\n */\r\n//==============================================================================\r\n@observer\r\nclass WineClubMembership extends React.Component {\r\n\r\n //==========================================================================\r\n // Variables\r\n //==========================================================================\r\n\r\n private resources: IWineClubResources;\r\n\r\n //==========================================================================\r\n // Public Methods\r\n //==========================================================================\r\n\r\n public constructor(props: IWineClubStepComponentProps) {\r\n super(props);\r\n this.resources = this.props.resources || [];\r\n this._validateFields = this._validateFields.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { resources } = this.props;\r\n\r\n return (\r\n
\r\n
\r\n

{resources && resources.wineClub_membershipHeading}

\r\n

{resources && resources.wineClub_membershipText}

\r\n
\r\n
\r\n {this._renderMembershipInputs()}\r\n
\r\n
\r\n {this.props.error &&\r\n this.props.renderValidation(\r\n resources && resources.wineClub_membershipErrorMessage,\r\n 'wine-club-error'\r\n )\r\n }\r\n {resources && resources.wineClub_buttonNext &&\r\n this.props.renderButton(\r\n resources.wineClub_buttonNext,\r\n 'shipping',\r\n this.props.toggleStep,\r\n 'wine-club-button-next btn-primary',\r\n this._validateFields,\r\n this.props.handleNext\r\n )\r\n }\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n //==========================================================================\r\n // Private Methods\r\n //==========================================================================\r\n\r\n // Renders form radio input from object data for the membership step.\r\n private _renderMembershipInputs(): JSX.Element[] {\r\n const membershipInput: IWineClubInputProps = getInputs(this.resources).find(input => input.id === 'membership') as IWineClubInputProps;\r\n const membershipOptions: string[] = membershipInput.options as string[];\r\n return membershipOptions.map((option, index) => {\r\n const isChecked = (option === this.props.fields.membership);\r\n return (\r\n {\r\n this.props.handleChange(event);\r\n this.props.resetAddressSelect();\r\n }}\r\n />\r\n );\r\n });\r\n }\r\n\r\n // Validates membership radio input.\r\n private _validateFields(): boolean {\r\n return !!this.props.fields.membership;\r\n }\r\n}\r\n\r\nexport default WineClubMembership;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { IWineClubInputProps } from './wine-club.types';\r\n\r\n//==============================================================================\r\n/**\r\n * WineClubInputDropdown component\r\n * @extends {React.Component}\r\n */\r\n//==============================================================================\r\n@observer\r\nclass WineClubInputDropdown extends React.Component {\r\n\r\n //==========================================================================\r\n // Public Methods\r\n //==========================================================================\r\n\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n //==========================================================================\r\n // Private Methods\r\n //==========================================================================\r\n\r\n // Render dropdown options from array.\r\n private _renderOptions(): JSX.Element[] {\r\n const options: string[] | undefined = this.props.options ? this.props.options : [];\r\n return options.map((option, index) => {\r\n const isSelected = option === this.props.value;\r\n return (\r\n \r\n {option}\r\n \r\n );\r\n });\r\n }\r\n}\r\n\r\nexport default WineClubInputDropdown;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { IWineClubInputProps } from './wine-club.types';\r\n\r\n//==============================================================================\r\n/**\r\n * WineClubInputText component\r\n * @extends {React.Component}\r\n */\r\n//==============================================================================\r\n@observer\r\nclass WineClubInputText extends React.Component {\r\n\r\n //==========================================================================\r\n // Variables\r\n //==========================================================================\r\n\r\n @observable private error: boolean = false;\r\n\r\n //==========================================================================\r\n // Public Methods\r\n //==========================================================================\r\n\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n \r\n {this.props.validation && this.error && this.props.renderValidation!(this.props.validation.message, 'wine-club-error')}\r\n
\r\n );\r\n }\r\n\r\n //==========================================================================\r\n // Private Methods\r\n //==========================================================================\r\n\r\n // Validates field with corresponding validation function.\r\n private _blurInput(event: React.ChangeEvent | React.ChangeEvent, validateInput: Function): void {\r\n validateInput(event.target.value) ? this.error = false : this.error = true;\r\n }\r\n}\r\n\r\nexport default WineClubInputText;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { countries } from './wine-club-countries.data';\r\nimport WineClubInputDropdown from './wine-club-input-dropdown';\r\nimport WineClubInputText from './wine-club-input-text';\r\nimport { getInputs } from './wine-club-input.data';\r\nimport { IWineClubResources } from './wine-club.props.autogenerated';\r\nimport { IWineClubInputProps, IWineClubStepComponentProps } from './wine-club.types';\r\n\r\n//==============================================================================\r\n/**\r\n * WineClubShipping component\r\n * @extends {React.Component}\r\n */\r\n//==============================================================================\r\n@observer\r\nclass WineClubShipping extends React.Component {\r\n\r\n //==========================================================================\r\n // Variables\r\n //==========================================================================\r\n\r\n private resources: IWineClubResources;\r\n private isGifted?: boolean;\r\n\r\n //==========================================================================\r\n // Public Methods\r\n //==========================================================================\r\n\r\n public constructor(props: IWineClubStepComponentProps) {\r\n super(props);\r\n this.resources = this.props.resources || [];\r\n this.isGifted = this.props.fields && this.props.fields.membership.includes('gift');\r\n this._validateFields = this._validateFields.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { resources } = this.props;\r\n\r\n return (\r\n
\r\n
\r\n

{resources && resources.wineClub_shippingHeading}

\r\n

\r\n {this.isGifted ? resources && resources.wineClub_shippingTextIsGifted : resources && resources.wineClub_shippingText}\r\n

\r\n
\r\n\r\n {/* Render address dropdown if membership is not a gift */}\r\n {!this.isGifted && this._renderAddressDropdown()}\r\n\r\n {/* Render address form if membership is a gift or if user wants to add an address not specified */}\r\n {(this.isGifted || (this.props.isAddressSelected && !this.props.selectedAddress)) && this._renderShippingForm()}\r\n\r\n {/* Render validation message if there's an error */}\r\n {this.props.error &&\r\n this.props.renderValidation(\r\n resources && resources.wineClub_shippingErrorMessage,\r\n 'wine-club-error'\r\n )\r\n }\r\n\r\n {/* Render back and next buttons */}\r\n
\r\n {resources && resources.wineClub_buttonBack &&\r\n this.props.renderButton(\r\n resources.wineClub_buttonBack,\r\n 'membership',\r\n this.props.toggleStep,\r\n 'wine-club-button-back'\r\n )\r\n }\r\n {resources && resources.wineClub_buttonNext &&\r\n this.props.renderButton(\r\n resources.wineClub_buttonNext,\r\n 'confirmation',\r\n this.props.toggleStep,\r\n 'wine-club-button-next',\r\n this._validateFields,\r\n this.props.handleNext\r\n )\r\n }\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n //==========================================================================\r\n // Private Methods\r\n //==========================================================================\r\n\r\n // Render dropdown to select current addresses.\r\n private _renderAddressDropdown(): JSX.Element {\r\n return (\r\n
\r\n {this._renderAddresses()}\r\n {this.props.selectedAddress && this._renderSelectedAddress()}\r\n
\r\n );\r\n }\r\n\r\n // Renders select dropdown from user's current addresses.\r\n private _renderAddresses(): JSX.Element {\r\n const options: string[] = this.props.customerAddresses.map((address, index) => address.FullAddress || `Address ${index}`);\r\n const showForm: string = this.resources.wineClub_shippingSelectEnter;\r\n options.push(showForm);\r\n return (\r\n \r\n );\r\n }\r\n\r\n // Renders user's selected address from dropdown.\r\n private _renderSelectedAddress(): JSX.Element {\r\n return (\r\n
\r\n

{this.props.selectedAddress!.Name}

\r\n

{this.props.selectedAddress!.Street}

\r\n

{this.props.selectedAddress!.City}, {this.props.selectedAddress!.State} {this.props.selectedAddress!.ZipCode}

\r\n

{this.props.selectedAddress!.ThreeLetterISORegionName}

\r\n

{this.props.selectedAddress!.Phone}

\r\n
\r\n );\r\n }\r\n\r\n // Render shipping address form.\r\n private _renderShippingForm(): JSX.Element {\r\n return (\r\n
\r\n {this._renderShippingInputs()}\r\n {this._renderShippingCountry()}\r\n
\r\n );\r\n }\r\n\r\n // Renders form text inputs from object data for the shipping step.\r\n private _renderShippingInputs(): JSX.Element[] {\r\n let shippingInputs = getInputs(this.resources).filter(input => input.group === 'shippingAddress' && input.type === 'text' && input.id !== 'email');\r\n const shippingInputsIsGifted = getInputs(this.resources).filter(input => input.group === 'shippingAddress' && input.type === 'text');\r\n this.isGifted && (shippingInputs = shippingInputsIsGifted);\r\n\r\n return shippingInputs.map((input, index) => {\r\n return (\r\n \r\n );\r\n });\r\n }\r\n\r\n // Sets value of input fields with form object variable for data binding.\r\n private _getValue(input: IWineClubInputProps): string {\r\n return input.group ? this.props.fields[input.group][input.id] : this.props.fields[input.id];\r\n }\r\n\r\n // Renders form dropdown input from object data for shipping country.\r\n private _renderShippingCountry(): JSX.Element {\r\n const country = getInputs(this.resources).find(input => input.id === 'country');\r\n return (\r\n \r\n );\r\n }\r\n\r\n // Validates all shipping fields.\r\n private _validateFields(): boolean {\r\n const shippingInputs = getInputs(this.resources).filter(input => input.group === 'shippingAddress');\r\n\r\n // Find text fields that need validation, then find inputs that fail the corresponding validation.\r\n const validationInputs = shippingInputs.filter(input => input.type === 'text' && input.validation);\r\n const invalidInput = validationInputs.find(input => !input.validation!.validate(this.props.fields.shippingAddress[input.id]));\r\n\r\n // Find required text fields that are empty.\r\n const requiredInputs = shippingInputs.filter(input => input.required === true);\r\n const emptyInput = requiredInputs.find(input => !this.props.fields.shippingAddress[input.id] || this.props.fields.shippingAddress[input.id] === 'Select');\r\n\r\n // If there is either an invalid or empty input, return false.\r\n return !(invalidInput || emptyInput);\r\n }\r\n}\r\n\r\nexport default WineClubShipping;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Heading } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address } from '@msdyn365-commerce/retail-proxy';\r\nimport classname from 'classnames';\r\nimport { action, observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { createWineClubInput, wineClubAction } from '../../dataActions/wine-club-signup';\r\nimport WineClubConfirmation from './wine-club-confirmation';\r\nimport WineClubMembership from './wine-club-membership';\r\nimport WineClubShipping from './wine-club-shipping';\r\nimport { IWineClubData } from './wine-club.data';\r\nimport { IWineClubProps } from './wine-club.props.autogenerated';\r\nimport { addressMapType, componentsType, fieldsType, headingsType, IWineClubStepComponentProps} from './wine-club.types';\r\n\r\n//==============================================================================\r\n/**\r\n * WineClub component\r\n * @extends {React.Component>}\r\n */\r\n//==============================================================================\r\n@observer\r\nclass WineClub extends React.Component> {\r\n\r\n //==========================================================================\r\n // Variables\r\n //==========================================================================\r\n\r\n private fieldsDefault: fieldsType = {\r\n membership: '',\r\n shippingAddress: {\r\n firstName: '',\r\n lastName: '',\r\n phone: '',\r\n email: '',\r\n address1: '',\r\n address2: '',\r\n city: '',\r\n state: '',\r\n zip: '',\r\n country: 'Select'\r\n }\r\n };\r\n\r\n @observable private fields: fieldsType = this.fieldsDefault;\r\n\r\n private addressMap: addressMapType = [\r\n {\r\n moduleData: 'phone',\r\n serverData: 'Phone'\r\n },\r\n {\r\n moduleData: 'address1',\r\n serverData: 'Street'\r\n },\r\n {\r\n moduleData: 'city',\r\n serverData: 'City'\r\n },\r\n {\r\n moduleData: 'state',\r\n serverData: 'State'\r\n },\r\n {\r\n moduleData: 'zip',\r\n serverData: 'ZipCode'\r\n },\r\n {\r\n moduleData: 'country',\r\n serverData: 'ThreeLetterISORegionName'\r\n },\r\n ];\r\n\r\n @observable private submitSuccess: boolean = false;\r\n @observable private submitFailure: boolean = false;\r\n @observable private failureMessage: string | undefined;\r\n @observable private error: boolean = false;\r\n\r\n @observable private customerAddresses: Address[];\r\n @observable private isAddressSelected: boolean = false;\r\n @observable private selectedAddress: Address | undefined;\r\n\r\n @observable private step: string = 'membership';\r\n\r\n private components: componentsType = {\r\n membership: WineClubMembership,\r\n shipping: WineClubShipping,\r\n confirmation: WineClubConfirmation\r\n };\r\n\r\n private customerEmail?: string;\r\n\r\n //==========================================================================\r\n // Public Methods\r\n //==========================================================================\r\n\r\n public constructor(props: IWineClubProps) {\r\n super(props);\r\n const { context, data } = this.props;\r\n this.customerEmail = context && context.request && context.request.user && context.request.user.emailAddress;\r\n this.customerAddresses = (data.address && data.address.result) || [];\r\n\r\n this._renderValidation = this._renderValidation.bind(this);\r\n this._renderButton = this._renderButton.bind(this);\r\n this._renderSubmit = this._renderSubmit.bind(this);\r\n this._toggleStep = this._toggleStep.bind(this);\r\n this._handleChange = this._handleChange.bind(this);\r\n this._handleAddressChange = this._handleAddressChange.bind(this);\r\n this._resetAddressSelect = this._resetAddressSelect.bind(this);\r\n this._handleNext = this._handleNext.bind(this);\r\n this._handleSubmit = this._handleSubmit.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { config, context, resources } = this.props;\r\n const user = context && context.request && context.request.user;\r\n const StepComponent: React.ComponentType = this._renderStep(this.step);\r\n\r\n return (\r\n
\r\n {config && config.heading && this._renderHeading(config.heading, 'wine-club-heading')}\r\n { // If form has already been successfully submitted, do not render form.\r\n !this.submitSuccess ?\r\n // If user is logged in, render form. If not, redirect to Sign In page.\r\n (user.isAuthenticated ? (\r\n
\r\n \r\n \r\n ) : window.location.assign(user.signInUrl as string))\r\n : null\r\n }\r\n {this.submitSuccess && resources && resources.wineClub_formSuccess && this._renderText(resources.wineClub_formSuccess, 'wine-club-form-success')}\r\n {this.submitFailure && this.failureMessage && this._renderText(this.failureMessage, 'wine-club-form-failure')}\r\n
\r\n );\r\n }\r\n\r\n //==========================================================================\r\n // Private Methods\r\n //==========================================================================\r\n\r\n // Renders built-in Heading component.\r\n private _renderHeading(heading: headingsType, className?: string): JSX.Element {\r\n return (\r\n \r\n );\r\n }\r\n\r\n // Renders text component.\r\n private _renderText(text: string, className?: string): JSX.Element {\r\n return (\r\n
\r\n {text}\r\n
\r\n );\r\n }\r\n\r\n // Renders validation error messages.\r\n private _renderValidation(text: string, className?: string): JSX.Element {\r\n return (\r\n
\r\n {text}\r\n
\r\n );\r\n }\r\n\r\n // Renders 'Back' and 'Next' buttons that toggles between steps.\r\n private _renderButton(\r\n text: string,\r\n step: string,\r\n toggle: Function,\r\n className?: string,\r\n validate?: Function,\r\n handleNext?: Function\r\n ): JSX.Element {\r\n return (\r\n handleNext && handleNext(validate)}\r\n >\r\n {\r\n return validate ? validate() && toggle(step) : toggle(step);\r\n }}\r\n >\r\n {text}\r\n \r\n
\r\n );\r\n }\r\n\r\n // Renders 'Submit' button that sends form data to backend.\r\n private _renderSubmit(text: string, className?: string): JSX.Element {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n // Clears error messages when toggling between steps.\r\n private _toggleStep(step: string): void {\r\n this.error = false;\r\n this.submitSuccess = false;\r\n this.submitFailure = false;\r\n this.step = step;\r\n }\r\n\r\n // Renders active step.\r\n private _renderStep(step: string): React.ComponentType {\r\n return this.components[step];\r\n }\r\n\r\n // Updates form object variable with updated values on input change.\r\n @action\r\n private _handleChange(event: React.ChangeEvent | React.ChangeEvent): void {\r\n event.target.getAttribute('data-group')\r\n ? this.fields[event.target.getAttribute('data-group') as string][event.target.id] = event.target.value\r\n : this.fields[event.target.id] = event.target.value;\r\n }\r\n\r\n // Changes form shipping address object variable with selected address values or clears if undefined.\r\n @action\r\n private _handleAddressChange(event: React.ChangeEvent | React.ChangeEvent): void {\r\n if (!this.isAddressSelected) {this.isAddressSelected = true;}\r\n const selectedAddress: Address | undefined = this.customerAddresses.find(address => address.FullAddress === event.target.value);\r\n if (selectedAddress) {\r\n this.selectedAddress = selectedAddress;\r\n this._handleAddressUpdate(this.selectedAddress);\r\n } else {\r\n this.selectedAddress = undefined;\r\n this._handleAddressClear();\r\n this._handleAssignEmail();\r\n }\r\n }\r\n\r\n // Updates form shipping address object variable with selected address values.\r\n @action\r\n private _handleAddressUpdate(address: Address): void {\r\n this.addressMap.forEach(addressMapContent => {\r\n address[addressMapContent.serverData]\r\n ? this.fields.shippingAddress[addressMapContent.moduleData] = address[addressMapContent.serverData]\r\n : '';\r\n });\r\n\r\n // To be fixed in the future. For now, we need to split the full name to be accepted by the server.\r\n const fullName = address.Name;\r\n const fullNameArray = fullName!.split(' ');\r\n const firstName = fullNameArray[0];\r\n const lastName = fullNameArray.slice(1).join(' ');\r\n\r\n this.fields.shippingAddress.firstName = firstName;\r\n this.fields.shippingAddress.lastName = lastName;\r\n this._handleAssignEmail();\r\n }\r\n\r\n // Clears form shipping address object variable.\r\n @action\r\n private _handleAddressClear(): void {\r\n this.fields.shippingAddress = this.fieldsDefault.shippingAddress;\r\n }\r\n\r\n // Automatically assigns form shipping address email to user's email.\r\n @action\r\n private _handleAssignEmail(): void {\r\n this.fields.shippingAddress.email = this.customerEmail!;\r\n }\r\n\r\n // Resets address select boolean to revert default dropdown value.\r\n @action\r\n private _resetAddressSelect(): void {\r\n this.isAddressSelected = false;\r\n this.selectedAddress = undefined;\r\n this._handleAddressClear();\r\n }\r\n\r\n // Runs active step's validation function and sets error variable to allow/restrict 'Next' button.\r\n private _handleNext(validate: Function): void {\r\n validate() ? this.error = false : this.error = true;\r\n }\r\n\r\n // Submits form and sends form object variable data to retail server.\r\n private _handleSubmit(event: React.MouseEvent | React.KeyboardEvent | React.FormEvent): void {\r\n event.preventDefault();\r\n\r\n // Resets submit success and failure messages in case user clicks button again without rerendering.\r\n this.submitSuccess = false;\r\n this.submitFailure = false;\r\n\r\n const { config, context, resources } = this.props;\r\n const { shippingAddress } = this.fields;\r\n const wineClubId: string = config && config.clubId;\r\n const customerId: string = context && context.request && context.request.user && context.request.user.customerAccountNumber!;\r\n const isGifted: boolean = this.fields && this.fields.membership.includes('gift');\r\n\r\n const input = createWineClubInput({\r\n wineClubId: wineClubId,\r\n customerId: customerId,\r\n isGifted: isGifted,\r\n deliveryPreference: 'DELIVERY',\r\n addressFirstName: shippingAddress.firstName,\r\n addressLastName: shippingAddress.lastName,\r\n addressEmail: shippingAddress.email,\r\n addressPhone: shippingAddress.phone,\r\n addressLine1: shippingAddress.address1,\r\n addressLine2: shippingAddress.address2 || '',\r\n city: shippingAddress.city,\r\n state: shippingAddress.state,\r\n zipcode: shippingAddress.zip,\r\n country: shippingAddress.country\r\n });\r\n\r\n wineClubAction(input, this.props.context.actionContext)\r\n .then(response => {\r\n if (response.result) {\r\n this.submitSuccess = true;\r\n } else {\r\n this.submitFailure = true;\r\n this.failureMessage = response.Message || (resources && resources.wineClub_formFailure);\r\n }\r\n })\r\n .catch(error => {\r\n throw new Error(JSON.stringify(error, null, 4));\r\n });\r\n }\r\n}\r\n\r\nexport default WineClub;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport {\r\n ISignUpEmailVerification, ISignUpItem, ISignUpLoading, ISignUpLocalAccount, ISignUpViewProps\r\n} from '../../../modules/smwe-sign-up/./smwe-sign-up';\r\n\r\nconst SignUpItem: React.FC = ({\r\n wrapper,\r\n label,\r\n errorMessage,\r\n input\r\n}) => {\r\n\r\n return (\r\n \r\n {label}\r\n {errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst SignUpEmailVerification: React.FC = ({\r\n email,\r\n buttonWrapper,\r\n buttons,\r\n successMessage,\r\n errorMessage\r\n}) => {\r\n return (\r\n <>\r\n \r\n {successMessage && successMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n \r\n {buttons && buttons.map((button: React.ReactNode) => {\r\n return (\r\n <>\r\n {button}\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n emailVerification,\r\n buttons,\r\n errorMessage,\r\n disclaimer,\r\n pwRequirements\r\n}) => {\r\n return (\r\n \r\n {items && items.map((item: ISignUpItem) => {\r\n const isNewPassword = item.key === 'newPassword';\r\n if (item.key === 'email' && emailVerification.isRequired) {\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n } else if (isNewPassword || item.key === 'reenterPassword') {\r\n return (\r\n \r\n {isNewPassword && pwRequirements}\r\n {item.label}\r\n {item.errorMessage}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n <>\r\n \r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((error: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {error}\r\n \r\n );\r\n })}\r\n {buttons && buttons.map((button: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {button}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n \r\n );\r\n};\r\n\r\nconst SignUpLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignUpView: React.FC = props => {\r\n const {\r\n signUp,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n heading,\r\n signUpLocalAccount\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n {heading}\r\n {LocalAccount(signUpLocalAccount)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = (event: React.MouseEvent) => {\r\n const newPasswordState = document.getElementById('newPassword') as HTMLInputElement;\r\n const reenterPasswordState = document.getElementById('reenterPassword') as HTMLInputElement;\r\n const iconElements = document.getElementsByClassName('ms-sign-up__password-icon');\r\n if (newPasswordState && reenterPasswordState && iconElements) {\r\n newPasswordState.type = (newPasswordState.type === 'password') ? 'text' : 'password';\r\n reenterPasswordState.type = (reenterPasswordState.type === 'password') ? 'text' : 'password';\r\n for (let i = 0; i < iconElements.length; i++) {\r\n iconElements[i].className = (iconElements[i].className === 'ms-sign-up__password-icon ms-sign-up__password-icon-show')\r\n ? 'ms-sign-up__password-icon ms-sign-up__password-icon-hide'\r\n : 'ms-sign-up__password-icon ms-sign-up__password-icon-show';\r\n }\r\n }\r\n};\r\n\r\nexport default SignUpView;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\n\nimport { ILoyaltySignUpViewProps } from './loyalty-sign-up';\n\nconst LoyaltySignUpView: React.FC = props => {\n const {LoyaltySignUp, heading, memberHeading, signInLink, signUpText, signUpButton, detailsLink, termsLink, loading} = props;\n\n if (loading) {\n props.context.telemetry.error('LoyaltySignUp data is empty, module wont render');\n return null;\n }\n\n return (\n \n {memberHeading}\n {heading}\n {detailsLink}\n {signUpText}\n {termsLink}\n {signUpButton}\n {signInLink}\n \n );\n};\n\nexport default LoyaltySignUpView;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\ninterface IAccountLoyaltyTileDescription {\n description: string;\n}\n\nconst IAccountLoyaltyTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n\nexport default IAccountLoyaltyTileDescription;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\n// tslint:disable-next-line:no-duplicate-imports\nimport { ILinkData } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nexport interface ILinksData {\n linkText?: string;\n linkUrl: ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n}\n\nexport interface IAccountLoyaltyTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n /** The telemetry content */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountLoyaltyTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n { editableLinks && editableLinks.length ?\n \n : null\n }\n
\n );\n};\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if(!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link,index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-loyalty-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountLoyaltyTileLinks;","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { LoyaltyRewardPoint } from '@msdyn365-commerce/retail-proxy';\n\nimport { IAccountLoyaltyTileData } from './account-loyalty-tile.data';\nimport { IAccountLoyaltyTileProps } from './account-loyalty-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-loyalty-tile-description';\nimport LinksComponent from './components/account-loyalty-tile-links';\n\nexport interface IAccountLoyaltyTileViewProps extends IAccountLoyaltyTileProps {\n AccountLoyaltyTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountLoyalty component\n * @extends {React.PureComponent>}\n */\nclass AccountLoyaltyTile extends React.PureComponent> {\n\n private telemetryContent: ITelemetryContent;\n constructor(props: IAccountLoyaltyTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public render(): JSX.Element {\n const { config, data, resources, context } = this.props;\n const { className, heading, signUpLinkText, signUpLinkAriaLabel, viewLinkText, viewLinkAriaLabel } = config;\n const { accountLoyaltySummary, accountLoyaltyMemberSummary } = resources;\n const { loyaltyCard } = data;\n\n let description = accountLoyaltySummary;\n let url = Msdyn365.getUrlSync('loyaltyJoin', context.actionContext) || '';\n const link = { linkText: signUpLinkText, linkUrl: { destinationUrl: url }, ariaLabel: signUpLinkAriaLabel };\n\n if (loyaltyCard && loyaltyCard.result && loyaltyCard.result.CardNumber) {\n let points = 0;\n\n if (loyaltyCard.result.RewardPoints && loyaltyCard.result.RewardPoints.length > 0) {\n loyaltyCard.result.RewardPoints.forEach((rewardPoint: LoyaltyRewardPoint) => {\n points += rewardPoint.ActivePoints!;\n });\n }\n link.ariaLabel = viewLinkAriaLabel;\n link.linkText = viewLinkText;\n url = Msdyn365.getUrlSync('loyalty', context.actionContext) || '';\n link.linkUrl.destinationUrl = url;\n description = format(accountLoyaltyMemberSummary, points);\n }\n\n const viewProps = {\n ...this.props,\n className: className,\n AccountLoyaltyTile: {\n moduleProps: this.props,\n className: classnames('ms-account-loyalty-tile', config.className)\n },\n heading: heading && (\n \n ),\n links: ,\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading.text = event.target.value;\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if(this.props.config.signUpLinkText && this.props.config.viewLinkText) {\n this.props.config.viewLinkText = event.target.value;\n }\n };\n\n}\n\nexport default AccountLoyaltyTile;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { IAccountOrderTemplatesTileViewProps } from './account-order-templates-tile';\n\nconst AccountOrderTemplatesTileView: React.FC = props => {\n const { AccountOrderTemplatesTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountOrderTemplatesTileView;\n","import { Heading } from '@msdyn365-commerce-modules/utilities';\r\nimport { ICookieValue, RichTextComponent } from '@msdyn365-commerce/core';\r\nimport { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { IPromoBannerCookieData } from './promo-banner-cookie.data';\r\nimport { ILinkData, IPromoBannerCookieProps } from './promo-banner-cookie.props.autogenerated';\r\n\r\n// =========================================================================\r\n// MODULE-WIDE CONSTANTS\r\n// =========================================================================\r\nconst CookieName = 'promoBannerCookie';\r\n\r\n/**\r\n *\r\n * PromoBannerCookie component\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass PromoBannerCookie extends React.Component> {\r\n\r\n // ==========================================================================\r\n // OBSERVABLES\r\n // ==========================================================================\r\n\r\n @observable private bannerDismissed: boolean = false;\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n constructor(props: IPromoBannerCookieProps) {\r\n super(props);\r\n this._closeModal = this._closeModal.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (this.props.config.bodyClass && (!this._isCookieSet || this.bannerDismissed === false)) {\r\n document.body.classList.add(this.props.config.bodyClass);\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n\r\n // tslint:disable-next-line: no-typeof-undefined\r\n if (typeof window !== 'undefined' && window.location.hostname === 'localhost') {\r\n return null;\r\n }\r\n\r\n const { config } = this.props;\r\n const cookie = this.props.context.request.cookies;\r\n\r\n try {\r\n cookie.setConsentCookie();\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n if (this._isCookieSet === true || this.bannerDismissed === true) { return null; }\r\n return (\r\n \r\n {this._renderContent}\r\n {this._renderButton(config.dismissible!)}\r\n
\r\n );\r\n }\r\n\r\n // =========================================================================\r\n // PRIVATE METHODS\r\n // =========================================================================\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private _setCookie(): void {\r\n const cookieMaxAge = this.props.config.cookieMaxAge ? this.props.config.cookieMaxAge * 60 * 60 : 86400;\r\n this.props.context.request.cookies.set(CookieName, true, { path: '/', maxAge: cookieMaxAge });\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private get _isCookieSet(): boolean {\r\n const cookie = this.props.context.request.cookies;\r\n const promoBannerCookie = cookie.get(CookieName) as ICookieValue<{}> | undefined;\r\n\r\n if (promoBannerCookie === undefined || promoBannerCookie.value === 'false') { return false; }\r\n\r\n return (!!promoBannerCookie.value);\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private _closeModal(): void {\r\n this._setCookie();\r\n if (this.props.config.bodyClass) {\r\n document.body.classList.remove(this.props.config.bodyClass);\r\n }\r\n this.bannerDismissed = true;\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private _target(link: ILinkData): string | undefined {\r\n return (link.openInNewTab) ? '_blank' : undefined;\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private get _renderContent(): JSX.Element {\r\n const { config } = this.props;\r\n if (config.link && config.link.linkUrl.destinationUrl) {\r\n return (\r\n \r\n {this._renderTitle}\r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {this._renderTitle}\r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private get _renderTitle(): JSX.Element | null {\r\n const title = this.props.config.title;\r\n if (!title) { return null; }\r\n return (\r\n \r\n );\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private _renderButton(dismissible: boolean): JSX.Element | null {\r\n if (!dismissible) { return null; }\r\n\r\n return \r\n );\r\n }\r\n return null;\r\n }\r\n\r\n private _closeModal(): void {\r\n this.setState(prevState => ({\r\n isOpen: !prevState.isOpen\r\n }));\r\n }\r\n private _openModal(): void {\r\n this.setState(prevState => ({\r\n isOpen: !prevState.isOpen\r\n }));\r\n }\r\n}\r\n\r\nexport default Lightbox;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Button } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface ISignUpButton {\r\n id?: string;\r\n className: string;\r\n text: string;\r\n ariaLabel: string;\r\n disabled?: boolean;\r\n onClick?(event: React.MouseEvent): void;\r\n}\r\n\r\nconst SignUpButton: React.FC = ({ id, className, text, ariaLabel, disabled, onClick }) => (\r\n \r\n {text}\r\n \r\n);\r\n\r\nexport default SignUpButton;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nexport interface ISignUpErrorProps {\r\n id?: string;\r\n className: string;\r\n type?: string;\r\n message?: string;\r\n}\r\n\r\nconst SignUpError: React.FC = ({ id, className, type = 'page', message }) => {\r\n const errorClassName = `${className}__${type}-error`;\r\n\r\n return (\r\n \r\n );\r\n\r\n};\r\n\r\nexport default SignUpError;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\n\r\nexport interface ISignUpInputProps {\r\n id?: string;\r\n // tslint:disable-next-line:no-any\r\n type: any;\r\n value?: string;\r\n pattern?: string;\r\n className: string;\r\n maxLength?: string;\r\n onChange?(event: React.ChangeEvent): void;\r\n}\r\n\r\nexport interface ISignUpInput {\r\n key: string;\r\n AddressItem: INodeProps;\r\n label: React.ReactNode;\r\n alert: React.ReactNode;\r\n input: React.ReactNode;\r\n}\r\n\r\nconst GetMaxLength = (maxLength?: string): number | undefined => {\r\n if (maxLength) {\r\n const parsedMaxLength = parseInt(maxLength, 10);\r\n if (!isNaN(parsedMaxLength)) {\r\n return parsedMaxLength;\r\n }\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nconst SignUpInput: React.FC = ({\r\n id,\r\n type,\r\n value,\r\n pattern,\r\n className,\r\n maxLength,\r\n onChange }) => (\r\n \r\n );\r\n\r\nexport default SignUpInput;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface ISignUpLabel {\r\n id: string;\r\n forId: string;\r\n className: string;\r\n text: string;\r\n}\r\n\r\nconst SignUpLabel: React.FC = ({ id, forId, className, text }) => (\r\n \r\n);\r\n\r\nexport default SignUpLabel;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface ISignUpLoadingIcon {\r\n className: string;\r\n}\r\n\r\nconst SignUpLoadingIcon: React.FC = ({ className }) => (\r\n
\r\n);\r\n\r\nexport default SignUpLoadingIcon;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface ISignUpLoadingMessage {\r\n className: string;\r\n message: string;\r\n}\r\n\r\nconst SignUpLoadingMessage: React.FC = ({ className, message }) => (\r\n
\r\n {message}\r\n
\r\n);\r\n\r\nexport default SignUpLoadingMessage;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nexport interface ISignUpSuccess {\r\n id?: string;\r\n className: string;\r\n type?: string;\r\n message?: string;\r\n}\r\n\r\nconst SignUpSuccess: React.FC = ({ id, className, type = 'page', message }) => {\r\n const successClassName = `${className}__${type}-success`;\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default SignUpSuccess;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classnames from 'classnames';\r\nimport { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n Heading, IModuleProps, INodeProps, Modal, ModalBody\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport { RichTextComponent } from '@msdyn365-commerce/core';\r\n\r\nimport SignUpButtonComponent from './components/smwe-sign-up-button';\r\nimport SignUpErrorComponent from './components/smwe-sign-up-error';\r\nimport SignUpInputComponent from './components/smwe-sign-up-input';\r\nimport SignUpLabelComponent from './components/smwe-sign-up-label';\r\nimport SignUpLoadingIconComponent from './components/smwe-sign-up-loading-icon';\r\nimport SignUpLoadingMessageComponent from './components/smwe-sign-up-loading-message';\r\nimport SignUpSuccessComponent from './components/smwe-sign-up-success';\r\nimport { ISmweSignUpConfig, ISmweSignUpProps, ISmweSignUpResources } from './smwe-sign-up.props.autogenerated';\r\n\r\nexport interface ISignUpViewState {\r\n isShowLoading: boolean;\r\n}\r\n\r\nexport interface ISignUpItem {\r\n wrapper: INodeProps;\r\n key: string;\r\n label: React.ReactNode;\r\n errorMessage: React.ReactNode;\r\n input: React.ReactNode;\r\n}\r\n\r\nexport interface ISignUpEmailVerification {\r\n isRequired: boolean;\r\n email: ISignUpItem;\r\n buttonWrapper: INodeProps;\r\n buttons: React.ReactNode[];\r\n successMessage: React.ReactNode[];\r\n errorMessage: React.ReactNode[];\r\n}\r\n\r\nexport interface ISignUpLocalAccount {\r\n localAccount: INodeProps;\r\n items: ISignUpItem[];\r\n emailVerification: ISignUpEmailVerification;\r\n buttons: React.ReactNode[];\r\n errorMessage: React.ReactNode[];\r\n disclaimer: React.ReactNode;\r\n pwRequirements: React.ReactNode;\r\n}\r\n\r\nexport interface ISignUpLoading {\r\n modal: INodeProps;\r\n modalBody: INodeProps;\r\n icon: React.ReactNode;\r\n message: React.ReactNode;\r\n}\r\n\r\nexport interface ISignUpViewProps {\r\n className: string;\r\n viewState: ISignUpViewState;\r\n loading: ISignUpLoading;\r\n signUp: IModuleProps;\r\n defaultAADConainer: INodeProps;\r\n aadConainer: INodeProps;\r\n heading: React.ReactNode;\r\n signUpLocalAccount: ISignUpLocalAccount;\r\n}\r\n\r\n/**\r\n *\r\n * SignUp component\r\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\r\n * Please ensure any change in module don't break contract with AAD.\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass SignUp extends React.Component> {\r\n private moduleClassName: string = 'ms-sign-up';\r\n @observable private emailRegex: string;\r\n @observable private newPasswordRegex: string;\r\n @observable private reenterPasswordRegex: string;\r\n @observable private isEmailVerificationRequried: boolean;\r\n @observable private isInitialized: boolean;\r\n @observable private emailEntered: string;\r\n\r\n // tslint:disable-next-line:no-any\r\n private initializationTimer: any;\r\n\r\n constructor(props: ISmweSignUpProps) {\r\n super(props);\r\n // tslint:disable-next-line:max-line-length\r\n const passwordDefaultRegex = '^((?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d)|(?=.*[a-z])(?=.*[A-Z])(?=.*[^A-Za-z0-9])|(?=.*[a-z])(?=.*\\\\d)(?=.*[^A-Za-z0-9])|(?=.*[A-Z])(?=.*\\\\d)(?=.*[^A-Za-z0-9]))([A-Za-z\\\\d@#$%^&*\\\\-_+=[\\\\]{}|\\\\\\\\:\\',?/`~\\'();!]|\\\\.(?!@)){8,16}$';\r\n this.emailRegex = '^[a-zA-Z0-9.!#$%&\\'^_`{}~-]+@[a-zA-Z0-9-]+(?:\\\\.[a-zA-Z0-9-]+)*$';\r\n this.newPasswordRegex = passwordDefaultRegex;\r\n this.reenterPasswordRegex = passwordDefaultRegex;\r\n this.isEmailVerificationRequried = false;\r\n this.isInitialized = false;\r\n this.emailEntered = '';\r\n }\r\n\r\n public componentDidMount(): void {\r\n this._onInit();\r\n }\r\n\r\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\r\n public componentDidUpdate(): void {\r\n // tslint:disable-next-line:no-string-literal\r\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\r\n // tslint:disable-next-line:no-string-literal\r\n window['$element']['initialize']();\r\n }\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { config, resources } = this.props;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n viewState: {\r\n isShowLoading: !this.isInitialized\r\n },\r\n signUp: {\r\n moduleProps: this.props,\r\n className: classnames(this.moduleClassName, config.className)\r\n },\r\n loading: {\r\n modal: {\r\n tag: Modal,\r\n isOpen: true\r\n },\r\n modalBody: {\r\n tag: ModalBody\r\n },\r\n icon: ,\r\n message: ,\r\n },\r\n defaultAADConainer: {\r\n id: 'api',\r\n style: { display: 'none' }\r\n },\r\n aadConainer: {\r\n id: this.isInitialized ? 'api' : null,\r\n className: `${this.moduleClassName}__container`\r\n },\r\n heading: ,\r\n signUpLocalAccount: this._renderLocalAccount()\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public _onInit = () => {\r\n this._prePopulateData();\r\n this._updateErrorMessage();\r\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\r\n this.initializationTimer = setInterval(() => { this._isInitializationSuccessful(); }, 100);\r\n setTimeout(() => { clearInterval(this.initializationTimer); }, 10000);\r\n };\r\n\r\n // After successful AAD initialization, remove waiting and preload any data, if needed.\r\n private _isInitializationSuccessful = () => {\r\n // tslint:disable-next-line:no-string-literal\r\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\r\n clearInterval(this.initializationTimer);\r\n this.isInitialized = true;\r\n }\r\n };\r\n\r\n private _prePopulateData = () => {\r\n const resources: ISmweSignUpResources = this.props.resources || {};\r\n\r\n // tslint:disable-next-line:no-string-literal\r\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\r\n // tslint:disable-next-line:no-string-literal\r\n window['SA_FIELDS']['AttributeFields'].map((obj: { ID: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string; VERIFY: boolean }) => {\r\n switch (obj.ID.toLowerCase()) {\r\n case 'email': {\r\n this.emailRegex = obj.PAT;\r\n this.isEmailVerificationRequried = obj.VERIFY;\r\n break;\r\n }\r\n case 'newpassword': {\r\n this.newPasswordRegex = obj.PAT;\r\n break;\r\n }\r\n case 'reenterpassword': {\r\n this.reenterPasswordRegex = obj.PAT;\r\n break;\r\n }\r\n default:\r\n }\r\n\r\n switch (obj.UX_INPUT_TYPE.toLowerCase()) {\r\n case 'password': {\r\n obj.PAT_DESC = resources.invalidPasswordError;\r\n break;\r\n }\r\n case 'emailbox': {\r\n obj.PAT_DESC = resources.invalidEmailAddressError;\r\n break;\r\n }\r\n default:\r\n }\r\n });\r\n }\r\n };\r\n\r\n private _updateErrorMessage = () => {\r\n const resources: ISmweSignUpResources = this.props.resources || {};\r\n\r\n // tslint:disable-next-line:no-string-literal\r\n if (window && window['CONTENT']) {\r\n const errorMessages = {\r\n required_field: resources.requiredFieldMissingError\r\n };\r\n\r\n // tslint:disable-next-line:no-string-literal\r\n Object.assign(window['CONTENT'], errorMessages);\r\n }\r\n };\r\n\r\n private _renderLocalAccount(): ISignUpLocalAccount {\r\n const { config, resources } = this.props;\r\n return {\r\n localAccount: {\r\n id: 'attributeList',\r\n className: `${this.moduleClassName}__account-items attr`\r\n },\r\n items: [\r\n this._renderInput('givenName', 'text', resources.firstNameLabelText, resources.firstNameMaxLength),\r\n this._renderInput('surname', 'text', resources.lastNameLabelText, resources.lastNameMaxLength),\r\n this._renderInput('email', 'email', resources.emailAddressLabelText, undefined, this.emailRegex),\r\n this._renderInput('newPassword', 'password', resources.passwordLabelText, undefined, this.newPasswordRegex),\r\n this._renderInput('reenterPassword', 'password', resources.confirmPasswordLabelText, undefined, this.reenterPasswordRegex)\r\n ],\r\n emailVerification: {\r\n isRequired: this.isEmailVerificationRequried,\r\n email: this._renderInput('email_ver_input', 'text', resources.verificationCodeLabelText),\r\n buttonWrapper: {\r\n className: `${this.moduleClassName}__email-verification-buttons verify`,\r\n 'data-claim_id': 'email'\r\n },\r\n buttons: [\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 ],\r\n successMessage: [\r\n ,\r\n \r\n ],\r\n errorMessage: [\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n \r\n ]\r\n },\r\n buttons: [\r\n ,\r\n \r\n ],\r\n errorMessage: [\r\n ,\r\n ,\r\n ,\r\n \r\n ],\r\n disclaimer: config.disclaimer && ,\r\n pwRequirements: config.pwRequirements && \r\n };\r\n }\r\n\r\n private _isFormValid(): boolean {\r\n if (this.emailEntered === ' ' && this.emailRegex) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n private _renderInput(id: string, type: string, labelText: string, maxLength?: string, pattern?: string): ISignUpItem {\r\n const className = `${this.moduleClassName}__account-item`;\r\n return (\r\n {\r\n wrapper: {\r\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\r\n },\r\n key: id,\r\n label: (\r\n \r\n ),\r\n errorMessage: (\r\n \r\n ),\r\n input: (\r\n this.emailEntered = e.target.value\r\n }\r\n }\r\n />\r\n )\r\n\r\n }\r\n );\r\n }\r\n}\r\n\r\nexport default SignUp;","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport { ISocialShareConfig, ISocialShareProps, orientation } from './social-share.props.autogenerated';\n\nexport interface ISocialShareViewProps extends ISocialShareProps {\n isConsentGiven: boolean;\n SocialShareItemElements: React.ReactNode[];\n SocialShare: IModuleProps;\n SocialShareList: INodeProps;\n SocialShareItem: INodeProps;\n SocialShareItemCustomization: INodeProps;\n}\n\n/**\n *\n * SocialShare component\n * @extends {React.PureComponent>}\n */\nclass SocialShare extends React.PureComponent> {\n constructor(props: ISocialShareProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { slots } = this.props;\n\n if (slots && slots.socialShareItems.length === 0) {\n this.props.context.telemetry.error('No social media is enable for sharing, module wont render');\n return null;\n }\n\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (isConsentGiven === false) {\n return null;\n }\n\n const viewprops = {\n ...this.props,\n SocialShare: {\n moduleProps: this.props,\n className: classnames('ms-social-share', this.props.config.className)\n },\n SocialShareList: {\n 'data-title': this.props.config.caption,\n className: `ms-social-share-ul ${this.props.config.caption && 'caption'} ${this.props.config.orientation === orientation.vertical ? 'vertical' : ''}`,\n tag: 'ul'\n },\n SocialShareItem: {\n className: 'ms-social-share-li',\n tag: 'li',\n tabIndex: '0'\n },\n SocialShareItemElements: slots && slots.socialShareItems.length > 0 && slots.socialShareItems\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n}\n\nexport default SocialShare;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { Heading, IHeadingProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { IImageData, IImageSettings, Image, RichText, RichTextComponent } from '@msdyn365-commerce/core';\r\n\r\nimport { IProductDataEntryData } from './product-data-entry.data';\r\nimport { IProductAttributesItemsData, IProductDataEntryProps, IProductTastingNotesItemsData } from './product-data-entry.props.autogenerated';\r\n\r\n/**\r\n *\r\n * ProductDataEntry component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass ProductDataEntry extends React.PureComponent> {\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n public render(): JSX.Element {\r\n const config = this.props.config;\r\n const hasTastingNotes = config.productTastingNotesItems && !!config.productTastingNotesItems.length;\r\n const hasAttributes = config.productAttributesItems && !!config.productAttributesItems.length;\r\n\r\n return (\r\n
\r\n\r\n {config.productImage && this._renderHeroImage(config.productImage)}\r\n {config.productCaption &&\r\n
\r\n {this._renderRichText(config.productCaption, 'product-data-entry__caption-text')}\r\n
\r\n }\r\n\r\n
\r\n {config.productHeading && this._renderHeading(config.productHeading, 'product-data-entry__heading')}\r\n {config.productSubHeading && this._renderHeading(config.productSubHeading, 'product-data-entry__subheading')}\r\n {config.productDescription && this._renderRichText(config.productDescription, 'product-data-entry__description')}\r\n\r\n
\r\n {config.productTastingNotesHeading && this._renderHeading(config.productTastingNotesHeading, 'product-data-entry__tasting-notes__heading')}\r\n {config.productTastingNotesItems && hasTastingNotes && this._renderTastingNotesItems(config.productTastingNotesItems)}\r\n
\r\n\r\n
\r\n {config.productAttributesHeading && this._renderHeading(config.productAttributesHeading, 'product-data-entry__attributes__heading')}\r\n {config.productAttributesItems && hasAttributes && this._renderProductAttributesItems(config.productAttributesItems)}\r\n
\r\n
\r\n\r\n
\r\n );\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _renderHeading(heading: IHeadingProps, className?: string): JSX.Element {\r\n return (\r\n \r\n );\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _renderRichText(text: RichText, className?: string): JSX.Element {\r\n return (\r\n \r\n );\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _renderHeroImage(productImage: IImageData): JSX.Element {\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=0&h=814&m=6`, w: 0, h: 0 },\r\n lg: { q: `w=0&h=814&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _renderTastingNotesItems(productTastingNotesItems: IProductTastingNotesItemsData[]): JSX.Element {\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=25&h=25&m=6`, w: 0, h: 0 },\r\n lg: { q: `w=25&h=25&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n return (\r\n
\r\n {productTastingNotesItems.map((item: IProductTastingNotesItemsData, idx: number) => (\r\n
\r\n {item.tastingNotesIcon &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n {item.tastingNotesName}\r\n
\r\n
\r\n ))}\r\n
\r\n );\r\n }\r\n\r\n //------------------------------------------------------\r\n //------------------------------------------------------\r\n private _renderProductAttributesItems(productAttributesItems: IProductAttributesItemsData[]): JSX.Element {\r\n return (\r\n
\r\n {productAttributesItems.map((item: IProductAttributesItemsData, idx: number) => (\r\n
\r\n {item.attributeName && this._renderHeading(item.attributeName, 'product-data-entry__attributes__name')}\r\n {item.attributeText && this._renderRichText(item.attributeText, 'product-data-entry__attributes__text')}\r\n
\r\n ))}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ProductDataEntry;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nexport interface IAccountOrderTemplatesTileDescription {\n description: string;\n}\n\nexport const AccountOrderTemplatesTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport * as React from 'react';\nimport { ILinksData } from '../account-order-templates-tile.props.autogenerated';\n\nexport interface IAccountOrderTemplatesTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n /** The telemetry content */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nexport const AccountOrderTemplatesTileLinks: React.FC = ({ links, onTextChange, telemetryContent, requestContext}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n { editableLinks && editableLinks.length ?\n \n : null\n }\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if(!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link,index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-order-templates-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: attributes,\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountOrderTemplatesTileData } from './account-order-templates-tile.data';\nimport { IAccountOrderTemplatesTileProps } from './account-order-templates-tile.props.autogenerated';\nimport { AccountOrderTemplatesTileDescription, AccountOrderTemplatesTileLinks } from './components';\n\nexport interface IAccountOrderTemplatesTileViewProps extends IAccountOrderTemplatesTileProps {\n AccountOrderTemplatesTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountOrderTemplatesTile component\n * @extends {React.PureComponent>}\n */\nexport class AccountOrderTemplatesTile extends React.PureComponent> {\n\n private telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountOrderTemplatesTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const RetailB2BEcommerceFeatureState = this.props.data.featureState.result?.find(featureState => featureState.Name === 'Dynamics.AX.Application.RetailB2BEcommerceFeature');\n if (!this.props.context.request.params.isEditor\n && (!RetailB2BEcommerceFeatureState?.IsEnabled || !this.props.data.customerInformation?.result?.IsB2b)) {\n return ;\n }\n\n const { className, heading, links } = config;\n const { accountOrderTemplatesTileDescription } = resources;\n const orderTemplates = data.orderTemplates;\n\n const orderTemplatesCount = (orderTemplates?.result || []).length;\n const description = format(accountOrderTemplatesTileDescription, orderTemplatesCount);\n\n const viewProps = {\n ...this.props,\n className: className,\n AccountOrderTemplatesTile: {\n moduleProps: this.props,\n className: classnames('ms-account-order-templates-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && ,\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n this.props.config.heading.text = event.target.value;\n };\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if(this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountOrderTemplatesTile;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { getPayloadObject, getTelemetryAttributes, getTelemetryObject, IModuleProps, INodeProps, IPayLoad, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport { IFooterItemConfig, IFooterItemProps, IHeadingData, ILinkData } from './footer-item.props.autogenerated';\n\nexport interface IFooterViewProps extends IFooterItemProps {\n heading: React.ReactNode;\n image: React.ReactNode;\n text: React.ReactNode;\n linkText: React.ReactNode;\n className?:string;\n FooterItem: IModuleProps;\n HeadingContainer: INodeProps;\n ItemContainer: INodeProps;\n Link: INodeProps;\n EditableLink: React.ReactNode;\n}\n\n/**\n *\n * FooterItem component\n * @extends {React.PureComponent>}\n */\nexport class FooterItem extends React.PureComponent> {\n private telemetryContent: ITelemetryContent;\n private payLoad: IPayLoad;\n private attributes: Msdyn365.IDictionary | undefined;\n constructor(props: IFooterItemProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry);\n // Construct telemetry attribute to render\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public render(): JSX.Element {\n const {heading, image, link, text} = this.props.config;\n const footerItemClassName = classnames('ms-footer__item', this.props.config.className);\n const linkText = link && link.linkText ? link.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n const viewProps: IFooterViewProps = {\n ... this.props,\n heading: this._createHeading(heading!),\n image: this._createImageMarkup(image!),\n text:this._createText(text!),\n linkText: this._createLinkText(link!),\n EditableLink: this._createLink(link!),\n // @ts-ignore\n FooterItem: {\n moduleProps: this.props,\n className: footerItemClassName\n },\n // @ts-ignore\n HeadingContainer: {\n className: 'ms-footer__heading'\n },\n // @ts-ignore\n ItemContainer: {\n className: 'ms-footer__link__container'\n },\n // @ts-ignore\n Link: link && link.linkUrl && link.linkUrl.destinationUrl && {\n tag: 'a',\n className: 'ms-footer__link',\n href: link.linkUrl.destinationUrl,\n title:linkText,\n target: link.openInNewTab ? '_blank' : undefined,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText),\n ...this.attributes\n },\n className:footerItemClassName\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading!.text = event.target.value;\n\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.text = event.target.value;\n\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.link!.linkText = event.target.value;\n\n private _createLink(link: ILinkData): React.ReactNode | null {\n if(link) {\n const linkText = link.linkText ? link.linkText : '';\n // TODO: Update the inner tag in the anchor link to span\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-footer__link',\n linkText: linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: this.attributes!,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText)\n };\n return(\n \n );\n\n }\n return null;\n }\n\n private _createLinkText(link: ILinkData): React.ReactNode | null {\n if(!link || !link.linkText) {\n return null;\n }\n\n return ({link.linkText});\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if(!heading || !heading.text || !heading.text.length) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _createText(text: string): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createImageMarkup(item: Msdyn365.IImageData, ariaHiddenAttr?: boolean): React.ReactNode | null {\n if(!item || !item.src || !item.src.length) {\n return null;\n }\n\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: `w=24&h=24&m=6`, w: 0, h: 0 },\n lg: { q: `w=24&h=24&m=6`, w: 0, h: 0 }\n },\n lazyload: true\n };\n return (\n \n );\n }\n}\n\nexport default FooterItem;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { addThrottledEvent,Drawer, IModuleProps, INodeProps, KeyCodes, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport MsDyn365, { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport { computed,observable } from 'mobx';\nimport React from 'react';\nimport { ISitePickerConfig,ISitePickerProps } from './site-picker.props.autogenerated';\n\nexport interface ISitePickerViewProps extends ISitePickerProps {\n SitePicker:IModuleProps;\n SitePickerMenu:INodeProps;\n SitePickerMenuSpan:INodeProps;\n SitePickerMenuList:INodeProps;\n SitePickerMenuListItem:INodeProps;\n SitePickerMenuListItemArray:React.ReactNode[] | undefined;\n siteOptionsState:boolean;\n SitePickerMobileContainer: INodeProps;\n SitePickerMobileMenuList:INodeProps;\n SitePickerMobileMenuListItem:INodeProps;\n isMobileView: boolean;\n renderSiteOptions():void;\n resetSiteOptionsState():void;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\ninterface ISitePickerState {\n expandSiteOptions: boolean;\n isMobile: boolean;\n}\n\n/**\n *\n * SitePicker component\n * @extends {React.PureComponent>}\n */\nclass SitePicker extends React.PureComponent,ISitePickerState> {\n private _cookieName: string = '_msdyn365___site_';\n private _cookieExpirationInSeconds: number = 5184000;\n private _sitePickerMenuNode: React.RefObject;\n private _sitePickerMenuButton: React.RefObject;\n private resizeThrottledEventHandler?: (event: Event) => void;\n @observable\n private viewport: GridSize;\n\n public constructor(props:ISitePickerViewProps) {\n super(props);\n this._handleChange = this._handleChange.bind(this);\n this._sitePickerMenuNode = React.createRef();\n this._sitePickerMenuButton = React.createRef();\n this._renderSiteOptions=this._renderSiteOptions.bind(this);\n this._resetSiteOptionsState=this._resetSiteOptionsState.bind(this);\n this._escFunction=this._escFunction.bind(this);\n this._handleOutsideClick=this._handleOutsideClick.bind(this);\n this._updateViewport = this._updateViewport.bind(this);\n this.viewport = props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this.state= {\n expandSiteOptions:false,\n isMobile: this.isMobile\n };\n }\n @computed get isMobile(): boolean {\n return (this.viewport === 'xs' || this.viewport === 'sm');\n }\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document?.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document?.body?.addEventListener('mousedown', this._handleOutsideClick);\n this.resizeThrottledEventHandler = window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n this._updateViewport();\n }\n }\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document?.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document?.body?.removeEventListener('mousedown', this._handleOutsideClick, false);\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n public render(): JSX.Element | null {\n const viewProps: ISitePickerViewProps = {\n ...this.props as ISitePickerProps,\n SitePicker:{\n moduleProps: this.props,\n className: classnames('ms-site-picker',this.props.config.className, this.state.isMobile? 'mobile-view': 'desktop-view'),\n tag:'div'\n },\n SitePickerMenu:{\n tag: 'button' as NodeTag,\n className: 'ms-site-picker__button',\n 'aria-label': this.props.config.heading?.text,\n 'aria-expanded' : this.state.expandSiteOptions,\n onClick:this.props,\n ref :this._sitePickerMenuButton\n },\n SitePickerMenuSpan:{\n className:'ms-site-picker__span',\n tag:'span'\n },\n SitePickerMenuList: {\n className:'ms-site-picker__list',\n role:'menu',\n tag:'ul',\n ref:this._sitePickerMenuNode\n },\n SitePickerMenuListItem: {\n className:'ms-site-picker__list__item',\n role:'presentation',\n tag:'li',\n },\n SitePickerMobileContainer: {\n tag: Drawer,\n className: 'ms-site-picker__drawer',\n toggleButtonText: this.props.config.heading?.text,\n openGlyph: 'ms-site-picker__drawer-open',\n closeGlyph: 'ms-site-picker__drawer-close',\n glyphPlacement: 'end',\n },\n SitePickerMobileMenuList:{\n className:'ms-site-picker__drawer__list',\n tag:'div'\n },\n SitePickerMobileMenuListItem:{\n className:'ms-site-picker__drawer__list__item',\n tag:'div'\n },\n isMobileView: this.state.isMobile,\n SitePickerMenuListItemArray:this._renderSitePickerImage(),\n renderSiteOptions:this._renderSiteOptions,\n resetSiteOptionsState:this._resetSiteOptionsState,\n siteOptionsState:this.state.expandSiteOptions,\n };\n return this.props.renderView(viewProps);\n }\n private _renderSiteOptions():void {\n const expandSiteOptionsState=this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !expandSiteOptionsState\n });\n }\n private _resetSiteOptionsState():void {\n this.setState({\n expandSiteOptions: false\n });\n }\n // tslint:disable-next-line: no-any\n private _escFunction = (event: any) => {\n const key = event.keyCode;\n if(this.state.expandSiteOptions) {\n switch (key) {\n case KeyCodes.Escape: {\n setTimeout(() => {\n const nextFocus = document && document.activeElement;\n if ((this._sitePickerMenuButton?.current?.contains(nextFocus) || this._sitePickerMenuNode?.current?.contains(nextFocus))) {\n this._resetSiteOptionsState();\n this._sitePickerMenuButton?.current?.focus();\n }\n }, 50);\n break;\n }\n case KeyCodes.Tab: {\n setTimeout(() => {\n const nextFocus = document && document.activeElement;\n if ((!this._sitePickerMenuButton?.current?.contains(nextFocus) && !this._sitePickerMenuNode?.current?.contains(nextFocus))) {\n this._resetSiteOptionsState();\n }\n }, 50);\n break;\n }\n default:\n return;\n }\n }\n }\n // tslint:disable-next-line: no-any\n private _handleOutsideClick = (event:any) => {\n if((this._sitePickerMenuButton.current?.contains(event.target) && this.state.expandSiteOptions) ||\n (this._sitePickerMenuNode.current?.contains(event.target) && this.state.expandSiteOptions)) {\n return;\n } else {\n this._resetSiteOptionsState();\n }\n };\n private _handleChange(e: React.MouseEvent): void {\n e.preventDefault();\n if(e.currentTarget.href && e.currentTarget.href.length > 0 && window) {\n if (this.props.context.request.cookies.isConsentGiven()) {\n const cookieConfig = {maxAge:this._cookieExpirationInSeconds};\n this.props.context.request.cookies.set(this._cookieName,e.currentTarget.href,cookieConfig);\n }\n window.location.assign(e.currentTarget.href);\n }\n }\n private _renderSitePickerImage():React.ReactNode[] | undefined {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: `w=48&h=48&m=6`, w: 0, h: 0 },\n lg: { q: `w=48&h=48&m=6`, w: 0, h: 0 },\n xl: { q: `w=48&h=48&m=6`, w: 0, h: 0 }\n },\n lazyload: true\n };\n const siteOptions=this.props.config.siteOptions && this.props.config.siteOptions ;\n return siteOptions && siteOptions.map((item, index) => {\n const image = item?.siteImage;\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: image?.imageSettings || defaultImageSettings\n };\n return (\n \n \n {item?.siteName}\n \n \n \n );\n }\n );\n }\n private _updateViewport(): void {\n this.viewport = this._getViewport();\n this.setState({ isMobile: this.isMobile });\n }\n private _getViewport(): GridSize {\n const { context } = this.props;\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && typeof window !== undefined && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n } else {\n return 'xl';\n }\n }\n }\n return 'xs';\n }\n}\n\nexport default SitePicker;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { IAccountLoyaltyTileViewProps } from './account-loyalty-tile';\n\nconst AccountLoyaltyTileView: React.FC = props => {\n const { AccountLoyaltyTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountLoyaltyTileView;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport {\r\n ISignUpEmailVerification, ISignUpItem, ISignUpLoading, ISignUpLocalAccount, ISignUpViewProps\r\n} from '../../../modules/smwe-sign-up/./smwe-sign-up';\r\n\r\nconst SignUpItem: React.FC = ({\r\n wrapper,\r\n label,\r\n errorMessage,\r\n input\r\n}) => {\r\n\r\n return (\r\n \r\n {label}\r\n {errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst SignUpEmailVerification: React.FC = ({\r\n email,\r\n buttonWrapper,\r\n buttons,\r\n successMessage,\r\n errorMessage\r\n}) => {\r\n return (\r\n <>\r\n \r\n {successMessage && successMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n \r\n {buttons && buttons.map((button: React.ReactNode) => {\r\n return (\r\n <>\r\n {button}\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n emailVerification,\r\n buttons,\r\n errorMessage,\r\n disclaimer,\r\n pwRequirements\r\n}) => {\r\n return (\r\n \r\n {items && items.map((item: ISignUpItem) => {\r\n const isNewPassword = item.key === 'newPassword';\r\n if (item.key === 'email' && emailVerification.isRequired) {\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n } else if (isNewPassword || item.key === 'reenterPassword') {\r\n return (\r\n \r\n {isNewPassword && pwRequirements}\r\n {item.label}\r\n {item.errorMessage}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n <>\r\n \r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((error: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {error}\r\n \r\n );\r\n })}\r\n {buttons && buttons.map((button: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {button}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n \r\n );\r\n};\r\n\r\nconst SignUpLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignUpView: React.FC = props => {\r\n const {\r\n signUp,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n heading,\r\n signUpLocalAccount\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n {heading}\r\n {LocalAccount(signUpLocalAccount)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = (event: React.MouseEvent) => {\r\n const newPasswordState = document.getElementById('newPassword') as HTMLInputElement;\r\n const reenterPasswordState = document.getElementById('reenterPassword') as HTMLInputElement;\r\n const iconElements = document.getElementsByClassName('ms-sign-up__password-icon');\r\n if (newPasswordState && reenterPasswordState && iconElements) {\r\n newPasswordState.type = (newPasswordState.type === 'password') ? 'text' : 'password';\r\n reenterPasswordState.type = (reenterPasswordState.type === 'password') ? 'text' : 'password';\r\n for (let i = 0; i < iconElements.length; i++) {\r\n iconElements[i].className = (iconElements[i].className === 'ms-sign-up__password-icon ms-sign-up__password-icon-show')\r\n ? 'ms-sign-up__password-icon ms-sign-up__password-icon-hide'\r\n : 'ms-sign-up__password-icon ms-sign-up__password-icon-show';\r\n }\r\n }\r\n};\r\n\r\nexport default SignUpView;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { IFooterViewProps } from './footer-item';\n\n/**\n *\n * FooterItemView component\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { FooterItem } = this.props;\n return(\n \n {this._renderElement(this.props)}\n \n );\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n const {heading, HeadingContainer,Link, linkText, image, text, EditableLink} = props;\n if(heading) {\n return ( {heading} );\n } else if(Link && image) {\n return (\n \n {linkText}\n {image}\n );\n } else if(Link) {\n return (EditableLink);\n }\n return(\n <>\n {text}\n {image}\n \n );\n }\n}\n\nexport default FooterItemView;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport {\r\n ISignUpEmailVerification, ISignUpItem, ISignUpLoading, ISignUpLocalAccount, ISignUpViewProps\r\n} from '../../../modules/smwe-sign-up/./smwe-sign-up';\r\n\r\nconst SignUpItem: React.FC = ({\r\n wrapper,\r\n label,\r\n errorMessage,\r\n input\r\n}) => {\r\n\r\n return (\r\n \r\n {label}\r\n {errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst SignUpEmailVerification: React.FC = ({\r\n email,\r\n buttonWrapper,\r\n buttons,\r\n successMessage,\r\n errorMessage\r\n}) => {\r\n return (\r\n <>\r\n \r\n {successMessage && successMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n \r\n {buttons && buttons.map((button: React.ReactNode) => {\r\n return (\r\n <>\r\n {button}\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n emailVerification,\r\n buttons,\r\n errorMessage,\r\n disclaimer,\r\n pwRequirements\r\n}) => {\r\n return (\r\n \r\n {items && items.map((item: ISignUpItem) => {\r\n const isNewPassword = item.key === 'newPassword';\r\n if (item.key === 'email' && emailVerification.isRequired) {\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n } else if (isNewPassword || item.key === 'reenterPassword') {\r\n return (\r\n \r\n {isNewPassword && pwRequirements}\r\n {item.label}\r\n {item.errorMessage}\r\n {item.input}\r\n \r\n \r\n );\r\n }\r\n return (\r\n <>\r\n \r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((error: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {error}\r\n \r\n );\r\n })}\r\n {buttons && buttons.map((button: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {button}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n \r\n );\r\n};\r\n\r\nconst SignUpLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignUpView: React.FC = props => {\r\n const {\r\n signUp,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n heading,\r\n signUpLocalAccount\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n {heading}\r\n {LocalAccount(signUpLocalAccount)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _showPassword = (event: React.MouseEvent) => {\r\n const newPasswordState = document.getElementById('newPassword') as HTMLInputElement;\r\n const reenterPasswordState = document.getElementById('reenterPassword') as HTMLInputElement;\r\n const iconElements = document.getElementsByClassName('ms-sign-up__password-icon');\r\n if (newPasswordState && reenterPasswordState && iconElements) {\r\n newPasswordState.type = (newPasswordState.type === 'password') ? 'text' : 'password';\r\n reenterPasswordState.type = (reenterPasswordState.type === 'password') ? 'text' : 'password';\r\n for (let i = 0; i < iconElements.length; i++) {\r\n iconElements[i].className = (iconElements[i].className === 'ms-sign-up__password-icon ms-sign-up__password-icon-show')\r\n ? 'ms-sign-up__password-icon ms-sign-up__password-icon-hide'\r\n : 'ms-sign-up__password-icon ms-sign-up__password-icon-show';\r\n }\r\n }\r\n};\r\n\r\nexport default SignUpView;\r\n"],"sourceRoot":""}