{"version":3,"sources":["webpack:///./src/themes/spring-valley-vineyard/views/components/carticon.component.tsx?b397","webpack:///./src/modules/shipping-service/shipping-service.tsx?5d36","webpack:///./src/themes/conn-creek/views/components/carticon.component.tsx?e575","webpack:///src/modules/fabrikam/views/buybox.view.tsx?68a7","webpack:///./src/themes/erath/views/footer-item.view.tsx?82a3","webpack:///./src/themes/stagsleap/views/components/carticon.component.tsx?bd39","webpack:///./src/themes/fth-old/views/components/carticon.component.tsx?9f8e","webpack:///./src/themes/elicit/views/order-history.view.tsx?de48","webpack:///src/modules/footer-category/footer-category.tsx?b7b8","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/themes/patzhall/views/components/carticon.component.tsx?296b","webpack:///src/modules/fabrikam/views/navigation-menu.view.tsx?5991","webpack:///src/modules/accordion/accordion.view.tsx?8c70","webpack:///./src/themes/stemichelle/views/footer-item.view.tsx?2ab1","webpack:///./src/themes/erath/views/components/carticon.component.tsx?4421","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/themes/fth-old/views/footer-item.view.tsx?ff1e","webpack:///./src/themes/columbiacrest/views/footer-item.view.tsx?6ad6","webpack:///./src/themes/patzhall/views/footer-item.view.tsx?784b","webpack:///src/modules/footer-category/footer-category.view.tsx?26a5","webpack:///./src/themes/generazioni/views/components/carticon.component.tsx?47df","webpack:///./src/themes/north-star/views/footer-item.view.tsx?57e5","webpack:///src/modules/fabrikam/utilities/quantity/Quantity.tsx?f073","webpack:///./src/themes/colsolare/views/footer-item.view.tsx?ffa1","webpack:///./src/themes/intrinsic-wine-co/views/footer-item.view.tsx?8e35","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/spring-valley-vineyard/views/footer-item.view.tsx?dbeb","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/themes/enoteca/views/components/carticon.component.tsx?5a13","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/themes/generazioni/views/footer-item.view.tsx?8252","webpack:///./src/themes/conn-creek/views/footer-item.view.tsx?c6e3","webpack:///./src/themes/north-star/views/components/carticon.component.tsx?ac2f","webpack:///./src/themes/fth-old/views/search-result-container.view.tsx?8b22","webpack:///./src/modules/content-block-with-title/content-block-with-title.tsx?ceeb","webpack:///./src/modules/smwe-iframe/smwe-iframe.tsx?9843","webpack:///src/modules/accordion/accordion.tsx?45c1","webpack:///./src/themes/stemichelle/views/components/carticon.component.tsx?e132","webpack:///src/modules/account-welcome-tile/account-welcome-tile.view.tsx?a13c","webpack:///./src/themes/columbiacrest/views/components/carticon.component.tsx?b177","webpack:///src/modules/account-invoice-tile/account-invoice-tile.view.tsx?4620","webpack:///./src/themes/enoteca/views/footer-item.view.tsx?008e","webpack:///./src/modules/smwe-iframe/smwe-iframe.view.tsx?5b22","webpack:///src/modules/map/map.view.tsx?cd35","webpack:///./src/themes/intrinsic-wine-co/views/components/carticon.component.tsx?0522","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","webpack:///./src/themes/stagsleap/views/footer-item.view.tsx?fb57"],"names":["CartIcon","observer","props","cartLabel","data","cart","cartLink","getUrlSync","context","actionContext","cartItem","totalItemsInCart","label","format","React","title","className","href","ShippingService","render","this","config","content","defaultImageSettings","viewports","xs","q","w","h","lg","lazyload","heading","Heading","headingTag","tag","text","image","Image","Object","gridSettings","request","imageSettings","paragraph","dangerouslySetInnerHTML","getRichTextHtml","links","length","map","cta","index","key","role","linkText","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","FooterItemView","constructor","_formatLinkData","Link","path","newUrl","URL","url","requestUrl","FooterItem","_renderElement","HeadingContainer","OrderHistoryOrderInfomation","orderInformationProps","salesId","createdDate","amount","OrderHistoryGroupDelivery","delivery","salesLines","status","salesStatus","deliveryProps","OrderHistoryGroup","group","groupProps","OrderHistoryGroups","groupsProps","groups","OrderHistorySalesOder","salesOrderProps","orderInfomation","orderDetailsLink","OrderHistoryList","listProps","salesOrders","salesOrder","OrderHistoryLabels","OrderHistoryView","orderHistoryProps","alert","loading","emptyMessage","backToShoppingLink","list","moreButton","FooterCategory","telemetry","error","viewprops","categories","FooterList","moduleProps","classnames","FooterListItem","renderView","AccountInvoiceTileDescription","_mapEditableLinks","linkdata","editableLinks","payLoad","getPayloadObject","forEach","link","contentAction","etext","attributes","getTelemetryAttributes","editableLink","additionalProperties","push","AccountInvoiceTileLinks","requestContext","onTextChange","Msdyn365","editProps","AccountInvoiceTile","super","handleHeadingChange","event","value","handleLinkTextChange","linkIndex","getTelemetryObject","telemetryPageName","friendlyName","cultureFormatter","formatCurrency","currencyCode","accountInvoiceTileDescription","invoiceTotalAmount","openinvoiceAmount","invoices","result","invoiceItem","AmountBalance","toFixed","viewProps","onEdit","LinksComponent","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","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","levelClassName","menuOptions","option","idx","hasOptions","haveSubmenu","Math","round","toString","_renderMenu","Button","onClick","onFocus","hoverEffect","imagesource","onMouseOver","onTelemetryClick","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","categoryImageDisplay","DivContainerClass","accordionView","AccordionContainer","accordionItems","accordionButtons","HeaderSection","HeadingWrapper","accordianButtonsContainer","accordionItemContainer","IAccountWishlistTileDescription","AccountWishlistTileLinks","AccountWishlistTile","accountWishlistTileDescription","wishlists","wishlistsCount","CommerceListLines","DescriptionComponent","FooterCategoryView","category","inputRef","_validateMin","minValue","min","isNaN","currentInput","isUpdateing","_onIncrement","_onDecrement","_handleChange","componentDidUpdate","prevProps","disabled","glyphMinusClassName","decrementGlyphClass","glyphPlusClassName","incrementGlyphClass","decrementDisabled","isGiftCard","incrementDisabled","currentValue","TelemetryConstant","DecrementQuantity","decrementAttributes","IncrementQuantity","incrementAttributes","extraClassDecrement","extraClassIncrement","color","type","pattern","onBlur","invokeCallback","currQuantity","updatedQuantity","e","parseInt","inputElement","HTMLInputElement","setAttribute","IAccountProfileText","AccountProfileAttributes","isUpdatingAttributes","gotException","hasError","attributeClassName","maxIntegerLimit","minIntegerLimit","maxDecimalLimit","minDecimalLimit","maxStringLength","maxVATNumberLength","maxPhoneLength","_renderAttributes","accountProfileProps","attributeDefinitions","additionalInformationSectionHeading","elements","showAttributes","split","att","attributeDefinition","find","attribute","IsHidden","Name","toLocaleLowerCase","RecordId","_renderAttribute","edit","editAttributes","attributesEditButtonText","attributesSaveButtonText","saveAttributes","attributesCancelButtonText","cancelAttributes","attributesContainerRef","Text","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","customerInformation","custmerAttributes","Attributes","showAttribute","defaultValue","AttributeValue","DataTypeValue","IntegerValue","String","DecimalValue","StringValue","BooleanValue","keys","_addOrUpdateAttribute","hasValue","entries","payloadData","dataTypeValue","decimalValue","Number","typeError","attributeInputTypeErrorText","lowerBoundValue","upperBoundValue","rangeError","attributeInputRangeErrorText","attributeInputValueExceedsMaximumErrorText","attributeInputValueExceedsMinimumErrorText","integerValue","indexOf","trimValue","trim","attributeInputStringMaxLengthErrorText","textValue","booleanValue","attributeInputMandatoryErrorText","findIndex","splice","Attribute","recordId","Units","ExtensionProperties","NameTranslations","KeyName","Phone","VatNumber","async","updateCustomerAttributesInput","AccountNumber","updateCustomerAttributes","initialCustomerAttributes","exception","debug","element","_buildPayloadData","defaultIntegerValue","DefaultValue","LowerBound","UpperBound","defaultDecimalValue","defaultStringValue","defaultBooleanValue","_getCustomerPhoneAndVatNumber","reaction","__decorate","observable","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","get","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","computed","AccountWishlistTileView","DeliveryOptionList","DeliveryOptionsList","globalConfig","options","pennyShippingMethodIds","pennyShippingIds","modShippingMethodIds","modShippingIds","localList","combinedList","sort","a","b","ShippingChargeAmount","deliveryData","isModShippingMethod","modShipping","isPennyShippingMethod","pennyShipping","deliveryOption","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","channel","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","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","renderTitle","TitleContainer","titleText","SearchResultContainerView","SearchResultContainer","products","ProductsContainer","ProductSectionContainer","isMobile","modalToggle","TitleViewProps","categoryHierarchy","CategoryNavContainer","RefineAndProductSectionContainer","ContentBlockWithTitle","_renderLinkedTitle","_renderTitle","Iframe","iframeRef","isConsentGiven","cookies","srcURL","protocol","iframeClassName","_createHeading","IframeContainer","IFrame","_createIframe","_renderAlert","cookieConsentRequiredMessage","cookieConsentAccepted","targetURL","style","height","width","frameBorder","iframeAriaLabel","Accordion","_onExpandAll","_onCollapseAll","headingComponent","accordionViewProps","_renderAccordionButton","_getAccordionItem","ExpandAll","attributeExpandAll","CollapseAll","attributeCollapseAll","showToggleAll","expandAllText","toggleAllSeparator","collapseAllText","accordionState","isAllExpanded","update","createAccordionStateInput","interactionStyle","AccountWelcomeTileView","IFrameView","MapHeader","MapView","AccountOrganizationUsersTileDescription","AccountOrganizationUsersTileLinks","accountOrganizationUsersTileDescriptionForSingleUser","accountOrganizationUsersTileDescriptionForMultipleUsers","numUsers","users","accountOrganizationUsersTileDescription"],"mappings":"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","file":"static/js/6.4be764d60cdc31e7d6b4.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\n\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\nimport { getUrlSync, IComponent, IComponentProps } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nexport interface ICartIconData {\r\n cart: ICartState;\r\n}\r\n\r\nexport interface ICartIconComponentProps extends IComponentProps {\r\n className?: string;\r\n cartLabel: string;\r\n}\r\n\r\nexport interface ICartIconComponent extends IComponent {\r\n}\r\n\r\n/**\r\n *\r\n * CartIcon component\r\n * @extends {React.FC}\r\n */\r\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\r\n const { cartLabel, data: {cart} } = props;\r\n const cartLink = getUrlSync('cart', props.context.actionContext);\r\n const cartItem = cart ? `(${cart.totalItemsInCart})` : '';\r\n const label = format(cartLabel, cartItem) || `Shopping bag, ${cartItem} items`;\r\n return (\r\n \r\n
\r\n My Cart {cartItem}\r\n
\r\n
\r\n );\r\n});\r\n\r\n// Following code is been replaced with 'CartIcon' in last line and might be used on later\r\n// @ts-ignore\r\n// export const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n// 'CartIcon',\r\n// { component: CartIcon, ...CartIconComponentActions }\r\n// );\r\n\r\nexport default CartIcon;","/*---------------------------------------------------------------------------------------------\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","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\nimport { getUrlSync, IComponent, IComponentProps } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nexport interface ICartIconData {\r\n cart: ICartState;\r\n}\r\n\r\nexport interface ICartIconComponentProps extends IComponentProps {\r\n className?: string;\r\n cartLabel: string;\r\n}\r\n\r\nexport interface ICartIconComponent extends IComponent {\r\n}\r\n\r\n/**\r\n *\r\n * CartIcon component\r\n * @extends {React.FC}\r\n */\r\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\r\n const { cartLabel, data: {cart} } = props;\r\n const cartLink = getUrlSync('cart', props.context.actionContext);\r\n const cartItem = cart ? `(${cart.totalItemsInCart})` : '';\r\n const label = format(cartLabel, cartItem) || `Shopping bag, ${cartItem} items`;\r\n return (\r\n \r\n
\r\n My Cart {cartItem}\r\n
\r\n
\r\n );\r\n});\r\n\r\n// Following code is been replaced with 'CartIcon' in last line and might be used on later\r\n// @ts-ignore\r\n// export const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n// 'CartIcon',\r\n// { component: CartIcon, ...CartIconComponentActions }\r\n// );\r\n\r\nexport default CartIcon;","/*---------------------------------------------------------------------------------------------\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","/*---------------------------------------------------------------------------------------------\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 { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * FooterItemView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n const { FooterItem } = this.props;\r\n return(\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n const {heading, HeadingContainer,Link, linkText, image} = props;\r\n if(heading) {\r\n return ( {heading} );\r\n } else if(Link && this._formatLinkData(Link)) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n return(\r\n <>\r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n\r\n private _formatLinkData = (Link: INodeProps) => {\r\n if(Link.href === undefined) {\r\n return Link;\r\n }\r\n\r\n const path: string = (Link.href as Msdyn365.ILinkData).destinationUrl || (Link.href as string);\r\n const newUrl = new URL(path, this.props.context.request.url.requestUrl).href;\r\n Link.href = newUrl;\r\n return Link;\r\n };\r\n}\r\n\r\nexport default FooterItemView;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\nimport { getUrlSync, IComponent, IComponentProps } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nexport interface ICartIconData {\r\n cart: ICartState;\r\n}\r\n\r\nexport interface ICartIconComponentProps extends IComponentProps {\r\n className?: string;\r\n cartLabel: string;\r\n}\r\n\r\nexport interface ICartIconComponent extends IComponent {\r\n}\r\n\r\n/**\r\n *\r\n * CartIcon component\r\n * @extends {React.FC}\r\n */\r\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\r\n const { cartLabel, data: {cart} } = props;\r\n const cartLink = getUrlSync('cart', props.context.actionContext);\r\n const cartItem = cart ? `(${cart.totalItemsInCart})` : '';\r\n const label = format(cartLabel, cartItem) || `Shopping bag, ${cartItem} items`;\r\n return (\r\n \r\n
\r\n My Cart {cartItem}\r\n
\r\n
\r\n );\r\n});\r\n\r\n// Following code is been replaced with 'CartIcon' in last line and might be used on later\r\n// @ts-ignore\r\n// export const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n// 'CartIcon',\r\n// { component: CartIcon, ...CartIconComponentActions }\r\n// );\r\n\r\nexport default CartIcon;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\nimport { getUrlSync, IComponent, IComponentProps } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nexport interface ICartIconData {\r\n cart: ICartState;\r\n}\r\n\r\nexport interface ICartIconComponentProps extends IComponentProps {\r\n className?: string;\r\n cartLabel: string;\r\n}\r\n\r\nexport interface ICartIconComponent extends IComponent {\r\n}\r\n\r\n/**\r\n *\r\n * CartIcon component\r\n * @extends {React.FC}\r\n */\r\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\r\n const { cartLabel, data: {cart} } = props;\r\n const cartLink = getUrlSync('cart', props.context.actionContext);\r\n const cartItem = cart ? `(${cart.totalItemsInCart})` : '';\r\n const label = format(cartLabel, cartItem) || `Shopping bag, ${cartItem} items`;\r\n return (\r\n \r\n
\r\n My Cart {cartItem}\r\n
\r\n
\r\n );\r\n});\r\n\r\n// Following code is been replaced with 'CartIcon' in last line and might be used on later\r\n// @ts-ignore\r\n// export const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n// 'CartIcon',\r\n// { component: CartIcon, ...CartIconComponentActions }\r\n// );\r\n\r\nexport default CartIcon;","/*---------------------------------------------------------------------------------------------\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 { IGroup, IGroups, IList, IOrderHistoryViewProps, IOrderInformation, ISalesOrder } from '@msdyn365-commerce-modules/order-management/src/modules/order-history/./order-history';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderHistoryOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n createdDate,\r\n amount\r\n}) => (\r\n \r\n
\r\n
Order#
\r\n
{salesId}
\r\n
\r\n
\r\n
Date:
\r\n {createdDate}\r\n
\r\n
\r\n
Total:
\r\n {amount}\r\n
\r\n
\r\n );\r\n\r\nexport const OrderHistoryGroupDelivery: React.FC = ({ delivery, salesLines }) => {\r\n const status = salesLines[0].salesStatus;\r\n\r\n return (\r\n \r\n
\r\n
Status:
\r\n {status}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const OrderHistoryGroup: React.FC = (group) => (\r\n \r\n {group.delivery && }\r\n \r\n);\r\n\r\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderHistorySalesOder: React.FC = ({ salesOrderProps, orderInfomation, groups, orderDetailsLink }) => (\r\n \r\n {orderInfomation && }\r\n {groups && }\r\n {orderDetailsLink}\r\n \r\n);\r\n\r\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\r\n {salesOrders && salesOrders.map((salesOrder, index) => )}\r\n);\r\n\r\nexport const OrderHistoryLabels: React.FC = () => (\r\n
\r\n
\r\n Order#\r\n
\r\n
\r\n Date\r\n
\r\n
\r\n Total\r\n
\r\n
\r\n Status\r\n
\r\n
\r\n);\r\n\r\nconst OrderHistoryView: React.FC = ({\r\n orderHistoryProps,\r\n alert,\r\n loading,\r\n emptyMessage,\r\n backToShoppingLink,\r\n list,\r\n moreButton\r\n}) => (\r\n \r\n {loading}\r\n {alert && (\r\n <>\r\n {alert}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {emptyMessage && (\r\n <>\r\n {emptyMessage}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {list && }\r\n {list && }\r\n {moreButton && moreButton}\r\n \r\n );\r\n\r\nexport default OrderHistoryView;\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 { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport { IFooterCategoryConfig, IFooterCategoryProps } from './footer-category.props.autogenerated';\n\nexport interface IFooterCategoryViewProps extends IFooterCategoryProps {\n categories: React.ReactNode[];\n FooterList: IModuleProps;\n FooterListItem: INodeProps;\n}\n\n/**\n *\n * FooterCategory component\n * @extends {React.PureComponent>}\n */\nclass FooterCategory extends React.PureComponent> {\n public render(): JSX.Element | null {\n if(!this.props.slots || !this.props.slots.content || !this.props.slots.content.length) {\n this.props.context.telemetry.error('footer slots content is empty, module wont render');\n return null;\n }\n const viewprops = {\n ...this.props,\n categories: this.props.slots.content,\n FooterList: {\n moduleProps: this.props,\n className: classnames('ms-footer__list', this.props.config.className),\n tag:'ul'\n },\n FooterListItem: {\n className: classnames('ms-footer__list-item', this.props.config.className),\n tag: 'li'\n },\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n}\n\nexport default FooterCategory;\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","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\nimport { getUrlSync, IComponent, IComponentProps } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nexport interface ICartIconData {\r\n cart: ICartState;\r\n}\r\n\r\nexport interface ICartIconComponentProps extends IComponentProps {\r\n className?: string;\r\n cartLabel: string;\r\n}\r\n\r\nexport interface ICartIconComponent extends IComponent {\r\n}\r\n\r\n/**\r\n *\r\n * CartIcon component\r\n * @extends {React.FC}\r\n */\r\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\r\n const { cartLabel, data: {cart} } = props;\r\n const cartLink = getUrlSync('cart', props.context.actionContext);\r\n const cartItem = cart ? `(${cart.totalItemsInCart})` : '';\r\n const label = format(cartLabel, cartItem) || `Shopping bag, ${cartItem} items`;\r\n return (\r\n \r\n
\r\n My Cart {cartItem}\r\n
\r\n
\r\n );\r\n});\r\n\r\n// Following code is been replaced with 'CartIcon' in last line and might be used on later\r\n// @ts-ignore\r\n// export const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n// 'CartIcon',\r\n// { component: CartIcon, ...CartIconComponentActions }\r\n// );\r\n\r\nexport default CartIcon;","/*---------------------------------------------------------------------------------------------\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 { 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;","/*---------------------------------------------------------------------------------------------\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 { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * FooterItemView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n const { FooterItem } = this.props;\r\n return(\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n const {heading, HeadingContainer,Link, linkText, image} = props;\r\n if(heading) {\r\n return ( {heading} );\r\n } else if(Link && this._formatLinkData(Link)) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n return(\r\n <>\r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n\r\n private _formatLinkData = (Link: INodeProps) => {\r\n if(Link.href === undefined) {\r\n return Link;\r\n }\r\n\r\n const path: string = (Link.href as Msdyn365.ILinkData).destinationUrl || (Link.href as string);\r\n const newUrl = new URL(path, this.props.context.request.url.requestUrl).href;\r\n Link.href = newUrl;\r\n return Link;\r\n };\r\n}\r\n\r\nexport default FooterItemView;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\nimport { getUrlSync, IComponent, IComponentProps } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nexport interface ICartIconData {\r\n cart: ICartState;\r\n}\r\n\r\nexport interface ICartIconComponentProps extends IComponentProps {\r\n className?: string;\r\n cartLabel: string;\r\n}\r\n\r\nexport interface ICartIconComponent extends IComponent {\r\n}\r\n\r\n/**\r\n *\r\n * CartIcon component\r\n * @extends {React.FC}\r\n */\r\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\r\n const { cartLabel, data: {cart} } = props;\r\n const cartLink = getUrlSync('cart', props.context.actionContext);\r\n const cartItem = cart ? `(${cart.totalItemsInCart})` : '';\r\n const label = format(cartLabel, cartItem) || `Shopping bag, ${cartItem} items`;\r\n return (\r\n \r\n
\r\n My Cart {cartItem}\r\n
\r\n
\r\n );\r\n});\r\n\r\n// Following code is been replaced with 'CartIcon' in last line and might be used on later\r\n// @ts-ignore\r\n// export const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n// 'CartIcon',\r\n// { component: CartIcon, ...CartIconComponentActions }\r\n// );\r\n\r\nexport default CartIcon;","/*---------------------------------------------------------------------------------------------\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","/*---------------------------------------------------------------------------------------------\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 { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * FooterItemView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n const { FooterItem } = this.props;\r\n return(\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n const {heading, HeadingContainer,Link, linkText, image} = props;\r\n if(heading) {\r\n return ( {heading} );\r\n } else if(Link && this._formatLinkData(Link)) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n return(\r\n <>\r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n\r\n private _formatLinkData = (Link: INodeProps) => {\r\n if(Link.href === undefined) {\r\n return Link;\r\n }\r\n\r\n const path: string = (Link.href as Msdyn365.ILinkData).destinationUrl || (Link.href as string);\r\n const newUrl = new URL(path, this.props.context.request.url.requestUrl).href;\r\n Link.href = newUrl;\r\n return Link;\r\n };\r\n}\r\n\r\nexport default FooterItemView;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * FooterItemView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n const { FooterItem } = this.props;\r\n return(\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n const {heading, HeadingContainer,Link, linkText, image} = props;\r\n if(heading) {\r\n return ( {heading} );\r\n } else if(Link && this._formatLinkData(Link)) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n return(\r\n <>\r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n\r\n private _formatLinkData = (Link: INodeProps) => {\r\n if(Link.href === undefined) {\r\n return Link;\r\n }\r\n\r\n const path: string = (Link.href as Msdyn365.ILinkData).destinationUrl || (Link.href as string);\r\n const newUrl = new URL(path, this.props.context.request.url.requestUrl).href;\r\n Link.href = newUrl;\r\n return Link;\r\n };\r\n}\r\n\r\nexport default FooterItemView;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * FooterItemView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n const { FooterItem } = this.props;\r\n return(\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n const {heading, HeadingContainer,Link, linkText, image} = props;\r\n if(heading) {\r\n return ( {heading} );\r\n } else if(Link && this._formatLinkData(Link)) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n return(\r\n <>\r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n\r\n private _formatLinkData = (Link: INodeProps) => {\r\n if(Link.href === undefined) {\r\n return Link;\r\n }\r\n\r\n const path: string = (Link.href as Msdyn365.ILinkData).destinationUrl || (Link.href as string);\r\n const newUrl = new URL(path, this.props.context.request.url.requestUrl).href;\r\n Link.href = newUrl;\r\n return Link;\r\n };\r\n}\r\n\r\nexport default FooterItemView;","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n*--------------------------------------------------------------------------------------------*/\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\nimport { IFooterCategoryViewProps } from './footer-category';\n\nexport const FooterCategoryView: React.FC = props => {\n const {categories, FooterList, FooterListItem} = props;\n if(!categories || !categories.length) {\n props.context.telemetry.error('Footer content is empty, module wont render');\n return null;\n }\n return(\n \n { categories.map((category: ReactNode, index: number) => {\n return (\n \n {category}\n \n );\n })\n }\n \n );\n};\n\nexport default FooterCategoryView;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\nimport { getUrlSync, IComponent, IComponentProps } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nexport interface ICartIconData {\r\n cart: ICartState;\r\n}\r\n\r\nexport interface ICartIconComponentProps extends IComponentProps {\r\n className?: string;\r\n cartLabel: string;\r\n}\r\n\r\nexport interface ICartIconComponent extends IComponent {\r\n}\r\n\r\n/**\r\n *\r\n * CartIcon component\r\n * @extends {React.FC}\r\n */\r\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\r\n const { cartLabel, data: {cart} } = props;\r\n const cartLink = getUrlSync('cart', props.context.actionContext);\r\n const cartItem = cart ? `(${cart.totalItemsInCart})` : '';\r\n const label = format(cartLabel, cartItem) || `Shopping bag, ${cartItem} items`;\r\n return (\r\n \r\n
\r\n My Cart {cartItem}\r\n
\r\n
\r\n );\r\n});\r\n\r\n// Following code is been replaced with 'CartIcon' in last line and might be used on later\r\n// @ts-ignore\r\n// export const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n// 'CartIcon',\r\n// { component: CartIcon, ...CartIconComponentActions }\r\n// );\r\n\r\nexport default CartIcon;","/*---------------------------------------------------------------------------------------------\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 { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * FooterItemView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n const { FooterItem } = this.props;\r\n return {this._renderElement(this.props)};\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n const { heading, HeadingContainer, Link, linkText, image, text } = props;\r\n if(Link) {\r\n this._formatLinkData(Link);\r\n }\r\n if (heading && text) {\r\n return (\r\n <>\r\n {heading}\r\n {text}\r\n \r\n {linkText}\r\n {image}\r\n \r\n \r\n );\r\n } else if(heading) {\r\n ( {heading});\r\n } else if (Link) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n return (\r\n <>\r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n\r\n private _formatLinkData = (Link: INodeProps) => {\r\n if(Link.href === undefined) {\r\n return Link;\r\n }\r\n\r\n const path: string = (Link.href as Msdyn365.ILinkData).destinationUrl || (Link.href as string);\r\n const newUrl = new URL(path, this.props.context.request.url.requestUrl).href;\r\n Link.href = newUrl;\r\n return Link;\r\n};\r\n}\r\n\r\nexport default FooterItemView;\r\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}","/*---------------------------------------------------------------------------------------------\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 { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * FooterItemView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n const { FooterItem } = this.props;\r\n return(\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n const {heading, HeadingContainer,Link, linkText, image} = props;\r\n if(heading) {\r\n return ( {heading} );\r\n } else if(Link && this._formatLinkData(Link)) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n return(\r\n <>\r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n\r\n private _formatLinkData = (Link: INodeProps) => {\r\n if(Link.href === undefined) {\r\n return Link;\r\n }\r\n\r\n const path: string = (Link.href as Msdyn365.ILinkData).destinationUrl || (Link.href as string);\r\n const newUrl = new URL(path, this.props.context.request.url.requestUrl).href;\r\n Link.href = newUrl;\r\n return Link;\r\n };\r\n}\r\n\r\nexport default FooterItemView;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * FooterItemView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n const { FooterItem } = this.props;\r\n return(\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n const {heading, HeadingContainer,Link, linkText, image} = props;\r\n if(heading) {\r\n return ( {heading} );\r\n } else if(Link && this._formatLinkData(Link)) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n return(\r\n <>\r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n\r\n private _formatLinkData = (Link: INodeProps) => {\r\n if(Link.href === undefined) {\r\n return Link;\r\n }\r\n\r\n const path: string = (Link.href as Msdyn365.ILinkData).destinationUrl || (Link.href as string);\r\n const newUrl = new URL(path, this.props.context.request.url.requestUrl).href;\r\n Link.href = newUrl;\r\n return Link;\r\n };\r\n}\r\n\r\nexport default FooterItemView;","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\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 { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * FooterItemView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n const { FooterItem } = this.props;\r\n return(\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n const {heading, HeadingContainer,Link, linkText, image} = props;\r\n if(heading) {\r\n return ( {heading} );\r\n } else if(Link && this._formatLinkData(Link)) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n return(\r\n <>\r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n\r\n private _formatLinkData = (Link: INodeProps) => {\r\n if(Link.href === undefined) {\r\n return Link;\r\n }\r\n\r\n const path: string = (Link.href as Msdyn365.ILinkData).destinationUrl || (Link.href as string);\r\n const newUrl = new URL(path, this.props.context.request.url.requestUrl).href;\r\n Link.href = newUrl;\r\n return Link;\r\n };\r\n}\r\n\r\nexport default FooterItemView;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\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","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\nimport { getUrlSync, IComponent, IComponentProps } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nexport interface ICartIconData {\r\n cart: ICartState;\r\n}\r\n\r\nexport interface ICartIconComponentProps extends IComponentProps {\r\n className?: string;\r\n cartLabel: string;\r\n}\r\n\r\nexport interface ICartIconComponent extends IComponent {\r\n}\r\n\r\n/**\r\n *\r\n * CartIcon component\r\n * @extends {React.FC}\r\n */\r\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\r\n const { cartLabel, data: {cart} } = props;\r\n const cartLink = getUrlSync('cart', props.context.actionContext);\r\n const cartItem = cart ? `(${cart.totalItemsInCart})` : '';\r\n const label = format(cartLabel, cartItem) || `Shopping bag, ${cartItem} items`;\r\n return (\r\n \r\n
\r\n My Cart {cartItem}\r\n
\r\n
\r\n );\r\n});\r\n\r\n// Following code is been replaced with 'CartIcon' in last line and might be used on later\r\n// @ts-ignore\r\n// export const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n// 'CartIcon',\r\n// { component: CartIcon, ...CartIconComponentActions }\r\n// );\r\n\r\nexport default CartIcon;","/*---------------------------------------------------------------------------------------------\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","/*---------------------------------------------------------------------------------------------\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 { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * FooterItemView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n const { FooterItem } = this.props;\r\n return(\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n const {heading, HeadingContainer,Link, linkText, image} = props;\r\n if(heading) {\r\n return ( {heading} );\r\n } else if(Link && this._formatLinkData(Link)) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n return(\r\n <>\r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n\r\n private _formatLinkData = (Link: INodeProps) => {\r\n if(Link.href === undefined) {\r\n return Link;\r\n }\r\n\r\n const path: string = (Link.href as Msdyn365.ILinkData).destinationUrl || (Link.href as string);\r\n const newUrl = new URL(path, this.props.context.request.url.requestUrl).href;\r\n Link.href = newUrl;\r\n return Link;\r\n };\r\n}\r\n\r\nexport default FooterItemView;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * FooterItemView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n const { FooterItem } = this.props;\r\n return(\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n const {heading, HeadingContainer,Link, linkText, image} = props;\r\n if(heading) {\r\n return ( {heading} );\r\n } else if(Link && this._formatLinkData(Link)) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n return(\r\n <>\r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n\r\n private _formatLinkData = (Link: INodeProps) => {\r\n if(Link.href === undefined) {\r\n return Link;\r\n }\r\n\r\n const path: string = (Link.href as Msdyn365.ILinkData).destinationUrl || (Link.href as string);\r\n const newUrl = new URL(path, this.props.context.request.url.requestUrl).href;\r\n Link.href = newUrl;\r\n return Link;\r\n };\r\n}\r\n\r\nexport default FooterItemView;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\nimport { getUrlSync, IComponent, IComponentProps } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nexport interface ICartIconData {\r\n cart: ICartState;\r\n}\r\n\r\nexport interface ICartIconComponentProps extends IComponentProps {\r\n className?: string;\r\n cartLabel: string;\r\n}\r\n\r\nexport interface ICartIconComponent extends IComponent {\r\n}\r\n\r\n/**\r\n *\r\n * CartIcon component\r\n * @extends {React.FC}\r\n */\r\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\r\n const { cartLabel, data: {cart} } = props;\r\n const cartLink = getUrlSync('cart', props.context.actionContext);\r\n const cartItem = cart ? `(${cart.totalItemsInCart})` : '';\r\n const label = format(cartLabel, cartItem) || `Shopping bag, ${cartItem} items`;\r\n return (\r\n \r\n
\r\n My Cart {cartItem}\r\n
\r\n
\r\n );\r\n});\r\n\r\n// Following code is been replaced with 'CartIcon' in last line and might be used on later\r\n// @ts-ignore\r\n// export const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n// 'CartIcon',\r\n// { component: CartIcon, ...CartIconComponentActions }\r\n// );\r\n\r\nexport default CartIcon;","import {\r\n ICategoryHierarchyViewProps,\r\n ISearchResultContainerViewProps,\r\n ITitleViewProps\r\n} from '@msdyn365-commerce-modules/search-result-container';\r\n// import { ICategoryHierarchyViewProps, IRefineMenuViewProps, ISearchResultContainerViewProps, ISortByViewProps, ITitleViewProps } from '@msdyn365-commerce-modules/search-result-container';\r\n// import { ISearchResultModalViewProps } from '@msdyn365-commerce-modules/search-result-container/dist/types';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\r\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\r\n if (categoryHierarchyList) {\r\n return (\r\n \r\n {categoryHierarchyList.map((category, index) => (\r\n \r\n {category}\r\n {categoryHierarchyList && categoryHierarchyList[index + 1] && categoryHierarchySeparator}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\r\n const { title, TitleContainer } = props;\r\n TitleContainer.tag = 'div';\r\n if (title) {\r\n return (\r\n \r\n

\r\n {/*title.titlePrefix*/}\r\n {title.titleText}\r\n

\r\n
\r\n );\r\n }\r\n return null;\r\n};\r\n\r\nconst SearchResultContainerView: React.FC = props => {\r\n const {\r\n SearchResultContainer,\r\n products,\r\n ProductsContainer,\r\n ProductSectionContainer,\r\n isMobile,\r\n modalToggle,\r\n TitleViewProps,\r\n categoryHierarchy,\r\n CategoryNavContainer,\r\n RefineAndProductSectionContainer,\r\n errorMessage\r\n } = props;\r\n if (isMobile) {\r\n return (\r\n \r\n {renderCategoryHierarchy(categoryHierarchy)}\r\n {renderTitle(TitleViewProps)}\r\n
\r\n

\r\n Taste these quintessential varietals inspired by the unbridled spirit and legend of the region—big, bold, Cabernet\r\n Sauvignon and Merlot and a delightful range of fresh, fruit-forward whites, from Chardonnay to Moscato. A wine for\r\n any occasion!\r\n

\r\n
\r\n {/*choiceSummary*/}\r\n {modalToggle}\r\n {/*createSearchResultModal(searchResultModal, refineMenu, sortByOptions)*/}\r\n \r\n {errorMessage}\r\n {products}\r\n \r\n {/*pagination*/}\r\n
\r\n );\r\n }\r\n return (\r\n \r\n \r\n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\r\n {/*TitleViewProps && renderTitleCount(TitleViewProps)*/}\r\n \r\n \r\n {/*refineMenu && renderRefiner(refineMenu)*/}\r\n \r\n {TitleViewProps && renderTitle(TitleViewProps)}\r\n
\r\n

\r\n Taste these quintessential varietals inspired by the unbridled spirit and legend of the region—big, bold,\r\n Cabernet Sauvignon and Merlot and a delightful range of fresh, fruit-forward whites, from Chardonnay to Moscato.\r\n A wine for any occasion!\r\n

\r\n
\r\n {/*choiceSummary*/}\r\n {/*sortByOptionssortByOptions && renderSort(sortByOptions)*/}\r\n \r\n {errorMessage}\r\n {products}\r\n \r\n {/*pagination*/}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\n// const createSearchResultModal = (modalProps: ISearchResultModalViewProps, refineMenu: IRefineMenuViewProps, sortByDropDown: ISortByViewProps): JSX.Element => {\r\n// return React.cloneElement(modalProps.modal, {}, modalProps.modalHeader, createModalBody(modalProps, refineMenu, sortByDropDown), modalProps.modalFooter);\r\n// };\r\n\r\n// const createModalBody = (props: ISearchResultModalViewProps, refineMenu: IRefineMenuViewProps, sortByDropDown: ISortByViewProps): JSX.Element | null => {\r\n// if (sortByDropDown) {\r\n// return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown), renderRefiner(refineMenu));\r\n// }\r\n// return null;\r\n// };\r\n\r\n// const renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\r\n// const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\r\n// if (refiners) {\r\n// return (\r\n// \r\n// \r\n// {refiners.map((submenu, index) => (\r\n// \r\n// {submenu}\r\n// \r\n// ))}\r\n// \r\n// \r\n// );\r\n// }\r\n// return null;\r\n// };\r\n\r\n// const renderSort = (props: ISortByViewProps): JSX.Element | null => {\r\n// const { SortingContainer, sortByDropDown } = props;\r\n// if (sortByDropDown) {\r\n// return (\r\n// \r\n// {sortByDropDown}\r\n// \r\n// );\r\n// }\r\n// return null;\r\n// };\r\n\r\n// const renderTitleCount = (props: ITitleViewProps): JSX.Element | null => {\r\n// const { title, TitleContainer } = props;\r\n// if (title) {\r\n// return (\r\n// \r\n//
\r\n// {title.titleCount}\r\n//
\r\n//
\r\n// );\r\n// }\r\n// return null;\r\n// };\r\n\r\nexport default SearchResultContainerView;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Heading } from '@msdyn365-commerce-modules/utilities';\r\nimport { getRichTextHtml } from '@msdyn365-commerce/core';\r\nimport classname from 'classnames';\r\nimport * as React from 'react';\r\nimport { IContentBlockWithTitleData } from './content-block-with-title.data';\r\nimport {\r\n IContentBlockWithTitleConfig,\r\n IContentBlockWithTitleProps,\r\n ITitleData\r\n} from './content-block-with-title.props.autogenerated';\r\n\r\n// ==============================================================================\r\n/**\r\n * ContentBlockWithTitle component\r\n * @extends {React.PureComponent>}\r\n */\r\n// ==============================================================================\r\nclass ContentBlockWithTitle extends React.PureComponent> {\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n public render(): JSX.Element {\r\n const { config } = this.props;\r\n\r\n return (\r\n
\r\n {config && config.title && this._renderLinkedTitle(config)}\r\n {config && config.text &&\r\n // tslint:disable-next-line:react-no-dangerous-html\r\n \r\n }\r\n
\r\n );\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private _renderLinkedTitle(config: IContentBlockWithTitleConfig): JSX.Element {\r\n if (config.link && config.link.linkUrl.destinationUrl) {\r\n return (\r\n \r\n {this._renderTitle(config.title!)}\r\n \r\n );\r\n } else {\r\n return this._renderTitle(config.title!);\r\n }\r\n }\r\n\r\n // ------------------------------------------------------\r\n // ------------------------------------------------------\r\n private _renderTitle(title: ITitleData): JSX.Element {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ContentBlockWithTitle;","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 *--------------------------------------------------------------------------------------------*/\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","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\nimport { getUrlSync, IComponent, IComponentProps } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nexport interface ICartIconData {\r\n cart: ICartState;\r\n}\r\n\r\nexport interface ICartIconComponentProps extends IComponentProps {\r\n className?: string;\r\n cartLabel: string;\r\n}\r\n\r\nexport interface ICartIconComponent extends IComponent {\r\n}\r\n\r\n/**\r\n *\r\n * CartIcon component\r\n * @extends {React.FC}\r\n */\r\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\r\n const { cartLabel, data: {cart} } = props;\r\n const cartLink = getUrlSync('cart', props.context.actionContext);\r\n const cartItem = cart ? `(${cart.totalItemsInCart})` : '';\r\n const label = format(cartLabel, cartItem) || `Shopping bag, ${cartItem} items`;\r\n return (\r\n \r\n
\r\n My Cart {cartItem}\r\n
\r\n
\r\n );\r\n});\r\n\r\n// Following code is been replaced with 'CartIcon' in last line and might be used on later\r\n// @ts-ignore\r\n// export const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n// 'CartIcon',\r\n// { component: CartIcon, ...CartIconComponentActions }\r\n// );\r\n\r\nexport default CartIcon;","/*---------------------------------------------------------------------------------------------\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","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\nimport { getUrlSync, IComponent, IComponentProps } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nexport interface ICartIconData {\r\n cart: ICartState;\r\n}\r\n\r\nexport interface ICartIconComponentProps extends IComponentProps {\r\n className?: string;\r\n cartLabel: string;\r\n}\r\n\r\nexport interface ICartIconComponent extends IComponent {\r\n}\r\n\r\n/**\r\n *\r\n * CartIcon component\r\n * @extends {React.FC}\r\n */\r\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\r\n const { cartLabel, data: {cart} } = props;\r\n const cartLink = getUrlSync('cart', props.context.actionContext);\r\n const cartItem = cart ? `(${cart.totalItemsInCart})` : '';\r\n const label = format(cartLabel, cartItem) || `Shopping bag, ${cartItem} items`;\r\n return (\r\n \r\n
\r\n My Cart {cartItem}\r\n
\r\n
\r\n );\r\n});\r\n\r\n// Following code is been replaced with 'CartIcon' in last line and might be used on later\r\n// @ts-ignore\r\n// export const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n// 'CartIcon',\r\n// { component: CartIcon, ...CartIconComponentActions }\r\n// );\r\n\r\nexport default CartIcon;","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","/*---------------------------------------------------------------------------------------------\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 { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * FooterItemView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n const { FooterItem } = this.props;\r\n return(\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n const {heading, HeadingContainer,Link, linkText, image} = props;\r\n if(heading) {\r\n return ( {heading} );\r\n } else if(Link && this._formatLinkData(Link)) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n return(\r\n <>\r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n\r\n private _formatLinkData = (Link: INodeProps) => {\r\n if(Link.href === undefined) {\r\n return Link;\r\n }\r\n\r\n const path: string = (Link.href as Msdyn365.ILinkData).destinationUrl || (Link.href as string);\r\n const newUrl = new URL(path, this.props.context.request.url.requestUrl).href;\r\n Link.href = newUrl;\r\n return Link;\r\n };\r\n}\r\n\r\nexport default FooterItemView;","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","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\nimport { getUrlSync, IComponent, IComponentProps } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nexport interface ICartIconData {\r\n cart: ICartState;\r\n}\r\n\r\nexport interface ICartIconComponentProps extends IComponentProps {\r\n className?: string;\r\n cartLabel: string;\r\n}\r\n\r\nexport interface ICartIconComponent extends IComponent {\r\n}\r\n\r\n/**\r\n *\r\n * CartIcon component\r\n * @extends {React.FC}\r\n */\r\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\r\n const { cartLabel, data: {cart} } = props;\r\n const cartLink = getUrlSync('cart', props.context.actionContext);\r\n const cartItem = cart ? `(${cart.totalItemsInCart})` : '';\r\n const label = format(cartLabel, cartItem) || `Shopping bag, ${cartItem} items`;\r\n return (\r\n \r\n
\r\n My Cart {cartItem}\r\n
\r\n
\r\n );\r\n});\r\n\r\n// Following code is been replaced with 'CartIcon' in last line and might be used on later\r\n// @ts-ignore\r\n// export const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n// 'CartIcon',\r\n// { component: CartIcon, ...CartIconComponentActions }\r\n// );\r\n\r\nexport default CartIcon;","/*---------------------------------------------------------------------------------------------\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","/*---------------------------------------------------------------------------------------------\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 { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * FooterItemView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n const { FooterItem } = this.props;\r\n return(\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n const {heading, HeadingContainer,Link, linkText, image} = props;\r\n if(heading) {\r\n return ( {heading} );\r\n } else if(Link && this._formatLinkData(Link)) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n return(\r\n <>\r\n {linkText}\r\n {image}\r\n \r\n );\r\n }\r\n\r\n private _formatLinkData = (Link: INodeProps) => {\r\n if(Link.href === undefined) {\r\n return Link;\r\n }\r\n\r\n const path: string = (Link.href as Msdyn365.ILinkData).destinationUrl || (Link.href as string);\r\n const newUrl = new URL(path, this.props.context.request.url.requestUrl).href;\r\n Link.href = newUrl;\r\n return Link;\r\n };\r\n}\r\n\r\nexport default FooterItemView;"],"sourceRoot":""}