{"version":3,"sources":["webpack:///./src/modules/shipping-service/shipping-service.tsx?5d36","webpack:///src/modules/fabrikam/views/buybox.view.tsx?68a7","webpack:///src/modules/account-address-tile/account-address-tile.view.tsx?0b73","webpack:///src/modules/account-invoice-tile/components/account-invoice-tile-description.tsx?0029","webpack:///src/modules/account-invoice-tile/components/account-invoice-tile-links.tsx?d307","webpack:///src/modules/account-invoice-tile/account-invoice-tile.tsx?9a78","webpack:///src/modules/fabrikam/views/navigation-menu.view.tsx?5991","webpack:///src/modules/fabrikam/views/cart.view.tsx?8115","webpack:///src/modules/aad-generic/aad-generic.view.tsx?ecad","webpack:///src/modules/accordion/accordion.view.tsx?8c70","webpack:///src/modules/account-wishlist-tile/components/account-wishlist-tile-description.tsx?c387","webpack:///src/modules/account-wishlist-tile/components/account-wishlist-tile-links.tsx?3c8d","webpack:///src/modules/account-wishlist-tile/account-wishlist-tile.tsx?8a2b","webpack:///src/modules/aad-generic/aad-generic.tsx?d537","webpack:///src/modules/account-address-tile/components/account-address-tile-description.tsx?88b9","webpack:///src/modules/account-address-tile/components/account-address-tile-links.tsx?7e3f","webpack:///src/modules/account-address-tile/account-address-tile.tsx?4565","webpack:///src/modules/fabrikam/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/promo-banner-cookie/promo-banner-cookie.tsx?d3ce","webpack:///src/modules/navigation-menu/navigation-menu.tsx?390c","webpack:///./src/modules/lightbox/lightbox.tsx?fa91","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/account-wishlist-tile/account-wishlist-tile.view.tsx?58da","webpack:///./src/themes/emp/views/checkout-delivery-options.view.tsx?c8fe","webpack:///src/modules/organization-users-tile/organization-users-tile.view.tsx?d92a","webpack:///src/modules/account-profile/account-profile.view.tsx?b442","webpack:///src/modules/account-welcome-tile/account-welcome-tile.tsx?abcf","webpack:///src/modules/map/map.tsx?e2df","webpack:///./src/modules/smwe-iframe/smwe-iframe.tsx?9843","webpack:///src/modules/footer-item/footer-item.tsx?f8b4","webpack:///src/modules/account-loyalty-tile/account-loyalty-tile.view.tsx?c661","webpack:///src/modules/accordion/accordion.tsx?45c1","webpack:///src/modules/account-welcome-tile/account-welcome-tile.view.tsx?a13c","webpack:///src/modules/navigation-menu/navigation-menu.view.tsx?df40","webpack:///src/modules/account-invoice-tile/account-invoice-tile.view.tsx?4620","webpack:///./src/modules/smwe-iframe/smwe-iframe.view.tsx?5b22","webpack:///src/modules/map/map.view.tsx?cd35","webpack:///src/modules/footer-item/footer-item.view.tsx?235e","webpack:///src/modules/organization-users-tile/components/account-organization-users-tile-description.tsx?8d2f","webpack:///src/modules/organization-users-tile/components/account-organization-users-tile-links.tsx?2a03","webpack:///src/modules/organization-users-tile/organization-users-tile.tsx?9c60"],"names":["ShippingService","React","render","this","props","config","content","defaultImageSettings","viewports","xs","q","w","h","lg","lazyload","className","heading","Heading","headingTag","tag","text","image","Image","Object","gridSettings","context","request","imageSettings","paragraph","dangerouslySetInnerHTML","getRichTextHtml","links","length","map","cta","index","key","role","title","linkText","href","linkUrl","destinationUrl","ariaLabel","target","openInNewTab","undefined","_renderTextBlock","textBlocks","_renderSocialShare","socialShare","_renderCartAndActions","addToCart","addToOrderTemplate","addToWishlist","errorBlock","button","_renderConfigure","configure","ContainerProps","dropdowns","Node","_renderConfigureDropdown","dropdown","LabelContainerProps","errors","select","_renderFindInStore","findInStore","storeSelector","description","modal","productPickupOptionList","_renderQuantity","quantityComponent","callbacks","state","extentionResources","quantityLimitsMessages","max","telemetryContent","resources","quantity","Quantity","id","currentCount","onChange","newValue","updateQuantity","inputQuantityAriaLabel","decrementButtonAriaLabel","incrementButtonAriaLabel","minQuantityText","maxQuantityText","_renderKeyInPrice","keyInPrice","input","_renderShopSimilarLook","shopSimilarItem","BuyboxView","ModuleProps","MediaGalleryContainerProps","ProductInfoContainerProps","price","rating","inventoryLabel","shopSimilarLook","Module","mediaGallery","slots","AccountAddressTileView","AccountAddressTile","AccountInvoiceTileDescription","_mapEditableLinks","linkdata","editableLinks","payLoad","getPayloadObject","forEach","link","contentAction","etext","attributes","getTelemetryAttributes","editableLink","additionalProperties","push","AccountInvoiceTileLinks","requestContext","onTextChange","Msdyn365","editProps","AccountInvoiceTile","constructor","super","handleHeadingChange","event","value","handleLinkTextChange","linkIndex","getTelemetryObject","telemetryPageName","friendlyName","telemetry","data","cultureFormatter","formatCurrency","currencyCode","accountInvoiceTileDescription","invoiceTotalAmount","openinvoiceAmount","invoices","result","invoiceItem","AmountBalance","toFixed","format","viewProps","moduleProps","classnames","onEdit","LinksComponent","renderView","NavigationMenuView","currentLevel","escapeKey","_updateCategoryImage","categoryImageSrc","setState","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","isMobileView","activeMenu","mobileViewLabelText","parentMenu","showCategoryImage","imageSource","_resetFocus","setTimeout","menuNode","current","focus","_handleClickOutside","contains","_escFunction","keyCode","_closeSubmenu","_getCategoryImage","alttext","categoryImageUrl","generateImageUrl","actionContext","apiSettings","sm","md","ImageData","src","categoryImageSettings","loadFailureBehavior","altText","bind","componentDidMount","document","body","addEventListener","componentWillUnmount","removeEventListener","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","menuItem","_renderDrawerMenu","MenuList","ref","tabIndex","_renderDisplay","subMenu","_renderDrawer","_renderLinkMenuItem","toggleButtonText","Drawer","openGlyph","closeGlyph","glyphPlacement","_renderLinkText","menuSubItem","_renderDrawerLink","item","linkURL","_renderSpanMenuItem","ListItem","menuItemList","i","_getFromSubMenu","_createMenuItemList","subMenus","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","error","levelClassName","menuOptions","option","idx","hasOptions","haveSubmenu","Math","round","toString","_renderMenu","Button","onClick","onFocus","hoverEffect","Link","imagesource","onMouseOver","onTelemetryClick","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","categoryImageDisplay","DivContainerClass","_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","TelemetryConstant","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","itemLabel","itemsLabel","suffix","deliveryOption","CartView","renderModuleAttributes","promotionOptions","CartlinesWrapper","orderSummaryHeading","OrderSummaryWrapper","orderSummaryLineitems","OrderSummaryErrors","checkoutAsSignInUserButton","checkoutAsGuestButton","createTemplateFromCartButton","aadGeneric","aadConainer","aadAPIConainer","accordionView","AccordionContainer","accordionItems","accordionButtons","HeaderSection","HeadingWrapper","accordianButtonsContainer","accordionItemContainer","IAccountWishlistTileDescription","AccountWishlistTileLinks","AccountWishlistTile","accountWishlistTileDescription","wishlists","wishlistsCount","CommerceListLines","DescriptionComponent","AadGeneric","moduleClassName","$i2e","$element","window","insertServiceContent","getElementContent","initialize","shouldComponentUpdate","nextProps","IAccountAddressTileDescription","AccountAddressTileLinks","accountAddressTileDescriptionForSingleAddress","accountAddressTileDescriptionForMultipleAddresses","address","customerInformation","addressCount","accountAddressTileDescription","IsAsyncCustomer","inputRef","_validateMin","minValue","min","isNaN","currentInput","isUpdateing","_onIncrement","_onDecrement","_handleChange","componentDidUpdate","prevProps","disabled","glyphMinusClassName","decrementGlyphClass","glyphPlusClassName","incrementGlyphClass","decrementDisabled","isGiftCard","incrementDisabled","currentValue","DecrementQuantity","decrementAttributes","IncrementQuantity","incrementAttributes","extraClassDecrement","extraClassIncrement","color","type","pattern","onBlur","invokeCallback","currQuantity","updatedQuantity","e","parseInt","inputElement","HTMLInputElement","setAttribute","observer","IAccountLoyaltyTileDescription","AccountLoyaltyTileLinks","AccountLoyaltyTile","signUpLinkText","viewLinkText","signUpLinkAriaLabel","viewLinkAriaLabel","accountLoyaltySummary","accountLoyaltyMemberSummary","loyaltyCard","url","CardNumber","points","RewardPoints","rewardPoint","ActivePoints","PromoBannerCookie","bannerDismissed","_closeModal","bodyClass","_isCookieSet","classList","add","location","hostname","cookie","cookies","setConsentCookie","console","log","style","backgroundColor","_renderContent","_renderButton","dismissible","_setCookie","cookieMaxAge","set","path","maxAge","promoBannerCookie","get","_target","textColor","_renderTitle","RichTextComponent","__decorate","observable","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","_updateViewport","viewport","device","Type","navigationMenuSource","isMobile","locale","nameTranslations","nameTranslation","find","Language","Text","resizeThrottledEventHandler","addThrottledEvent","_mapData","isEmptyOrNullObject","xl","menuAriaLabel","displayCategoryImage","ImageContainer","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","mergedData","categories","_constructMenuItemData","cmsNavItems","_constructTopMenuItemData","enabletopMenu","mergedRootMenuData","topMenu","rootMenuNavigation","retailItem","cmsItem","addedAllMenu","imageSouce","Images","Uri","RSItemIdInit","getFriendlyName","NameTranslations","Url","_getNestedChildren","CMSItemIdInit","imageDestinationURL","imageLink","_getCMSNestedChildren","category","imageSourceUrl","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","_getViewport","innerWidth","computed","Lightbox","isOpen","_openModal","defaultOpenState","launchLightboxButton","_launchLightboxButton","hasLaunchLightboxButton","launchLightboxButtonText","Modal","autoFocus","fade","horizontalPosition","verticalPosition","zIndex","toggle","applicationNode","ModalHeader","modalHeader","ModalBody","slot","buttonText","prevState","IAccountProfileText","AccountProfileAttributes","isUpdatingAttributes","gotException","hasError","attributeClassName","maxIntegerLimit","minIntegerLimit","maxDecimalLimit","minDecimalLimit","maxStringLength","maxVATNumberLength","maxPhoneLength","_renderAttributes","accountProfileProps","attributeDefinitions","additionalInformationSectionHeading","elements","showAttributes","split","att","attributeDefinition","attribute","IsHidden","Name","toLocaleLowerCase","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","toggleState","arialabel","attributeToggleButtonAriaLabel","ariaPressed","toggleValue","TextComponent","toggleDisableText","_onAttributeCheck","toggleEnableText","attributeName","attributeError","StringExtensions","isNullOrWhitespace","attributePayloadData","filter","name","isMandatory","MsDyn365","isBrowser","getElementsByClassName","_setFocus","initialAttributes","initialPhone","initialVatNumber","currentTarget","selectedOptions","selectedIndex","_getAttributes","showAttributesArray","customer","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","KeyName","Phone","VatNumber","async","updateCustomerAttributesInput","AccountNumber","updateCustomerAttributes","initialCustomerAttributes","exception","debug","element","_buildPayloadData","defaultIntegerValue","DefaultValue","LowerBound","UpperBound","defaultDecimalValue","defaultStringValue","defaultBooleanValue","_getCustomerPhoneAndVatNumber","reaction","IAccountProfileDescription","AccountProfileLinks","AccountProfile","isUpdatingPreference","handleEmailHeadingChange","emailAddressSectionHeading","handleNameHeadingChange","nameSectionHeading","editButtonText","_renderPreference","sectionHeading","enableAriaLabel","isOptOut","accountPreference","buttonWrapper","buttonYesText","buttonNoText","_updateAccountPersonalization","onUpdateAccountPreference","isOptOutPersonalization","preferenceType","OptOutWebActivityTracking","updateCustomerPersonalizationInput","OptOutPersonalization","updateCustomerPersonalization","_renderCustomerAttributes","editButtonAriaLabel","shouldRenderAttributes","editLink","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","AccountWishlistTileView","DeliveryOptionList","DeliveryOptionsList","list","globalConfig","options","pennyShippingMethodIds","pennyShippingIds","modShippingMethodIds","modShippingIds","localList","combinedList","sort","a","b","ShippingChargeAmount","deliveryData","isModShippingMethod","modShipping","isPennyShippingMethod","pennyShipping","amount","DeliveryOption","code","radioButton","DeliveryOptionSelected","ErrorMessage","Error","message","CheckoutDeliveryOptionsView","CheckoutDeliveryOptions","viewState","deliveryOptions","deliveryOptionsData","deliveryOptionSelected","errorMessage","waiting","saveButton","editButton","cancelButton","isLoading","isError","isShowList","app","isShowSelected","isShowSaveButton","isShowEditButton","isShowCancelButton","OrganizationUsersTileView","OrganizationUsersTile","AccountPreferencesSection","AccountPreferenceSection","preferenceSecton","AccountProfileSection","AccountProfileView","AccountWelcomeTile","accountInfo","accountInformation","Map","mapRef","_initMap","storeSelectorStateManager","isMapApiLoaded","Microsoft","Maps","credentials","BingMapsApiKey","pushpinAccessible","_updateMap","pushpinOptions","orgUnitStoreInformation","selectedStoreLocationId","mapLocation","entities","clear","pushpins","unitStoreInfo","storeLocation","OrgUnitAvailability","OrgUnitLocation","Latitude","Longitude","isSelectedLocation","OrgUnitNumber","_getPushpinOptions","pushpin","Pushpin","Location","Events","addHandler","setSelectedStoreLocationId","unshift","currLocation","setView","center","bounds","LocationRect","fromShapes","setOptions","showIndex","size","selectionColor","icon","_getSvgIcon","BingMapsEnabled","setMapModuleLoaded","loadMapApi","lang","ChannelCountryRegionISOCode","market","DefaultLanguageId","isDialog","displayMap","listMapViewState","classname","show","Header","headerProps","MapProps","Iframe","iframeRef","isConsentGiven","srcURL","URL","protocol","iframeClassName","_createHeading","IframeContainer","IFrame","_createIframe","alert","_renderAlert","cookieConsentRequiredMessage","cookieConsentAccepted","targetURL","height","width","frameBorder","iframeAriaLabel","FooterItem","handleTextChange","footerItemClassName","_createImageMarkup","_createText","_createLinkText","EditableLink","_createLink","HeadingContainer","ItemContainer","ariaHiddenAttr","AccountLoyaltyTileView","Accordion","_onExpandAll","_onCollapseAll","headingComponent","accordionViewProps","_renderAccordionButton","_getAccordionItem","ExpandAll","attributeExpandAll","CollapseAll","attributeCollapseAll","showToggleAll","expandAllText","toggleAllSeparator","collapseAllText","accordionState","isAllExpanded","update","createAccordionStateInput","interactionStyle","AccountWelcomeTileView","isBackTrack","_handleGoBack","IFrameView","MapHeader","MapView","FooterItemView","_renderElement","AccountOrganizationUsersTileDescription","AccountOrganizationUsersTileLinks","accountOrganizationUsersTileDescriptionForSingleUser","accountOrganizationUsersTileDescriptionForMultipleUsers","numUsers","users","accountOrganizationUsersTileDescription"],"mappings":"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","file":"static/js/5.4d43c6da169406b2b28e.chunk.js","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Heading } from '@msdyn365-commerce-modules/utilities';\r\nimport {\r\n getRichTextHtml,\r\n IImageSettings,\r\n Image\r\n} from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport {\r\n ILinksData,\r\n IShippingServiceConfig,\r\n IShippingServiceProps\r\n} from './shipping-service.props.autogenerated';\r\n\r\n/**\r\n *\r\n * ShippingService component\r\n * @extends {React.PureComponent}\r\n */\r\nclass ShippingService extends React.PureComponent<\r\n IShippingServiceProps\r\n> {\r\n public render(): JSX.Element | null {\r\n if (!(this.props && this.props.config)) {\r\n return null;\r\n }\r\n\r\n const content = this.props.config;\r\n const lazyloadConfig: boolean | undefined =\r\n (content && content.lazyload) || false;\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=148&h=174&m=6`, w: 0, h: 0 },\r\n lg: { q: `w=148&h=174&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: lazyloadConfig\r\n };\r\n return (\r\n
\r\n {content.heading && (\r\n \r\n )}\r\n {content.image && (\r\n \r\n )}\r\n {content.paragraph && (// tslint:disable-next-line:react-no-dangerous-html\r\n
\r\n )}\r\n {content.links && content.links.length\r\n ? content.links.map((cta: ILinksData, index: number) => (\r\n \r\n {cta.linkText}\r\n \r\n ))\r\n : false}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ShippingService;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nimport {\n 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 *--------------------------------------------------------------------------------------------*/\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { IAccountAddressTileViewProps } from './account-address-tile';\n\nconst AccountAddressTileView: React.FC = props => {\n const { AccountAddressTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountAddressTileView;\n","/*---------------------------------------------------------------------------------------------\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 IAccountInvoiceTileDescription {\n description: string;\n}\n\nexport const AccountInvoiceTileDescription: 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-invoice-tile.props.autogenerated';\n\nexport interface IAccountInvoiceTileLinks {\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 AccountInvoiceTileLinks: 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-invoice-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 AccountInvoiceTileLinks;","/*---------------------------------------------------------------------------------------------\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 { IAccountInvoiceTileData } from './account-invoice-tile.data';\nimport { IAccountInvoiceTileProps } from './account-invoice-tile.props.autogenerated';\n\nimport {AccountInvoiceTileDescription} from './components';\nimport LinksComponent from './components/account-invoice-tile-links';\n\nexport interface IAccountInvoiceTileViewProps extends IAccountInvoiceTileProps {\n AccountInvoiceTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n\n}\n\n/**\n *\n * AccountInvoiceTile component\n * @extends {React.PureComponent>}\n */\nclass AccountInvoiceTile extends React.PureComponent> {\n private telemetryContent: ITelemetryContent;\n constructor(props: IAccountInvoiceTileProps) {\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 {\n config,\n data,\n resources,\n context: {\n cultureFormatter: {\n formatCurrency,\n // @ts-ignore\n currencyCode\n }\n }\n } = this.props;\n const { className, heading, links } = config;\n const { accountInvoiceTileDescription } = resources;\n let openinvoiceAmount = 0;\n let invoiceTotalAmount:string|undefined;\n\n if (data && data.invoices && data.invoices.result) {\n data.invoices.result.forEach(invoiceItem => {\n if (invoiceItem.AmountBalance) {\n openinvoiceAmount += invoiceItem.AmountBalance;\n }\n }\n );\n invoiceTotalAmount = formatCurrency(openinvoiceAmount.toFixed(2), currencyCode);\n }\n const description = invoiceTotalAmount && format(accountInvoiceTileDescription, invoiceTotalAmount);\n\n const viewProps = {\n ...this.props,\n className: className,\n AccountInvoiceTile: {\n moduleProps: this.props,\n className: classnames('ms-account-invoice-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && ,\n description: description && \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading.text = event.target.value;\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountInvoiceTile;\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 { 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 *--------------------------------------------------------------------------------------------*/\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;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\n\nimport { IAadGenericViewProps } from './aad-generic';\n\nexport default (props: IAadGenericViewProps) => {\n const {\n aadGeneric,\n aadConainer,\n aadAPIConainer,\n heading\n } = props;\n\n return (\n \n \n {heading}\n {aadAPIConainer}\n \n \n );\n};\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { IAccordionViewProps } from './accordion';\n\nconst accordionView: React.FC = props => {\n const { heading, AccordionContainer, accordionItems} = props;\n if(!props.heading && !props.accordionButtons && !props.accordionItems) {\n props.context.telemetry.error('Accordion content is empty, module wont render');\n return null;\n }\n return (\n \n \n \n {heading}\n \n {props.accordionButtons && (\n {props.accordionButtons}\n )}\n \n \n {accordionItems}\n \n \n );\n};\n\nexport default accordionView;","/*---------------------------------------------------------------------------------------------\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 IAccountWishlistTileDescription {\n description: string;\n}\n\nconst IAccountWishlistTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n\nexport default IAccountWishlistTileDescription;\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-wishlist-tile.props.autogenerated';\n\nexport interface IAccountWishlistTileLinks {\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 AccountWishlistTileLinks: 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};\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-wishlist-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 AccountWishlistTileLinks;","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\n\nimport { IAccountWishlistTileData } from './account-wishlist-tile.data';\nimport { IAccountWishlistTileProps } from './account-wishlist-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-wishlist-tile-description';\nimport LinksComponent from './components/account-wishlist-tile-links';\n\nexport interface IAccountWishlistTileViewProps extends IAccountWishlistTileProps {\n AccountWishlistTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountWishlist component\n * @extends {React.PureComponent>}\n */\nclass AccountWishlistTile extends React.PureComponent> {\n\n private telemetryContent?: ITelemetryContent;\n\n constructor(props: IAccountWishlistTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountWishlistTileDescription } = resources;\n const wishlists = data.wishlists.result;\n\n const wishlistsCount = (wishlists && wishlists.length && wishlists[0].CommerceListLines || []).length;\n const description = format(accountWishlistTileDescription || 'You have {0} items in the Wishlist.', wishlistsCount);\n\n const viewProps = {\n ...this.props,\n className: className,\n AccountWishlistTile: {\n moduleProps: this.props,\n className: classnames('ms-account-wishlist-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) => this.props.config.heading.text= event.target.value;\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if(this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountWishlistTile;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\n\nimport { IAadGenericData } from './aad-generic.data';\nimport { IAadGenericProps } from './aad-generic.props.autogenerated';\n\nexport interface IAadGenericViewProps extends IAadGenericProps {\n aadGeneric: IModuleProps;\n aadConainer: INodeProps;\n aadAPIConainer: React.ReactNode;\n heading?: React.ReactNode;\n}\n\n/**\n *\n * AadGeneric component\n * @extends {React.PureComponent>}\n */\nclass AadGeneric extends React.PureComponent> {\n private moduleClassName: string = 'ms-aad-generic';\n\n public componentDidMount(): void {\n // @ts-ignore\n const { $i2e, $element } = window || {};\n\n if ($i2e && $element) {\n $i2e.insertServiceContent($element.getElementContent());\n $element.initialize();\n }\n }\n\n public shouldComponentUpdate(nextProps:IAadGenericViewProps): boolean {\n\n if(nextProps.config.heading !== this.props.config.heading) {\n return true;\n }\n return false;\n }\n\n public render(): JSX.Element | null {\n const { className, heading } = this.props.config;\n\n const viewProps = {\n ...this.props,\n aadGeneric: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n aadConainer: {\n className: `${this.moduleClassName}__container`\n },\n aadAPIConainer:
,\n heading: heading && \n };\n\n return this.props.renderView(viewProps);\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.heading) {\n this.props.config.heading.text = event.target.value;\n }\n }\n}\n\nexport default AadGeneric;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\ninterface IAccountAddressTileDescription {\n description: string;\n}\n\nconst IAccountAddressTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n\nexport default IAccountAddressTileDescription;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport * as React from 'react';\nimport { ILinksData } from '../account-address-tile.props.autogenerated';\n\nexport interface IAccountAddressTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n /** The telemetry content */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountAddressTileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n\n return (\n
\n { editableLinks && editableLinks.length ?\n \n : null\n }\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if(!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link,index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-address-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountAddressTileLinks;","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { IAccountAddressTileData } from './account-address-tile.data';\nimport { IAccountAddressTileProps } from './account-address-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-address-tile-description';\nimport LinksComponent from './components/account-address-tile-links';\n\nexport interface IAccountAddressTileViewProps extends IAccountAddressTileProps {\n AccountAddressTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountAddress component\n * @extends {React.PureComponent>}\n */\nclass AccountAddressTile extends React.PureComponent> {\n\n private telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountAddressTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountAddressTileDescriptionForSingleAddress, accountAddressTileDescriptionForMultipleAddresses } = resources;\n const { address } = data;\n const customerInformation = data.customerInformation.result;\n const addressCount = (address && address.result && address.result.length) || 0;\n const accountAddressTileDescription = addressCount === 1 ? accountAddressTileDescriptionForSingleAddress : accountAddressTileDescriptionForMultipleAddresses;\n const description = format(accountAddressTileDescription, addressCount);\n\n const viewProps = {\n ...this.props,\n className: className,\n AccountAddressTile: {\n moduleProps: this.props,\n className: classnames('ms-account-address-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && customerInformation?.IsAsyncCustomer !== true &&\n ,\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading.text = event.target.value;\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if(this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountAddressTile;\n","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","import { Heading } from '@msdyn365-commerce-modules/utilities';\r\nimport { ICookieValue, RichTextComponent } from '@msdyn365-commerce/core';\r\nimport { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { IPromoBannerCookieData } from './promo-banner-cookie.data';\r\nimport { ILinkData, IPromoBannerCookieProps } from './promo-banner-cookie.props.autogenerated';\r\n\r\n// =========================================================================\r\n// MODULE-WIDE CONSTANTS\r\n// =========================================================================\r\nconst CookieName = 'promoBannerCookie';\r\n\r\n/**\r\n *\r\n * PromoBannerCookie component\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass PromoBannerCookie extends React.Component> {\r\n\r\n // ==========================================================================\r\n // OBSERVABLES\r\n // ==========================================================================\r\n\r\n @observable private bannerDismissed: boolean = false;\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n constructor(props: IPromoBannerCookieProps) {\r\n super(props);\r\n this._closeModal = this._closeModal.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (this.props.config.bodyClass && (!this._isCookieSet || this.bannerDismissed === false)) {\r\n document.body.classList.add(this.props.config.bodyClass);\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n\r\n // tslint:disable-next-line: no-typeof-undefined\r\n if (typeof window !== 'undefined' && window.location.hostname === 'localhost') {\r\n return null;\r\n }\r\n\r\n const { config } = this.props;\r\n const cookie = this.props.context.request.cookies;\r\n\r\n try {\r\n cookie.setConsentCookie();\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n if (this._isCookieSet === true || this.bannerDismissed === true) { return null; }\r\n return (\r\n \r\n {this._renderContent}\r\n {this._renderButton(config.dismissible!)}\r\n
\r\n );\r\n }\r\n\r\n // =========================================================================\r\n // PRIVATE METHODS\r\n // =========================================================================\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private _setCookie(): void {\r\n const cookieMaxAge = this.props.config.cookieMaxAge ? this.props.config.cookieMaxAge * 60 * 60 : 86400;\r\n this.props.context.request.cookies.set(CookieName, true, { path: '/', maxAge: cookieMaxAge });\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private get _isCookieSet(): boolean {\r\n const cookie = this.props.context.request.cookies;\r\n const promoBannerCookie = cookie.get(CookieName) as ICookieValue<{}> | undefined;\r\n\r\n if (promoBannerCookie === undefined || promoBannerCookie.value === 'false') { return false; }\r\n\r\n return (!!promoBannerCookie.value);\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private _closeModal(): void {\r\n this._setCookie();\r\n if (this.props.config.bodyClass) {\r\n document.body.classList.remove(this.props.config.bodyClass);\r\n }\r\n this.bannerDismissed = true;\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private _target(link: ILinkData): string | undefined {\r\n return (link.openInNewTab) ? '_blank' : undefined;\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private get _renderContent(): JSX.Element {\r\n const { config } = this.props;\r\n if (config.link && config.link.linkUrl.destinationUrl) {\r\n return (\r\n \r\n {this._renderTitle}\r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {this._renderTitle}\r\n \r\n
\r\n );\r\n }\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private get _renderTitle(): JSX.Element | null {\r\n const title = this.props.config.title;\r\n if (!title) { return null; }\r\n if (!title.text) { return null; }\r\n return (\r\n \r\n );\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private _renderButton(dismissible: boolean): JSX.Element | null {\r\n if (!dismissible) { return null; }\r\n\r\n return \r\n );\r\n }\r\n return null;\r\n }\r\n\r\n private _closeModal(): void {\r\n this.setState(prevState => ({\r\n isOpen: !prevState.isOpen\r\n }));\r\n }\r\n private _openModal(): void {\r\n this.setState(prevState => ({\r\n isOpen: !prevState.isOpen\r\n }));\r\n }\r\n}\r\n\r\nexport default Lightbox;\r\n","/*---------------------------------------------------------------------------------------------\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 } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { IAccountWishlistTileViewProps } from './account-wishlist-tile';\n\nconst AccountWishlistTileView: React.FC = props => {\n const { AccountWishlistTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountWishlistTileView;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { ICheckoutDeliveryOption, ICheckoutDeliveryOptionEdit, ICheckoutDeliveryOptionsError, ICheckoutDeliveryOptionsList, ICheckoutDeliveryOptionsViewProps } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-delivery-options';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { DeliveryOption as DeliveryOptionData } from '@msdyn365-commerce/retail-proxy';\r\nimport * as React from 'react';\r\ninterface ICheckoutDeliveryOptionsListFiltered extends ICheckoutDeliveryOptionsList {\r\n globalConfig?: {\r\n [x: string]: unknown;\r\n };\r\n options?: DeliveryOptionData[];\r\n}\r\n\r\ntype ModShipping = {\r\n id: number;\r\n amount: number;\r\n}[];\r\n\r\nconst DeliveryOptionList: React.FC = ({\r\n DeliveryOptionsList,\r\n list,\r\n globalConfig,\r\n options\r\n}) => {\r\n if (!list || list.length === 0) {\r\n return null;\r\n }\r\n\r\n const pennyShippingMethodIds = globalConfig?.pennyShippingIds as number[] || [];\r\n const modShippingMethodIds = globalConfig?.modShippingIds as ModShipping || [];\r\n let localList: ICheckoutDeliveryOptionEdit[] = [];\r\n if (options) {\r\n // maps options with list for sorting\r\n const combinedList: {option: DeliveryOptionData; list: ICheckoutDeliveryOptionEdit}[] = [];\r\n options.map((option, index) => combinedList.push({option: option, list: list[index]}));\r\n // sort list by lowest to highest price\r\n const combinedListSorted = combinedList.sort((a, b) => (a.option.ShippingChargeAmount! > b.option.ShippingChargeAmount!) ? 1 : ((b.option.ShippingChargeAmount! > a.option.ShippingChargeAmount!) ? -1 : 0));\r\n combinedListSorted.forEach((deliveryData) => {\r\n if (deliveryData.list) {\r\n // search to find out if it is a mod shipping method\r\n const isModShippingMethod = modShippingMethodIds.find(modShipping => Number(modShipping.id) === deliveryData.option.RecordId);\r\n // backwards compatibility for penny shipping\r\n const isPennyShippingMethod = pennyShippingMethodIds.find(pennyShipping => Number(pennyShipping) === deliveryData.option.RecordId);\r\n\r\n // Filter out mod shipping methods that are declared\r\n // in the global config, only show shipping methods\r\n // that have a matching mod price for the customer at this current time\r\n // of checkout. If it's not a mod shipping method, always display\r\n // it.\r\n if (isModShippingMethod && deliveryData.option.ShippingChargeAmount === isModShippingMethod.amount) {\r\n localList.push(deliveryData.list);\r\n } else if (isPennyShippingMethod && deliveryData.option.ShippingChargeAmount === 0.01) {\r\n localList.push(deliveryData.list);\r\n } else if (!isModShippingMethod && !isPennyShippingMethod) {\r\n localList.push(deliveryData.list);\r\n }\r\n }\r\n });\r\n }\r\n // just in case options doesn't load in, fail safely back to the original\r\n // list\r\n if (localList.length === 0) { localList = list; }\r\n return (\r\n \r\n {localList.map((deliveryOption: ICheckoutDeliveryOptionEdit) => {\r\n return (\r\n \r\n {deliveryOption.price}\r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst DeliveryOptionSelected: React.FC = ({\r\n DeliveryOption,\r\n description,\r\n price,\r\n}) => {\r\n\r\n return (\r\n \r\n {description}\r\n {price}\r\n \r\n );\r\n};\r\n\r\nconst ErrorMessage: React.FC = ({\r\n Error,\r\n title,\r\n message,\r\n}) => {\r\n\r\n return (\r\n \r\n {title}\r\n {message}\r\n \r\n );\r\n};\r\n\r\nconst CheckoutDeliveryOptionsView: React.FC = props => {\r\n const { CheckoutDeliveryOptions,\r\n viewState,\r\n deliveryOptions,\r\n deliveryOptionsData,\r\n deliveryOptionSelected,\r\n errorMessage,\r\n waiting,\r\n saveButton,\r\n editButton,\r\n cancelButton } = props;\r\n return (\r\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\r\n \r\n {viewState.isLoading && waiting}\r\n {viewState.isError && errorMessage && }\r\n {viewState.isShowList && deliveryOptions && }\r\n {viewState.isShowSelected && deliveryOptionSelected && }\r\n {viewState.isShowSaveButton && saveButton}\r\n {viewState.isShowEditButton && editButton}\r\n {viewState.isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsView;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { IOrganizationUsersTileViewProps } from './organization-users-tile';\n\nconst OrganizationUsersTileView: React.FC = props => {\n const { OrganizationUsersTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default OrganizationUsersTileView;\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 IAccountPreference, IAccountPreferences, IAccountProfileItem, IAccountProfileViewProps\n} from './account-profile';\n\nconst AccountPreferencesSection: React.FC = ({\n accountPreferences,\n heading,\n personalization,\n extraPreferences\n}) => {\n\n return (\n \n {heading}\n \n {\n extraPreferences && extraPreferences.map((preferenceSecton, index) => {\n return ;\n })\n }\n \n );\n};\n\nconst AccountPreferenceSection: React.FC = ({\n accountPreference,\n heading,\n description,\n buttonWrapper,\n buttonYesText,\n button,\n buttonNoText,\n}) => {\n\n return (\n \n {heading}\n {description}\n \n {buttonNoText}\n {button}\n {buttonYesText}\n \n \n );\n};\n\nconst AccountProfileSection: React.FC = ({\n AccountProfileItem,\n heading,\n links,\n description\n}) => {\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nconst AccountProfileView: React.FC = props => {\n const { AccountProfile, accountProfileWrapper, heading, emailSection, nameSection, preferenceSection, customerAttributesWrapper, customerAttributesSection } = props;\n\n return (\n \n {accountProfileWrapper && (\n {heading}\n \n \n \n \n )}\n {customerAttributesWrapper && (\n {customerAttributesSection}\n \n )}\n \n );\n};\n\nexport default AccountProfileView;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\n\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\n\nimport { IAccountWelcomeTileData } from './account-welcome-tile.data';\nimport { IAccountWelcomeTileProps } from './account-welcome-tile.props.autogenerated';\n\nexport interface IAccountWelcomeTileViewProps extends IAccountWelcomeTileProps {\n AccountWelcomeTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n}\n\n/**\n *\n * AccountWelcome component\n * @extends {React.PureComponent>}\n */\nclass AccountWelcomeTile extends React.PureComponent> {\n\n public render(): JSX.Element {\n const { config, data } = this.props;\n const { className } = config;\n\n const accountInfo = data.accountInformation.result;\n const heading = {\n ...config.heading,\n ...{\n text: `${config.heading.text} ${accountInfo && accountInfo.FirstName ? accountInfo.FirstName : ''}`\n }\n };\n\n const viewProps = {\n ...this.props,\n className: className,\n AccountWelcomeTile: {\n moduleProps: this.props,\n className: classnames('ms-account-welcome-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading.text= event.target.value;\n}\n\nexport default AccountWelcomeTile;\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\n// tslint:disable:no-reference\n/// \n\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions/dist/types/utilities/full-org-unit-availability';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport classname from 'classnames';\nimport { observable, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IMapData } from './map.data';\nimport { IMapProps, IPushpinOptionsData } from './map.props.autogenerated';\n\nexport interface IHeader {\n headerProps: INodeProps;\n heading: React.ReactNode;\n}\n\nexport interface IMapViewProps extends IMapProps {\n ModuleProps: IModuleProps;\n Header: IHeader;\n MapProps: INodeProps;\n Map: Microsoft.Maps.Map | undefined;\n}\n\n/**\n *\n * Map component\n * @extends {React.Component>}\n */\n@observer\nclass Map extends React.Component> {\n @observable public map: Microsoft.Maps.Map | undefined;\n private mapRef: React.RefObject = React.createRef();\n\n constructor(props: IMapProps) {\n super(props);\n }\n\n public componentDidMount(): void {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: {\n channel\n }\n }\n }\n } = this.props;\n\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded,\n () => {\n this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded(true);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\n key: channel?.BingMapsApiKey,\n lang: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode,\n market: this.props.context?.actionContext?.requestContext?.channel?.DefaultLanguageId\n });\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n () => {\n this._initMap();\n }\n );\n\n reaction(\n () => {\n return [this.props.data.storeSelectorStateManager.result?.context?.orgUnitStoreInformation,\n this.props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\n this.map];\n },\n async () => {\n if (!this.props.data.storeSelectorStateManager.result?.context?.isDialog) {\n this._updateMap();\n }\n }\n );\n }\n\n public render(): JSX.Element | null {\n\n const {\n config: {\n heading,\n className\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const displayMap = storeSelectorStateManager?.listMapViewState?.displayMap;\n\n const viewProps: IMapViewProps = {\n ...this.props,\n ModuleProps: {\n tag: 'div',\n moduleProps: this.props,\n className: classname('ms-map', { show: displayMap }, className)\n },\n Header: {\n headerProps: { className: 'ms-map__header' },\n heading: heading && heading.text && (\n \n )\n },\n MapProps: {\n tag: 'div',\n className: 'ms-map__body',\n ref: this.mapRef\n },\n Map: this.map\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading!.text = event.target.value;\n\n private _initMap = () => {\n const {\n context: {\n actionContext: {\n requestContext: {\n channel\n }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n if (storeSelectorStateManager?.isMapApiLoaded) {\n\n this.map = new Microsoft.Maps.Map(this.mapRef.current as HTMLElement, {\n credentials: channel?.BingMapsApiKey,\n pushpinAccessible: true\n });\n }\n }\n\n private _updateMap = () => {\n const pushpinOptions = this.props.config.pushpinOptions;\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager?.result;\n const orgUnitStoreInformation = storeSelectorStateManager?.context?.orgUnitStoreInformation;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n\n if (this.map && orgUnitStoreInformation) {\n let mapLocation: OrgUnitLocation | undefined;\n this.map.entities.clear();\n const pushpins: Microsoft.Maps.IPrimitive[] = [];\n\n orgUnitStoreInformation.map((unitStoreInfo: IFullOrgUnitAvailability, index: number) => {\n const storeLocation = unitStoreInfo?.OrgUnitAvailability?.OrgUnitLocation;\n\n if (storeLocation?.Latitude && storeLocation.Longitude) {\n const isSelectedLocation = selectedStoreLocationId === storeLocation.OrgUnitNumber;\n const options = this._getPushpinOptions(isSelectedLocation, index, pushpinOptions);\n const pushpin = new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(storeLocation.Latitude, storeLocation.Longitude), options);\n\n Microsoft.Maps.Events.addHandler(pushpin, 'click', () => storeLocation.OrgUnitNumber && storeSelectorStateManager?.setSelectedStoreLocationId(storeLocation.OrgUnitNumber));\n\n isSelectedLocation ? pushpins.unshift(pushpin) : pushpins.push(pushpin);\n\n if (isSelectedLocation) {\n mapLocation = storeLocation;\n }\n }\n });\n\n if (mapLocation) {\n const currLocation = new Microsoft.Maps.Location(mapLocation.Latitude, mapLocation.Longitude);\n this.map.setView({ center: currLocation });\n } else {\n // Create a LocationRect from array of pushpins and set the map view.\n this.map.setView({\n bounds: Microsoft.Maps.LocationRect.fromShapes(pushpins)\n });\n }\n\n this.map.setOptions({ pushpinAccessible: true });\n this.map?.entities.push(pushpins);\n }\n }\n\n private _getPushpinOptions = (isSelectedLocation: boolean, index: number, pushpinOptions?: IPushpinOptionsData) => {\n const text = pushpinOptions?.showIndex ? (index + 1).toString() : undefined;\n\n const size = pushpinOptions?.size || 1;\n const color = isSelectedLocation ? pushpinOptions?.selectionColor || pushpinOptions?.color : pushpinOptions?.color;\n const icon = this._getSvgIcon(size, color, text);\n\n return {\n // fallback if icon doesn't render properly\n color: isSelectedLocation ? pushpinOptions?.selectionColor : pushpinOptions?.color,\n icon: icon\n };\n }\n\n private _getSvgIcon = (size: number, color?: string, text?: string) => {\n const baseValue: number = 32;\n return `\n \n ${text ? `${text}` : ''}\n `;\n }\n}\n\nexport default Map;\n","import { Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { IHeadingData, ISmweIframeConfig, ISmweIframeProps } from './smwe-iframe.props.autogenerated';\r\n\r\nexport interface IIframeViewProps extends ISmweIframeProps {\r\n Heading: React.ReactNode;\r\n IframeContainer: IModuleProps;\r\n IFrame: React.ReactNode;\r\n alert?: React.ReactNode;\r\n cookieConsentAccepted?: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * Iframe component\r\n * @extends {React.PureComponent}\r\n */\r\nclass Iframe extends React.PureComponent> {\r\n private iframeRef: React.RefObject;\r\n constructor(props: ISmweIframeProps) {\r\n super(props);\r\n this.iframeRef = React.createRef();\r\n }\r\n public render(): JSX.Element | null {\r\n const { config, resources } = this.props;\r\n const isConsentGiven =\r\n this.props.context.request &&\r\n this.props.context.request.cookies &&\r\n this.props.context.request.cookies.isConsentGiven &&\r\n this.props.context.request.cookies.isConsentGiven();\r\n\r\n if (!(config && config.target && config.target.destinationUrl)) {\r\n return null;\r\n }\r\n\r\n let srcURL;\r\n try {\r\n srcURL = new URL(config.target.destinationUrl);\r\n } catch (error) {\r\n this.props.telemetry.exception(error);\r\n return null;\r\n }\r\n\r\n if (srcURL && srcURL.protocol && srcURL.protocol.toLocaleLowerCase() !== 'https:') {\r\n return null;\r\n }\r\n const iframeClassName = classnames('ms-iframe', config.className);\r\n\r\n let viewProps: IIframeViewProps = {\r\n ...(this.props as ISmweIframeProps),\r\n Heading: this._createHeading(config.heading!),\r\n IframeContainer: {\r\n moduleProps: this.props,\r\n className: iframeClassName\r\n },\r\n IFrame: this._createIframe()\r\n };\r\n\r\n if (isConsentGiven === false) {\r\n viewProps = {\r\n ...viewProps,\r\n alert: this._renderAlert(resources.cookieConsentRequiredMessage)\r\n };\r\n } else {\r\n viewProps = {\r\n ...viewProps,\r\n cookieConsentAccepted : true\r\n };\r\n }\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\r\n if (!heading || !heading.text || !heading.text.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _renderAlert(message: string): React.ReactNode | null {\r\n return (\r\n

\r\n {message}\r\n

);\r\n }\r\n\r\n private _createIframe(): React.ReactNode | null {\r\n const { config } = this.props;\r\n const targetURL = config.target.destinationUrl;\r\n const style: React.CSSProperties = {height: '100%', width: '100%'};\r\n\r\n return (\r\n // tslint:disable-next-line: react-iframe-missing-sandbox\r\n \r\n );\r\n }\r\n\r\n}\r\n\r\nexport default Iframe;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { getPayloadObject, getTelemetryAttributes, getTelemetryObject, IModuleProps, INodeProps, IPayLoad, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport { IFooterItemConfig, IFooterItemProps, IHeadingData, ILinkData } from './footer-item.props.autogenerated';\n\nexport interface IFooterViewProps extends IFooterItemProps {\n heading: React.ReactNode;\n image: React.ReactNode;\n text: React.ReactNode;\n linkText: React.ReactNode;\n className?:string;\n FooterItem: IModuleProps;\n HeadingContainer: INodeProps;\n ItemContainer: INodeProps;\n Link: INodeProps;\n EditableLink: React.ReactNode;\n}\n\n/**\n *\n * FooterItem component\n * @extends {React.PureComponent>}\n */\nexport class FooterItem extends React.PureComponent> {\n private telemetryContent: ITelemetryContent;\n private payLoad: IPayLoad;\n private attributes: Msdyn365.IDictionary | undefined;\n constructor(props: IFooterItemProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry);\n // Construct telemetry attribute to render\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public render(): JSX.Element {\n const {heading, image, link, text} = this.props.config;\n const footerItemClassName = classnames('ms-footer__item', this.props.config.className);\n const linkText = link && link.linkText ? link.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n const viewProps: IFooterViewProps = {\n ... this.props,\n heading: this._createHeading(heading!),\n image: this._createImageMarkup(image!),\n text:this._createText(text!),\n linkText: this._createLinkText(link!),\n EditableLink: this._createLink(link!),\n // @ts-ignore\n FooterItem: {\n moduleProps: this.props,\n className: footerItemClassName\n },\n // @ts-ignore\n HeadingContainer: {\n className: 'ms-footer__heading'\n },\n // @ts-ignore\n ItemContainer: {\n className: 'ms-footer__link__container'\n },\n // @ts-ignore\n Link: link && link.linkUrl && link.linkUrl.destinationUrl && {\n tag: 'a',\n className: 'ms-footer__link',\n href: link.linkUrl.destinationUrl,\n title:linkText,\n target: link.openInNewTab ? '_blank' : undefined,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText),\n ...this.attributes\n },\n className:footerItemClassName\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading!.text = event.target.value;\n\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.text = event.target.value;\n\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.link!.linkText = event.target.value;\n\n private _createLink(link: ILinkData): React.ReactNode | null {\n if(link) {\n const linkText = link.linkText ? link.linkText : '';\n // TODO: Update the inner tag in the anchor link to span\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-footer__link',\n linkText: linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: this.attributes!,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText)\n };\n return(\n \n );\n\n }\n return null;\n }\n\n private _createLinkText(link: ILinkData): React.ReactNode | null {\n if(!link || !link.linkText) {\n return null;\n }\n\n return ({link.linkText});\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if(!heading || !heading.text || !heading.text.length) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _createText(text: string): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createImageMarkup(item: Msdyn365.IImageData, ariaHiddenAttr?: boolean): React.ReactNode | null {\n if(!item || !item.src || !item.src.length) {\n return null;\n }\n\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: `w=24&h=24&m=6`, w: 0, h: 0 },\n lg: { q: `w=24&h=24&m=6`, w: 0, h: 0 }\n },\n lazyload: true\n };\n return (\n \n );\n }\n}\n\nexport default FooterItem;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { IAccountLoyaltyTileViewProps } from './account-loyalty-tile';\n\nconst AccountLoyaltyTileView: React.FC = props => {\n const { AccountLoyaltyTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountLoyaltyTileView;\n","/*---------------------------------------------------------------------------------------------\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, getTelemetryObject, IModuleProps, INodeProps, IPayLoad, ITelemetryContent, NodeTag, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\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 { IAccordionData } from './accordion.data';\nimport { IAccordionProps } from './accordion.props.autogenerated';\n\n/**\n *\n * Accordion component\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\nexport interface IAccordionViewProps extends IAccordionProps<{}> {\n heading?: React.ReactNode;\n AccordionContainer: IModuleProps;\n HeaderSection: INodeProps;\n HeadingWrapper: INodeProps;\n accordianButtonsContainer: INodeProps;\n accordionButtons: React.ReactNode;\n accordionItemContainer: INodeProps;\n accordionItems: React.ReactNode;\n}\n\n/**\n *\n * Accordion component\n * @extends {React.Component>}\n */\n@observer\nclass Accordion extends React.Component> {\n\n private telemetryContent?: ITelemetryContent;\n private payLoad: IPayLoad;\n\n constructor(props: IAccordionProps) {\n super(props);\n this._onExpandAll = this._onExpandAll.bind(this);\n this._onCollapseAll = this._onCollapseAll.bind(this);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n }\n public render(): JSX.Element {\n\n const { slots } = this.props;\n const { heading, className } = this.props.config;\n const headingComponent = heading && heading.text && (\n \n );\n\n const accordionViewProps = {\n ...this.props,\n AccordionContainer: {\n moduleProps: this.props,\n className: classnames('ms-accordion', className)\n },\n HeaderSection: { className: 'ms-accordion-header-section' },\n HeadingWrapper: { className: 'ms-accordion-header-section-container' },\n heading: headingComponent,\n config: this.props && this.props.config,\n accordianButtonsContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-header-section-toggle-button-container',\n },\n accordionButtons: this._renderAccordionButton(),\n accordionItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-item-section',\n },\n accordionItems: slots && slots.accordionItems && slots.accordionItems.length > 0 && slots.accordionItems.map((item: React.ReactNode, index: number) => this._getAccordionItem(item, index))\n };\n return this.props.renderView(accordionViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading!.text = event.target.value;\n\n private _renderAccordionButton(): React.ReactNode | null {\n const { config, resources } = this.props;\n this.payLoad.contentAction.etext = TelemetryConstant.ExpandAll;\n const attributeExpandAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.CollapseAll;\n const attributeCollapseAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n if (!config.showToggleAll) {\n this.props.context.telemetry.error('Accordian button content is empty, module wont render');\n return null;\n }\n return (\n <>\n \n  { resources.toggleAllSeparator} \n \n \n );\n }\n\n private _onExpandAll(): void {\n const accordionState = { isAllExpanded: true };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n }\n\n private _onCollapseAll(): void {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n }\n\n private _getAccordionItem(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, { interactionStyle: this.props.config.interactionStyle })}\n \n );\n }\n\n}\n\nexport default Accordion;\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 { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { 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';\nimport { INavigationMenuViewProps } from './navigation-menu';\nimport { IMenuItemData } from './navigation-menu.data';\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 static isBackTrack: boolean = false;\n private currentLevel: number = 0;\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.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.body.addEventListener('mousedown', this._handleClickOutside);\n }\n\n public componentWillUnmount(): void {\n document.body && document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n }\n\n public render(): JSX.Element | null {\n const { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation} = this.props;\n\n this.currentLevel = 1;\n return(\n \n \n {isMobileView && this.state.activeMenu !== undefined &&\n \n \n {this.state.mobileViewLabelText}\n }\n {this._renderDisplay()}\n \n \n );\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 !NavigationMenuView.isBackTrack ? this.setState({parentMenu: undefined}) : 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 !NavigationMenuView.isBackTrack ? this.setState({parentMenu: item && item.id}) : 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 this.props.context.telemetry.error('Submenu content is empty, module wont render.');\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,false));\n } else {\n return (\n \n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id,false)}\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 this.props.context.telemetry.error('Navigation menu content is empty, module wont render.');\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\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 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 NavigationMenuView.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n\n this._resetFocus();\n };\n\n private _handleGoBack = () => () => {\n NavigationMenuView.isBackTrack = true;\n this.setState({ activeMenu: this.state.parentMenu});\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(\n {\n activeMenu:undefined,\n mobileViewLabelText: '',\n categoryImage:null\n }\n );\n }\n };\n\n private _closeSubmenu():void {\n if (!this.props.isMobileView) {\n this.setState({activeMenu:undefined,categoryImage:null,mobileViewLabelText: ''});\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;","import { Module } from '@msdyn365-commerce-modules/utilities';\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';\nimport { IAccountInvoiceTileViewProps } from './account-invoice-tile';\n\nexport default (props: IAccountInvoiceTileViewProps) => {\n const { AccountInvoiceTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n","import { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IIframeViewProps } from './smwe-iframe';\r\n\r\n/**\r\n *\r\n * IFrameView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class IFrameView extends React.PureComponent {\r\n\r\n public render(): JSX.Element | null {\r\n const { Heading, IframeContainer, IFrame, alert, cookieConsentAccepted } = this.props;\r\n\r\n return (\r\n \r\n {alert}\r\n {cookieConsentAccepted && cookieConsentAccepted === true ? (\r\n <>\r\n {Heading}\r\n {IFrame}\r\n ) : null}\r\n \r\n );\r\n }\r\n}\r\nexport default IFrameView;","/*!\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\nexport interface IAccountOrganizationUsersTileDescription {\n description: string;\n}\n\nexport const AccountOrganizationUsersTileDescription: 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 '../organization-users-tile.props.autogenerated';\n\nexport interface IAccountOrganizationUsersTileLinks {\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 AccountOrganizationUsersTileLinks: 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};\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-organization-users-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 * as React from 'react';\n\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport { AccountOrganizationUsersTileDescription, AccountOrganizationUsersTileLinks } from './components';\nimport { IOrganizationUsersTileData } from './organization-users-tile.data';\nimport { IOrganizationUsersTileProps } from './organization-users-tile.props.autogenerated';\n\nexport interface IOrganizationUsersTileViewProps extends IOrganizationUsersTileProps {\n OrganizationUsersTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * OrganizationUsersTile component\n * @extends {React.PureComponent>}\n */\nclass OrganizationUsersTile extends React.PureComponent> {\n\n private telemetryContent?: ITelemetryContent;\n\n constructor(props: IOrganizationUsersTileProps) {\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 | null {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountOrganizationUsersTileDescriptionForSingleUser, accountOrganizationUsersTileDescriptionForMultipleUsers } = resources;\n const numUsers = data.users && data.users.result;\n const accountOrganizationUsersTileDescription = numUsers === 1 ? accountOrganizationUsersTileDescriptionForSingleUser : accountOrganizationUsersTileDescriptionForMultipleUsers;\n\n const viewProps = {\n ...this.props,\n className: className,\n OrganizationUsersTile: {\n moduleProps: this.props,\n className: classnames('ms-account-organization-users-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 OrganizationUsersTile;\n"],"sourceRoot":""}