{"version":3,"sources":["webpack:///src/modules/checkout-customer-account-payment/checkout-customer-account-payment.view.tsx?c009","webpack:///src/modules/iframe/iframe.tsx?d14a","webpack:///src/modules/content-block/components/links.tsx?5056","webpack:///src/modules/content-block/content-block.tsx?8675","webpack:///src/modules/fabrikam/views/buybox.view.tsx?68a7","webpack:///src/modules/social-share/social-share.view.tsx?76da","webpack:///src/modules/cookie-compliance/components/accept-button.tsx?1709","webpack:///src/modules/cookie-compliance/components/links.tsx?807e","webpack:///src/modules/cookie-compliance/cookie-compliance.tsx?5f7e","webpack:///src/modules/fabrikam/views/navigation-menu.view.tsx?5991","webpack:///src/modules/accordion-item/accordion-item.tsx?fc54","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/product-specification/product-specification.view.tsx?bfbe","webpack:///src/modules/iframe/iframe.view.tsx?dd86","webpack:///src/modules/account-management-address/account-management-address.view.tsx?739e","webpack:///src/modules/sign-in/components/sign-in-button.tsx?a9cc","webpack:///src/modules/sign-in/components/sign-in-description.tsx?196e","webpack:///src/modules/sign-in/components/sign-in-error.tsx?2f11","webpack:///src/modules/sign-in/components/sign-in-input.tsx?eb41","webpack:///src/modules/sign-in/components/sign-in-label.tsx?d42c","webpack:///src/modules/sign-in/components/sign-in-link.tsx?fc9f","webpack:///src/modules/sign-in/components/sign-in-loading-icon.tsx?3d5a","webpack:///src/modules/sign-in/components/sign-in-loading-message.tsx?7f4d","webpack:///src/modules/sign-in/components/sign-in-text.tsx?92d7","webpack:///src/modules/sign-in/sign-in.tsx?44ed","webpack:///src/modules/fabrikam/views/order-history.view.tsx?46de","webpack:///src/modules/fabrikam/utilities/quantity/Quantity.tsx?f073","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-generic-tile/account-generic-tile.view.tsx?bca1","webpack:///src/modules/sign-up/sign-up.view.tsx?e4b6","webpack:///src/modules/checkout/checkout.view.tsx?e9a7","webpack:///src/modules/account-profile/components/account-profile-text.tsx?c06a","webpack:///src/modules/account-profile/components/account-profile-attributes.tsx?dd79","webpack:///src/modules/account-profile/components/account-profile-description.tsx?6478","webpack:///src/modules/account-profile/components/account-profile-links.tsx?2955","webpack:///src/modules/account-profile/account-profile.tsx?8999","webpack:///src/modules/tab/tab.view.tsx?701e","webpack:///src/modules/account-customer-balance/components/account-statement-request-modal.tsx?cf6e","webpack:///src/modules/account-customer-balance/components/account-actions.tsx?bbe9","webpack:///src/modules/account-customer-balance/components/index.tsx?9c6a","webpack:///src/modules/account-customer-balance/account-customer-balance.tsx?da17","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/checkout-section-container/checkout-section-container.view.tsx?61ae","webpack:///src/modules/account-welcome-tile/account-welcome-tile.view.tsx?a13c","webpack:///src/modules/order-history/order-history.view.tsx?251d","webpack:///src/modules/ratings-histogram/ratings-histogram.view.tsx?4481","webpack:///src/modules/map/map.view.tsx?cd35","webpack:///src/modules/footer-item/footer-item.view.tsx?235e","webpack:///src/modules/account-loyalty/account-loyalty.view.tsx?06f4","webpack:///src/modules/password-reset-verification/password-reset-verification.view.tsx?9e1f","webpack:///src/modules/order-template-list/order-template-list.view.tsx?20f7","webpack:///src/modules/account-customer-balance/account-customer-balance.view.tsx?35d2","webpack:///src/modules/account-profile-edit/components/account-profile-edit-button.tsx?8f71","webpack:///src/modules/account-profile-edit/components/account-profile-edit-error.tsx?a0b2","webpack:///src/modules/account-profile-edit/components/account-profile-edit-input.tsx?3bba","webpack:///src/modules/account-profile-edit/components/account-profile-edit-label.tsx?505c","webpack:///src/modules/account-profile-edit/components/account-profile-edit-loading-icon.tsx?e178","webpack:///src/modules/account-profile-edit/components/account-profile-edit-loading-message.tsx?2c6f","webpack:///src/modules/account-profile-edit/account-profile-edit.tsx?a9d6","webpack:///src/modules/write-review/write-review.view.tsx?9069"],"names":["SummaryForm","formProps","label","paymentAmount","addPaymentButton","appliedLine","bottomBorder","EditForm","inputLabel","inputAmount","customerName","customerAccountNumber","customerSince","accountCredit","alert","accountDetails","props","checkoutCustomerAccount","summaryView","editView","moduleState","isReady","Iframe","super","this","iframeRef","config","resources","isConsentGiven","context","request","cookies","target","destinationUrl","srcURL","URL","error","telemetry","exception","protocol","toLocaleLowerCase","iframeClassName","className","viewProps","Heading","_createHeading","heading","IframeContainer","moduleProps","IFrame","_createIframe","_renderAlert","cookieConsentRequiredMessage","cookieConsentAccepted","renderView","text","length","message","role","targetURL","src","height","iframeAriaLabel","ref","_mapEditableLinks","linkdata","editableLinks","forEach","link","index","payLoad","telemetryContent","linkText","contentAction","etext","attributes","btnClass","editableLink","ariaLabel","linkUrl","openInNewTab","additionalProperties","onClick","push","links","editProps","onTextChange","requestContext","telemetryPageName","friendlyName","handleTextChange","event","value","handleParagraphChange","paragraph","handleLinkTextChange","linkIndex","image","imageAriaLabel","contentBlockTitle","tag","onEdit","imageProps","gridSettings","imageSettings","contentBlockLinks","contentBlockText","contentBlockImage","key","contentBlockviewProps","title","moduleClass","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","_getImageLink","actionableRegion","_renderTextBlock","textBlocks","_renderSocialShare","socialShare","_renderCartAndActions","addToCart","addToOrderTemplate","addToWishlist","errorBlock","button","_renderConfigure","configure","ContainerProps","dropdowns","map","_renderConfigureDropdown","dropdown","LabelContainerProps","errors","select","_renderFindInStore","findInStore","storeSelector","description","modal","productPickupOptionList","_renderQuantity","quantityComponent","callbacks","state","extentionResources","quantityLimitsMessages","max","quantity","id","currentCount","onChange","newValue","updateQuantity","inputQuantityAriaLabel","decrementButtonAriaLabel","incrementButtonAriaLabel","minQuantityText","maxQuantityText","_renderKeyInPrice","keyInPrice","input","_renderShopSimilarLook","shopSimilarItem","ModuleProps","MediaGalleryContainerProps","ProductInfoContainerProps","price","rating","inventoryLabel","shopSimilarLook","mediaGallery","slots","SocialShareView","SocialShareList","SocialShareItemElements","SocialShareItem","SocialShare","SocialShareElement","CookieComplianceAcceptButton","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","onClose","type","actionLinks","handleContentChange","content","visible","cookieRef","_onDismiss","bind","setState","acceptCookiesAriaLabel","moduleConfig","e","onDismiss","CookieComplianceBanner","AlertProps","color","fade","Content","acceptButton","setConsentCookie","location","reload","NavigationMenuView","currentLevel","escapeKey","_updateCategoryImage","categoryImageSrc","categoryImage","categoryImageAltText","_handleDropdownToggle","data","parentId","isMobileView","activeMenu","mobileViewLabelText","parentMenu","undefined","showCategoryImage","imageSource","_resetFocus","setTimeout","menuNode","current","focus","_handleClickOutside","contains","_escFunction","keyCode","_closeSubmenu","_getCategoryImage","alttext","categoryImageUrl","actionContext","apiSettings","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","lazyload","ImageData","categoryImageSettings","loadFailureBehavior","altText","document","body","addEventListener","removeEventListener","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","menuItem","_renderDrawerMenu","MenuList","tabIndex","_renderDisplay","subMenu","_renderDrawer","_renderLinkMenuItem","toggleButtonText","openGlyph","closeGlyph","glyphPlacement","_renderLinkText","menuSubItem","_renderDrawerLink","item","linkURL","_renderSpanMenuItem","ListItem","menuItemList","i","_getFromSubMenu","_createMenuItemList","subMenus","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","option","idx","hasOptions","haveSubmenu","Math","round","toString","_renderMenu","Button","onFocus","hoverEffect","Link","imagesource","onMouseOver","href","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","categoryImageDisplay","DivContainerClass","AccordionItem","moduleClassName","handleHeadingChange","accordionItemTitle","_onToggle","accordionExpandedStateResult","accordionExpandedState","result","expanded","isAllExpanded","isExpandedOnInitialLoad","AccordionItemContainer","AccordionItemContent","drawer","collapseProps","isOpen","onToggle","accordionSlots","interactionStyle","accordionState","update","_renderPromotions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","_renderCartlines","cartLines","backToShoppingButton","waitingComponent","cartLoadingStatus","cartDataResult","mulitplePickUp","emailDeliveryModeCode","emptyCartText","cartLine","cartline","_renderBOPISBlock","_renderGroupBOPISBlock","remove","pickUpInStore","DeliveryMode","shipInsteadDisplayText","shipToAddressDisplayText","pickItUpDisplayText","pickUpAtStoreWithLocationText","changeStoreDisplayText","isBopisSelected","PickupInStore","puckUpinStoreAttribute","orgUnitName","toggleBopis","_renderErrorBlock","errorData","Wrapper","header","_renderOrderSummarylines","orderSummaryLines","OrderSummaryItems","promoCode","subtotal","shipping","otherCharge","tax","totalDiscounts","orderTotal","_renderCartLinesGroup","cartLinesGroup","cartlines","_renderCartLinesGroupHeader","_countItems","channel","EmailDeliveryModeCode","mulitplePickUpEnabled","count","pickUpText","shippingText","emailshippingText","groupTitle","toLowerCase","_renderCartLinesGroupTitle","countItem","reduce","Quantity","itemLabel","itemsLabel","suffix","deliveryOption","renderModuleAttributes","promotionOptions","CartlinesWrapper","orderSummaryHeading","OrderSummaryWrapper","orderSummaryLineitems","OrderSummaryErrors","checkoutAsSignInUserButton","checkoutAsGuestButton","createTemplateFromCartButton","SignUpText","handleMemberHeadingChange","memberHeading","_issueLoyalty","user","isAuthenticated","clicked","then","window","assign","catch","debug","SignIn","loyaltySignInAttributes","SignUp","loyaltySignUpAttributes","LoyaltyDetailLink","loyaltyDetailsLinkAttributes","LoyaltyTermsLink","loyaltyTermsLinkAttributes","signInUrl","loyaltyCard","termsUrl","loyaltyJoinUrl","origin","signInurl","completeClass","hasLoyaltyAccount","CardTenderTypeValue","LoyaltySignUp","loading","status","signInLink","joinLoyaltyButtonText","signUpText","loyaltyProgramText","signUpButton","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","ProductSpecification","ProductSpecificationTableProps","ProductSpecificationTableBodyProps","productSpecificationResult","row","IFrameView","AddressShow","AddressDetail","items","AddressList","List","isShowList","Item","showItems","isShowPrimaryButton","primaryButton","editButton","removeButton","Error","isShowError","AddressLists","ListAddress","isShowEmptyListMessage","emptyListMessage","addButton","primaryAddressList","otherAddressList","AddressAddUpdate","AddressForm","hasError","isShowSaveButton","saveButton","isShowCancelButton","cancelButton","AddressItem","AddressError","AccountAddressManagement","viewState","showAddressList","showAddOrUpdateAddress","isShowAddresList","isShowAddOrUpdateAddress","disabled","errorClassName","GetMaxLength","maxLength","parsedMaxLength","parseInt","isNaN","pattern","forId","htmlFor","signInDisclaimer","handleSignInHeadingChange","signInHeading","handleSignUpHeadingChange","signUpHeading","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","clearInterval","isInitialized","emailRegex","emailId","SA_FIELDS","AttributeFields","ID","errorMessages","requiredField_email","requriedEmailError","requiredField_password","requriedPasswordError","invalid_email","invalidEmailError","invalid_password","invalidPasswordError","unknown_error","unknownError","Object","isShowLoading","signIn","modalBody","icon","loadingMessage","defaultAADConainer","style","display","aadConainer","signInSection","signInSectionHeading","signInLocalAccount","localAccount","_renderInput","emailAddressLabelText","emailAddressAriaLabel","passwordLabelText","passwordAriaLabel","forgetPassword","forgotPasswordButtonAriaLabel","forgotPasswordButtonText","disclaimer","signInButton","loginButtonAriaLabel","loginButtonText","signInSocialAccount","socialAccounts","_renderSocialAccount","facebookButtonText","facebookButtonAriaLabel","facebookIcon","microsoftButtonText","microsoftButtonAriaLabel","microsoftIcon","signUpSection","signUpSectionHeading","signUpDescription","signUpDescriptionText","signUpLink","signUpButtonAriaLabel","signUpButtonText","labelText","wrapper","iconImage","_createImageMarkup","OrderHistoryOrderInfomation","orderInformationProps","salesId","receiptId","channelName","createdDate","amount","channelReferenceId","OrderHistoryGroupDelivery","deliveryProps","processing","address","trackingInfo","OrderHistoryGroup","groupProps","delivery","salesLinesProps","salesLines","salesLine","LineId","OrderHistoryGroups","groupsProps","groups","group","OrderHistoryHeader","headerProps","orderCountLabel","extraActions","OrderHistorySalesOder","salesOrderProps","orderInfomation","orderDetailsLink","OrderHistoryList","listProps","salesOrders","salesOrder","orderHistoryProps","emptyMessage","backToShoppingLink","list","moreButton","inputRef","_validateMin","minValue","min","currentInput","isUpdateing","_onIncrement","_onDecrement","_handleChange","prevProps","glyphMinusClassName","decrementGlyphClass","glyphPlusClassName","incrementGlyphClass","decrementDisabled","isGiftCard","incrementDisabled","currentValue","DecrementQuantity","decrementAttributes","IncrementQuantity","incrementAttributes","extraClassDecrement","extraClassIncrement","onBlur","invokeCallback","currQuantity","updatedQuantity","inputElement","HTMLInputElement","setAttribute","defaultProps","signUpLinkText","viewLinkText","signUpLinkAriaLabel","viewLinkAriaLabel","accountLoyaltySummary","accountLoyaltyMemberSummary","url","CardNumber","points","RewardPoints","rewardPoint","ActivePoints","AccountLoyaltyTile","AccountGenericTile","SignUpItem","errorMessage","SignUpEmailVerification","email","buttonWrapper","buttons","successMessage","SignUpLoading","signUp","signUpLocalAccount","emailVerification","isRequired","verificationControlWrapper","LocalAccount","PickUpAtStoreComponent","PickUpAtStore","EmailDeliveryComponent","EmailDelivery","LineItemComponent","LineItem","pickUpAtStore","emailDelivery","LineItemGroupComponent","LineItemDeliveryGroup","LineItemList","lineItems","lineItem","LineItemGroupComponentWithMultiplePickUp","lineItemWraper","lineItemWraperIcon","LineItemComponentWithMultiplePickUp","PickUpAtStoreComponentWithMultiplePickUp","LineItemsComponent","LineItems","Header","editLink","itemsForPickup","itemsForShip","itemsForEmail","itemsGroupWithMulitplePickupMode","OrderSummaryComponent","lines","loyalty","giftCard","canShow","checkoutProps","hasSalesOrder","bodyProps","mainProps","mainControlProps","sideProps","sideControlFirstProps","sideControlSecondProps","termsAndConditionsProps","orderConfirmation","guidedForm","orderSummary","placeOrderButton","termsAndConditions","keepShoppingButton","isUpdatingAttributes","gotException","attributeClassName","maxIntegerLimit","minIntegerLimit","maxDecimalLimit","minDecimalLimit","maxStringLength","maxVATNumberLength","maxPhoneLength","_renderAttributes","accountProfileProps","attributeDefinitions","additionalInformationSectionHeading","elements","showAttributes","split","att","attributeDefinition","find","attribute","IsHidden","Name","RecordId","_renderAttribute","edit","editAttributes","attributesEditButtonText","attributesSaveButtonText","saveAttributes","attributesCancelButtonText","cancelAttributes","attributesContainerRef","showPhone","_renderPhone","showVatNumber","_renderVatNumber","attributesSaveExceptionMessage","_enableAttributes","innerRef","editRef","_saveAttributes","_disableAttributes","phoneSectionHeading","replace","_onPhoneChange","phone","_renderError","vatNumberSectionHeading","_onVatNumberChange","vatNumber","customAttribute","ExtDataType","Value","_renderIntegerDecimalInput","_renderTextInputOrSelect","_renderBoolean","attributeProps","_getAttributeProps","displayName","_onAttributeChange","IsMandatory","isEnumeration","IsEnumeration","EnumerationDetails","hasNoValue","_onAttributeSelect","selected","EnumerationValue","render","toggleState","arialabel","attributeToggleButtonAriaLabel","ariaPressed","toggleValue","toggleDisableText","_onAttributeCheck","toggleEnableText","attributeName","attributeError","isNullOrWhitespace","attributePayloadData","filter","name","isMandatory","isBrowser","getElementsByClassName","_setFocus","initialAttributes","initialPhone","initialVatNumber","currentTarget","selectedOptions","selectedIndex","_getAttributes","showAttributesArray","customer","customerInformation","custmerAttributes","Attributes","showAttribute","defaultValue","AttributeValue","DataTypeValue","IntegerValue","String","DecimalValue","StringValue","BooleanValue","keys","_addOrUpdateAttribute","hasValue","entries","payloadData","dataTypeValue","decimalValue","Number","typeError","attributeInputTypeErrorText","lowerBoundValue","upperBoundValue","rangeError","attributeInputRangeErrorText","attributeInputValueExceedsMaximumErrorText","attributeInputValueExceedsMinimumErrorText","integerValue","indexOf","trimValue","trim","attributeInputStringMaxLengthErrorText","textValue","booleanValue","attributeInputMandatoryErrorText","findIndex","splice","Attribute","recordId","Units","ExtensionProperties","NameTranslations","KeyName","Phone","VatNumber","async","AccountNumber","initialCustomerAttributes","element","_buildPayloadData","defaultIntegerValue","DefaultValue","LowerBound","UpperBound","defaultDecimalValue","defaultStringValue","defaultBooleanValue","_getCustomerPhoneAndVatNumber","isUpdatingPreference","handleEmailHeadingChange","emailAddressSectionHeading","handleNameHeadingChange","nameSectionHeading","editButtonText","_renderPreference","sectionHeading","enableAriaLabel","isOptOut","accountPreference","buttonYesText","buttonNoText","_updateAccountPersonalization","onUpdateAccountPreference","isOptOutPersonalization","preferenceType","OptOutWebActivityTracking","OptOutPersonalization","_renderCustomerAttributes","editButtonAriaLabel","shouldRenderAttributes","AccountProfile","accountProfileWrapper","emailSection","_renderEmailSection","Email","nameSection","_renderNameSection","FirstName","LastName","preferenceSection","_renderPreferenceSection","customerAttributesWrapper","customerAttributesSection","AccountProfileItem","personalizationDescription","personalizationEnableButtonAriaLabel","webTrackingDescription","webTrackingEnableButtonAriaLabel","preferencesSectionHeading","personalizationSectionHeading","webTrackingSectionHeading","enableDataAnalytics","features","extraPreferences","accountPreferences","personalization","TabContainer","tabHeaders","tabContents","headerSection","tabsSection","tabItemContainer","RequestStatementModal","isModalOpen","toggle","fromDateString","toDateString","onChangeFromDate","onChangeToDate","canSubmitRequest","modalHeaderLabel","sendToEmailLabel","fromDateLabel","toDateLabel","submitRequestLabel","cancelLabel","horizontalPosition","verticalPosition","autoFocus","ActionBar","onRequestStatement","requestStatementButtonLabel","AccountLabels","accountNumber","customerSincePrefix","createdOn","AccountValues","availableCredit","availableCreditLabel","CreditSummaryLabels","balanceOwed","creditExcess","CreditSummaryValues","BackButton","BackToShopping","_showRequestStatementModal","isStatementRequestModalOpen","_toggleModal","_updateFromDate","newFromDate","statementRequestFromDateString","_updateToDate","newToDate","statementRequestToDateString","account","includes","creditSummarySectionHeading","accountSectionHeading","backToShoppingText","balanceOwedLabel","creditExcessLabel","_formatJoinDate","Date","CreatedDateTime","excess","Balance","CreditLimit","_formatCurrency","backLink","emailAddress","isB2BUser","IsB2B","accountLabels","accountValues","creditSummaryLabels","creditSummaryValues","homeButton","actions","requestStatementModal","canSubmitStatementRequest","currency","currencyCode","formatCurrency","toFixed","date","Intl","DateTimeFormat","locale","month","day","year","format","AccountOrderTemplatesTileDescription","AccountOrderTemplatesTileLinks","RetailB2BEcommerceFeatureState","featureState","params","isEditor","IsEnabled","IsB2b","accountOrderTemplatesTileDescription","orderTemplates","orderTemplatesCount","AccountOrderTemplatesTile","ItemComponent","itemProps","checkoutPlainContainerProps","AccountWelcomeTile","histogramItem","buttonProps","starLabel","bar","percentage","histogramItems","histogramProps","MapHeader","MapProps","FooterItemView","FooterItem","_renderElement","HeadingContainer","EditableLink","AccountLoyalty","Info","Points","Breakdown","PointsBreakdown","infoLabel","cardNumber","joinDate","pointsLabel","rewardPoints","pointsModal","ModalBodyTop","ModalBodyHeaders","activity","availableModalLabel","availableModalTrigger","expiringModalLabel","expiringModalTrigger","returnFocusRef","modalClassName","zIndex","onClosed","modalHeaderClassName","modalHeader","modalBodyClassName","pointsDescription","totalPoints","balanceLabel","rewardPointsActivity","Activity","activityType","activityDate","activityPoints","PasswordResetVerificationItem","PasswordResetVerificationLoading","passwordResetVerification","passwordResetVerificationLocalAccount","verificationButtonsWrapper","verificationButtons","buttonsWrapper","verificationSuccessModal","verificationSuccessModalMessage","OrderTemplateListView","OrderTemplateList","statusMessage","OrderTemplates","OrderTemplate","createOrderTemplateButton","templateHeaderStatusMessage","orderTemplate","_renderOrderTemplate","addToCartButton","orderTemplateImage","orderTemplateStatusMessage","orderTemplateName","onTextBoxChange","givenName","surname","invalidEmailAddressError","obj","PRE","_htmlDecode","PAT","PAT_DESC","required_field","requiredFieldMissingError","verifying_blurb","accountProfileEdit","accountProfileEditLocalAccount","_renderLocalAccount","str","createElement","innerHTML","childNodes","nodeValue","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","requiredFieldMissingSummaryError","fieldIncorrectError","saveButtonAriaLabel","saveButtonText","cancelButtonText","showEmail","createReviewModal","form","inputRow","ratingLabel","titleLabel","titleInput","textLabel","textInput","privacyPolicyUrl","modalFooter","submitButton","signInMessage","modalToggle","reviewModal"],"mappings":"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","file":"static/js/4.1df23b58e3b27a98.chunk.js","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { ICheckoutCustomerAccountPaymentViewProps } from './checkout-customer-account-payment';\nimport { IAccountPaymentEditViewForm } from './components/get-account-payment-form-edit-mode';\nimport { IAccountPaymentSummaryViewForm } from './components/get-account-payment-form-summary-mode';\n\nexport const SummaryForm: React.FC = ({ formProps, label, paymentAmount, addPaymentButton, appliedLine, bottomBorder }) => (\n \n <>\n {label}\n {paymentAmount}\n {addPaymentButton}\n {appliedLine}\n {bottomBorder}\n \n \n);\n\nexport const EditForm: React.FC = ({ formProps, inputLabel, inputAmount, addPaymentButton, customerName, customerAccountNumber, customerSince, accountCredit, alert, accountDetails, appliedLine, bottomBorder }) => (\n \n <>\n\n {customerName}\n {customerAccountNumber}\n {customerSince}\n {accountCredit}\n {accountDetails}\n {inputLabel}\n {alert}\n {inputAmount}\n {addPaymentButton}\n {appliedLine}\n {bottomBorder}\n \n \n);\n\nconst CheckoutCustomerAccountView: React.FC = props => {\n const { checkoutCustomerAccount, summaryView, editView, moduleState } = props;\n return (\n \n {moduleState.isReady && summaryView && }\n {!moduleState.isReady && editView && }\n \n );\n};\n\nexport default CheckoutCustomerAccountView;\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 { Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport { IHeadingData, IIframeConfig, IIframeProps } from './iframe.props.autogenerated';\n\nexport interface IIframeViewProps extends IIframeProps {\n Heading: React.ReactNode;\n IframeContainer: IModuleProps;\n IFrame: React.ReactNode;\n alert?: React.ReactNode;\n cookieConsentAccepted?: boolean;\n}\n\n/**\n *\n * Iframe component\n * @extends {React.PureComponent}\n */\nclass Iframe extends React.PureComponent> {\n private iframeRef: React.RefObject;\n constructor(props: IIframeProps) {\n super(props);\n this.iframeRef = React.createRef();\n }\n public render(): JSX.Element | null {\n const { config, resources } = this.props;\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 (!(config && config.target && config.target.destinationUrl)) {\n return null;\n }\n\n let srcURL;\n try {\n srcURL = new URL(config.target.destinationUrl);\n } catch (error) {\n this.props.telemetry.exception(error);\n return null;\n }\n\n if (srcURL && srcURL.protocol && srcURL.protocol.toLocaleLowerCase() !== 'https:') {\n return null;\n }\n const iframeClassName = classnames('ms-iframe', config.className);\n\n let viewProps: IIframeViewProps = {\n ...(this.props as IIframeProps),\n Heading: this._createHeading(config.heading!),\n IframeContainer: {\n moduleProps: this.props,\n className: iframeClassName\n },\n IFrame: this._createIframe()\n };\n\n if (isConsentGiven === false) {\n viewProps = {\n ...viewProps,\n alert: this._renderAlert(resources.cookieConsentRequiredMessage)\n };\n } else {\n viewProps = {\n ...viewProps,\n cookieConsentAccepted : true\n };\n }\n return this.props.renderView(viewProps) as React.ReactElement;\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 _renderAlert(message: string): React.ReactNode | null {\n return (\n

\n {message}\n

);\n }\n\n private _createIframe(): React.ReactNode | null {\n const { config } = this.props;\n const targetURL = config.target.destinationUrl;\n\n return (\n // tslint:disable-next-line: react-iframe-missing-sandbox\n \n );\n }\n\n}\n\nexport default Iframe;\n","import { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport * as React from 'react';\nimport { ILinksData } from '../content-block.props.autogenerated';\n\nexport interface IContentCardLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component\n * @extends {React.PureComponent}\n */\nexport class ContentCardLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return(\n
\n { editableLinks && editableLinks.length ?\n \n : null\n }\n
\n );\n }\n\n private _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if(!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link,index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: btnClass,\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\nexport default ContentCardLinks;\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 { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport LinksComponent from './components/links';\nimport { actionableRegion as region, IContentBlockProps } from './content-block.props.autogenerated';\n\nexport interface IContentBlockViewProps extends IContentBlockProps<{}> {\n title?: React.ReactNode;\n text?: React.ReactNode;\n image?: React.ReactNode;\n links?: React.ReactNode;\n className?: string;\n contentBlockContainer: IModuleProps;\n imageContainer: INodeProps;\n detailsContainer: INodeProps;\n contentBlockAnchorTag?: INodeProps;\n imageLink?: string;\n imageAriaLabel?: string;\n}\n/**\n *\n * ContentCard component\n * @extends {React.PureComponent}\n */\n\nclass ContentBlock extends React.PureComponent> {\n private telemetryContent: ITelemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry);\n public render(): JSX.Element | null {\n const {\n heading,\n paragraph,\n image,\n links,\n className,\n imageAriaLabel\n } = this.props.config;\n const contentBlockTitle = heading && (\n \n );\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings || {},\n imageSettings: image && image.imageSettings,\n };\n const contentBlockLinks = links && links.length > 0 && (\n \n );\n const contentBlockText = paragraph && (\n \n );\n const contentBlockImage = image && (\n \n );\n\n if (\n !contentBlockTitle &&\n !contentBlockText &&\n !contentBlockImage &&\n !contentBlockLinks\n ) {\n this.props.context.telemetry.error(\n 'Content block content is empty, module wont render.'\n );\n return null;\n }\n\n const contentBlockviewProps = {\n ...this.props,\n title: contentBlockTitle,\n text: contentBlockText,\n image: contentBlockImage,\n links: contentBlockLinks,\n moduleClass: this.props.config.className,\n contentBlockContainer: {\n moduleProps: this.props,\n className: classnames('ms-content-block', className),\n },\n imageContainer: { className: 'ms-content-block__image' },\n detailsContainer: { className: 'ms-content-block__details' },\n contentBlockAnchorTag: {\n tag: 'a',\n className: 'ms-content-block__link',\n role: 'link',\n },\n imageLink: this._getImageLink(),\n imageAriaLabel\n };\n\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\n }\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading!.text = event.target.value;\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.paragraph = event.target.value;\n /* Handle link text change*/\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 private _getImageLink(): string | null {\n const { imageLink, links, actionableRegion } = this.props.config;\n if (actionableRegion === region.imageAndLinks) {\n if (imageLink && imageLink.destinationUrl) {\n return imageLink.destinationUrl;\n } else if (links && links.length && links[0].linkUrl) {\n return links[0].linkUrl.destinationUrl;\n } else {\n return null;\n }\n } else {\n return null;\n }\n }\n}\n\nexport default ContentBlock;\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 IBuyboxAddToCartViewProps,\n IBuyboxAddToOrderTemplateViewProps,\n IBuyboxAddToWishlistViewProps,\n IBuyboxCallbacks,\n IBuyboxData,\n IBuyboxFindInStoreViewProps,\n IBuyboxKeyInPriceViewProps,\n IBuyboxProductConfigureDropdownViewProps,\n IBuyboxProductConfigureViewProps,\n IBuyboxProductQuantityViewProps,\n IBuyboxProps,\n IBuyboxShopSimilarLookViewProps,\n IBuyboxState,\n IBuyboxViewProps\n } from '@msdyn365-commerce-modules/buybox';\n\nimport { ITelemetryContent, Module, Node } from '@msdyn365-commerce-modules/utilities';\n\nimport { IBuyboxProps as IBuyboxExtentionProps, IBuyboxResources as IBuyboxExtentionResources } from '../definition-extensions/buybox.ext.props.autogenerated';\nimport { Quantity } from '../utilities/quantity';\n\nconst BuyboxView: React.FC> = props => {\n const { ModuleProps, MediaGalleryContainerProps, ProductInfoContainerProps,\n addToCart, addToOrderTemplate, addToWishlist,\n telemetryContent, configure, description, findInStore,\n quantity, price, title, rating, callbacks, state, resources, inventoryLabel, shopSimilarLook, keyInPrice,\n quantityLimitsMessages, max } = props;\n\n return (\n \n \n {props.mediaGallery}\n \n \n {title}\n {price}\n {description}\n { _renderTextBlock(props.slots.textBlocks)}\n {rating}\n {configure && _renderConfigure(configure)}\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\n {quantity && _renderQuantity(quantity, callbacks, props, state, resources, quantityLimitsMessages, max, telemetryContent)}\n {inventoryLabel}\n { _renderCartAndActions(addToCart, addToOrderTemplate, addToWishlist)}\n {findInStore && _renderFindInStore(findInStore)}\n { _renderSocialShare(props.slots && props.slots?.socialShare)}\n {shopSimilarLook && _renderShopSimilarLook(shopSimilarLook)}\n \n \n );\n};\n\nconst _renderTextBlock = (textBlocks: React.ReactNode[]): JSX.Element | undefined => {\n if (!textBlocks || textBlocks.length === 0) {\n return undefined;\n }\n\n return (\n <>\n {textBlocks[0]}\n \n );\n};\n\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\n if (!socialShare || socialShare.length === 0) {\n return undefined;\n }\n\n return (\n <>\n {socialShare[0]}\n \n );\n};\n\nconst _renderCartAndActions = (\n addToCart?: IBuyboxAddToCartViewProps,\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps,\n addToWishlist?: IBuyboxAddToWishlistViewProps): JSX.Element | undefined => {\n if (!addToCart && !addToWishlist) {\n return undefined;\n }\n\n return (\n
\n {addToCart && addToCart.errorBlock}\n {addToOrderTemplate && addToOrderTemplate.errorBlock}\n {addToWishlist && addToWishlist.errorBlock}\n
\n {addToCart && addToCart.button}\n {addToOrderTemplate && addToOrderTemplate.button}\n {addToWishlist && addToWishlist.button}\n
\n
\n );\n};\n\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\n const { ContainerProps, dropdowns } = configure;\n\n return (\n \n {dropdowns.map(_renderConfigureDropdown)}\n \n );\n};\n\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\n\n return (\n \n \n {heading}\n {errors}\n \n {select}\n \n );\n};\n\nconst _renderFindInStore = (findInStore: IBuyboxFindInStoreViewProps): JSX.Element => {\n const { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = findInStore;\n\n return (\n \n {storeSelector}\n {heading}\n {productPickupOptionList}\n {description}\n {errors}\n {button}\n {modal}\n \n );\n};\n\nconst _renderQuantity = (\n quantityComponent: IBuyboxProductQuantityViewProps,\n callbacks: IBuyboxCallbacks,\n props: IBuyboxProps,\n state: IBuyboxState,\n extentionResources: IBuyboxExtentionResources,\n quantityLimitsMessages: React.ReactNode,\n max: number | undefined,\n telemetryContent?: ITelemetryContent): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\n\n const {\n resources\n } = props;\n\n const\n {\n quantity\n } = state;\n\n const onChange = (newValue: number): boolean => {\n if (callbacks.updateQuantity) {\n return callbacks.updateQuantity(newValue);\n }\n return true;\n };\n\n return (\n \n \n {heading}\n {errors}\n \n\n \n {quantityLimitsMessages}\n \n );\n};\n\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\n const {ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\n\n return(\n \n \n {heading}\n \n {input}\n \n\n );\n};\n\nconst _renderShopSimilarLook = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\n const { ContainerProps, errors, input } = shopSimilarItem;\n\n return (\n \n {errors}\n {input}\n \n );\n};\n\nexport default BuyboxView;\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 { 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 { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICookieComplianceAcceptButton {\n acceptCookiesButtonText?: string;\n acceptCookiesButtonAriaLabel?: string;\n /** The telemetry content */\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n}\n\nexport const CookieComplianceAcceptButton: React.FC = ({ acceptCookiesButtonText, acceptCookiesButtonAriaLabel, telemetryContent, onClose }) => {\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {acceptCookiesButtonText}\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, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport * as React from 'react';\nimport { IActionLinksData } from '../cookie-compliance.props.autogenerated';\n\nexport interface ICookieComplianceLinks {\n links: IActionLinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component\n * @extends {React.PureComponent}\n */\nexport class CookieComplianceLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return(\n \n {editableLinks && editableLinks.length ?\n \n : null\n }\n \n\n );\n }\n\n private _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\n if(!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link,index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\n\nexport default CookieComplianceLinks;","/*---------------------------------------------------------------------------------------------\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 { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport { CookieComplianceAcceptButton, CookieComplianceLinks} from './components';\nimport { ICookieComplianceConfig, ICookieComplianceProps } from './cookie-compliance.props.autogenerated';\n\nexport interface IAlertState {\n visible: boolean;\n}\n\nexport interface ICookieComplianceViewProps extends ICookieComplianceProps<{}> {\n CookieComplianceBanner: IModuleProps;\n AlertProps: IAlertProps;\n Content: INodeProps;\n text?: React.ReactNode;\n links?: React.ReactNode;\n acceptButton?: React.ReactNode;\n className: string;\n onDismiss(): void;\n}\n\n/**\n *\n * CookieCompliance component\n * @extends {React.PureComponent>}\n */\nclass CookieCompliance extends React.PureComponent, IAlertState> {\n private cookieRef: React.RefObject;\n private telemetryContent: ITelemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry);\n constructor(props: ICookieComplianceProps) {\n super(props);\n this.state = {visible:false};\n this.cookieRef = React.createRef();\n this._onDismiss = this._onDismiss.bind(this);\n }\n\n public componentDidMount(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\n this.setState({visible: true});\n }\n }\n\n public render(): JSX.Element | null {\n\n const { config, context, resources, telemetry } = this.props;\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\n const { visible } = this.state;\n\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\n let moduleConfig: ICookieComplianceConfig;\n\n try {\n moduleConfig = config;\n } catch(e) {\n telemetry.error(`Something went wrong while rendering the alert module ------${e}`);\n return
{e}
;\n }\n\n if (isConsentGiven && !visible) {\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\n return null;\n }\n\n const viewProps = {\n ...this.props,\n onDismiss: this._onDismiss,\n CookieComplianceBanner: {\n moduleProps: this.props,\n className: classnames('ms-cookie-compliance', moduleConfig.className),\n ref: this.cookieRef,\n },\n AlertProps: {\n className: 'ms-cookie-compliance__container',\n color: 'white',\n fade: false\n },\n Content: {\n className: 'ms-cookie-compliance__content'\n },\n text: moduleConfig.content && (\n \n ),\n links: moduleConfig.actionLinks && moduleConfig.actionLinks.length > 0 && (\n \n ),\n acceptButton: (\n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /* Handle link text change*/\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent) => {\n if(this.props.config.actionLinks && this.props.config.actionLinks[linkIndex]) {\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /* Handle text content change*/\n public handleContentChange = (event: MsDyn365.ContentEditableEvent) => this.props.config.content = event.target.value;\n\n private _onDismiss(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies) {\n context.request.cookies.setConsentCookie();\n location.reload();\n }\n this.setState({visible: false});\n }\n}\n\nexport default CookieCompliance;","/*---------------------------------------------------------------------------------------------\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 { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Drawer, getPayloadObject, getTelemetryAttributes, getTelemetryObject, IPayLoad, ITelemetryContent, Module, Node, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport { IImageData, IImageSettings, Image} from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?:string|null;\n mobileViewLabelText?: string;\n categoryImageAltText:string;\n}\n\n/**\n *\n * NavigationMenuView component\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private currentLevel: number = 0;\n private escapeKey:number = 27;\n private menuNode: React.RefObject;\n private telemetryContent: ITelemetryContent;\n private payLoad: IPayLoad;\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.state = {activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined,categoryImageAltText:''};\n this._closeSubmenu =this._closeSubmenu.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry);\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n document.body && document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body && document.body.addEventListener('mousedown', this._handleClickOutside);\n }\n\n public componentWillUnmount(): void {\n document.body && document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body && document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n }\n\n public render(): JSX.Element | null {\n const { isMobileView} = this.props;\n\n this.currentLevel = 1;\n return(\n \n {isMobileView\n ? this._renderMobileMenu()\n : this._renderDesktopMenu()\n }\n \n );\n }\n\n private _renderMobileMenu(): JSX.Element {\n const {isMobileView, menuItemData, Navigation}= this.props;\n return(\n \n {menuItemData.map((menuItem: IMenuItemData) => {\n return this._renderDrawerMenu(menuItem);\n })}\n \n );\n }\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation} = this.props;\n return (\n \n \n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDrawerMenu(menuItem: IMenuItemData): JSX.Element | null {\n if (menuItem && menuItem.subMenu && menuItem.subMenu.length > 0) {\n return (this._renderDrawer(menuItem));\n } else {\n return (this._renderLinkMenuItem(menuItem));\n }\n }\n\n private _renderDrawer(menuItem: IMenuItemData): JSX.Element | null {\n const toggleButtonText= menuItem.linkText;\n return (\n \n
\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\n return this._renderDrawerLink(menuSubItem);\n })}\n
\n
\n );\n }\n\n private _renderLinkText(linkText: string | undefined): JSX.Element {\n return (\n \n {linkText}\n \n );\n }\n\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\n return (\n this._renderLinkMenuItem(item)\n );\n } else if (item && item.linkText && !item.linkURL) {\n return (\n this._renderSpanMenuItem(item)\n );\n }\n return null;\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView} = this.props;\n const {activeMenu} = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for(let i = 0; i < menuItemData.length; i++) {\n if (menuItemData[i] && menuItemData[i].id === activeMenu) {\n menuItem = menuItemData[i];\n this.setState({parentMenu: undefined, mobileViewLabelText: menuItemData[i].linkText});\n break;\n }\n menuItem = this._getFromSubMenu(menuItemData[i]) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem && menuItemList.push (\n {this._createMenuItemList(menuItem)} \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push (\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for(let i = 0; i <= subMenus.length-1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n this.setState({parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText});\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return (this._renderSubMenu(menuItemData.subMenu, menuItemData.id));\n } else {\n return (\n \n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n }\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return (this._renderLinkMenuItem(menuItemData,menuItemData.id,false));\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return (this._renderSpanMenuItem(menuItemData));\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number,IsSubMenu?:boolean): JSX.Element | null {\n const {isMobileView, ListItem} = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || 3;\n // const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions = subMenus && subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = (option.subMenu && option.subMenu.length > 0);\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = (option.linkURL\n ? this._renderLinkMenuItem(option, idx)\n : this._renderSpanMenuItem(option)\n );\n }\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && (this.currentLevel <= Math.round(multiLevelSupportedMenu)-1);\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu?`level-${this.currentLevel.toString()}`:'';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined,true);\n }\n return (\n \n { menuItem }\n { subMenu }\n \n );\n });\n return (this._renderMenu(levelClassName, menuOptions, activeMenu,IsSubMenu));\n }\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const {Button} = this.props;\n return (\n \n { option.linkText }\n \n );\n }\n\n private _renderLinkMenuItem(option: IMenuItemData, index?: number,hoverEffect:boolean=true): JSX.Element | null {\n const {Link} = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource= option.imageSource ? option.imageSource :'';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n { option.linkText }\n \n );\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const {Span} = this.props;\n return (\n { option.linkText }\n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number,submenu?:boolean): JSX.Element | null {\n\n const {DivContainer, MenuList,ImageDivContainer,showCategoryImage,isMobileView} = this.props;\n const categoryImageDisplay = !isMobileView && showCategoryImage && this.state.categoryImage !==null && this.state.categoryImage !==undefined && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className:'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 && 'navmenu-multi-level') }>\n { menuOptions }\n \n {\n categoryImageDisplay && this.state.categoryImage &&(\n \n { this.state.categoryImage && this._getCategoryImage(this.state.categoryImage,this.state.categoryImageAltText) }\n )\n }\n \n );\n }\n private _updateCategoryImage=(categoryImageSrc:string,linkText:string) => ()=> {\n this.setState({\n categoryImage: categoryImageSrc !==''? categoryImageSrc :'empty',\n categoryImageAltText:linkText\n });\n }\n private _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: (this.state.activeMenu && this.state.activeMenu === data.id!) ? undefined : data.id!,\n parentMenu: parentId\n });\n if(this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!,data.linkText!)();\n }\n } else {\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n\n this._resetFocus();\n };\n\n private _resetFocus = () => {\n if (this.props.isMobileView) {\n setTimeout(() => {\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\n }, 0);\n }\n }\n\n // tslint:disable-next-line:no-any\n private _handleClickOutside = (event: any) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target)) {\n this.setState({activeMenu:undefined, mobileViewLabelText: ''});\n }\n };\n\n private _closeSubmenu():void {\n if (!this.props.isMobileView) {\n this.setState({activeMenu:undefined, mobileViewLabelText: ''});\n }\n }\n private _escFunction = (event:React.KeyboardEvent) => {\n\n if (event.keyCode === this.escapeKey) {\n this._closeSubmenu();\n }\n }\n private _getCategoryImage=(categoryImage:string,alttext:string):React.ReactNode|null => {\n\n const categoryImageUrl = generateImageUrl(`${categoryImage}`, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if(categoryImageUrl !== undefined) {\n const ImageData:IImageData = {src:categoryImageUrl};\n return (\n \n );\n }\n return null;\n }\n}\n\nexport default NavigationMenuView;","/*---------------------------------------------------------------------------------------------\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 { ControlledDrawer, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { IDrawerState } from '@msdyn365-commerce-modules/utilities/dist/types/drawer/Drawer';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { createAccordionStateInput } from '../../data-actions/accordion-state-data-action';\nimport { interactionStyle } from '../accordion/accordion.props.autogenerated';\nimport { IAccordionItemData } from './accordion-item.data';\nimport {IAccordionItemProps } from './accordion-item.props.autogenerated';\n\nexport interface IAccordionItemViewProps {\n AccordionItemContainer: IModuleProps;\n drawer: INodeProps;\n accordionSlots: INodeProps;\n AccordionItemContent: INodeProps;\n className: string;\n}\n\nexport interface IAccordionItemExtentedProps extends IAccordionItemProps {\n interactionStyle?: interactionStyle;\n}\n\n/**\n *\n * AccordionItem component\n * @extends {React.Component}\n */\n@observer\nclass AccordionItem extends React.Component {\n\n private moduleClassName: string = 'ms-accordion-item';\n private telemetryContent?: ITelemetryContent;\n\n constructor(props: IAccordionItemProps) {\n super(props);\n this._onToggle = this._onToggle.bind(this);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public render(): JSX.Element {\n const {slots, renderView, config, data } = this.props;\n const accordionExpandedStateResult = data && data.accordionExpandedState && data.accordionExpandedState.result;\n const expanded = accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded === undefined ?\n data && config.isExpandedOnInitialLoad :\n (accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded);\n const viewProps = {\n ... this.props,\n AccordionItemContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n AccordionItemContent: {\n className: 'ms-accordion-item-content',\n },\n drawer:{\n tag: ControlledDrawer,\n className: `${this.moduleClassName}__drawer`,\n toggleButtonText: (config.accordionItemTitle && config.accordionItemTitle) || '',\n collapseProps: {isOpen: expanded},\n onToggle: this._onToggle,\n onTextChange: this.handleHeadingChange,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n },\n accordionSlots: slots,\n };\n return renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.accordionItemTitle = event.target.value;\n\n private _onToggle(state: IDrawerState): void {\n if(!state.isOpen && this.props.interactionStyle === interactionStyle.ExpandOneItemOnly) {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n }\n }\n\n}\nexport default AccordionItem;","/*---------------------------------------------------------------------------------------------\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. 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 { IProductSpecificationViewProps } from './product-specification';\n\nconst ProductSpecificationView: React.FC = props => {\n const { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps, productSpecificationResult } = props;\n return (\n \n {props.title}\n \n \n {productSpecificationResult && productSpecificationResult.map((row) => {\n return row;\n })}\n \n \n \n );\n};\n\nexport default ProductSpecificationView;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { IIframeViewProps } from './iframe';\n\n/**\n *\n * IFrameView component\n * @extends {React.PureComponent}\n */\nexport class IFrameView extends React.PureComponent {\n\n public render(): JSX.Element | null {\n const { Heading, IframeContainer, IFrame, alert, cookieConsentAccepted } = this.props;\n\n return (\n \n {alert}\n {cookieConsentAccepted && cookieConsentAccepted === true ? (\n <>\n {Heading}\n {IFrame}\n ) : null}\n \n );\n }\n}\nexport default IFrameView;","/*---------------------------------------------------------------------------------------------\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';\n\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressList, IAddressListItem, IAddressListProps } from '../../common/components/address-list';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { IAccountManagementAddressViewProps } from './account-management-address';\n\nconst AddressShow: React.FC = ({\n AddressDetail,\n items\n}) => {\n\n return (\n \n {items && items.map((item: IAddressShowItem) => {\n return (\n <>\n {item.description}\n \n );\n })}\n \n );\n};\n\nconst AddressList: React.FC = ({\n List,\n isShowList,\n heading,\n items\n}) => {\n\n if (!isShowList) {\n return null;\n }\n\n return (\n \n {heading}\n {items && items.map((item: IAddressListItem) => {\n const { Item, key, error, showItems, isShowPrimaryButton, primaryButton, editButton, removeButton } = item;\n const { Error, isShowError, title, message } = error;\n return (\n \n {isShowError && \n {title}\n {message}\n }\n {isShowPrimaryButton && primaryButton}\n {editButton}\n {removeButton}\n );\n })}\n \n );\n};\n\nconst AddressLists: React.FC = ({\n ListAddress,\n heading,\n isShowEmptyListMessage,\n emptyListMessage,\n addButton,\n primaryAddressList,\n otherAddressList\n}) => {\n\n return (\n \n {heading}\n {isShowEmptyListMessage && emptyListMessage}\n {addButton}\n \n \n \n );\n};\n\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton,\n}) => {\n\n return (\n \n {heading}\n {items && items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n {label}\n {alert}\n {input}\n );\n })}\n {hasError && \n {error.title}\n {error.message}\n }\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\nconst AccountManagementAddressView: React.FC = props => {\n const { AccountAddressManagement, viewState, showAddressList, showAddOrUpdateAddress } = props;\n\n return (\n \n {viewState.isShowAddresList && }\n {viewState.isShowAddOrUpdateAddress && }\n \n );\n};\n\nexport default AccountManagementAddressView;\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 { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignInButton {\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 SignInButton: React.FC = ({ id, className, text, ariaLabel, telemetryContent, disabled, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {text}\n \n );\n};\n\nexport default SignInButton;\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 ISignInDescription {\n className: string;\n description: string;\n}\n\nconst SignInDescription: React.FC = ({ className, description }) => (\n

\n {description}\n

\n);\n\nexport default SignInDescription;\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 ISignInErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst SignInError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n\n};\n\nexport default SignInError;\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 ISignInInputProps {\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 ariaLabel?:string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface ISignInInput {\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 SignInInput: React.FC = ({\n id,\n type,\n value,\n pattern,\n className,\n maxLength,\n ariaLabel,\n onChange, }) => (\n \n );\n\nexport default SignInInput;\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 ISignInLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst SignInLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default SignInLabel;\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 React from 'react';\n\nexport interface ISignInLink {\n id?: string;\n className: string;\n href: string;\n ariaLabel: string;\n text: string;\n telemetryContent?: ITelemetryContent;\n}\n\nconst SignInLink: React.FC = ({ id, className, href, telemetryContent, ariaLabel, text }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {text}\n \n );\n};\n\nexport default SignInLink;\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 ISignInLoadingIcon {\n className: string;\n}\n\nconst SignInLoadingIcon: React.FC = ({ className }) => (\n
\n);\n\nexport default SignInLoadingIcon;\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 ISignInLoadingMessage {\n className: string;\n message: string;\n}\n\nconst SignInLoadingMessage: React.FC = ({ className, message }) => (\n
\n {message}\n
\n);\n\nexport default SignInLoadingMessage;\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 ISignInText {\n className: string;\n text: string;\n}\n\nconst SignInText: React.FC = ({ className, text }) => (\n \n {text}\n \n);\n\nexport default SignInText;\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 SignInButtonComponent from './components/sign-in-button';\nimport SignInDescriptionComponent from './components/sign-in-description';\nimport SignInErrorComponent from './components/sign-in-error';\nimport SignInInputComponent from './components/sign-in-input';\nimport SignInLabelComponent from './components/sign-in-label';\nimport SignInLinkComponent from './components/sign-in-link';\nimport SignInLoadingIconComponent from './components/sign-in-loading-icon';\nimport SignInLoadingMessageComponent from './components/sign-in-loading-message';\nimport SignInTextComponent from './components/sign-in-text';\nimport { ISignInConfig, ISignInProps, ISignInResources } from './sign-in.props.autogenerated';\n\nexport interface ISignInViewState {\n isShowLoading: boolean;\n}\n\nexport interface ISignInItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n error: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface ISignInSocialItem {\n key: string;\n button: INodeProps;\n image: React.ReactNode;\n text: React.ReactNode;\n}\n\nexport interface ISignInSocialAccount {\n socialAccounts: INodeProps;\n items: ISignInSocialItem[];\n}\n\nexport interface ISignInLocalAccount {\n localAccount: INodeProps;\n items: ISignInItem[];\n forgetPassword: React.ReactNode;\n disclaimer: React.ReactNode;\n error: React.ReactNode;\n signInButton: React.ReactNode;\n}\n\nexport interface ISignInLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ISignInViewProps {\n className: string;\n viewState: ISignInViewState;\n signIn: IModuleProps;\n loading: ISignInLoading;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n signInSection: INodeProps;\n signInSectionHeading: React.ReactNode;\n signInLocalAccount: ISignInLocalAccount;\n signInSocialAccount: ISignInSocialAccount;\n signUpSection: INodeProps;\n signUpSectionHeading: React.ReactNode;\n signUpDescription: React.ReactNode;\n signUpLink: React.ReactNode;\n}\n\n/**\n * SignIn component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component>}\n */\n@observer\nclass SignIn extends React.Component> {\n\n private moduleClassName: string = 'ms-sign-in';\n private telemetryContent?: ITelemetryContent;\n @observable private emailId: string;\n @observable private emailRegex: string;\n @observable private isInitialized: boolean;\n // tslint:disable-next-line:no-any\n private initializationTimer: any;\n\n constructor(props: ISignInProps) {\n super(props);\n this.emailRegex = '^[a-zA-Z0-9!#$%&'+^_`{}~-]+(?:\\.[a-zA-Z0-9!#$%&'+^_`{}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$';\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n this.emailId = 'logonIdentifier';\n }\n\n public componentDidMount(): void {\n this._prePopulateData();\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: ISignInConfig = this.props.config || {};\n const resources: ISignInResources = this.props.resources || {};\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n signIn: {\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 signInSection: {\n className: `${this.moduleClassName}__sign-in-section`\n },\n signInSectionHeading: ,\n signInLocalAccount: {\n localAccount: {\n className: `${this.moduleClassName}__account-items localAccount`\n },\n items: [\n this._renderInput(this.emailId, 'email', resources.emailAddressLabelText, resources.emailAddressAriaLabel, this.emailRegex),\n this._renderInput('password', 'password', resources.passwordLabelText, resources.passwordAriaLabel)\n ],\n forgetPassword: (\n ),\n disclaimer: config.signInDisclaimer && (\n \n ),\n error: ,\n signInButton: \n },\n signInSocialAccount: {\n socialAccounts: {\n className: `${this.moduleClassName}__social-accounts`\n },\n items: [\n this._renderSocialAccount('FacebookExchange', resources.facebookButtonText, resources.facebookButtonAriaLabel, config.facebookIcon),\n this._renderSocialAccount('MicrosoftAccountExchange', resources.microsoftButtonText, resources.microsoftButtonAriaLabel, config.microsoftIcon)\n ]\n },\n signUpSection: {\n className: `${this.moduleClassName}__sign-up-section`\n },\n signUpSectionHeading: ,\n signUpDescription: ,\n signUpLink: (\n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.signInDisclaimer = event.target.value;\n public handleSignInHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.signInHeading.text = event.target.value;\n public handleSignUpHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.signUpHeading.text = event.target.value;\n\n private _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 && window['CONTENT'] && window['CONTENT']['email_pattern']) {\n // tslint:disable-next-line:no-string-literal\n this.emailRegex = window['CONTENT']['email_pattern'];\n }\n\n // tslint:disable-next-line:no-string-literal\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // @ts-ignore\n this.emailId = (window.SA_FIELDS.AttributeFields || [])[0].ID || this.emailId;\n }\n }\n\n private _updateErrorMessage = () => {\n const resources: ISignInResources = this.props.resources || {};\n\n // tslint:disable-next-line:no-string-literal\n if (window && window['CONTENT']) {\n const errorMessages = {\n requiredField_email: resources.requriedEmailError,\n requiredField_password: resources.requriedPasswordError,\n invalid_email: resources.invalidEmailError,\n invalid_password: resources.invalidPasswordError,\n unknown_error: resources.unknownError,\n };\n\n // tslint:disable-next-line:no-string-literal\n Object.assign(window['CONTENT'], errorMessages);\n }\n }\n\n private _renderInput(id: string, type: string, labelText: string, ariaLabel: string, pattern?: string): ISignInItem {\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 error: (\n \n ),\n input: (\n \n )\n\n }\n );\n }\n\n private _renderSocialAccount(id: string, text: string, ariaLabel: string, iconImage?: Msdyn365.IImageData): ISignInSocialItem {\n return {\n key: id,\n button: {\n id: id,\n tag: 'button',\n className: classnames(`${this.moduleClassName}__social-account`, `${this.moduleClassName}__social-account-${id}`, 'accountButton', 'msc-btn'),\n 'aria-label': ariaLabel\n },\n image: this._createImageMarkup(iconImage),\n text: \n };\n }\n\n private _createImageMarkup(iconImage?: Msdyn365.IImageData): React.ReactNode | null {\n if (iconImage) {\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings || {},\n imageSettings: iconImage && iconImage.imageSettings\n };\n return ;\n }\n return null;\n }\n}\n\nexport default SignIn;","/*---------------------------------------------------------------------------------------------\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","import { getPayloadObject, getTelemetryAttributes, IPayLoad, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport { debounce } from 'lodash';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { IQuantityProps } from './Quantity.props';\n\ninterface IQuantityState {\n currentInput: number;\n isUpdateing: boolean;\n}\n/**\n * Quantity Component - This component is used to add or remove quantity\n */\n@observer\nexport default class Quantity extends React.PureComponent {\n public static defaultProps: Partial = {\n min: 1,\n decrementGlyphClass: 'fas fa-minus',\n incrementGlyphClass: 'fas fa-plus'\n };\n\n private inputRef: React.RefObject = React.createRef();\n private payLoad: IPayLoad;\n\n constructor(props: IQuantityProps) {\n super(props);\n this.state = { currentInput: props.currentCount || 1, isUpdateing: false };\n this._onIncrement = this._onIncrement.bind(this);\n this._onDecrement = this._onDecrement.bind(this);\n this._handleChange = this._handleChange.bind(this);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, '');\n }\n\n public componentDidUpdate(prevProps: IQuantityProps): void {\n if (!this.props.disabled && this.state.currentInput !== this.props.currentCount && prevProps.currentCount !== this.props.currentCount) {\n this.setState({ currentInput: this.props.currentCount || 1});\n }\n\n if (this.props.disabled && !this.state.isUpdateing) {\n this.setState({ isUpdateing: true });\n }\n\n if (!this.props.disabled && this.state.isUpdateing) {\n this.setState({ currentInput: this.props.currentCount || 1, isUpdateing: false });\n }\n }\n\n public render(): JSX.Element {\n const {\n min,\n max,\n } = this.props;\n\n const glyphMinusClassName: string = `${this.props.decrementGlyphClass!} quantity__controls-glyph`;\n const glyphPlusClassName: string = `${this.props.incrementGlyphClass!} quantity__controls-glyph`;\n const decrementDisabled = this.state.currentInput <= (min || 1) || this.props.isGiftCard;\n const incrementDisabled = this.state.currentInput >= max || this.props.isGiftCard;\n const currentValue = this.state.currentInput;\n this.payLoad.contentAction.etext = TelemetryConstant.DecrementQuantity;\n const decrementAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.IncrementQuantity;\n const incrementAttributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n\n let extraClassDecrement = '';\n if(decrementDisabled) {\n // The quantity has reached its boundaries (max or min)\n extraClassDecrement ='disabled';\n\n } else if(this.props.disabled) {\n // this.props.disabled shows if the state is not succeded yet\n extraClassDecrement = 'transition';\n }\n let extraClassIncrement = '';\n if(incrementDisabled) {\n // The quantity has reached its boundaries (max or min)\n extraClassIncrement ='disabled';\n } else if(this.props.disabled) {\n // this.props.disabled shows if the state is not succeded yet\n extraClassIncrement = 'transition';\n }\n\n return (\n <>\n
\n \n \n \n \n \n \n \n
\n \n );\n }\n\n private _onIncrement(): void {\n let invokeCallback = false;\n const currQuantity = this.state.currentInput;\n let updatedQuantity: number;\n\n if (currQuantity < this.props.max) {\n invokeCallback = true;\n updatedQuantity = currQuantity + 1 ;\n } else {\n invokeCallback = false;\n updatedQuantity = this.props.max;\n }\n\n if(invokeCallback && this.props.onChange) {\n if(this.props.onChange(updatedQuantity)) {\n this.setState({ currentInput: updatedQuantity });\n }\n }\n }\n\n private _onDecrement(): void {\n let invokeCallback = false;\n const currQuantity = this.state.currentInput;\n let updatedQuantity: number;\n\n if (currQuantity > 1) {\n invokeCallback = true;\n updatedQuantity = currQuantity - 1;\n } else {\n invokeCallback = false;\n updatedQuantity = 1;\n }\n\n if(invokeCallback && this.props.onChange) {\n if(this.props.onChange(updatedQuantity)) {\n this.setState({ currentInput: updatedQuantity });\n }\n }\n }\n\n private _handleChange(e: React.ChangeEvent): void {\n const currentValue = parseInt((e.target.value), 10);\n const minValue = this.props.min === undefined ? 1 : this.props.min;\n const inputElement = this.inputRef && this.inputRef.current && this.inputRef.current instanceof HTMLInputElement && this.inputRef.current;\n\n if (currentValue > this.props.max) {\n this.setState(\n { currentInput: this.props.max },\n () => {\n debounce(\n () => {\n // due of usage debouncer, we may ignore onChange return value\n this.props.onChange && this.props.onChange(this.state.currentInput);\n },\n 200)();\n }\n );\n } else {\n this.setState(\n { currentInput: currentValue },\n () => {\n debounce(\n () => {\n if(!isNaN(this.state.currentInput) && !(this.state.currentInput < minValue)) {\n // due of usage debouncer, we may ignore onChange return value\n this.props.onChange && this.props.onChange(this.state.currentInput);\n\n if (inputElement) {\n inputElement.setAttribute('aria-valuenow', currentValue.toString());\n inputElement.setAttribute('value', currentValue.toString());\n }\n }\n },\n 200)();\n }\n );\n }\n }\n\n private _validateMin = (): void => {\n const minValue = this.props.min === undefined ? 1 : this.props.min;\n if(isNaN(this.state.currentInput) || (this.state.currentInput < minValue)) {\n this.setState({ currentInput: minValue }, () => { this.props.onChange && this.props.onChange(this.state.currentInput); });\n } else {\n this.props.onChange && this.props.onChange(this.state.currentInput);\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 * 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 { IAccountGenericTileViewProps } from './account-generic-tile';\n\nconst AccountGenericTileView: React.FC = props => {\n const { AccountGenericTile, heading, links } = props;\n\n return (\n \n {heading}\n {links}\n \n );\n};\n\nexport default AccountGenericTileView;\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, Node } from '@msdyn365-commerce-modules/utilities';\n\nimport {\n ISignUpEmailVerification, ISignUpItem, ISignUpLoading, ISignUpLocalAccount, ISignUpViewProps\n} from './sign-up';\n\nconst SignUpItem: 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 SignUpEmailVerification: React.FC = ({\n email,\n buttonWrapper,\n buttons,\n successMessage,\n errorMessage\n}) => {\n return (\n <>\n \n {successMessage && successMessage.map((message: React.ReactNode) => {\n return (\n <>\n {message}\n \n );\n })}\n {errorMessage && errorMessage.map((message: React.ReactNode) => {\n return (\n <>\n {message}\n \n );\n })}\n \n {buttons && buttons.map((button: React.ReactNode) => {\n return (\n <>\n {button}\n \n );\n })}\n \n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n emailVerification,\n buttons,\n errorMessage,\n disclaimer\n}) => {\n\n return (\n \n {items && items.map((item: ISignUpItem) => {\n if (item.key === 'email' && emailVerification.isRequired) {\n return (\n \n \n \n \n );\n }\n return (\n \n );\n })}\n {errorMessage && errorMessage.map((error: React.ReactNode, index: number) => {\n return (\n \n {error}\n \n );\n })}\n {buttons && buttons.map((button: React.ReactNode, index: number) => {\n return (\n \n {button}\n \n );\n })}\n {disclaimer}\n \n );\n};\n\nconst SignUpLoading: 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 SignUpView: React.FC = props => {\n\n const {\n signUp,\n viewState,\n loading,\n defaultAADConainer,\n aadConainer,\n heading,\n signUpLocalAccount\n } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(signUpLocalAccount)}\n \n \n );\n};\n\nexport default SignUpView;\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 { ICheckoutViewProps, ILineItem, ILineItemDeliveryGroup, ILineItems, IOrderSummary, IPickUpAtStore } from './checkout';\nimport { IEmailDelivery } from './components';\n\nexport const PickUpAtStoreComponent: React.FC = ({ PickUpAtStore, label, location }) => (\n \n {label}\n {location}\n \n);\n\nexport const EmailDeliveryComponent: React.FC = ({ EmailDelivery, label }) => (\n \n {label}\n \n);\n\nexport const LineItemComponent: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => (\n \n {item}\n {pickUpAtStore && }\n {emailDelivery && }\n \n);\n\nexport const LineItemGroupComponent: React.FC = ({ LineItemDeliveryGroup, LineItemList, heading, lineItems }) => (\n \n {heading}\n \n {lineItems.map(lineItem => (\n \n ))}\n \n \n);\n\nexport const LineItemGroupComponentWithMultiplePickUp: React.FC = ({ LineItemDeliveryGroup, LineItemList, heading, lineItems, lineItemWraper, lineItemWraperIcon }) => (\n \n {lineItemWraperIcon}\n {lineItemWraper}\n {heading}\n \n {lineItems.map(lineItem => (\n \n ))}\n \n \n);\n\nexport const LineItemComponentWithMultiplePickUp: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => (\n \n {item}\n {emailDelivery && }\n \n);\n\nexport const PickUpAtStoreComponentWithMultiplePickUp: React.FC = ({ PickUpAtStore, label, location }) => (\n \n {label}\n {location}\n \n);\n\nexport const LineItemsComponent: React.FC = ({ LineItems, Header, heading, editLink, itemsForPickup, itemsForShip, itemsForEmail, itemsGroupWithMulitplePickupMode }) => (\n \n \n {heading}\n {editLink}\n \n {itemsGroupWithMulitplePickupMode === undefined && itemsForPickup && }\n {itemsGroupWithMulitplePickupMode === undefined && itemsForEmail && }\n {itemsGroupWithMulitplePickupMode === undefined && itemsForShip && }\n {itemsGroupWithMulitplePickupMode !== undefined ? itemsGroupWithMulitplePickupMode.map((item, index) => {\n return ;\n }) : null\n }\n \n);\n\nconst OrderSummaryComponent: React.FC = ({ heading, lines }) => (\n
\n {heading}\n
\n {lines && (\n <>\n {lines.subtotal}\n {lines.shipping}\n {lines.otherCharge}\n {lines.tax}\n {lines.totalDiscounts}\n {lines.loyalty}\n {lines.giftCard}\n {lines.orderTotal}\n \n )}\n
\n
\n);\n\nconst CheckoutView: React.FC = props => {\n const {\n canShow,\n checkoutProps,\n headerProps,\n hasSalesOrder,\n bodyProps,\n mainProps,\n mainControlProps,\n sideProps,\n sideControlFirstProps,\n sideControlSecondProps,\n termsAndConditionsProps,\n orderConfirmation,\n loading,\n alert,\n title,\n guidedForm,\n orderSummary,\n lineItems,\n placeOrderButton,\n termsAndConditions,\n keepShoppingButton\n } = props;\n\n return (\n \n {!hasSalesOrder && {title}}\n {!hasSalesOrder &&\n \n {loading}\n {alert}\n {canShow && (\n <>\n \n {guidedForm}\n \n {termsAndConditions}\n \n \n {placeOrderButton}\n {keepShoppingButton}\n \n \n \n {orderSummary && }\n \n \n {termsAndConditions}\n \n {placeOrderButton}\n {keepShoppingButton}\n \n {lineItems && }\n \n \n {termsAndConditions}\n \n {placeOrderButton}\n {keepShoppingButton}\n \n \n \n )}\n \n }\n {hasSalesOrder && orderConfirmation}\n \n );\n};\n\nexport default CheckoutView;\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 IAccountProfileText {\n className: string;\n text: string;\n}\n\nconst IAccountProfileText: React.FC = ({ className, text }) => (\n {text}\n);\n\nexport default IAccountProfileText;\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 { StringExtensions, updateCustomerAttributes, updateCustomerAttributesInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, format, getPayloadObject, getTelemetryAttributes, getTelemetryObject, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport MsDyn365, { IDictionary, Text } from '@msdyn365-commerce/core';\nimport { AttributeDefinition, Customer, CustomerAttribute } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport classnames from 'classnames';\nimport { observable, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { IAccountProfileData } from '../account-profile.data';\nimport { IAccountProfileProps } from '../account-profile.props.autogenerated';\nimport TextComponent from './account-profile-text';\n\ninterface IAttributePropertiesType {\n Name?: string;\n IsMandatory?: boolean;\n }\n\nexport interface IAccountProfileAttributesProps {\n accountProfileProps: IAccountProfileProps;\n}\n\nexport const enum AccountAttributeDataTypeValue {\n Decimal = 3,\n Integer = 4,\n Text = 5,\n TrueFalse = 6\n}\n\nexport interface IAttributePayloadData {\n recordId?: number;\n name?: string;\n dataTypeValue?: number;\n isEnumeration?: boolean;\n lowerBoundValue?: number;\n upperBoundValue?: number;\n decimalValue?: number;\n integerValue?: number;\n textValue?: string;\n booleanValue?: boolean;\n isMandatory?: boolean;\n defaultValue?: string;\n}\n\nexport interface IAccountProfileAttributesState extends React.ComponentState {\n editAttributes: boolean;\n phone: string;\n vatNumber: string;\n attributes: IDictionary;\n attributeError: IDictionary;\n}\n\n/**\n *\n * AccountProfileAttributes class\n * @extends {React.PureComponentIAccountProfileAttributesProps, IAccountProfileAttributesState>}\n */\n@observer\nclass AccountProfileAttributes extends React.Component {\n private attributePayloadData: IAttributePayloadData[];\n @observable private isUpdatingAttributes: boolean = false;\n @observable private gotException: boolean = false;\n private hasError: boolean = false;\n private telemetryContent?: ITelemetryContent;\n private initialAttributes: IDictionary;\n private initialCustomerAttributes?: CustomerAttribute[];\n private initialPhone: string;\n private initialVatNumber: string;\n private payLoad: IPayLoad;\n private editRef: React.RefObject;\n private readonly attributesContainerRef: React.RefObject;\n private readonly attributeClassName: string = 'ms-account-profile__attributes-element';\n private maxIntegerLimit: number = 2100000000;\n private minIntegerLimit: number = -2100000000;\n private maxDecimalLimit: number = 7900000000000;\n private minDecimalLimit: number = -7900000000000;\n private maxStringLength: number = 1000;\n private maxVATNumberLength: number = 20;\n private maxPhoneLength: number = 25;\n\n constructor(props: IAccountProfileAttributesProps) {\n super(props);\n this.state = {\n editAttributes: false,\n phone: '',\n vatNumber: '',\n attributes: {},\n attributeError: {}\n };\n this.initialAttributes = {};\n this.initialCustomerAttributes = [];\n this.initialPhone = '';\n this.initialVatNumber = '';\n this.attributePayloadData = [];\n const telemetryPageName = this.props.accountProfileProps && this.props.accountProfileProps.context && this.props.accountProfileProps.context.request && this.props.accountProfileProps.context.request.telemetryPageName || '';\n const friendlyName = this.props.accountProfileProps && this.props.accountProfileProps.friendlyName || '';\n const telemetry = this.props.accountProfileProps && this.props.accountProfileProps.telemetry || {};\n this.telemetryContent = getTelemetryObject(telemetryPageName, friendlyName, telemetry);\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n this.editRef = React.createRef();\n this.attributesContainerRef = React.createRef();\n }\n\n public componentDidMount(): void {\n this._buildPayloadData();\n this._getAttributes();\n this._getCustomerPhoneAndVatNumber();\n reaction(\n () => this.props.accountProfileProps.data.customerInformation.result,\n () => {\n const customerInformation = this.props.accountProfileProps.data.customerInformation.result;\n this.initialCustomerAttributes = customerInformation && customerInformation.Attributes;\n this._getAttributes();\n this._getCustomerPhoneAndVatNumber();\n }\n );\n reaction(\n () => this.props.accountProfileProps.data.attributeDefinitions.result,\n () => {\n this._buildPayloadData();\n }\n );\n }\n\n public render(): JSX.Element | null {\n return this._renderAttributes();\n }\n\n private _renderAttributes = (): JSX.Element | null => {\n const { config, data, resources } = this.props.accountProfileProps;\n const attributeDefinitions: AttributeDefinition[] = data.attributeDefinitions.result || [];\n const additionalInformationSectionHeading = config.additionalInformationSectionHeading && config.additionalInformationSectionHeading.text || '';\n const showAttributes = config.showAttributes || '';\n const attributes = showAttributes.split(',');\n const elements = attributes.map(att => {\n const attributeDefinition: AttributeDefinition = attributeDefinitions.find(attribute =>\n attribute.IsHidden === false && attribute.Name!.toLocaleLowerCase() === att.toLocaleLowerCase()\n ) || { RecordId: 0 };\n return this._renderAttribute(attributeDefinition);\n });\n const edit = this.state && this.state.editAttributes || false;\n this.payLoad.contentAction.etext = `${resources.attributesEditButtonText} ${additionalInformationSectionHeading}`;\n const editAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = `${resources.attributesSaveButtonText} ${additionalInformationSectionHeading}`;\n const saveAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = `${resources.attributesCancelButtonText} ${additionalInformationSectionHeading}`;\n const cancelAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n return (\n
\n {config.additionalInformationSectionHeading && (\n \n )}\n {config.showPhone && (\n this._renderPhone()\n )}\n {config.showVatNumber && (\n this._renderVatNumber()\n )}\n {elements}\n {this.gotException && (\n
\n \n
\n )}\n {!edit && (\n \n {resources.attributesEditButtonText}\n \n )}\n {edit && (\n \n {resources.attributesSaveButtonText}\n \n )}\n {edit && (\n \n {resources.attributesCancelButtonText}\n \n )}\n
\n );\n }\n\n private _renderPhone = (): JSX.Element | null => {\n const { phoneSectionHeading } = this.props.accountProfileProps.config;\n const heading = phoneSectionHeading && phoneSectionHeading.text || '';\n const className = heading && heading.replace(/ /g, '_') || '';\n const editAttributes = this.state && this.state.editAttributes || false;\n return (\n
\n {phoneSectionHeading && ()}\n \n {this._renderError('Phone')}\n
\n );\n }\n\n private _renderVatNumber = (): JSX.Element | null => {\n const { vatNumberSectionHeading } = this.props.accountProfileProps.config;\n const heading = vatNumberSectionHeading && vatNumberSectionHeading.text || '';\n const className = heading && heading.replace(/ /g, '_') || '';\n const editAttributes = this.state && this.state.editAttributes || false;\n return (\n
\n {vatNumberSectionHeading && ()}\n \n {this._renderError('VATNumber')}\n
\n );\n }\n\n private _renderAttribute = (customAttribute: AttributeDefinition): JSX.Element | null => {\n const editAttributes = this.state && this.state.editAttributes || false;\n const className = customAttribute.Name && customAttribute.Name.replace(/ /g, '_') || '';\n switch (customAttribute.ExtDataType && customAttribute.ExtDataType.Value) {\n case AccountAttributeDataTypeValue.Integer:\n case AccountAttributeDataTypeValue.Decimal:\n return this._renderIntegerDecimalInput(customAttribute, className, editAttributes);\n case AccountAttributeDataTypeValue.Text:\n return this._renderTextInputOrSelect(customAttribute, className, editAttributes);\n case AccountAttributeDataTypeValue.TrueFalse:\n return this._renderBoolean(customAttribute, className, editAttributes);\n default:\n return null;\n }\n }\n\n private _renderIntegerDecimalInput = (customAttribute: AttributeDefinition, className: string, editAttributes: boolean): JSX.Element | null => {\n const edit = this.state && this.state.editAttributes || false;\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\n const displayName: string = attributeProps?.Name || '';\n return (\n
\n \n \n {this._renderError(customAttribute.Name || '')}\n
\n );\n }\n\n // tslint:disable-next-line: cyclomatic-complexity\n private _renderTextInputOrSelect = (customAttribute: AttributeDefinition, className: string, editAttributes: boolean): JSX.Element | null => {\n const isEnumeration: boolean = customAttribute.IsEnumeration || false;\n const edit = this.state && this.state.editAttributes || false;\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\n const displayName: string = attributeProps?.Name || '';\n if (isEnumeration && customAttribute.EnumerationDetails) {\n const value = this.state.attributes[customAttribute.Name || ''] || '';\n const hasNoValue = value === '' ? true : false;\n return (\n
\n \n \n {hasNoValue && (;\n })}\n \n
\n );\n } else {\n return (\n
\n \n \n {this._renderError(customAttribute.Name || '')}\n
\n );\n }\n }\n\n private _renderBoolean = (customAttribute: AttributeDefinition, className: string, editAttributes: boolean): JSX.Element | null => {\n let value = this.state.attributes[customAttribute.Name || ''] || '';\n const hasNoValue = value === '' ? true : false;\n const render = (hasNoValue && !editAttributes) ? false : true;\n value = value || 'false';\n const toggleState = value === 'true' && 'enable' || 'disable';\n const arialabel = format(this.props.accountProfileProps.resources.attributeToggleButtonAriaLabel, customAttribute.Name);\n const ariaPressed = value === 'true' && true || false;\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\n const displayName: string = attributeProps?.Name || '';\n let toggleValue = 'false';\n if (value === 'true') {\n toggleValue = 'false';\n } else {\n toggleValue = 'true';\n }\n\n return (\n
\n \n {render && (\n
\n\n \n \n \n
\n )}\n
\n );\n }\n\n private _renderError = (attributeName: string): JSX.Element | null => {\n const error: string = this.state && this.state.attributeError && this.state.attributeError[attributeName] || '';\n const hasError = !StringExtensions.isNullOrWhitespace(error);\n if (hasError) {\n return (\n
\n \n
\n );\n }\n return null;\n }\n\n private _getAttributeProps = (attributeName: string): IAttributePropertiesType => {\n const attributePayloadData = this.attributePayloadData.filter((att) => att.name === attributeName);\n const isMandatory: boolean = attributePayloadData[0] && attributePayloadData[0].isMandatory || false;\n return {\n Name: isMandatory ? `${attributeName || ''} *` : attributeName || '',\n IsMandatory: isMandatory\n };\n }\n\n private _onPhoneChange = (event: React.ChangeEvent): void => {\n const value = event.target.value;\n this.setState({ phone: value });\n }\n\n private _onVatNumberChange = (event: React.ChangeEvent): void => {\n const value = event.target.value;\n this.setState({ vatNumber: value });\n }\n\n private _enableAttributes = () => {\n this.hasError = false;\n // To clear exception messages\n this.gotException = false;\n this.setState({ editAttributes: true, attributeError: {} });\n if (MsDyn365.isBrowser) {\n setTimeout(() => {\n if (this.attributesContainerRef?.current) {\n const attributes: HTMLCollectionOf = this.attributesContainerRef.current.getElementsByClassName(this.attributeClassName);\n if (attributes && attributes.length > 0) {\n this._setFocus(attributes[0] as HTMLElement);\n }\n }\n }, 0);\n }\n }\n\n private _disableAttributes = () => {\n this.setState({ editAttributes: false, attributeError: {}, attributes: this.initialAttributes, phone: this.initialPhone, vatNumber: this.initialVatNumber });\n if (MsDyn365.isBrowser) {\n setTimeout(() => {\n this._setFocus(this.editRef.current);\n }, 0);\n }\n }\n\n private _onAttributeChange = (attributeDefinition: AttributeDefinition) => (event: React.ChangeEvent) => {\n const value = event.target.value;\n const name = attributeDefinition.Name || '';\n this.setState({\n attributes: {\n ...this.state.attributes,\n [name]: value\n }\n });\n }\n\n private _onAttributeCheck = (attributeDefinition: AttributeDefinition, value: string) => (event: React.MouseEvent) => {\n const name = attributeDefinition.Name || '';\n this.setState({\n attributes: {\n ...this.state.attributes,\n [name]: value\n }\n });\n }\n\n private _onAttributeSelect = (attributeDefinition: AttributeDefinition) => (event: React.ChangeEvent) => {\n const value = event.currentTarget.selectedOptions[0].value;\n const index = event.currentTarget.selectedOptions[0].index;\n const name = attributeDefinition.Name || '';\n this.setState({\n attributes: {\n ...this.state.attributes,\n [name]: value\n },\n selectedIndex: {\n ...this.state.selectedIndex,\n [name]: index\n }\n });\n }\n\n private _getAttributes = () => {\n const { config, data } = this.props.accountProfileProps;\n const showAttributes = config.showAttributes || '';\n const showAttributesArray = showAttributes.split(',');\n const customer = data.customerInformation.result;\n const custmerAttributes: CustomerAttribute[] = customer && customer.Attributes || [];\n const attributes: IDictionary = {};\n // tslint:disable-next-line: cyclomatic-complexity\n showAttributesArray.forEach(showAttribute => {\n const attributePayloadData = this.attributePayloadData.filter((att) => att.name === showAttribute);\n const isMandatory: boolean = attributePayloadData[0] && attributePayloadData[0].isMandatory || false;\n const defaultValue = attributePayloadData[0] && attributePayloadData[0].defaultValue;\n const attribute = custmerAttributes.find((att) => att.Name === showAttribute);\n let value: string = '';\n if (attribute && attribute.AttributeValue) {\n const name = attribute && attribute.Name || '';\n switch (attribute.DataTypeValue) {\n case AccountAttributeDataTypeValue.Integer:\n if (attribute.AttributeValue.IntegerValue) {\n value = String(attribute.AttributeValue.IntegerValue);\n attributes[name] = value;\n }\n break;\n case AccountAttributeDataTypeValue.Decimal:\n if (attribute.AttributeValue.DecimalValue) {\n value = String(attribute.AttributeValue.DecimalValue);\n attributes[name] = value;\n }\n break;\n case AccountAttributeDataTypeValue.Text:\n if (attribute.AttributeValue.StringValue) {\n value = attribute.AttributeValue.StringValue;\n attributes[name] = value;\n }\n break;\n case AccountAttributeDataTypeValue.TrueFalse:\n if (attribute.AttributeValue.BooleanValue !== null) {\n value = String(attribute.AttributeValue.BooleanValue);\n attributes[name] = value;\n }\n break;\n default:\n // Do nothing\n }\n }\n if (StringExtensions.isNullOrWhitespace(value) && isMandatory) {\n attributes[showAttribute] = '';\n }\n if (value.length === 0 && defaultValue) {\n attributes[showAttribute] = String(defaultValue);\n }\n });\n if (Object.keys(this.initialAttributes).length === 0) {\n this.initialAttributes = attributes;\n }\n this.setState({ attributes: attributes });\n }\n\n // tslint:disable-next-line: cyclomatic-complexity max-func-body-length\n private _addOrUpdateAttribute = (customer: Customer) => {\n const { resources } = this.props.accountProfileProps;\n const { phone, vatNumber } = this.state;\n const attributeError: IDictionary = {};\n let hasError: boolean = false;\n let hasValue: boolean = true;\n for (const [key, value] of Object.entries(this.state.attributes)) {\n const payloadData: IAttributePayloadData = this.attributePayloadData.find(data => data.name === key) || {};\n if (payloadData) {\n switch (payloadData.dataTypeValue) {\n case AccountAttributeDataTypeValue.Decimal:\n const decimalValue = Number(value);\n if (isNaN(decimalValue)) {\n const typeError = format(resources.attributeInputTypeErrorText, payloadData.name, 'Decimal');\n attributeError[payloadData.name || ''] = typeError;\n hasError = true;\n } else {\n if (payloadData.lowerBoundValue !== undefined && payloadData.upperBoundValue !== undefined) {\n if (decimalValue < payloadData.lowerBoundValue || decimalValue > payloadData.upperBoundValue) {\n const rangeError = format(resources.attributeInputRangeErrorText, payloadData.name, payloadData.lowerBoundValue, payloadData.upperBoundValue);\n attributeError[payloadData.name || ''] = rangeError;\n hasError = true;\n }\n } else {\n if(decimalValue > this.maxDecimalLimit) {\n attributeError[payloadData.name || ''] = format(resources.attributeInputValueExceedsMaximumErrorText, payloadData.name, this.maxDecimalLimit);\n hasError = true;\n }\n\n if(decimalValue < this.minDecimalLimit) {\n attributeError[payloadData.name || ''] = format(resources.attributeInputValueExceedsMinimumErrorText, payloadData.name, this.minDecimalLimit);\n hasError = true;\n }\n }\n }\n\n if (!hasError) {\n if (StringExtensions.isNullOrWhitespace(value)) {\n hasValue = false;\n } else {\n payloadData.decimalValue = decimalValue;\n hasValue = true;\n }\n }\n break;\n case AccountAttributeDataTypeValue.Integer:\n const integerValue = Number(value);\n if (isNaN(integerValue) || value.indexOf('.') !== -1) {\n const typeError = format(resources.attributeInputTypeErrorText, payloadData.name, 'Integer');\n attributeError[payloadData.name || ''] = typeError;\n hasError = true;\n } else {\n if (payloadData.lowerBoundValue !== undefined && payloadData.upperBoundValue !== undefined) {\n if (integerValue < payloadData.lowerBoundValue || integerValue > payloadData.upperBoundValue) {\n const rangeError = format(resources.attributeInputRangeErrorText, payloadData.name, payloadData.lowerBoundValue, payloadData.upperBoundValue);\n attributeError[payloadData.name || ''] = rangeError;\n hasError = true;\n }\n } else {\n if (integerValue > this.maxIntegerLimit) {\n attributeError[payloadData.name || ''] = format(resources.attributeInputValueExceedsMaximumErrorText, payloadData.name, this.maxIntegerLimit);\n hasError = true;\n }\n\n if(integerValue < this.minIntegerLimit) {\n attributeError[payloadData.name || ''] = format(resources.attributeInputValueExceedsMinimumErrorText, payloadData.name, this.minIntegerLimit);\n hasError = true;\n }\n }\n }\n\n if (!hasError) {\n if (StringExtensions.isNullOrWhitespace(value)) {\n hasValue = false;\n } else {\n payloadData.integerValue = integerValue;\n hasValue = true;\n }\n }\n break;\n case AccountAttributeDataTypeValue.Text:\n let trimValue = '';\n if (!StringExtensions.isNullOrWhitespace(value)) {\n trimValue = value.trim();\n }\n if (trimValue.length > this.maxStringLength) {\n attributeError[payloadData.name || ''] = format(resources.attributeInputStringMaxLengthErrorText, payloadData.name, this.maxStringLength);\n hasError = true;\n }\n if (!hasError) {\n payloadData.textValue = trimValue;\n }\n break;\n case AccountAttributeDataTypeValue.TrueFalse:\n payloadData.booleanValue = value === 'true' ? true : false;\n break;\n default:\n // Do nothing\n }\n\n if (payloadData.isMandatory && StringExtensions.isNullOrWhitespace(value)) {\n attributeError[payloadData.name || ''] = format(resources.attributeInputMandatoryErrorText, payloadData.name);\n hasError = true;\n }\n\n const custmerAttributes: CustomerAttribute[] = customer && customer.Attributes || [];\n const attribute = custmerAttributes.find((att) => att.Name === key);\n const index = custmerAttributes.findIndex((att) => att.Name === key);\n\n if(index !== -1 && !hasValue) {\n custmerAttributes.splice(index,1);\n }\n\n if (!hasError && hasValue) {\n if (attribute) {\n attribute.Attribute = undefined;\n attribute.DataTypeValue = payloadData.dataTypeValue;\n attribute.Name = payloadData.name;\n attribute.RecordId = payloadData.recordId;\n attribute.Units = undefined;\n attribute.AttributeValue = {\n IntegerValue: payloadData.integerValue,\n BooleanValue: payloadData.booleanValue,\n StringValue: payloadData.textValue,\n DecimalValue: payloadData.decimalValue\n };\n attribute.ExtensionProperties = [];\n attribute.NameTranslations = [];\n } else {\n custmerAttributes.push({\n // @ts-ignore\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CustomerAttribute',\n Attribute: undefined,\n DataTypeValue: payloadData.dataTypeValue,\n KeyName: payloadData.name,\n Name: payloadData.name,\n RecordId: payloadData.recordId,\n Units: undefined,\n AttributeValue: {\n // @ts-ignore\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CommercePropertyValue',\n IntegerValue: payloadData.integerValue,\n BooleanValue: payloadData.booleanValue,\n StringValue: payloadData.textValue,\n DecimalValue: payloadData.decimalValue\n },\n 'ExtensionProperties@odata.type': '#Collection(Microsoft.Dynamics.Commerce.Runtime.DataModel.CommerceProperty)',\n ExtensionProperties: [],\n 'NameTranslations@odata.type': '#Collection(Microsoft.Dynamics.Commerce.Runtime.DataModel.TextValueTranslation)',\n NameTranslations: []\n });\n }\n }\n }\n }\n\n if (phone.trim().length > this.maxPhoneLength) {\n attributeError[`Phone`] = format(resources.attributeInputStringMaxLengthErrorText, 'Phone', this.maxPhoneLength);\n hasError = true;\n } else {\n customer.Phone = phone.trim();\n }\n\n if (vatNumber.trim().length > this.maxVATNumberLength) {\n attributeError[`VATNumber`] = format(resources.attributeInputStringMaxLengthErrorText, 'VAT Number', this.maxVATNumberLength);\n hasError = true;\n } else {\n customer.VatNumber = vatNumber.trim();\n }\n\n this.hasError = hasError;\n this.setState({ attributeError: attributeError });\n\n }\n\n private _saveAttributes = async () => {\n const { context, data } = this.props.accountProfileProps;\n const customer = data.customerInformation.result;\n\n if (customer && context) {\n this._addOrUpdateAttribute(customer);\n const input = new updateCustomerAttributesInput(customer.AccountNumber, customer.Attributes || [], context.request.apiSettings, customer.Phone, customer.VatNumber);\n\n this.isUpdatingAttributes = true;\n this.gotException = false;\n\n if (!this.hasError) {\n this.setState({ editAttributes: false });\n try {\n await updateCustomerAttributes(input, context.actionContext);\n } catch (error) {\n this.gotException = true;\n customer.Attributes = this.initialCustomerAttributes;\n if (context.telemetry) {\n context.telemetry.exception(error);\n context.telemetry.debug('Unable to update customer attributes');\n }\n this.setState({ attributeError: {}, attributes: this.initialAttributes, phone: this.initialPhone, vatNumber: this.initialVatNumber });\n }\n this.setState({ editAttributes: false });\n if (!this.gotException) {\n this.initialAttributes = this.state.attributes;\n this.initialCustomerAttributes = customer.Attributes;\n this.initialPhone = this.state.phone;\n this.initialVatNumber = this.state.vatNumber;\n }\n }\n\n this.isUpdatingAttributes = false;\n\n if (MsDyn365.isBrowser) {\n setTimeout(() => {\n this._setFocus(this.editRef.current);\n }, 0);\n }\n }\n }\n\n private _setFocus = (element: HTMLElement | null) => {\n element?.focus();\n }\n\n private _buildPayloadData = () => {\n const { data } = this.props.accountProfileProps;\n const attributeDefinitions = data.attributeDefinitions.result || [];\n const attributes: IDictionary = {};\n // tslint:disable-next-line: cyclomatic-complexity\n attributeDefinitions.forEach(attributeDefinition => {\n const attributePayloadData: IAttributePayloadData = {};\n attributePayloadData.recordId = attributeDefinition.RecordId;\n attributePayloadData.name = attributeDefinition.Name;\n attributePayloadData.dataTypeValue = attributeDefinition.DataTypeValue;\n attributePayloadData.isEnumeration = attributeDefinition.IsEnumeration;\n attributePayloadData.isMandatory = attributeDefinition.IsMandatory;\n switch (attributeDefinition.DataTypeValue) {\n case AccountAttributeDataTypeValue.Integer:\n const defaultIntegerValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.IntegerValue;\n attributePayloadData.lowerBoundValue = attributeDefinition.LowerBound && attributeDefinition.LowerBound.IntegerValue;\n attributePayloadData.upperBoundValue = attributeDefinition.UpperBound && attributeDefinition.UpperBound.IntegerValue;\n if (attributePayloadData.name && defaultIntegerValue) {\n attributePayloadData.defaultValue = String(defaultIntegerValue);\n attributes[attributePayloadData.name] = String(defaultIntegerValue);\n }\n break;\n case AccountAttributeDataTypeValue.Decimal:\n const defaultDecimalValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.DecimalValue;\n attributePayloadData.lowerBoundValue = attributeDefinition.LowerBound && attributeDefinition.LowerBound.DecimalValue;\n attributePayloadData.upperBoundValue = attributeDefinition.UpperBound && attributeDefinition.UpperBound.DecimalValue;\n if (attributePayloadData.name && defaultDecimalValue) {\n attributePayloadData.defaultValue = String(defaultDecimalValue);\n attributes[attributePayloadData.name] = String(defaultDecimalValue);\n }\n break;\n case AccountAttributeDataTypeValue.Text:\n const defaultStringValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.StringValue;\n if (attributePayloadData.name && defaultStringValue) {\n attributePayloadData.defaultValue = defaultStringValue;\n attributes[attributePayloadData.name] = defaultStringValue;\n }\n break;\n case AccountAttributeDataTypeValue.TrueFalse:\n const defaultBooleanValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.BooleanValue || false;\n if (attributePayloadData.name) {\n attributePayloadData.defaultValue = String(defaultBooleanValue);\n attributes[attributePayloadData.name] = String(defaultBooleanValue);\n }\n break;\n default:\n // do nothing\n }\n this.attributePayloadData.push(attributePayloadData);\n });\n Object.keys(attributes).length > 0 && this.setState({ attributes: attributes });\n }\n\n private _getCustomerPhoneAndVatNumber = () => {\n const customer = this.props.accountProfileProps.data.customerInformation.result;\n const phone = customer && customer.Phone || '';\n const vatNumber = customer && customer.VatNumber || '';\n this.setState({ phone: phone, vatNumber: vatNumber });\n if (this.initialPhone.length === 0) {\n this.initialPhone = phone;\n }\n if (this.initialVatNumber.length === 0) {\n this.initialVatNumber = vatNumber;\n }\n }\n}\n\nexport default AccountProfileAttributes;","/*---------------------------------------------------------------------------------------------\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 IAccountProfileDescription {\n className: string;\n description: string;\n}\n\nconst IAccountProfileDescription: React.FC = ({ className, description }) => (\n

{description}

\n);\n\nexport default IAccountProfileDescription;\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 IAccountProfileLinks {\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 AccountProfileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\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-profile__section-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 AccountProfileLinks;","/*---------------------------------------------------------------------------------------------\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 get from 'lodash/get';\nimport { computed, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { updateCustomerPersonalization, updateCustomerPersonalizationInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getPayloadObject, getTelemetryAttributes, getTelemetryObject, IModuleProps, INodeProps, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { Customer } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IAccountProfileData } from './account-profile.data';\nimport { IAccountProfileProps, IEmailAddressSectionHeadingData, IHeadingData, INameSectionHeadingData} from './account-profile.props.autogenerated';\nimport AccountProfileAttributes from './components/account-profile-attributes';\nimport DescriptionComponent from './components/account-profile-description';\nimport LinksComponent, { ILinksData } from './components/account-profile-links';\nimport TextComponent from './components/account-profile-text';\n\nexport interface IAccountPreference {\n accountPreference: INodeProps;\n heading: React.ReactNode;\n buttonWrapper: INodeProps;\n buttonYesText: React.ReactNode;\n buttonNoText: React.ReactNode;\n button: React.ReactNode;\n description: React.ReactNode;\n onUpdateAccountPreference(preferenceType?: string): void;\n}\n\nexport interface IAccountPreferences {\n accountPreferences: INodeProps;\n heading?: React.ReactNode;\n personalization: IAccountPreference;\n extraPreferences?: IAccountPreference[];\n}\n\nexport interface IAccountProfileItem {\n AccountProfileItem: INodeProps;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\nexport interface IAccountCustomerAttributes {\n customerAttributes?: React.ReactNode;\n}\n\nexport interface IAccountProfileViewProps extends IAccountProfileProps {\n AccountProfile: IModuleProps;\n accountProfileWrapper?: INodeProps;\n className: string;\n heading?: React.ReactNode;\n emailSection: IAccountProfileItem;\n nameSection: IAccountProfileItem;\n preferenceSection: IAccountPreferences;\n customerAttributesWrapper?: INodeProps;\n customerAttributesSection?: IAccountCustomerAttributes;\n}\n\n/**\n *\n * AccountProfile component\n * @extends {React.Component>}\n */\n@observer\nclass AccountProfile extends React.Component> {\n @observable private isUpdatingPreference: boolean = false;\n\n private telemetryContent?: ITelemetryContent;\n private payLoad: IPayLoad;\n\n constructor(props: IAccountProfileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n }\n\n public render(): JSX.Element {\n\n const { config, resources, data } = this.props;\n const { className, heading, emailAddressSectionHeading, nameSectionHeading, showAttributes, showPhone, showVatNumber } = config;\n\n const { editButtonText, editButtonAriaLabel } = resources;\n const customerInformation = data.customerInformation.result;\n\n // As per the design, phone and vat numbers are part of the profile attributes section\n const shouldRenderAttributes = (showAttributes && showAttributes.length > 0) || showPhone || showVatNumber || false;\n const editLink: ILinksData = {\n linkUrl: {\n destinationUrl: get(this.props, 'context.request.user.editProfileUrl', '')\n },\n linkText: editButtonText,\n ariaLabel: editButtonAriaLabel\n };\n\n const viewProps = {\n ...this.props,\n className: className,\n AccountProfile: {\n moduleProps: this.props,\n className: classnames('ms-account-profile', config.className)\n },\n accountProfileWrapper: {\n className: classnames('ms-account-profile-wrapper')\n },\n heading: heading && (\n ),\n emailSection: this._renderEmailSection(\n classnames('ms-account-profile__section', 'ms-account-profile__section-email'),\n emailAddressSectionHeading as IEmailAddressSectionHeadingData,\n customerInformation && customerInformation.Email\n ),\n nameSection: this._renderNameSection(\n classnames('ms-account-profile__section', 'ms-account-profile__section-name'),\n nameSectionHeading as INameSectionHeadingData,\n `${customerInformation && customerInformation.FirstName} ${customerInformation && customerInformation.LastName}`,\n [editLink]\n ),\n preferenceSection: this._renderPreferenceSection(\n classnames('ms-account-profile__section', 'ms-account-profile__section-preferences'),\n customerInformation,\n ),\n customerAttributesWrapper: {\n className: classnames('ms-account-profile__attributes-wrapper')\n },\n customerAttributesSection: shouldRenderAttributes && this._renderCustomerAttributes()\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 handleEmailHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.emailAddressSectionHeading!.text = event.target.value;\n public handleNameHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.nameSectionHeading!.text = event.target.value;\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if(this.props.resources.editButtonText) {\n this.props.resources.editButtonText = event.target.value;\n }\n };\n\n @computed get editProfileUrl(): string {\n return get(this.props, 'context.request.user.editProfileUrl', '');\n }\n private _renderEmailSection(className: string, heading?: IEmailAddressSectionHeadingData, description?: string, links?: ILinksData[]): IAccountProfileItem {\n return {\n AccountProfileItem: {\n className: className\n },\n heading: heading && (\n ),\n links: links && links.length > 0 && ,\n description: description && \n };\n }\n\n private _renderNameSection(className: string, heading?: INameSectionHeadingData, description?: string, links?: ILinksData[]): IAccountProfileItem {\n return {\n AccountProfileItem: {\n className: className\n },\n heading: heading && (\n ),\n links: links && links.length > 0 && ,\n description: description && \n };\n }\n private _renderPreferenceSection(className: string, customerInformation?: Customer): IAccountPreferences | null {\n const { personalizationDescription, personalizationEnableButtonAriaLabel,\n webTrackingDescription, webTrackingEnableButtonAriaLabel } = this.props.resources;\n const { preferencesSectionHeading, personalizationSectionHeading, webTrackingSectionHeading } = this.props.config;\n const { enableDataAnalytics } = this.props.context.request.features;\n const extraPreferences: IAccountPreference[] = [];\n\n if (!customerInformation) {\n this.props.context.telemetry.error('Account profile data is empty, module wont render');\n return null;\n }\n\n // show browser activity loggin preference if switch is enabled AND a heading is provided\n enableDataAnalytics && webTrackingSectionHeading &&\n extraPreferences.push(this._renderPreference('web-tracking', webTrackingSectionHeading as IHeadingData, webTrackingEnableButtonAriaLabel,\n webTrackingDescription, customerInformation.OptOutWebActivityTracking || false));\n\n return {\n accountPreferences: {\n className: className\n },\n heading: preferencesSectionHeading && (\n ),\n personalization: this._renderPreference('personalization', personalizationSectionHeading as IHeadingData, personalizationEnableButtonAriaLabel,\n personalizationDescription, customerInformation.OptOutPersonalization || false),\n extraPreferences: extraPreferences || undefined\n };\n }\n\n private _renderPreference = (className: string, sectionHeading: IHeadingData, enableAriaLabel: string, description: string, isOptOut: boolean) => {\n const { toggleDisableText, toggleEnableText } = this.props.resources;\n const toggleState = isOptOut ? 'disable' : 'enable';\n const onClickHandler = (event: React.MouseEvent) => { return this._updateAccountPersonalization(className); };\n this.payLoad.contentAction.etext = sectionHeading.text;\n const attributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n\n return {\n accountPreference: {\n className: classnames('ms-account-profile__preference', `ms-account-profile__preference-${className}`, { 'ms-account-profile__personalization-updating': this.isUpdatingPreference })\n },\n heading: sectionHeading && (\n ),\n buttonWrapper: {\n className: classnames('ms-account-profile__toggle-wrapper', `ms-account-profile__toggle-${toggleState}`)\n },\n buttonYesText: ,\n buttonNoText: ,\n button: (\n \n ),\n description: ,\n onUpdateAccountPreference: () => this._updateAccountPersonalization(className)\n };\n }\n\n private _updateAccountPersonalization = async (preferenceType?: string) => {\n const customerInformation = this.props.data.customerInformation.result;\n\n if (customerInformation) {\n const {\n telemetry,\n context: { request, actionContext }\n } = this.props;\n\n let isOptOutPersonalization = false;\n let input;\n\n switch (preferenceType) {\n case 'web-tracking':\n isOptOutPersonalization = customerInformation.OptOutWebActivityTracking || false;\n input = new updateCustomerPersonalizationInput(customerInformation.AccountNumber, !isOptOutPersonalization, request.apiSettings, preferenceType);\n break;\n case undefined:\n case 'personalization':\n default:\n isOptOutPersonalization = customerInformation.OptOutPersonalization || false;\n input = new updateCustomerPersonalizationInput(customerInformation.AccountNumber, !isOptOutPersonalization, request.apiSettings, preferenceType);\n }\n\n this.isUpdatingPreference = true;\n\n try {\n await updateCustomerPersonalization(input, actionContext);\n } catch (error) {\n if (telemetry) {\n telemetry.exception(error);\n telemetry.debug('Unable to update customer personalization');\n }\n }\n\n this.isUpdatingPreference = false;\n }\n }\n\n private _renderCustomerAttributes = (): React.ReactNode => {\n return (\n \n );\n }\n}\n\nexport default AccountProfile;\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 { ITabViewProps } from './tab';\n\nconst tabView: React.FC = props => {\n const { heading, TabContainer, tabHeaders, tabContents } = props;\n if(!props.heading && !props.tabHeaders && !props.tabContents) {\n props.context.telemetry.error('Tab content is empty, module wont render');\n return null;\n }\n return (\n \n \n {heading}\n \n \n {tabHeaders}\n \n \n {tabContents}\n \n \n );\n};\n\nexport default tabView;","import { Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\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 IAccountStatementRequestModalProps {\n email: string;\n isModalOpen: boolean;\n fromDateString: string;\n toDateString: string;\n canSubmitRequest: boolean;\n modalHeaderLabel: string;\n sendToEmailLabel: string;\n fromDateLabel: string;\n toDateLabel: string;\n submitRequestLabel: string;\n cancelLabel: string;\n toggle(): void;\n onChangeFromDate(newFromDate: string): void;\n onChangeToDate(newToDate: string): void;\n}\n\nexport const RequestStatementModal: React.FC = ({ email, isModalOpen, toggle, fromDateString, toDateString, onChangeFromDate, onChangeToDate, canSubmitRequest,\n modalHeaderLabel, sendToEmailLabel, fromDateLabel, toDateLabel, submitRequestLabel, cancelLabel }) => {\n\n const onChangeFromDateEvent = (e: React.ChangeEvent) => {\n const value = e.target.value;\n onChangeFromDate(value);\n };\n\n const onChangeToDateEvent = (e: React.ChangeEvent) => {\n const value = e.target.value;\n onChangeToDate(value);\n };\n\n return (\n \n {modalHeaderLabel}\n \n \n
\n
{email}
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n {' '}\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 { Button } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface IAccountCustomerBalanceActions {\n className?: string;\n requestStatementButtonLabel: string;\n onRequestStatement(): void;\n}\n\nexport const ActionBar: React.FC = ({ className, onRequestStatement, requestStatementButtonLabel }) => {\n return (\n
\n \n
\n );\n};","import { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\nexport * from './account-statement-request-modal';\nexport * from './account-actions';\n\ninterface IAccountLabel {\n name: string;\n accountNumber: string;\n createdOn: string;\n customerSincePrefix: string;\n}\n\ninterface IAccountValues {\n availableCredit: string;\n availableCreditLabel: string;\n}\n\ninterface ICreditSummaryLabel {\n availableCredit: string;\n balanceOwed: string;\n creditExcess: string | null;\n}\n\ninterface ICreditSummaryValues {\n availableCredit: string;\n balanceOwed: string;\n creditExcess: string | null;\n}\n\ninterface IBackButton {\n link: string;\n label: string;\n telemetryContent?: ITelemetryContent;\n}\n\nexport const AccountLabels: React.FC = ({ name, accountNumber, customerSincePrefix, createdOn }) => (\n
\n

{name}

\n
#{accountNumber}
\n
\n {customerSincePrefix} {createdOn}\n
\n
\n);\n\nexport const AccountValues: React.FC = ({ availableCredit, availableCreditLabel }) => (\n
\n
{availableCreditLabel}
\n
{availableCredit}
\n
\n);\n\nexport const CreditSummaryLabels: React.FC = ({ availableCredit, balanceOwed, creditExcess }) => (\n
\n
{availableCredit}
\n
{balanceOwed}
\n
{creditExcess}
\n
\n);\n\nexport const CreditSummaryValues: React.FC = ({ availableCredit, balanceOwed, creditExcess }) => (\n
\n
{availableCredit}
\n
{balanceOwed}
\n {creditExcess &&
{creditExcess}
}\n
\n);\n\nexport const BackButton: React.FC = ({ link, label, telemetryContent }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.BackToShopping);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {label}\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 { getTelemetryObject, Heading, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { get } from 'lodash';\nimport { computed } from 'mobx';\nimport * as React from 'react';\nimport { IAccountCustomerBalanceData } from './account-customer-balance.data';\nimport { HeadingTag, IAccountCustomerBalanceProps } from './account-customer-balance.props.autogenerated';\nimport { AccountLabels, AccountValues, ActionBar, BackButton, CreditSummaryLabels, CreditSummaryValues, RequestStatementModal } from './components';\n\nexport interface IAccountCustomerBalanceViewProps extends IAccountCustomerBalanceProps {\n heading: string;\n homeButton: React.ReactNode;\n accountSectionHeading: React.ReactNode;\n accountLabels: React.ReactNode;\n accountValues: React.ReactNode;\n creditSummarySectionHeading: React.ReactNode;\n creditSummaryLabels: React.ReactNode;\n creditSummaryValues: React.ReactNode;\n actions: React.ReactNode;\n requestStatementModal: React.ReactNode;\n}\n\nexport interface IAccountCustomerBalanceState {\n isStatementRequestModalOpen: boolean;\n statementRequestFromDateString: string;\n statementRequestToDateString: string;\n}\n\n/**\n *\n * AccountCustomerBalance component\n * @extends {React.PureComponent>}\n */\nclass AccountCustomerBalance extends React.PureComponent, IAccountCustomerBalanceState> {\n private telemetryContent?: ITelemetryContent;\n\n @computed get canSubmitStatementRequest(): boolean {\n return (this.state.statementRequestFromDateString !== '') && (this.state.statementRequestToDateString !== '');\n }\n\n constructor(props: IAccountCustomerBalanceProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n this.state = {\n isStatementRequestModalOpen: false,\n statementRequestFromDateString: '',\n statementRequestToDateString: ''\n };\n }\n\n public render(): JSX.Element | null {\n const customer = get(this.props, 'data.customerInformation.result');\n const account = get(this.props, 'data.balance.result');\n if ([customer, account].includes(undefined)) {\n this.props.context.telemetry.error('Customer data is unavailable, module will not render');\n return null;\n }\n\n const { config, resources, context } = this.props;\n const { heading } = config;\n const {\n creditSummarySectionHeading,\n accountSectionHeading,\n backToShoppingText,\n customerSincePrefix,\n availableCreditLabel,\n balanceOwedLabel,\n creditExcessLabel,\n requestStatementButtonLabel,\n modalHeaderLabel,\n sendToEmailLabel,\n fromDateLabel,\n toDateLabel,\n submitRequestLabel,\n cancelLabel\n } = resources;\n\n const { isStatementRequestModalOpen, statementRequestFromDateString, statementRequestToDateString } = this.state;\n\n const accountNumber = customer.AccountNumber;\n const createdOn = this._formatJoinDate(new Date(customer.CreatedDateTime));\n const name = `${customer.FirstName} ${customer.LastName}`;\n const excess = account.Balance - account.CreditLimit;\n const creditExcess = excess > 0 ? this._formatCurrency(excess) : null;\n const availableCredit = this._formatCurrency(account.CreditLimit - account.Balance);\n const balanceOwed = this._formatCurrency(account.Balance);\n const backLink = Msdyn365.getUrlSync('home', context.actionContext) || '';\n const emailAddress = customer.Email;\n\n const isB2BUser = customer.IsB2B;\n\n const viewProps = {\n ...this.props,\n heading: ,\n accountSectionHeading: ,\n accountLabels: (\n \n ),\n accountValues: ,\n creditSummarySectionHeading: ,\n creditSummaryLabels: (\n \n ),\n creditSummaryValues: (\n \n ),\n homeButton: ,\n actions: isB2BUser && ,\n requestStatementModal: (\n isB2BUser &&\n (\n \n )\n )\n };\n\n return this.props.renderView(viewProps);\n }\n\n private _formatCurrency(currency: number): string {\n const currencyCode = get(this.props, 'context.request.channel.Currency');\n const formatCurrency = get(this.props, 'context.cultureFormatter.formatCurrency');\n\n return `${formatCurrency(currency.toFixed(2), currencyCode)}`;\n }\n private _formatJoinDate(date: Date): string {\n const i14nDate = new Intl.DateTimeFormat(this.props.context.actionContext.requestContext.locale, {\n month: 'long',\n day: 'numeric',\n year: 'numeric'\n });\n\n return i14nDate.format(date);\n }\n\n private _showRequestStatementModal = (): void => {\n if (!this.state.isStatementRequestModalOpen) {\n this.setState({\n isStatementRequestModalOpen: true\n });\n }\n }\n\n private _toggleModal = (): void => {\n this.setState({\n isStatementRequestModalOpen: false\n });\n }\n\n private _updateFromDate = (newFromDate: string) => {\n this.setState({\n statementRequestFromDateString: newFromDate\n });\n }\n\n private _updateToDate = (newToDate: string) => {\n this.setState({\n statementRequestToDateString: newToDate\n });\n }\n}\n\nexport default AccountCustomerBalance;\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 *--------------------------------------------------------------------------------------------*/\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { ICheckoutSectionContainerItem, ICheckoutSectionContainerViewProps } from './checkout-section-container';\n\nconst ItemComponent: React.FC = ({ loading, itemProps, item }) => (\n <>\n {loading}\n {item}\n \n);\n\nconst CheckoutSectionContainerView: React.FC = ({ checkoutPlainContainerProps, items }) => (\n \n {items.map(item => (\n \n ))}\n \n);\n\nexport default CheckoutSectionContainerView;\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 { IAccountWelcomeTileViewProps } from './account-welcome-tile';\n\nconst AccountWelcomeTileView: React.FC = props => {\n const { AccountWelcomeTile, heading } = props;\n\n return (\n \n {heading}\n \n );\n};\n\nexport default AccountWelcomeTileView;\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 { IGroup, IGroupDelivery, IGroups, IHeader, IList, IOrderHistoryViewProps, IOrderInformation, ISalesOrder } from './order-history';\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 {delivery && }\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","/*---------------------------------------------------------------------------------------------\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 { IHistogramItemViewProps } from './component/components';\nimport { IRatingsHistogramViewProps } from './ratings-histogram';\n\nconst RatingsHistogramView: React.FC = props => {\n const {heading, histogramItems, histogramProps, moduleProps} = props;\n // tslint:disable\n return (\n \n {heading}\n \n {histogramItems.map(item => {\n return histogramItem(item);\n })}\n \n \n );\n};\n\nconst histogramItem = (props: IHistogramItemViewProps) => {\n return (\n \n {props.starLabel}\n {props.bar}\n {props.percentage}\n \n );\n};\n\nexport default RatingsHistogramView;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { IHeader, IMapViewProps } from './map';\n\nconst MapHeader: React.FC = ({ headerProps, heading }) => (\n \n {heading}\n \n);\n\nconst MapView: React.FC = ({\n ModuleProps,\n Header,\n MapProps\n}) => (\n \n {Header && }\n \n \n );\n\nexport default MapView;\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;","/*---------------------------------------------------------------------------------------------\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 { Modal, ModalBody, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\n\nimport { IAccountLoyaltyViewProps } from './account-loyalty';\n\nconst AccountLoyaltyView: React.FC = props => {\n\n const { AccountLoyalty, Info, Points, Breakdown, RewardPoints, PointsBreakdown, Button, heading, infoLabel, cardNumber, joinDate, pointsLabel, points, rewardPoints, homeButton, pointsModal } = props;\n const { ModalBodyTop, ModalBodyHeaders } = pointsModal;\n return (\n \n {heading}\n \n {infoLabel}\n {cardNumber}\n {joinDate}\n \n \n {pointsLabel}\n {points}\n\n \n {rewardPoints && rewardPoints.map((activity, index) => {\n return (\n // tslint:disable-next-line:jsx-key\n \n {activity.label}\n \n {activity.availableModalLabel}\n {activity.availableModalTrigger}\n \n\n \n {activity.expiringModalLabel}\n {activity.expiringModalTrigger}\n \n \n );\n })}\n \n \n\n \n {homeButton}\n \n\n {!pointsModal.isOpen &&\n ||\n \n\n \n {pointsModal.modalHeader}\n \n \n \n {pointsModal.pointsDescription}\n {pointsModal.totalPoints}\n \n \n {pointsModal.date}\n {pointsModal.balanceLabel}\n \n {pointsModal.rewardPointsActivity && pointsModal.rewardPointsActivity.map((activity, index) => {\n const { Activity, activityType, activityDate, activityPoints } = activity;\n return (\n \n {activityType}\n {activityDate}\n {activityPoints}\n \n );\n })}\n \n \n }\n \n );\n};\n\nexport default AccountLoyaltyView;\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, Node } from '@msdyn365-commerce-modules/utilities';\n\nimport {\n IPasswordResetVerificationItem, IPasswordResetVerificationLoading,\n IPasswordResetVerificationLocalAccount, IPasswordResetVerificationViewProps\n} from './password-reset-verification';\n\nconst PasswordResetVerificationItem: 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 verificationControlWrapper,\n items,\n successMessage,\n errorMessage,\n verificationButtonsWrapper,\n verificationButtons,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n\n return (\n \n \n {items && items.map((item: IPasswordResetVerificationItem) => {\n return (\n \n );\n })}\n {successMessage && successMessage.map((message: React.ReactNode, index: number) => {\n return (\n \n {message}\n \n );\n })}\n {errorMessage && errorMessage.map((error: React.ReactNode, index: number) => {\n return (\n \n {error}\n \n );\n })}\n \n {verificationButtons && verificationButtons.map((button: React.ReactNode, index: number) => {\n return (\n \n {button}\n \n );\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};\n\nconst PasswordResetVerificationLoading: 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 PasswordResetVerificationView: React.FC = props => {\n\n const {\n passwordResetVerification,\n viewState,\n loading,\n defaultAADConainer,\n aadConainer,\n heading,\n passwordResetVerificationLocalAccount\n } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(passwordResetVerificationLocalAccount)}\n \n \n );\n};\n\nexport default PasswordResetVerificationView;\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 {INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport { ISingleOrderTemplateViewProps } from './components';\nimport { IOrderTemplateListViewProps } from './order-template-list';\n\nexport const OrderTemplateListView: React.FC = props => {\n const { OrderTemplateList, status, statusMessage, heading, OrderTemplates, orderTemplates, OrderTemplate, createOrderTemplateButton, templateHeaderStatusMessage } = props;\n\n return (\n \n {heading}\n {status !== 'SUCCESS' && statusMessage}\n \n {createOrderTemplateButton}\n {templateHeaderStatusMessage}\n \n { OrderTemplates && orderTemplates && orderTemplates.length > 0 &&\n \n {orderTemplates && orderTemplates.map((orderTemplate) => {\n return _renderOrderTemplate(orderTemplate, OrderTemplate);\n })}\n \n }\n \n );\n};\n\nconst _renderOrderTemplate = (orderTemplate: ISingleOrderTemplateViewProps, OrderTemplate?: INodeProps): JSX.Element | null => {\n\n const { key, addToCartButton, orderTemplateImage, orderTemplateStatusMessage, removeButton, orderTemplateName } = orderTemplate;\n return (\n \n {orderTemplateName}\n {orderTemplateImage}\n {addToCartButton}\n {removeButton}\n {orderTemplateStatusMessage}\n \n );\n};\n\nexport default OrderTemplateListView;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { IAccountCustomerBalanceViewProps } from './account-customer-balance';\n\nexport default (props: IAccountCustomerBalanceViewProps) => {\n const {\n heading,\n accountSectionHeading,\n creditSummarySectionHeading,\n accountLabels,\n accountValues,\n creditSummaryLabels,\n creditSummaryValues,\n homeButton,\n actions,\n requestStatementModal\n } = props;\n\n return (\n \n {heading}\n {requestStatementModal}\n {actions}\n {accountSectionHeading}\n
\n {accountLabels}\n {accountValues}\n
\n {creditSummarySectionHeading}\n
\n {creditSummaryLabels}\n {creditSummaryValues}\n
\n {homeButton}\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 { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditButton {\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 AccountProfileEditButton: React.FC = ({ id, className, text, ariaLabel, disabled, telemetryContent, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {text}\n );\n};\n\nexport default AccountProfileEditButton;\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 IAccountProfileEditErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst AccountProfileEditError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n\n};\n\nexport default AccountProfileEditError;\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 IAccountProfileEditInputProps {\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 IAccountProfileEditInput {\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 AccountProfileEditInput: React.FC = ({\n id,\n type,\n value,\n pattern,\n className,\n maxLength,\n onChange }) => (\n \n );\n\nexport default AccountProfileEditInput;\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 IAccountProfileEditLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst AccountProfileEditLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default AccountProfileEditLabel;\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 IAccountProfileEditLoadingIcon {\n className: string;\n}\n\nconst AccountProfileEditLoadingIcon: React.FC = ({ className }) => (\n
\n);\n\nexport default AccountProfileEditLoadingIcon;\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 IAccountProfileEditLoadingMessage {\n className: string;\n message: string;\n}\n\nconst AccountProfileEditLoadingMessage: React.FC = ({ className, message }) => (\n
\n {message}\n
\n);\n\nexport default AccountProfileEditLoadingMessage;\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 Msdyn365 from '@msdyn365-commerce/core';\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';\n\nimport {\n IAccountProfileEditConfig, IAccountProfileEditProps\n} from './account-profile-edit.props.autogenerated';\nimport AccountProfileEditButtonComponent from './components/account-profile-edit-button';\nimport AccountProfileEditErrorComponent from './components/account-profile-edit-error';\nimport AccountProfileEditInputComponent from './components/account-profile-edit-input';\nimport AccountProfileEditLabelComponent from './components/account-profile-edit-label';\nimport AccountProfileEditLoadingIconComponent from './components/account-profile-edit-loading-icon';\nimport AccountProfileEditLoadingMessageComponent from './components/account-profile-edit-loading-message';\n\nexport interface IAccountProfileEditViewState {\n isShowLoading: boolean;\n}\n\nexport interface IAccountProfileEditItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAccountProfileEditLocalAccount {\n localAccount: INodeProps;\n items: IAccountProfileEditItem[];\n errorMessage: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IAccountProfileEditLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAccountProfileEditViewProps {\n className: string;\n viewState: IAccountProfileEditViewState;\n loading: IAccountProfileEditLoading;\n accountProfileEdit: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n accountProfileEditLocalAccount: IAccountProfileEditLocalAccount;\n}\n\n/**\n *\n * AccountProfileEdit component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component>}\n */\n@observer\nclass AccountProfileEdit extends React.Component> {\n\n private moduleClassName: string = 'ms-account-profile-edit';\n private telemetryContent: ITelemetryContent;\n @observable private givenName: string;\n @observable private surname: string;\n @observable private email: string;\n @observable private emailRegex: string;\n\n @observable private isInitialized: boolean;\n\n // tslint:disable-next-line:no-any\n private initializationTimer: any;\n\n constructor(props: IAccountProfileEditProps) {\n super(props);\n this.givenName = '';\n this.surname = '';\n this.email = '';\n this.emailRegex = '^[a-zA-Z0-9.!#$%&\\^_`{}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$';\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 accountProfileEdit: {\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 && config.heading.text && (\n \n ),\n accountProfileEditLocalAccount: this._renderLocalAccount()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading.text = event.target.value;\n\n public onTextBoxChange = (event: React.ChangeEvent) => {\n const id = event.target.id;\n const value = event.target.value;\n\n switch (id.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.emailRegex = value;\n break;\n }\n default:\n }\n };\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 const { resources } = this.props;\n const invalidEmailAddressError = resources.invalidEmailAddressError || 'Please enter a valid email address.';\n\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; PRE: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string }) => {\n const value = obj.PRE ? this._htmlDecode(obj.PRE) : '';\n switch (obj.ID.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.email = value;\n this.emailRegex = obj.PAT;\n obj.PAT_DESC = invalidEmailAddressError;\n break;\n }\n default:\n }\n\n });\n }\n }\n\n private _htmlDecode(str: string): string {\n const e = document.createElement('div');\n // tslint:disable-next-line:no-inner-html\n e.innerHTML = str;\n return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue || '';\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 required_field: resources.requiredFieldMissingError,\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(): IAccountProfileEditLocalAccount {\n const { config, resources } = this.props;\n const localAccount = {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('givenName', 'text', this.givenName, resources.firstNameLabelText, resources.firstNameMaxLength),\n this._renderInput('surname', 'text', this.surname, resources.lastNameLabelText, resources.lastNameMaxLength),\n ],\n errorMessage: [\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 if (config.showEmail && this.email !== '') {\n localAccount.items.push(this._renderInput('email', 'email', this.email, resources.emailAddressLabelText, undefined, this.emailRegex));\n }\n\n return localAccount;\n }\n\n private _renderInput(id: string, type: string, value: string, labelText: string, maxLength?: string, pattern?: string): IAccountProfileEditItem {\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 AccountProfileEdit;\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 { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport {IReviewModalViewProps} from '../../common/review-modal';\nimport { IWriteReviewViewProps } from './';\n\nconst WriteReviewView: React.FC = props => {\n const { heading, signInMessage, signInButton, modalToggle, reviewModal, moduleProps } = props;\n const isAuthenticated = props.context.request.user.isAuthenticated;\n return (\n \n {heading}\n {!isAuthenticated ?\n <>\n {signInMessage}\n {signInButton}\n \n :\n <>\n {modalToggle}\n {createReviewModal(reviewModal, moduleProps)}\n \n }\n \n );\n};\n\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\n return (\n \n {props.modalHeader}\n \n \n \n {props.rating}\n {props.ratingLabel}\n \n \n {props.titleLabel}\n {props.titleInput}\n \n \n {props.textLabel}\n {props.textInput}\n \n {props.privacyPolicyUrl}\n {props.error}\n \n \n \n {props.submitButton}\n {props.cancelButton}\n \n \n );\n};\n\nexport default WriteReviewView;"],"sourceRoot":""}