{"version":3,"sources":["webpack:///src/modules/store-selector/store-selector.view.tsx?b873","webpack:///src/modules/tab-item/tab-item.view.tsx?76f0","webpack:///src/index.ts?c6ae","webpack:///src/modules/password-reset/password-reset.view.tsx?f872","webpack:///src/modules/back-top-footer/back-top-footer.tsx?0e13","webpack:///src/modules/invoice-details/invoice-details.view.tsx?5ebe","webpack:///src/modules/cookie-compliance/components/accept-button.tsx?1709","webpack:///src/modules/cookie-compliance/components/links.tsx?807e","webpack:///src/modules/cookie-compliance/cookie-compliance.tsx?5f7e","webpack:///src/modules/bulk-purchase/bulk-purchase.view.tsx?2550","webpack:///src/modules/adventureworks/views/components/promocode.component.tsx?6e07","webpack:///src/modules/store-selector/components/selected-store/selected-store.tsx?8d1a","webpack:///src/modules/store-selector/store-selector.tsx?ce13","webpack:///src/modules/fabrikam/views/navigation-menu.view.tsx?5991","webpack:///src/modules/aad-generic/aad-generic.view.tsx?ecad","webpack:///src/modules/account-customer-balance-tile/account-customer-balance-tile.view.tsx?955a","webpack:///src/modules/catalog-picker/catalog-picker.view.tsx?d632","webpack:///src/modules/adventureworks/views/write-review.view.tsx?7a62","webpack:///src/modules/b2b-requests-status/b2b-requests-status.view.tsx?afa7","webpack:///./src/modules/navigation-menu/navigation-menu.data.ts?1365","webpack:///./src/modules/navigation-menu/navigation-menu.props.autogenerated.ts?43f0","webpack:///./src/modules/navigation-menu/navigation-menu.tsx?7711","webpack:///src/modules/fabrikam/views/search-result-container.view.tsx?f8ea","webpack:///./src/themes/connselmer2/views/product-specification.view.tsx?55a4","webpack:///src/modules/checkout-express-payment-container/checkout-express-payment-container.view.tsx?3d5f","webpack:///src/modules/invoices-list/invoices-list.view.tsx?0243","webpack:///src/modules/adventureworks/views/content-block.view.tsx?ebaa","webpack:///src/modules/tab/tab.tsx?d713","webpack:///src/modules/cart/cart.view.tsx?394b","webpack:///src/modules/adventureworks/views/order-details.view.tsx?1e8c","webpack:///src/modules/business-partners/business-partners.view.tsx?677a","webpack:///src/modules/account-generic-tile/account-generic-tile.view.tsx?bca1","webpack:///src/modules/store-selector/components/store-pickup-option-list.tsx?27e0","webpack:///src/modules/store-selector/components/store-selector-location-lines.tsx?0668","webpack:///src/modules/store-selector/components/store-selector-search-form.tsx?1a99","webpack:///src/modules/store-selector/components/store-selector-small-components.tsx?c26d","webpack:///src/modules/sign-up/sign-up.view.tsx?e4b6","webpack:///src/modules/checkout-loyalty/checkout-loyalty.view.tsx?876d","webpack:///src/modules/account-profile-edit/account-profile-edit.view.tsx?72b7","webpack:///src/modules/tab-item/tab-item.tsx?d2c1","webpack:///src/modules/fabrikam/views/header.view.tsx?1cde","webpack:///src/modules/order-details/order-details.view.tsx?018c","webpack:///src/modules/store-selector/components/pickup-option-list.tsx?9a9c","webpack:///src/modules/tab/tab.view.tsx?701e","webpack:///src/modules/store-selector/components/store-selector-location-line-item/store-selector-location-line-item.components.tsx?5a50","webpack:///./src/themes/connselmer/views/product-specification.view.tsx?7284","webpack:///src/modules/adventureworks/views/store-selector.view.tsx?1470","webpack:///src/modules/cookie-compliance/cookie-compliance.view.tsx?b30b","webpack:///./src/themes/leblanc/views/product-specification.view.tsx?323e","webpack:///src/modules/b2b-requests-tile/b2b-requests-tile.view.tsx?949e","webpack:///src/modules/account-welcome-tile/account-welcome-tile.view.tsx?a13c","webpack:///src/modules/account-invoice-tile/account-invoice-tile.view.tsx?4620","webpack:///src/modules/loyalty-terms/loyalty-terms.view.tsx?5155","webpack:///src/modules/store-selector/components/store-selector-location-line-item/date-time-helpers.ts?89f3","webpack:///src/modules/checkout-apple-pay/checkout-apple-pay.view.tsx?3cd4","webpack:///./src/modules/navigation-menu/navigation-menu.view.tsx?0899","webpack:///src/modules/adventureworks/views/footer-item.view.tsx?9747","webpack:///src/modules/account-customer-balance/account-customer-balance.view.tsx?35d2"],"names":["renderSelectedStore","props","storeDetailsMain","storeHeader","storeName","storeDetailsCloseButton","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","isCurrentLocation","currentLocation","isPreferredStore","preferredStoreButton","removePreferredStoreButton","React","Node","Object","assign","canSelectLocation","deliveryOptions","pickUpDeliveryOptionButton","pickupModes","ArrayExtensions","hasElements","renderDeliveryOptions","StoreSelectorView","FooterContainerProps","HeaderContainerProps","HeaderProps","ModuleProps","terms","Module","BodyContainerProps","locationsMessage","search","state","spinner","locationsList","noLocationsMessage","maps","bodyWrapperProps","storeResultContainerProps","mapContainerProps","isMobileView","storeDetailsModal","selectedLocation","isSearchInProgress","renderBody","_renderTabItemContent","items","length","map","item","index","key","TabItemView","tabItemType","tabSlots","TabContentContainer","TabHeaderContainer","TabItemContent","tabHeader","TabItemType","TabContent","tabItemContent","TabHeader","PasswordResetItem","_ref","wrapper","label","errorMessage","input","PasswordResetLoading","_ref3","modal","modalBody","icon","message","PasswordResetView","passwordReset","viewState","loading","defaultAADConainer","aadConainer","heading","passwordResetLocalAccount","isShowLoading","_ref2","localAccount","buttonsWrapper","buttons","verificationSuccessModal","verificationSuccessModalMessage","error","button","LocalAccount","BackTopFooter","constructor","super","editProps","requestContext","this","context","request","onEdit","event","config","backtoTopText","target","value","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","telemetry","render","destination","BackToTop","href","title","ariaLabel","className","text","InvoiceDetailsView","header","products","paymentDetails","payInvoiceError","moduleProps","CookieComplianceAcceptButton","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","onClose","payLoad","getPayloadObject","attributes","getTelemetryAttributes","type","onClick","CookieComplianceLinks","_mapEditableLinks","linkdata","editableLinks","forEach","link","linkText","contentAction","etext","editableLink","linkUrl","destinationUrl","openInNewTab","role","additionalProperties","onTelemetryClick","push","links","Msdyn365","onTextChange","CookieCompliance","handleLinkTextChange","linkIndex","_this$props$config$ac","actionLinks","handleContentChange","content","visible","cookieRef","_onDismiss","bind","componentDidMount","cookies","isConsentGiven","setState","resources","acceptCookiesAriaLabel","moduleConfig","MsDyn365","isBrowser","viewProps","_objectSpread","onDismiss","CookieComplianceBanner","classnames","ref","AlertProps","color","fade","Content","acceptButton","renderView","setConsentCookie","location","reload","BulkPurchaseViewComponent","container","PromoCode","_onInputChangeHandler","promoCodeInputValue","trim","canApply","_applyPromotion","cartState","appliedPromo","addPromoCode","promoCode","then","result","status","substatus","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","catch","failedToAddPromoCodeErrorText","_onSubmitHandler","preventDefault","applyPromotionHandler","_renderForm","promoPlaceholderText","promoCodeApplyButtonText","onSubmit","onChange","placeholder","Button","disabled","_removePromotion","_event$currentTarget$","code","currentTarget","getAttribute","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_renderAppliedPromoCode","cart","Coupons","removePromotionHandler","coupon","removePromoAriaLabelFormat","format","removePromoText","Code","TelemetryConstant","ApplyPromoCode","promoCodeHeadingText","onPickupInStoreClickHandler","_props$selectedStore","selectedStore","OrgUnitAvailability","OrgUnitLocation","handlers","onSelected","onSetPreferredStoreClickHandler","_props$selectedStore2","onSetAsPreferredStore","OrgUnitNumber","onChangeHandler","async","_props$selectedStore3","deliveryCode","Promise","resolve","removePreferredStoreHandler","onRemovePreferredStore","onPickupModeSelectHandler","pickupMode","_props$selectedStore4","storeDetailsModalHandler","closeStoreDetailsModal","renderPickupModes","deliveryOptionList","pickupInStoreButtonText","pickupInStoreAriaLabel","undefined","filteredPickupMode","createElement","PickUpOptionList","pickupListOptionMenuText","pickupmodeList","SelectedStoreComponent","_selectedStore$OrgUni","_selectedStore$OrgUni2","shouldHideStockStatus","isInStock","stockStatusLabel","preferredStoreLocationId","isPreferredStoreEnabled","isLocationDisabled","storePickUpOptionList","productPickUpOptionList","preferredDistanceUnit","parentClassName","OrgUnitName","distanceAsString","buildDistanceString","Distance","resourceLabel","inStock","outOfStock","stockLabel","stockText","selectLocation","selectLocationAriaLabelFormat","replace","PickupInStore","PreferredStore","preferredStoreAttributes","RemovePreferredStore","removePreferredStoreAttributes","matchDeliveryOptions","tag","availabilityInfoHeader","preferredStoreAriaLabel","preferredStoreText","setAsPreferredStoreTextAriaLabel","setAsPreferredStoreText","StoreSelector","shouldHideInventory","preferredStore","hasEnabledOutOfStockCheck","shouldDisplayList","data","availabilitiesWithHours","storeSelectorStateManager","storeLocations","selectedStoreLocationId","find","store","_store$OrgUnitAvailab","orgUnitLocation","selectedStoreResources","_mapResources","_selectedStore$OrgUni3","selectedProps","_isCurrentLocation","alreadySelectedLocation","_isProductInStock","ItemAvailabilities","_stockInventoryLabel","StoreId","OrgUnitPickUpDeliveryModes","DeliveryOptions","_onOrgUnitLocationSelected","_setPreferredStore","_removePreferredStore","_closeStoreDetailModal","termsOfServiceLink","handleHeadingChange","onShowAllStoresHandler","_getAndUpdateStoreLocation","onFilterLocations","stores","filter","_location$OrgUnitPick","some","deliveryOption","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","actionContext","channel","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","id","_onSuggestionSelected","errorCallback","debug","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","storeId","mode","_store$OrgUnitAvailab2","setPreferredStoreLocation","Latitude","Longitude","clearPreferredStore","setSelectedStoreLocationId","_setSelectedStore","searchTerm","isSeeAllStoreValue","geoLocate","_updateLocations","latitude","longitude","shouldShowAllStores","_navigator","style","isDialogOpen","navigator","geolocation","getCurrentPosition","position","coords","PERMISSION_DENIED","timeout","_closeDialog","_storeSelectorStateMa","parentElementRef","current","focus","closeDialog","_setOrgUnitStoreInformation","moduleId","styleDefault","onLocationSelected","preferredLocationId","storeLocationList","_sortStores","orgUnitStoreInformation","showMapViewLink","isDialog","product","setOrgUnitStoreInformation","radius","lookupRadius","searchRadiusUnit","calRadius","distanceUnitValue","modeDefault","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getFullAvailableInventoryNearby","getOrgUnitLocationByArea","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","GetFullAvailableInventoryNearbyInput","RecordId","warning","deliveryMode","contactInfoHeader","contactText","storeHoursHeader","timeText","availabilityText","closedText","storeHoursClosedText","outOfStockText","inStockText","selectedStoreLocationText","selectStoreText","selectStoreAriaFormatText","days","monday","storeHoursMondayText","tuesday","storeHoursTuesdayText","wednesday","storeHoursWednesdayText","thursday","storeHoursThursdayText","friday","storeHoursFridayText","saturday","storeHoursSaturdayText","sunday","storeHoursSundayText","mondayFull","storeHoursMondayFullText","tuesdayFull","storeHoursTuesdayFullText","wednesdayFull","storeHoursWednesdayFullText","thursdayFull","storeHoursThursdayFullText","fridayFull","storeHoursFridayFullText","saturdayFull","storeHoursSaturdayFullText","sundayFull","storeHoursSundayFullText","hasEnableOutOfStockCheck","itemAvailabilities","AvailableQuantity","ProductInventoryInformation","_isInStock$OrgUnitAva","InventoryLocationId","InventLocationId","StockLevelLabel","storeCounter","_this$props$data$stor6","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","setTimeout","reaction","_this$props$data$stor2","_this$props$data$stor3","_this$props$data$stor4","_this$props$data$stor5","loadMapApi","BingMapsEnabled","lang","locale","market","_this$props$data$stor7","_this$props$data$stor8","_this$props$context$a","_this$props$data$stor9","when","_this$props$data$stor10","_this$props$data$stor11","_this$props$data$stor12","isSameContext","shouldComponentUpdate","_storeSelectorStateMa2","_storeSelectorStateMa3","_sortLocation","_storeSelectorStateMa4","_storeSelectorStateMa5","setAsPreferredStore","shouldSetAsPreferredStore","showAllStores","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","app","appConfig","slots","mapSlot","isMobileDevice","isMobile","variant","VariantType","Viewport","isMapDisabled","isInlineView","isLocatorView","listMapViewState","displayList","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","milesShortText","sortLocation","isEnableOutofStock","enableStockCheck","locationListProps","_getStoreLocationListProps","hasMapSlot","dialogClassName","Modal","classname","autoFocus","isOpen","onClosed","horizontalPosition","verticalPosition","toggle","ModalHeader","ModalFooter","ModalBody","StoreSelectorFoundLocationsMessage","locations","searchRadius","isSeeAllStore","StoreSelectorSearchForm","performSearch","searchTermChanged","onShowAllStores","onToggleListMapViewState","locatorView","productPickUpDeliveryOptions","filterPickupModeSelected","hasEnabledPickupFilterToShowStore","StoreSelectorWaiting","StoreSelectorLocationLines","outOfStockThreshold","enableOutOfStockCheck","storeLocatorView","shouldShowIndex","StoreSelectorEmptyMessage","StoreSelectorTermsOfService","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","_value$OrgUnitAvailab","isStoreLocatorView","storeList","storeLineProps","_createStoreLocationList","_store$OrgUnitAvailab3","selectedStoreLocation","lineResources","storeOpenFrom","secondsToTime","OpenFrom","storeOpenTo","OpenTo","storeHours","StoreHours","_store$OrgUnitAvailab4","hideStockStatus","toString","locationOpen","openFrom","openTo","storeHoursList","RegularStoreHours","buildStoreHours","__decorate","observer","NavigationMenuView","currentLevel","_positionInSetOffset","escapeKey","_updateCategoryImage","categoryImageSrc","option","promotionalImage","src","altText","promotionalContent","image","imageSrc","promotionalItemImageSettings","imageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","activeMenu","parentMenu","showCategoryImage","imageSource","_resetFocus","menuNode","_handleClickOutside","contains","_handleFocusOutside","relatedTarget","_closeSubmenu","_escFunction","keyCode","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","_getCategoryImage","categoryImageUrl","generateImageUrl","apiSettings","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","lazyload","_categoryImage$imageS","ImageData","Image","gridSettings","categoryImageSettings","loadFailureBehavior","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","document","body","addEventListener","componentWillUnmount","removeEventListener","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","menuItem","posinset","_renderDrawerMenu","MenuList","tabIndex","_renderDisplay","setSize","subMenu","_renderDrawer","_renderLinkMenuItem","toggleButtonText","keyValue","keys","isDrawerOpen","colProps","Drawer","toggleButtonProps","openGlyph","onToggle","collapseProps","closeGlyph","glyphPlacement","_renderLinkText","menuSubItem","currentPos","_menuItem$subMenu2","_menuItem$subMenu","_renderDrawerLink","linkURL","_renderSpanMenuItem","ListItem","menuItemList","menuItemDatum","_getFromSubMenu","_createMenuItemList","subMenus","i","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","idx","hasOptions","haveSubmenu","Math","round","_renderMenu","onFocus","hoverEffect","arguments","isParent","Link","imagesource","shouldOpenNewTab","onMouseOver","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","aadGeneric","aadAPIConainer","AccountCustomerBalanceTileView","AccountCustomerBalanceTile","CatalogPickerViewFunctionComponent","catalogPicker","paragraph","catalogs","renderProductDescription","_props$data$product$r","primaryImageSource","PrimaryImageUrl","imageUrl","fallBackSrc","xl","cropFocalRegion","renderProductImage","Name","ItemId","WriteReviewView","signInMessage","signInButton","modalToggle","isAuthenticated","user","RichTextComponent","reviewModal","modalHeader","form","inputRow","selectRatingLabel","rating","reviewTitleLabel","titleInput","reviewTextLabel","textInput","privacyPolicyUrl","modalFooter","submitButton","cancelButton","createReviewModal","B2bRequestsStatusView","b2bRequestsStatus","table","MenuTypeIndexId","MenuSource","navigationMenuSource","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","retailServerOnly","cmsOnly","all","_updateViewport","viewport","device","Type","nameTranslations","nameTranslation","Language","toLowerCase","Text","resizeThrottledEventHandler","addThrottledEvent","window","_this$props$config$di","_this$props$config$di2","_mapData","isEmptyOrNullObject","displayCategoryImage","displayPromotionalImage","ImageContainer","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","mergedData","categories","_constructMenuItemData","cmsNavItems","_constructTopMenuItemData","_this$props$config$en","_this$props$config$ro","enabletopMenu","mergedRootMenuData","topMenu","rootMenuNavigation","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","menuAriaLabel","promotionalData","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","_NavigationMenu$getFr","_retailItem$Url","_NavigationMenu$getFr2","Images","Uri","RSItemIdInit","getFriendlyName","NameTranslations","Url","substring","split","slice","join","_getNestedChildren","menuSource","Retail","CMSItemIdInit","imageDestinationURL","imageLink","_getCMSNestedChildren","Cms","category","imageSourceUrl","nestedChildren","Children","_getViewport","innerWidth","observable","computed","createSearchResultModal","modalProps","refineMenu","sortByDropDown","isRecoSearchPage","createModalBody","renderSort","renderRefiner","refiners","RefineMenuContainer","RefinerSectionContainer","SortingContainer","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","renderTitle","TitleContainer","titlePrefix","titleText","titleCount","SearchResultContainerView","_props$context$action","SearchResultContainer","pagination","ProductsContainer","ProductSectionContainer","choiceSummary","searchResultModal","TitleViewProps","categoryHierarchy","sortByOptions","CategoryNavContainer","RefineAndProductSectionContainer","FeatureSearchContainer","similarLookProduct","query","recommendation","ProductSpecificationView","ProductSpecification","ProductSpecificationTableProps","ProductSpecificationTableBodyProps","productSpecificationResult","rowdata","row","ObjectExtensions","isNullOrUndefined","cellData","dangerouslySetInnerHTML","ContainerItemsComponent","isLoadingClassName","CheckoutExpressPaymentContainerView","checkoutPlainContainerProps","isReady","waiting","headerProps","InvoiceListView","invoiceRequestModal","renderAdditionalContent","additionalContent","_additionalContent$ad","additionalContentNode","additionalContentItems","additionalContentItemContainer","additionalContentItemLinks","contentBlockView","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageAriaLabel","imageClass","Tab","tabIndexQuery","_refHandler","activeLink","_onClick","e","activeTabState","activeContentIndex","tabId","update","createTabStateInput","currentTabIndex","newUrl","_setGetParameter","String","history","pushState","path","_onKeyDown","slotLength","tabItems","defaultTabIndex","initialIndex","queryString","activeTab","queryTabIndex","indexOf","arr","Number","parseInt","_getTabHeader","_getTabContent","nextProps","nextState","headingComponent","tabViewProps","TabContainer","headerSection","tabsSection","tabItemContainer","tabContents","tabHeaders","componentDidUpdate","params","isEditor","dataActionTabId","selected","contentID","getContentID","onKeyDown","isSelected","itemIndex","paramName","paramValue","url","URL","requestUrl","URLSearchParams","set","decodeURIComponent","_renderCartlines","cartLines","cartEmptyText","CartlinesWrapper","storeSelector","backToShoppingButton","waitingComponent","cartLoadingStatus","cartDataResult","cartLine","_cartLine$cartlineId","cartlineId","cartline","pickUpInStore","ContainerProps","defaultComponent","addToOrderTemplate","remove","addToWishlist","renderCartLinesGroupHeader","pickUpText","shippingText","emailShippingText","titleSeparate","emailDeliveryModeCode","_cartLine$pickUpInSto4","groupTitle","isBopisSelected","StringExtensions","isNullOrEmpty","DeliveryMode","renderCartLinesGroupTitle","_cartLine$pickUpInSto","_cartLine$pickUpInSto2","_cartLine$pickUpInSto3","orgUnitName","CartView","_props$cart","_props$cart2","errorData","promotions","renderModuleAttributes","hasInvoiceLine","promotionOptions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","multiplePickUpEnabled","cartLinesGroup","cartlines","emailshippingText","EmailDeliveryModeCode","emptyCartText","renderCartLinesGroup","orderSummaryHeading","OrderSummaryWrapper","_renderInvoiceSummarylines","invoiceSummaryLines","OrderSummaryItems","invoices","giftCard","loyalty","orderTotal","invoiceSummaryLineitems","_renderOrderSummarylines","orderSummaryLines","subtotal","shipping","otherCharge","tax","totalDiscounts","orderSummaryLineitems","OrderSummaryErrors","errors","Wrapper","checkoutAsSignInUserButton","checkoutAsGuestButton","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","OrderInfomation","orderInformationProps","salesId","receiptId","createdDate","count","amount","channelReferenceId","channelName","channelAddress","SalesLine","salesLineProps","salesLine","buyAgainButton","GroupDelivery","deliveryProps","Group","_ref4","groupProps","delivery","address","salesLinesProps","salesLines","isCashAndCarryTransaction","LineId","salesStatus","deliveryType","shipment","trackingInfo","showTimeslot","pickupProps","pickupDateTimeslot","Groups","_ref5","groupsProps","groups","group","OrderSummary","_ref6","orderSummaryProps","totalAmount","earnedPoints","Payment","_ref7","paymentMethodsProps","methods","Help","_ref8","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","OrderDetailsView","_ref9","viewModes","tableViewActions","placedBy","alert","orderInfomation","orderSummary","payment","help","businessPartnersView","selectedBusinessPartnerUser","businessPartnersProps","businessPartnersHeading","catalogLoadingIndicator","catalogLoadingErrorMessage","cookieConsentNotGivenErrorMessage","backToBusinessPartnersLink","businessPartnersTable","businessPartnerUsersTable","AccountGenericTileView","AccountGenericTile","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","_onSelect","selectedPickupMode","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","Description","onClickHandler","_scrollIntoView","selectedLocationDiv","selectedLocationRef","parent","parentElement","scrollTop","offsetTop","clientHeight","availabilityWithHours","_availabilityWithHour","pickupDeliveryOptionErrorMessage","previousProps","_stores","show","_renderStoreLocation","StoreSelectorLocationLineItemComponent","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","_handleKeyPressPrev","Enter","Space","_searchTextChanged","inputValue","_onSubmit","_this$searchBoxRef$cu","blur","_onChangeHandler","renderPickupModesList","pickupFilterMenuHeading","pickupFilterByHeading","toggleButtonClass","toggleMapViewAttributes","SearchStore","storeSearchAttributes","ShowAllStore","showAllStoreAttributes","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","name","autoComplete","searchInputAriaLabel","onKeyUp","emptyLocationsText","storeCountMessage","storeCountMessageInKm","storeAllCountMessage","SignUpItem","SignUpEmailVerification","email","buttonWrapper","successMessage","SignUpGivenNameVerificationComponent","givenName","SignUpSurnameVerificationComponent","surname","SignUpLoading","SignUpView","signUp","signUpLocalAccount","emailVerification","givenNameVerification","surnameVerification","disclaimer","isRequired","verificationControlWrapper","AddCheckoutLoyalty","cardNumber","drawer","rewardPoints","loyaltyAmountContainer","appliedLoyaltyAmountContainer","loyaltyAmountLabel","loyaltyAmountInput","loyaltyAmountApplyButton","showAppliedAmount","loyaltyAmountAppliedText","loyaltyAmountAppliedPrice","loyaltyAmountRemoveButton","rewardPoint","checkoutLoyaltyRewardPoint","availablePointsText","activePoints","expiringPointsText","expiringPoints","ShowCheckoutLoyalty","coveredAmountText","CheckoutLoyaltyView","checkoutLoyalty","checkoutErrorRef","showLoyalty","addLoyalty","isShowLoyalty","isShowAddLoyalty","AccountProfileEditItem","AccountProfileEditLoading","AccountProfileEditView","accountProfileEdit","accountProfileEditLocalAccount","TabItem","moduleContentClassName","moduleHeaderClassName","_renderTabHeader","activeContentIDResult","shown","tabItemTitle","renderCustomerName","accountInformation","customer","FirstName","_renderReactFragment","slot","headerView","HeaderTag","HeaderContainer","HeaderTopBarContainer","Divider","navIcon","logo","renderForMobile","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","signInLink","accountLinks","accountClassName","_renderAccountBlock","wishListIconDesktop","cartIcon","siteOptions","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu","OrderDetailsOrderInfomation","OrderDetailsSalesLine","OrderDetailsGroupDelivery","OrderDetailsGroup","OrderDetailsGroups","OrderDetailsOrderSummary","OrderDetailsPayment","OrderDetailsHelp","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","_pickupListOptionMenu","expandSiteOptions","_renderDeliveryOptions","stopPropagation","isExpandSiteOptionsState","tabView","storeSelectorLocationLineItemComponentActions","distance","floor","productdeliveryOptions","pickup","_delivery","storeAddress","Address","phoneNumber","contacts","allPhoneContacts","contact","ContactTypeValue","IsPrivate","primaryPhoneContact","IsPrimary","Locator","extractPhoneNumber","Contacts","isError","setError","renderStoreHours","displayTime","JSON","stringify","endDayShort","startDayFull","startDayShort","endDayFull","timeRange","pickUpButtonClickHandler","StoreSelectorFoundLocationsMessageComponent","ContactInformationType","Phone","buildStoreHoursDay","storeHoursDayPeriodString","storeHoursDayString","storeHoursDayPeriod","storeHoursDay","productDeliveryOptions","productDeliveryOption","PickUpMethodDropdownComponent","pickUpStatesProps","pickUpMethodLabel","pickUpOptionPlaceholder","pickupOptionDropdownError","pickupButtonAriaLabel","selectedStorePickUpOption","selectStorePickUpOption","currentStorePickUpOption","setCurrentStorePickUpOption","isDropdownOpen","toggleDropdown","dataset","description","handleDropdownToggle","filterDeliveryOption","filteredDeliveryMode","renderLocationLinePickupButton","PickUpButtonComponent","renderStoreLocationLineItem","locationLineItem","closeDistanceString","distanceString","preferredStoreAttribute","removePreferredStoreAttribute","_props$data$storeSele","renderStoreLocations","selectedLocationReference","_props$data$storeSele2","_props$locationListPr","renderStoreLocation","pickUpOptionDropdownPlaceholderText","pickupOptionDropdownPlaceholderText","unitLocation","canSelectPickUpMethod","pickupOptionDropdownErrorText","pickUpMethodSelection","selectedLocationProps","storeSelectorViewProps","_selectedStore$StoreH","_selectedStore$OrgUni4","_selectedStore$OrgUni5","_selectedStore$OrgUni6","_storeSelectorViewPro","_storeSelectorViewPro2","storeNameValue","orgUnitNumber","StoreSelectorViewComponent","_data$storeSelectorSt2","_data$storeSelectorSt3","isDesktopPort","setIsDesktopPort","isDesktopViewport","portView","Browser","scrollIntoView","_selectedLocationDiv$","offset","getBoundingClientRect","totalHeight","top","_data$storeSelectorSt","displayMap","CookieComplianceView","Alert","B2bRequestsTileView","b2bRequestsTile","AccountWelcomeTileView","AccountWelcomeTile","AccountInvoiceTile","LoyaltyTermsView","LoyaltyTerms","agreeSection","checkbox","agreeText","seconds","hours","ampm","divisorForMinutes","getShortTimeString","day","getFullTimeString","buildHoursDisplayInfo","startDay","endDay","hoursInfo","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","dateForLookup","get","buildStoreHoursString","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","CheckoutApplePayView","checkoutApplePay","applePayButton","sm_text_count","isBackTrack","mobileViewLabelText","_handleGoBack","_shouldAddFocusMenuRef","optionLinkText","menuItemRef","_this$menuItemRef$cur","children","FooterItemView","FooterItem","_renderElement","HeadingContainer","EditableLink","accountSectionHeading","creditSummarySectionHeading","accountLabels","accountValues","creditSummaryLabels","creditSummaryValues","homeButton","actions","requestStatementModal","availableCredit","balanceOwed","creditExcess"],"mappings":"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","file":"static/js/3.da9f3109bba31e46cd7d.chunk.js","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISelectedStoreViewProps } from './components/selected-store/selected-store';\nimport { IStoreSelectorViewProps } from './store-selector';\n\n/**\n * Renders the pickup Delivery options.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderDeliveryOptions: React.FC = props => {\n const { canSelectLocation, deliveryOptions, pickUpDeliveryOptionButton, pickupModes } = props;\n\n return (\n <>\n {/* eslint-disable-next-line no-nested-ternary -- Need this.*/}\n {canSelectLocation ? (ArrayExtensions.hasElements(deliveryOptions) ? pickupModes : pickUpDeliveryOptionButton) : false}\n \n );\n};\n\n/**\n * Render the selected store.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderSelectedStore: React.FC = props => {\n const {\n storeDetailsMain,\n storeHeader,\n storeName,\n storeDetailsCloseButton,\n storeDistance,\n storeDetailsAvailabilityContainer,\n productAvailability,\n stockStatus,\n isCurrentLocation,\n currentLocation,\n isPreferredStore,\n preferredStoreButton,\n removePreferredStoreButton\n } = props;\n\n return (\n \n \n {storeDetailsCloseButton}\n {storeName}\n {storeDistance}\n \n \n {productAvailability}\n {stockStatus}\n \n {isCurrentLocation ? currentLocation : renderDeliveryOptions(props)}\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n \n );\n};\n\n/**\n * Render the body of the popup.\n * @param props -- Store selector view props.\n * @returns -- Returns the html.\n */\nconst renderBody: React.FC = props => {\n const {\n BodyContainerProps,\n locationsMessage,\n search,\n state,\n spinner,\n locationsList,\n noLocationsMessage,\n maps,\n bodyWrapperProps,\n storeResultContainerProps,\n mapContainerProps,\n isMobileView,\n storeDetailsModal,\n selectedLocation\n } = props;\n\n if (isMobileView) {\n return (\n \n {locationsMessage}\n {search}\n \n \n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\n {maps}\n {selectedLocation && renderSelectedStore(selectedLocation)}\n \n \n \n );\n }\n\n return (\n \n \n \n {locationsMessage}\n {search}\n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\n \n {maps}\n \n \n );\n};\n\n/**\n * Store selector view props.\n * @param props - Store selector view props.\n * @returns - HTML.\n */\nconst StoreSelectorView: React.FC = props => {\n const {\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n\n terms\n } = props;\n\n return (\n \n {HeaderProps}\n {renderBody(props)}\n {terms}\n \n );\n};\n\nexport default StoreSelectorView;\n","/*!\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';\n\nimport { ITabItemViewProps, TabItemType } from './tab-item';\n\nconst TabItemView: React.FC = props => {\n const { tabItemType, tabSlots, TabContentContainer, TabHeaderContainer, TabItemContent, tabHeader } = props;\n\n switch (tabItemType) {\n case TabItemType.TabContent:\n return (\n \n \n {tabSlots &&\n tabSlots.tabItemContent &&\n tabSlots.tabItemContent.length &&\n _renderTabItemContent(tabSlots.tabItemContent)}\n \n \n );\n case TabItemType.TabHeader:\n return {tabHeader};\n default:\n return null;\n }\n};\n\nconst _renderTabItemContent = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {items && items.length > 0\n ? items.map((item: React.ReactNode, index: number) => {\n return {item};\n })\n : null}\n \n );\n};\nexport default TabItemView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActiveTabState } from './data-actions/tab-state';\nimport { createTabStateInput } from './data-actions/tab-state-data-action';\nimport tab from './modules/tab/tab';\nimport tabView from './modules/tab/tab.view';\nimport { getContentID, TabItemType } from './modules/tab-item/tab-item';\n\nexport * from './modules/tab/tab';\nexport * from './modules/tab/tab.view';\nexport { createTabStateInput, getContentID, IActiveTabState, tab, TabItemType, tabView };\n","/*!\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';\n\nimport { IPasswordResetItem, IPasswordResetLoading, IPasswordResetLocalAccount, IPasswordResetViewProps } from './password-reset';\n\nconst PasswordResetItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n {items &&\n items.map((item: IPasswordResetItem) => {\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n \n \n \n );\n};\n\nconst PasswordResetLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst PasswordResetView: React.FC = props => {\n const { passwordReset, viewState, loading, defaultAADConainer, aadConainer, heading, passwordResetLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(passwordResetLocalAccount)}\n \n \n );\n};\n\nexport default PasswordResetView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { BackToTop, getTelemetryObject, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBackTopFooterProps } from './back-top-footer.props.autogenerated';\n\n/**\n *\n * BackTopFooter component.\n * @extends {React.PureComponent>}\n */\nclass BackTopFooter extends React.PureComponent> {\n private readonly editProps: Msdyn365.ITextEditProps = {\n requestContext: this.props.context.request,\n onEdit: (event: Msdyn365.ContentEditableEvent) => (this.props.config.backtoTopText = event.target.value)\n };\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IBackTopFooterProps<{}>) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n if (!this.props.config.destination) {\n this.props.telemetry.error('BackToTop.destination has not been provided, module wont render.');\n return null;\n }\n\n return (\n \n );\n }\n}\n\nexport default BackTopFooter;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IInvoiceDetailsViewProps } from './invoice-details';\n\nexport const InvoiceDetailsView: React.FC = props => {\n const { header, products, paymentDetails, payInvoiceError } = props;\n\n return (\n \n {header}\n {products}\n {paymentDetails}\n {payInvoiceError}\n \n );\n};\n\nexport default InvoiceDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICookieComplianceAcceptButton {\n acceptCookiesButtonText?: string;\n acceptCookiesButtonAriaLabel?: string;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n}\n\nexport const CookieComplianceAcceptButton: React.FC = ({\n acceptCookiesButtonText,\n acceptCookiesButtonAriaLabel,\n telemetryContent,\n onClose\n}) => {\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {acceptCookiesButtonText}\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IActionLinksData } from '../cookie-compliance.props.autogenerated';\n\nexport interface ICookieComplianceLinks {\n links: IActionLinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class CookieComplianceLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n \n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n \n );\n }\n\n private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\n\nexport default CookieComplianceLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { CookieComplianceAcceptButton, CookieComplianceLinks } from './components';\nimport { ICookieComplianceConfig, ICookieComplianceProps } from './cookie-compliance.props.autogenerated';\n\n/**\n * Alert state interface.\n */\nexport interface IAlertState {\n visible: boolean;\n}\n\n/**\n * Cookie compliance view props interface.\n */\nexport interface ICookieComplianceViewProps extends ICookieComplianceProps<{}> {\n CookieComplianceBanner: IModuleProps;\n AlertProps: IAlertProps;\n Content: INodeProps;\n text?: React.ReactNode;\n links?: React.ReactNode;\n acceptButton?: React.ReactNode;\n className: string;\n onDismiss(): void;\n}\n\n/**\n *\n * CookieCompliance component.\n * @extends {React.PureComponent>}\n */\nclass CookieCompliance extends React.PureComponent, IAlertState> {\n private readonly cookieRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: ICookieComplianceProps) {\n super(props);\n this.state = { visible: false };\n this.cookieRef = React.createRef();\n this._onDismiss = this._onDismiss.bind(this);\n }\n\n public componentDidMount(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\n this.setState({ visible: true });\n }\n }\n\n public render(): JSX.Element | null {\n const { config, context, resources, telemetry } = this.props;\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\n const { visible } = this.state;\n\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\n let moduleConfig: ICookieComplianceConfig;\n\n try {\n moduleConfig = config;\n } catch (error) {\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\n return
{error}
;\n }\n\n if (isConsentGiven && !visible) {\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\n return null;\n }\n\n if (!MsDyn365.msdyn365Commerce.isBrowser) {\n return <>;\n }\n\n const viewProps = {\n ...this.props,\n onDismiss: this._onDismiss,\n CookieComplianceBanner: {\n moduleProps: this.props,\n className: classnames('ms-cookie-compliance', moduleConfig.className),\n ref: this.cookieRef\n },\n AlertProps: {\n className: 'ms-cookie-compliance__container',\n color: 'white',\n fade: false\n },\n Content: {\n className: 'ms-cookie-compliance__content'\n },\n text: moduleConfig.content && (\n \n ),\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\n \n ),\n acceptButton: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles Link content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.actionLinks?.[linkIndex]) {\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Handles content change event.\n * @param event - Event.\n */\n public handleContentChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.content = event.target.value;\n };\n\n private _onDismiss(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies) {\n context.request.cookies.setConsentCookie();\n location.reload();\n }\n this.setState({ visible: false });\n }\n}\n\nexport default CookieCompliance;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBulkPurchaseViewProps } from './bulk-purchase';\n\n/**\n * Bulk purchase view.\n * @param props - Bulk purchase view props.\n * @returns React node with a module.\n */\nexport const BulkPurchaseViewComponent: React.FC = props => {\n return {props.content};\n};\n\nexport default BulkPurchaseViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeProps extends IComponentProps<{}> {\n cart: ICartState | undefined;\n promoCodeHeadingText: string;\n appliedPromoCodeHeadingText: string;\n removePromoAriaLabelFormat: string;\n promoPlaceholderText: string;\n promoCodeApplyButtonText: string;\n collapseTimeOut: number;\n removePromoText: string;\n invalidPromoCodeErrorText: string;\n failedToAddPromoCodeErrorText: string;\n duplicatePromoCodeErrorText: string;\n failedToRemovePromoCodeErrorText: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n promoCodeApplyCallback?(): void;\n}\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeComponent extends IComponent {}\n\n/**\n * IPromoCodeProps: Interface for promo code state.\n */\ninterface IPromoCodeState {\n promoCodeInputValue: string;\n error: string;\n canApply: boolean;\n}\n\n/**\n *\n * The PromoCode component renders the promocode section.\n * @extends {React.PureComponent}\n */\nclass PromoCode extends React.PureComponent {\n private readonly payLoad: IPayLoad;\n\n public constructor(props: IPromoCodeProps) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\n this.state = {\n promoCodeInputValue: '',\n error: '',\n canApply: false\n };\n }\n\n public render(): JSX.Element {\n return (\n
\n
{this.props.promoCodeHeadingText}
\n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\n

\n {this.state.error}\n

\n {this._renderAppliedPromoCode(this.props)}\n
\n );\n }\n\n /**\n * On input change method.\n * @param event - Change event.\n */\n private readonly _onInputChangeHandler = (event: React.ChangeEvent) => {\n const error = event.target.value === '' ? '' : this.state.error;\n this.setState({\n promoCodeInputValue: event.target.value.trim(),\n error,\n canApply: !!event.target.value\n });\n };\n\n /**\n * Apply promo code method.\n * @param cartState - Cart state interface.\n */\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\n if (!cartState) {\n return;\n }\n const appliedPromo = this.state.promoCodeInputValue;\n\n cartState\n .addPromoCode({ promoCode: appliedPromo })\n .then(result => {\n if (result.status === 'SUCCESS') {\n // Show success text\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\n } else if (result.substatus === 'ALREADYADDED') {\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\n } else {\n this.setState({ error: this.props.invalidPromoCodeErrorText });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\n });\n };\n\n /**\n * On submit action.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly _onSubmitHandler = (cartState: ICartState | undefined) => (event: React.FormEvent) => {\n event.preventDefault();\n this._applyPromotion(cartState);\n };\n\n /**\n * On apply promotion.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly applyPromotionHandler = (cartState: ICartState | undefined) => () => {\n this._applyPromotion(cartState);\n };\n\n /**\n * Renders promo code form.\n * @param promoPlaceholderText - Promo code input box placeholder string.\n * @param promoCodeApplyButtonText - Promo code button text string.\n * @param cartState - Cart state interface.\n * @returns Promo code form.\n */\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n\n return (\n
\n
\n \n \n
\n
\n );\n };\n\n /**\n * Remove promo code method.\n * @param cartState - Cart state interface.\n * @param event - Mouse event.\n */\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\n if (!cartState) {\n return;\n }\n const code = event.currentTarget.getAttribute('data-value') ?? '';\n cartState\n .removePromoCodes({\n promoCodes: [code]\n })\n .then(result => {\n if (result.status === 'SUCCESS') {\n this.setState({ error: '' });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\n });\n };\n\n /**\n * Renders applied promo code form.\n * @param props - Promo code component props.\n * @returns Applied promo code.\n */\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\n if (!props.cart || !props.cart.cart.Coupons || !ArrayExtensions.hasElements(props.cart.cart.Coupons)) {\n return;\n }\n\n /**\n * On remove promotion action.\n * @param event - Mouse event.\n */\n const removePromotionHandler = (event: React.MouseEvent) => {\n this._removePromotion(props.cart, event);\n };\n\n return (\n <>\n {props.cart.cart.Coupons.map((coupon: Coupon) => {\n const ariaLabel = props.removePromoAriaLabelFormat\n ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code)\n : '';\n\n return (\n
\n
\n {'Code '}\n {coupon.Code}\n {'Applied '}\n
\n \n
\n );\n })}\n \n );\n };\n}\n\nexport default PromoCode;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildDistanceString, matchDeliveryOptions } from '../store-selector-location-line-item';\n\n/**\n * Store Locator line item resources.\n */\nexport interface ISelectedStoreResources {\n availabilityInfoHeader: string;\n closedText: string;\n outOfStock: string;\n inStock: string;\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreProps {\n className?: string;\n shouldHideStockStatus?: boolean;\n isCurrentLocation?: boolean;\n isInStock?: boolean;\n selectedStore?: IFullOrgUnitAvailability;\n resources: ISelectedStoreResources;\n stockStatusLabel?: string;\n preferredStoreLocationId: string | null;\n isPreferredStoreEnabled?: boolean;\n isLocationDisabled?: boolean;\n telemetryContent?: ITelemetryContent;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n preferredDistanceUnit: string;\n filteredPickupMode?: string;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreViewProps {\n isCurrentLocation?: boolean;\n canSelectLocation?: boolean;\n selectedStore?: IFullOrgUnitAvailability;\n deliveryOptions?: DeliveryOption[];\n isPreferredStore?: boolean;\n resources: ISelectedStoreResources;\n\n storeDetailsMain: INodeProps;\n storeHeader: INodeProps;\n storeName: React.ReactNode;\n storeDistance: React.ReactNode;\n storeDetailsAvailabilityContainer: INodeProps;\n productAvailability: React.ReactNode;\n stockStatus: React.ReactNode;\n currentLocation: React.ReactNode;\n pickUpDeliveryOptionButton: React.ReactNode;\n pickupModes?: React.ReactNode;\n preferredStoreButton?: React.ReactNode;\n removePreferredStoreButton?: React.ReactNode;\n storeDetailsCloseButton?: React.ReactNode;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n}\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupInStoreClickHandler = (props: ISelectedStoreProps) => () => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation);\n }\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: ISelectedStoreProps) => () => {\n props.handlers.onSetAsPreferredStore(props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: ISelectedStoreProps) => async (deliveryCode: string): Promise => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, deliveryCode);\n }\n return Promise.resolve();\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: ISelectedStoreProps) => () => {\n props.handlers.onRemovePreferredStore();\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: ISelectedStoreProps, pickupMode?: string) => () => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, pickupMode);\n }\n};\n\n/**\n * On store details close functionality.\n * @param props -Store locator location items.\n * @returns Void promise.\n */\nconst storeDetailsModalHandler = (props: ISelectedStoreProps) => async (): Promise => {\n await props.handlers.closeStoreDetailsModal();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (\n props: ISelectedStoreProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Renders selected store details.\n * @param props - Store location details props.\n * @returns - Selected Store view props.\n */\nconst selectedStoreDetails = (props: ISelectedStoreProps): ISelectedStoreViewProps => {\n const {\n className,\n shouldHideStockStatus,\n isCurrentLocation,\n isInStock,\n selectedStore,\n resources,\n stockStatusLabel,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n preferredDistanceUnit\n } = props;\n\n const parentClassName = className ? className : 'ms-store-select__map__selected_store';\n const storeName: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\n const location = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n const distanceAsString: string | undefined = buildDistanceString(location?.Distance, preferredDistanceUnit, isLocationDisabled);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n // eslint-disable-next-line no-nested-ternary -- Required to check stock Label\n const stockText: string | undefined = shouldHideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n const canSelectLocation = !shouldHideStockStatus && isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName ?? '');\n const isPreferredStore = preferredStoreLocationId === location?.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n\n const viewProps: ISelectedStoreViewProps = {\n selectedStore,\n isCurrentLocation,\n canSelectLocation,\n isPreferredStore,\n resources,\n deliveryOptions: deliveryOptionList,\n storeDetailsMain: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__main`\n },\n storeHeader: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__header`\n },\n storeName: {storeName},\n storeDetailsCloseButton: \n ),\n pickupModes: renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel),\n preferredStoreButton: isPreferredStoreEnabled ? (\n \n {resources.preferredStoreText}\n \n ) : null,\n removePreferredStoreButton: isPreferredStoreEnabled ? (\n \n {resources.setAsPreferredStoreText}\n \n ) : null,\n handlers: {\n onSelected: props.handlers.onSelected,\n onSetAsPreferredStore: props.handlers.onSetAsPreferredStore,\n onRemovePreferredStore: props.handlers.onRemovePreferredStore,\n closeStoreDetailsModal: props.handlers.closeStoreDetailsModal\n }\n };\n\n return viewProps;\n};\n\n/**\n * Store location line item component.\n */\nexport const SelectedStoreComponent = selectedStoreDetails as (props: ISelectedStoreProps) => ISelectedStoreViewProps;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { IStoreInfo, IStoreSelectionStateContext } from '@msdyn365-commerce-modules/bopis-utilities';\nimport {\n ArrayExtensions,\n getFullAvailableInventoryNearby,\n GetFullAvailableInventoryNearbyInput,\n getOrgUnitLocationsByArea,\n GetOrgUnitLocationsByAreaInput,\n IFullOrgUnitAvailability\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n isMobile,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n NodeTag,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n StoreSelectorEmptyMessage,\n StoreSelectorFoundLocationsMessage,\n StoreSelectorLocationLines,\n StoreSelectorSearchForm,\n StoreSelectorTermsOfService,\n StoreSelectorWaiting\n} from './components';\nimport { ISelectedStoreProps, ISelectedStoreViewProps, SelectedStoreComponent } from './components/selected-store/selected-store';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './components/store-selector-location-line-item/date-time-helpers';\nimport { IStoreSelectorData } from './store-selector.data';\nimport {\n IStoreSelectorProps,\n IStoreSelectorResources,\n mode as modeEnum,\n searchRadiusUnit as SearchRadiusUnit,\n style as styleEnum\n} from './store-selector.props.autogenerated';\n\n/**\n * StoreSelector State Interface.\n */\nexport interface IStoreSelectorState {\n isSearchInProgress: boolean;\n searchTerm?: string;\n isSeeAllStoreValue: boolean;\n isLocationDisabled?: boolean;\n filteredPickupMode?: string;\n}\n\n/**\n * StoreSelector View Props Interface.\n */\nexport interface IStoreSelectorViewProps extends IStoreSelectorProps {\n state: IStoreSelectorState;\n\n // Containers:\n ModuleProps: IModuleProps;\n BodyContainerProps: INodeProps;\n FooterContainerProps: INodeProps;\n HeaderContainerProps: INodeProps;\n HeaderProps?: React.ReactNode;\n\n // Components\n locationsMessage?: React.ReactNode;\n search?: React.ReactNode;\n spinner?: React.ReactNode;\n locationsList?: React.ReactNode;\n selectedLocation?: ISelectedStoreViewProps;\n noLocationsMessage?: React.ReactNode;\n terms?: React.ReactNode;\n headerText?: React.ReactNode;\n sortLocations?: IFullOrgUnitAvailability[];\n locationListProps?: IStoreSelectorLocationLineItemProps[];\n bodyWrapperProps?: INodeProps;\n storeResultContainerProps?: INodeProps;\n mapContainerProps?: INodeProps;\n maps?: React.ReactNode;\n isMobileView?: boolean;\n storeDetailsModal?: INodeProps;\n\n callbacks: {\n closeDialog(): Promise;\n searchTermChanged(searchTerm: string): Promise;\n performSearch(searchTerm: string): Promise;\n selectedLocation(location: OrgUnitLocation | undefined): Promise;\n getAndUpdateUserLocation(): Promise;\n attachMapAutoSuggest(): Promise;\n onSuggestionSelected(result: Microsoft.Maps.ISuggestionResult): Promise;\n setPreferredStore(storeId: string | undefined): Promise;\n removePreferredStore(): Promise;\n setSelectedStore(storeId: string | undefined): Promise;\n setOrgUnitStoreInformation(location: OrgUnitLocation | undefined): Promise;\n };\n}\n\n/**\n * StoreSelectorLocation Line Resources Interface.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n closedText: string;\n outOfStock: string;\n inStock: string;\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * ILocationHours Interface.\n */\nexport interface ILocationHours {\n openFrom?: string;\n openTo?: string;\n}\n\n/**\n * StoreSelectorLocation Line Item Props Interface.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n storeHoursList?: IHoursDisplayInfo[];\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n selectedStoreLocationId?: string;\n locationOpen?: ILocationHours;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n onClick: (locationId: string | undefined) => void;\n}\n\n/**\n *\n * Pick Up In Store module.\n * @extends React.Component>}\n */\n@observer\nclass StoreSelector extends React.Component, IStoreSelectorState> {\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private storeCounter: number;\n\n private isPreferredStoreEnabled?: boolean;\n\n public constructor(props: IStoreSelectorProps) {\n super(props);\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.state = { isSearchInProgress: true, searchTerm: '', isSeeAllStoreValue: false, filteredPickupMode: undefined };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.storeCounter = 0;\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled: isAutoSuggestionEnabled }\n } = this.props;\n\n // Adding Timeout to make sure it loads the data based upon the preferred store.\n setTimeout(() => {\n this._getAndUpdateStoreLocation();\n }, 0);\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isDialogOpen,\n async () => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (context?.id === this.props.id) {\n this._getAndUpdateStoreLocation();\n }\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.context?.id,\n async () => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (!context || context.id === this.props.id) {\n await this._searchTermChanged('');\n this._getAndUpdateStoreLocation();\n }\n }\n );\n\n if (this.props.data.storeSelectorStateManager.result?.loadMapApi) {\n await this.props.data.storeSelectorStateManager.result.loadMapApi({\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n });\n }\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context.actionContext.requestContext.channel?.ChannelCountryRegionISOCode\n });\n }\n );\n\n reaction(\n () => this.props.data.availabilitiesWithHours.result,\n async () => {\n if (this.props.data.storeSelectorStateManager.result?.isDialogOpen) {\n const storeLocationList = this.props.data.availabilitiesWithHours.result;\n if (storeLocationList) {\n await this._setOrgUnitStoreInformation(storeLocationList);\n }\n }\n }\n );\n\n if (isAutoSuggestionEnabled) {\n when(\n () => {\n const isMapApiLoaded = !!this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\n const isDialogOpen = !!this.props.data.storeSelectorStateManager.result?.isDialogOpen;\n const isSameContext = this.props.data.storeSelectorStateManager.result?.context?.id === this.props.id;\n return isMapApiLoaded && isDialogOpen && isSameContext;\n },\n () => {\n setTimeout(async () => {\n await this._attachMapAutoSuggest();\n }, 0);\n }\n );\n }\n }\n\n public shouldComponentUpdate(): boolean {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n if (context && context.id === this.props.id) {\n return true;\n }\n return false;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element {\n const {\n config: {\n termsOfServiceLink,\n className,\n heading,\n mode,\n style,\n setAsPreferredStore: shouldSetAsPreferredStore,\n showAllStores: shouldShowAllStores,\n lookupRadius,\n enablePickupFilterToShowStore: hasEnablePickupFilterToShowStore,\n searchRadiusUnit\n },\n context: {\n telemetry,\n app: { config: appConfig },\n actionContext: {\n requestContext: { channel, cookies }\n }\n },\n slots: { maps: mapSlot },\n resources,\n data: {\n availabilitiesWithHours: { result: availabilitiesWithHours },\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations }\n }\n } = this.props;\n\n this.storeCounter = 0;\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n const isMapDisabled = !(channel?.BingMapsApiKey && channel.BingMapsEnabled);\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n const isDialogOpen: boolean = storeSelectorStateManager\n ? storeSelectorStateManager.isDialogOpen && context?.id === this.props.id\n : false;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const isInlineView = styleDefault === styleEnum.inline;\n const isLocatorView = modeDefault === modeEnum.findStores;\n const shouldHideInventory = isLocatorView;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n const shouldDisplayList = storeSelectorStateManager?.listMapViewState?.displayList;\n this.isPreferredStoreEnabled = shouldSetAsPreferredStore && cookies?.isConsentGiven();\n const canShowLocationView =\n context && (context.showMapViewLink === undefined || context.showMapViewLink) && storeSelectorStateManager?.isMapModuleLoaded;\n\n const storeSelectorActions = {\n async toggleListMapViewState(): Promise {\n await storeSelectorStateManager?.toggleListMapViewState();\n }\n };\n\n if (!channel?.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n }\n\n const configHeading = heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText;\n const preferredDistanceUnit =\n searchRadiusUnit === SearchRadiusUnit.kilometers ? resources.kilometersShortText : resources.milesShortText;\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n let storeLocationList: IFullOrgUnitAvailability[] | undefined = shouldHideInventory ? storeLocations : availabilitiesWithHours;\n let sortLocation = null;\n if (storeLocationList) {\n sortLocation = this._sortStores(storeLocationList, this.isPreferredStoreEnabled, preferredLocationId);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment -- Reading value from app config.\n const isEnableOutofStock: boolean = appConfig?.enableStockCheck || false;\n const alreadySelectedLocation = context ? context.alreadySelectedLocation : undefined;\n const productPickUpOptionList = storeSelectorStateManager?.context?.deliveryOptions?.DeliveryOptions;\n if (this.state.filteredPickupMode && storeLocationList) {\n storeLocationList = this.onFilterLocations(storeLocationList, this.state.filteredPickupMode);\n }\n const locationListProps = this._getStoreLocationListProps(\n isEnableOutofStock,\n isLocatorView,\n preferredLocationId,\n this.isPreferredStoreEnabled,\n selectedStoreLocationId,\n sortLocation ?? null,\n preferredDistanceUnit,\n alreadySelectedLocation,\n productPickUpOptionList\n );\n\n const hasMapSlot = ArrayExtensions.hasElements(mapSlot);\n const dialogClassName = hasMapSlot ? 'ms-store-select__map' : '';\n const viewProps: IStoreSelectorViewProps = {\n ...(this.props as IStoreSelectorProps),\n state: this.state,\n maps: hasMapSlot ? mapSlot[0] : undefined,\n\n ModuleProps: {\n tag: isInlineView ? ('div' as NodeTag) : Modal,\n moduleProps: this.props,\n className: classname(\n `ms-store-${isInlineView ? 'locate' : 'select'}`,\n className,\n dialogClassName,\n isInlineView ? '' : 'msc-modal-input-required'\n ),\n autoFocus: true,\n fade: true,\n isOpen: isDialogOpen,\n 'aria-label': configHeading,\n onClosed: this._closeDialog,\n horizontalPosition: 'center',\n verticalPosition: 'center',\n toggle: this._closeDialog\n },\n isMobileView: isMobileDevice,\n HeaderContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalHeader,\n className: `ms-store-select__${isInlineView ? 'header' : 'modal-header'}`,\n toggle: this._closeDialog\n },\n HeaderProps: configHeading && (\n \n ),\n FooterContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalFooter,\n className: `ms-store-select__${isInlineView ? 'footer' : 'modal-footer'} ${!shouldDisplayList ? 'map-only-view' : ''}`\n },\n BodyContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalBody,\n className: `ms-store-select__${isInlineView ? 'body' : 'modal-body'}`\n },\n bodyWrapperProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__body_wrapper'\n },\n storeResultContainerProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__store_container'\n },\n mapContainerProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__map_container'\n },\n storeDetailsModal: {\n tag: 'div' as NodeTag,\n className: `ms-store-select__map__selected_store__modal ${\n selectedStoreLocationId && isDialogOpen && !shouldDisplayList ? 'show' : 'hide'\n }`\n },\n locationsMessage: !this.state.isLocationDisabled && (\n \n ),\n selectedLocation: this.renderSelectedStore(\n shouldHideInventory,\n preferredDistanceUnit,\n preferredStore,\n this.isPreferredStoreEnabled,\n isEnableOutofStock,\n productPickUpOptionList,\n shouldDisplayList\n ),\n search: (\n \n ),\n spinner: ,\n locationsList: ArrayExtensions.hasElements(storeLocationList) ? (\n \n ) : (\n undefined\n ),\n noLocationsMessage: ,\n terms: (\n \n ),\n\n // Not being used in current context, we can use it here to pass more props.\n headerText: (\n {heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText}\n ),\n sortLocations: sortLocation,\n locationListProps,\n callbacks: {\n searchTermChanged: this._searchTermChanged,\n performSearch: this._performSearch,\n closeDialog: this._closeDialog,\n selectedLocation: this._onOrgUnitLocationSelected,\n getAndUpdateUserLocation: async () => {\n this._getAndUpdateStoreLocation();\n return Promise.resolve();\n },\n attachMapAutoSuggest: this._attachMapAutoSuggest,\n onSuggestionSelected: this._onOrgUnitLocationSelected,\n setPreferredStore: this._setPreferredStore,\n removePreferredStore: this._removePreferredStore,\n setSelectedStore: this._setSelectedStore,\n setOrgUnitStoreInformation: this._setOrgUnitStoreInformation\n }\n } as IStoreSelectorViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Render the selected store for the mobile devices.\n * @param shouldHideInventory -- Hide Inventory.\n * @param preferredDistanceUnit -- Preferred Distance Unit.\n * @param preferredStore -- Preferred Store.\n * @param isPreferredStoreEnabled -- Is Preferred Store Enabled.\n * @param hasEnabledOutOfStockCheck -- Stock check is enabled or not.\n * @param productPickUpOptionList -- Product pickup option list.\n * @param shouldDisplayList - Should Display list.\n * @returns -- Returns the view props.\n */\n public renderSelectedStore = (\n shouldHideInventory: boolean,\n preferredDistanceUnit: string,\n preferredStore: IStoreInfo | undefined,\n isPreferredStoreEnabled: boolean | undefined,\n hasEnabledOutOfStockCheck: boolean,\n productPickUpOptionList?: DeliveryOption[],\n shouldDisplayList?: boolean\n ): ISelectedStoreViewProps | undefined => {\n const {\n resources,\n data: {\n availabilitiesWithHours: { result: availabilitiesWithHours },\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations }\n }\n } = this.props;\n\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n const selectedStore = (shouldHideInventory ? storeLocations : availabilitiesWithHours)?.find(\n store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === selectedStoreLocationId\n );\n const orgUnitLocation = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreResources = this._mapResources(resources);\n\n if (!shouldDisplayList && selectedStore) {\n const selectedProps: ISelectedStoreProps = {\n shouldHideStockStatus: shouldHideInventory,\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, context?.alreadySelectedLocation),\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, selectedStore.OrgUnitAvailability?.ItemAvailabilities),\n selectedStore,\n resources: selectedStoreResources,\n stockStatusLabel: this._stockInventoryLabel(selectedStore),\n preferredStoreLocationId: preferredStore?.StoreId ? preferredStore.StoreId : '',\n isPreferredStoreEnabled,\n isLocationDisabled: this.state.isLocationDisabled,\n telemetryContent: this.telemetryContent,\n storePickUpOptionList: selectedStore.OrgUnitPickUpDeliveryModes?.DeliveryOptions,\n productPickUpOptionList,\n preferredDistanceUnit,\n handlers: {\n onSelected: this._onOrgUnitLocationSelected,\n onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\n }\n };\n\n return SelectedStoreComponent(selectedProps);\n }\n\n return undefined;\n };\n\n /**\n * Method to be called on link text change.\n * @param event -Content Edit Event.\n */\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.termsOfServiceLink) {\n this.props.config.termsOfServiceLink.linkText = event.target.value;\n }\n };\n\n /**\n * Method to be called on heading change.\n * @param event -Content Edit Event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading = event.target.value;\n };\n\n /**\n * Show all stores handler function.\n */\n private readonly onShowAllStoresHandler = () => {\n this._getAndUpdateStoreLocation(true);\n this.setState({ filteredPickupMode: undefined });\n };\n\n /**\n * Method to be called for filtered the store location based on the filter selected by the user.\n * @param stores -All the stores from the API.\n * @param filteredPickupMode -Filter selected by the user.\n * @returns -Filtered stores.\n */\n private readonly onFilterLocations = (stores: IFullOrgUnitAvailability[], filteredPickupMode: string) => {\n return stores.filter(location => {\n return location.OrgUnitPickUpDeliveryModes?.DeliveryOptions?.some(deliveryOption => {\n return deliveryOption.Code === filteredPickupMode;\n });\n });\n };\n\n /**\n * Filter Store by pickup mode.\n * @param deliveryCode -Delivery Code.\n */\n private readonly onFilteredPickupMode = (deliveryCode: string) => {\n this.setState({ filteredPickupMode: deliveryCode });\n };\n\n /**\n * Method will sort all stores.\n * @param stores -Stores List.\n * @param isPreferredStoreEnabled -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @returns List of Stores.\n */\n // eslint-disable-next-line class-methods-use-this -- No need of introducing new variable.\n private _sortStores(\n stores: IFullOrgUnitAvailability[],\n isPreferredStoreEnabled: boolean | undefined,\n preferredStoreLocationId: string\n ): IFullOrgUnitAvailability[] {\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n isPreferredStoreEnabled &&\n preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreLocationId;\n\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\n }\n\n /**\n * Method will list of store selector location line.\n * @param hasEnabledOutOfStockCheck -Stores List.\n * @param isStoreLocatorView -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @param isPreferredStoreEnabled -Stores List.\n * @param selectedStoreLocationId -Module config value.\n * @param stores -Store Id.\n * @param preferredDistanceUnit -Module config value.\n * @param alreadySelectedLocation -Already Selected Location.\n * @param productPickUpOptionList -Product supported Pickup Modes List.\n * @returns List of StoreSelectorLocation Line.\n */\n private _getStoreLocationListProps(\n hasEnabledOutOfStockCheck: boolean,\n isStoreLocatorView: boolean,\n preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n stores: IFullOrgUnitAvailability[] | null,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation,\n productPickUpOptionList?: DeliveryOption[]\n ): IStoreSelectorLocationLineItemProps[] {\n const storeList: IStoreSelectorLocationLineItemProps[] = [];\n if (ArrayExtensions.hasElements(stores)) {\n stores.map((store, index: number) => {\n const storeLineProps = this._createStoreLocationList(\n store,\n index,\n hasEnabledOutOfStockCheck,\n isStoreLocatorView,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n selectedStoreLocationId,\n preferredDistanceUnit,\n alreadySelectedLocation,\n productPickUpOptionList\n );\n if (storeLineProps) {\n storeList.push(storeLineProps);\n }\n });\n }\n return storeList;\n }\n\n /**\n * Initialize Map AutoSuggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n config: { autoSuggestOptions },\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded && !this.autoSuggestManager) {\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n /**\n * Callback for the autosuggest API.\n */\n callback: () => {\n const options = { ...autoSuggestOptions, countryCode: channel?.ChannelCountryRegionISOCode };\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n this.autoSuggestManager.attachAutosuggest(\n `#ms-store-select__search-box_${this.props.id}`,\n `#ms-store-select__search-box-container_${this.props.id}`,\n this._onSuggestionSelected\n );\n },\n\n /**\n * Error call back for autosuggest API.\n */\n errorCallback: () => {\n if (telemetry) {\n telemetry.debug('Unable to attach map auto suggest.');\n }\n },\n credentials: channel?.BingMapsApiKey\n });\n }\n };\n\n /**\n * On Selecting Location Suggestion.\n * @param result - Map Suggestions List.\n */\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (context && context.id === this.props.id) {\n await this._searchTermChanged(result.formattedSuggestion);\n await this._performSearch(result.formattedSuggestion);\n }\n };\n\n /**\n * On Selecting Preferred Store.\n * @param storeId - Store Id.\n */\n private readonly _setPreferredStore = async (storeId: string | undefined): Promise => {\n if (!storeId) {\n return;\n }\n\n const {\n context: {\n actionContext: {\n requestContext: { cookies }\n }\n },\n config: { mode },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations },\n availabilitiesWithHours: { result: availabilitiesWithHours }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n\n let stores: IFullOrgUnitAvailability[];\n if (modeDefault === modeEnum.findStores && storeLocations) {\n stores = storeLocations;\n } else {\n stores = availabilitiesWithHours!;\n }\n\n const preferredStore = stores.find(store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === storeId);\n\n await storeSelectorStateManager.setPreferredStoreLocation(\n storeId,\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName,\n cookies.isConsentGiven(),\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Latitude,\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Longitude\n );\n };\n\n /**\n * On Removing Preferred Store.\n */\n private readonly _removePreferredStore = async (): Promise => {\n const {\n context: {\n actionContext: {\n requestContext: { cookies }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n await storeSelectorStateManager.clearPreferredStore(cookies.isConsentGiven());\n };\n\n /**\n * Method called to close the store details modal that comes up on clicking the pushpin.\n * @returns Void promise.\n */\n private readonly _closeStoreDetailModal = async (): Promise => {\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\n await storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\n };\n\n /**\n * On Selecting Store for pickup.\n * @param storeId - Store Id.\n */\n private readonly _setSelectedStore = async (storeId: string | undefined): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n await storeSelectorStateManager.setSelectedStoreLocationId(storeId);\n };\n\n /**\n * Method to be called on search.\n * @param searchTerm - Search string.\n */\n private readonly _performSearch = async (searchTerm: string): Promise => {\n const {\n context: { actionContext },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!searchTerm || !storeSelectorStateManager) {\n return;\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n const location = await storeSelectorStateManager.geoLocate(searchTerm.trim() !== '' ? searchTerm : '0', actionContext);\n\n if (location) {\n await this._updateLocations(location.latitude, location.longitude);\n } else {\n await this._updateLocations();\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n };\n\n /**\n * Method to be called on search term changed.\n * @param searchTerm - Search string.\n */\n private readonly _searchTermChanged = async (searchTerm: string): Promise => {\n this.setState({ searchTerm });\n };\n\n /**\n * Method to be called updating the store location.\n * @param shouldShowAllStores - Flag to show all stores.\n */\n private readonly _getAndUpdateStoreLocation = (shouldShowAllStores?: boolean): void => {\n const {\n config: { style },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n\n if (styleDefault !== styleEnum.inline && (!storeSelectorStateManager || !storeSelectorStateManager.isDialogOpen)) {\n // Store selector dialog isn't open yet, so don't try and update anything\n return;\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n if (navigator?.geolocation) {\n navigator.geolocation.getCurrentPosition(\n async position => {\n // eslint-disable-next-line react/no-unused-state -- This state is used in the views.\n this.setState({ isLocationDisabled: false, isSearchInProgress: true });\n if (shouldShowAllStores) {\n this.setState({ isSeeAllStoreValue: true });\n await this._searchTermChanged('');\n await this._updateLocations(position.coords.latitude, position.coords.longitude, 0);\n } else {\n await this._updateLocations(position.coords.latitude, position.coords.longitude);\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n },\n async error => {\n // If the location setting is turned off\n if (error.PERMISSION_DENIED) {\n this.setState({ isLocationDisabled: true, isSeeAllStoreValue: true });\n await this._searchTermChanged('');\n await this._updateLocations(0, 0, 0);\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n },\n { timeout: 5000 }\n );\n } else {\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n }\n };\n\n /**\n * Method to be called closing the store selector dialog.\n * @returns Void promise.\n */\n private readonly _closeDialog = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n this.setState({ searchTerm: '' });\n\n if (storeSelectorStateManager) {\n storeSelectorStateManager.context?.parentElementRef?.current?.focus();\n return storeSelectorStateManager.closeDialog();\n }\n };\n\n /**\n * Method to set store info.\n * @param orgUnitStoreInformation - Store Info Object.\n * @returns Void promise.\n */\n private readonly _setOrgUnitStoreInformation = async (orgUnitStoreInformation: IFullOrgUnitAvailability[]): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n config: { style },\n telemetry\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n const context = storeSelectorStateManager.context;\n const moduleId: string = context?.id ? context.id : this.props.id;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n let input: IStoreSelectionStateContext = {\n /**\n * On Location selected.\n * @returns - Returns promise.\n */\n onLocationSelected: async () => {\n // TO-DO handle event for when location in selected\n return Promise.resolve();\n }\n };\n\n if (storeSelectorStateManager.context) {\n input = storeSelectorStateManager.context;\n }\n\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager.preferredStore;\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n const storeLocationList = this._sortStores(orgUnitStoreInformation, this.isPreferredStoreEnabled, preferredLocationId);\n\n input = {\n ...input,\n id: moduleId,\n showMapViewLink: context?.showMapViewLink,\n parentElementRef: context?.parentElementRef,\n isDialog: styleDefault === styleEnum.dialog,\n orgUnitStoreInformation: storeLocationList,\n product: context?.product\n };\n\n await storeSelectorStateManager.setOrgUnitStoreInformation(input).catch((error: Error) => {\n if (telemetry) {\n telemetry.error(error.message);\n telemetry.debug('Unable to Update store location state');\n }\n });\n };\n\n /**\n * Method to update user location.\n * @param latitude - User location.\n * @param longitude - User location.\n * @param radius - Search Criteria Radius.\n * @returns Void promise.\n */\n private readonly _updateLocations = async (latitude?: number, longitude?: number, radius?: number): Promise => {\n const {\n config: { mode, lookupRadius, style, searchRadiusUnit },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const calRadius = radius || radius === 0 ? radius : lookupRadius || 50;\n const distanceUnitValue = searchRadiusUnit === SearchRadiusUnit.kilometers ? 1 : 0;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n let localLatitude = this.state.searchTerm || !preferredStore?.Latitude ? latitude : preferredStore.Latitude;\n let long = this.state.searchTerm || !preferredStore?.Longitude ? longitude : preferredStore.Longitude;\n if (styleDefault === styleEnum.inline) {\n const lastInlineStoreLocation = storeSelectorStateManager?.lastInlineShownStoreInfo;\n if (lastInlineStoreLocation && !this.state.searchTerm) {\n localLatitude = lastInlineStoreLocation.Latitude ? lastInlineStoreLocation.Latitude : localLatitude;\n long = lastInlineStoreLocation.Longitude ? lastInlineStoreLocation.Longitude : long;\n }\n await storeSelectorStateManager?.setLastInlineStoreInfo(localLatitude, long);\n }\n\n if (modeDefault === modeEnum.findStores) {\n await this.getOrgUnitLocationByArea(calRadius, distanceUnitValue, localLatitude, long);\n return;\n }\n\n await this.getFullAvailableInventoryNearby(calRadius, distanceUnitValue, localLatitude, long);\n };\n\n /**\n * Get org unit location by area.\n * @param calRadius - Radius.\n * @param distanceUnitValue - Distance unit value.\n * @param latitude - Latitude.\n * @param longitude - Longitude.\n * @returns - Returns a void promise.\n */\n private readonly getOrgUnitLocationByArea = async (\n calRadius: number,\n distanceUnitValue: number,\n latitude?: number,\n longitude?: number\n ): Promise => {\n const {\n context: { actionContext }\n } = this.props;\n const orgUnitLocationsInput = new GetOrgUnitLocationsByAreaInput(\n latitude,\n longitude,\n calRadius,\n distanceUnitValue,\n this.state.isLocationDisabled\n );\n\n const orgUnitLocations = await getOrgUnitLocationsByArea(orgUnitLocationsInput, actionContext);\n if (orgUnitLocations) {\n await this._setOrgUnitStoreInformation(orgUnitLocations);\n await this._setSelectedStore(undefined);\n }\n };\n\n /**\n * Get full available inventory nearby.\n * @param calRadius - Radius.\n * @param distanceUnitValue - Distance unit value.\n * @param latitude - Latitude.\n * @param longitude - Longitude.\n * @returns - Returns a void promise.\n */\n private readonly getFullAvailableInventoryNearby = async (\n calRadius: number,\n distanceUnitValue: number,\n latitude?: number,\n longitude?: number\n ): Promise => {\n const {\n telemetry,\n context: { actionContext },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager || !storeSelectorStateManager.context) {\n // Store selector dialog isn't open yet, so don't try and update anything\n return;\n }\n\n if (!storeSelectorStateManager.context.product) {\n // TODO: Use alternative search method here to not make inventory check\n return;\n }\n\n const input = new GetFullAvailableInventoryNearbyInput(\n storeSelectorStateManager.context.product.RecordId,\n latitude ?? 0,\n longitude ?? 0,\n calRadius,\n distanceUnitValue,\n this.state.isLocationDisabled\n );\n\n await getFullAvailableInventoryNearby(input, actionContext).catch(error => {\n telemetry.warning(error);\n telemetry.error(error.message);\n telemetry.debug('Unable to get full available inventory near by');\n });\n };\n\n /**\n * Method to called on store selected.\n * @param location - Store Info.\n * @param deliveryMode - Pickup mode.\n * @returns Void promise.\n */\n private readonly _onOrgUnitLocationSelected = async (location: OrgUnitLocation | undefined, deliveryMode?: string): Promise => {\n const {\n telemetry,\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager) {\n if (location && storeSelectorStateManager.context) {\n // Want to eat exceptions here so that the dialog still closes even if the onLocationSelected call goes wrong\n await storeSelectorStateManager.context.onLocationSelected(location, deliveryMode).catch(error => {\n telemetry.warning(error);\n telemetry.error(error.message);\n telemetry.debug('Unable to get on org unit location selected');\n });\n }\n\n await storeSelectorStateManager.closeDialog();\n }\n };\n\n /**\n * Method will list of store selector location line.\n * @param store -Store Info.\n * @param index - List index.\n * @param hasEnabledOutOfStockCheck -Stores List.\n * @param isStoreLocatorView -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @param isPreferredStoreEnabled -Stores List.\n * @param selectedStoreLocationId -Module config value.\n * @param preferredDistanceUnit -Module config value.\n * @param alreadySelectedLocation -Already Selected Location.\n * @param productPickUpOptionList -Product supported Pickup Modes List.\n * @returns StoreSelectorLocation Line Prop.\n */\n private _createStoreLocationList(\n store: IFullOrgUnitAvailability,\n index: number,\n hasEnabledOutOfStockCheck: boolean,\n isStoreLocatorView: boolean,\n preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation,\n productPickUpOptionList?: DeliveryOption[]\n ): IStoreSelectorLocationLineItemProps | undefined {\n const orgUnitLocation = store.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreLocation = selectedStoreLocationId;\n const deliveryOptions = store.OrgUnitPickUpDeliveryModes;\n const lineResources = this._mapResources(this.props.resources);\n const storeOpenFrom: string | undefined = secondsToTime(orgUnitLocation?.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(orgUnitLocation?.OpenTo);\n const storeHours = store.StoreHours;\n\n if (orgUnitLocation) {\n ++this.storeCounter;\n return {\n location: orgUnitLocation,\n selectedStoreLocationId: selectedStoreLocation,\n storeHours,\n resources: lineResources,\n preferredDistanceUnit: preferredDistanceUnit!,\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, alreadySelectedLocation),\n hideStockStatus: !hasEnabledOutOfStockCheck,\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, store.OrgUnitAvailability?.ItemAvailabilities),\n stockStatusLabel: this._stockInventoryLabel(store),\n storeLocatorView: isStoreLocatorView,\n index: this.storeCounter.toString(),\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n telemetryContent: this.telemetryContent,\n isLocationDisabled: this.state.isLocationDisabled,\n storePickUpOptionList: deliveryOptions?.DeliveryOptions,\n productPickUpOptionList,\n locationOpen: { openFrom: storeOpenFrom, openTo: storeOpenTo },\n storeHoursList: storeHours?.RegularStoreHours ? buildStoreHours(storeHours.RegularStoreHours, lineResources) : [],\n onClick: this._setSelectedStore,\n handlers: {\n onSelected: this._onOrgUnitLocationSelected,\n onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\n }\n };\n }\n return undefined;\n }\n\n /**\n * Method to map resources with Location Item.\n * @param resources - List of strings for module.\n * @returns Resources for StoreSelector location line.\n */\n private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n };\n\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined, selectedLocation?: OrgUnitLocation): boolean =>\n (selectedLocation && location && selectedLocation.OrgUnitNumber === location.OrgUnitNumber) || false;\n\n /**\n * Method to get stock.\n * @param hasEnableOutOfStockCheck - Config to check for stock check enabled.\n * @param itemAvailabilities - Item quantity availability.\n * @returns Boolean value for item stock.\n */\n private readonly _isProductInStock = (\n hasEnableOutOfStockCheck: boolean,\n itemAvailabilities: ItemAvailability[] | undefined\n ): boolean => {\n if (!hasEnableOutOfStockCheck) {\n return true;\n }\n const quantityCount = 0;\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > quantityCount : false;\n }\n\n return false;\n };\n\n /**\n * Method to get stocklevel label.\n * @param isInStock - Stock available in store.\n * @returns Label for stock status.\n */\n private readonly _stockInventoryLabel = (isInStock: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (isInStock?.ProductInventoryInformation && ArrayExtensions.hasElements(isInStock.ProductInventoryInformation)) {\n for (let index = 0; index < isInStock.ProductInventoryInformation.length; index++) {\n if (\n isInStock.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n isInStock.ProductInventoryInformation[index].InventLocationId\n ) {\n return isInStock.ProductInventoryInformation[index].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n}\n\nexport default StoreSelector;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IDictionary, IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IDrawerState,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n categoryImageAltText: string;\n drawerKeyValue: IDictionary;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private currentLevel: number = 0;\n\n private readonly _positionInSetOffset: number = 1;\n\n private readonly escapeKey: number = 27;\n\n private readonly menuNode: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.state = { activeMenu: undefined, parentMenu: undefined, categoryImageAltText: '', drawerKeyValue: {} };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView } = this.props;\n\n this.currentLevel = 1;\n return <>{isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\n }\n\n /**\n * Method to render mobile menu.\n * @returns Jsx element.\n */\n private _renderMobileMenu(): JSX.Element {\n const { isMobileView, menuItemData, Navigation } = this.props;\n return (\n \n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\n return this._renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\n })}\n \n );\n }\n\n /**\n * Method to render desktop menu.\n * @returns Jsx element.\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 /**\n * Method to render drawer menu.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\n return this._renderDrawer(menuItem, setSize, posinset);\n }\n return this._renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset);\n }\n\n /**\n * Method to render drawer component.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number): JSX.Element | null {\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue !== undefined ? keyValue : {};\n const { isMobileView } = this.props;\n\n let isDrawerOpen = false;\n if (keys[buttonText]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\n return (\n \n
\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n return this._renderDrawer(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n }\n return this._renderDrawerLink(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n })}\n
\n \n );\n }\n\n /**\n * Method to render link.\n * @param linkText -Text on Menu link.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkText(linkText: string | undefined, setSize: number | undefined, posinset: number | undefined): JSX.Element {\n return (\n \n {linkText}\n \n );\n }\n\n /**\n * Method to render drawer link.\n * @param item -Single Menuitem.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\n return this._renderLinkMenuItem(item, undefined, true, false, setSize, posinset);\n } else if (item && item.linkText && !item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n /**\n * Method to generate menu.\n * @returns Jsx element.\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 (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n this.setState({ parentMenu: undefined });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)}\n {` `}\n \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 /**\n * Method to get data for submenu.\n * @param item -Single Menuitem.\n * @returns IMenuItemData.\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?.id });\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 /**\n * Method to create item list.\n * @param menuItemData -Single Menuitem.\n * @returns Jsx element.\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 }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\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 subMenuLevel = 3;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\n\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 =\n subMenus &&\n 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 ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\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 /**\n * Method to render button menu item.\n * @param option -Single Menuitem.\n * @param activeMenu -Active menu number.\n * @param index -Active menu index.\n * @returns Jsx element.\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 /**\n * Method to render link menu item.\n * @param option -Single Menuitem.\n * @param index -Active menu index.\n * @param hoverEffect -Active menu effect.\n * @param isParent -Is parent menu.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false,\n setSize?: number,\n posinset?: number\n ): JSX.Element | null {\n const { Link, isMobileView } = 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 /**\n * Method to render promotional link.\n * @param linkText -Link text.\n * @param linkUrl -Link url.\n * @returns Jsx element.\n */\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n /**\n * Method to render span menu item.\n * @param option -Single Menu Item.\n * @param index -Index.\n * @param isParent -Is parent menu.\n * @returns Jsx element.\n */\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render menu.\n * @param level -Menu level.\n * @param menuOptions -Menu lists.\n * @param currentItem -Menu current.\n * @param submenu -Mneu has submenu or not.\n * @returns Jsx element.\n */\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\n const categoryImageDisplay =\n !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n
\n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
\n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n /**\n * Method to handle dropdwon change.\n * @param data -Menuitem data.\n * @param parentId -Menu parent.\n * @returns Jsx element.\n */\n private readonly _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)();\n }\n } else {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n }\n\n this._resetFocus();\n };\n\n /**\n * Method to call when focus lost from menu.\n */\n private readonly _resetFocus = () => {\n if (this.props.isMobileView) {\n setTimeout(() => {\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\n }, 0);\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Method to handle close submenu event.\n */\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined });\n }\n }\n\n /**\n * Method to handle escape key event.\n * @param event -HTML event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey) {\n if (!this.props.isMobileView) {\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\n for (const item of navDrawerList) {\n const navDrawerButton = item.firstChild as HTMLButtonElement;\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\n navDrawerButton.focus();\n }\n }\n }\n this._closeSubmenu();\n }\n };\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(categoryImage.src, 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 /**\n * Method to handle escape key event.\n * @param drawerState -HTML event.\n */\n private readonly _onDrawerChange = (drawerState: IDrawerState) => {\n const { drawerKeyValue } = this.state;\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\n const newPair = { [drawerText]: drawerState.isOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n}\n\nexport default NavigationMenuView;\n","/*!\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';\n\nimport { IAadGenericViewProps } from './aad-generic';\n\nexport default (props: IAadGenericViewProps) => {\n const { aadGeneric, aadConainer, aadAPIConainer, heading } = props;\n\n return (\n \n \n {heading}\n {aadAPIConainer}\n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceTileViewProps } from './account-customer-balance-tile';\n\nconst AccountCustomerBalanceTileView: React.FC = props => {\n const { AccountCustomerBalanceTile, heading, content, links } = props;\n\n return (\n \n {heading}\n {content}\n {links}\n \n );\n};\n\nexport default AccountCustomerBalanceTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICatalogPickerViewProps } from './catalog-picker';\n\n/**\n * ICatalogPickerViewProps.\n * @param props - ICatalogPickerViewProps.\n * @returns - Render Catalog Picker.\n */\nexport const CatalogPickerViewFunctionComponent: React.FC = props => {\n const { catalogPicker } = props;\n return (\n \n {props.heading}\n {props.paragraph}\n {props.catalogs}\n \n );\n};\n\nexport default CatalogPickerViewFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageSettings, Image, RichTextComponent } from '@msdyn365-commerce/core';\nimport { IWriteReviewData, IWriteReviewViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IWriteReviewProps } from '../definition-extensions/write-review.ext.props.autogenerated';\n\n/**\n * Render Product Image.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductImage = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n return (\n \n );\n};\n\n/**\n * Render Product Description.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductDescription = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const product = props.data.product.result;\n return (\n \n
{renderProductImage(props)}
\n
\n
{product?.Name}
\n
{product?.ItemId}
\n
\n
\n );\n};\n\n/**\n * Create Write Review Modal.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst createReviewModal = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const { resources, moduleProps, reviewModal } = props;\n\n return (\n \n {reviewModal.modalHeader}\n \n \n \n {renderProductDescription(props)}\n \n
{resources.selectRatingLabel}
\n {reviewModal.rating}\n
\n
\n \n {resources.reviewTitleLabel}\n {reviewModal.titleInput}\n \n \n {resources.reviewTextLabel}\n {reviewModal.textInput}\n \n {reviewModal.privacyPolicyUrl}\n {reviewModal.error}\n
\n
\n \n {reviewModal.submitButton}\n {reviewModal.cancelButton}\n \n
\n );\n};\n\n/**\n * WriteReview view.\n * @param props - WriteReview ViewProps.\n * @returns WriteReview view module.\n */\nconst WriteReviewView: React.FC> = props => {\n const { config, heading, signInMessage, signInButton, modalToggle, moduleProps } = props;\n const { paragraph } = config;\n const isAuthenticated = props.context.request.user.isAuthenticated;\n const text = paragraph && ;\n\n return (\n \n {heading}\n {!isAuthenticated ? (\n <>\n {signInMessage}\n {signInButton}\n \n ) : (\n <>\n {text}\n {modalToggle}\n {createReviewModal(props)}\n \n )}\n \n );\n};\n\nexport default WriteReviewView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IB2bRequestsStatusViewProps } from './b2b-requests-status';\n\nconst B2bRequestsStatusView: React.FC = props => {\n const { b2bRequestsStatus, heading, table } = props;\n return (\n \n {heading}\n {table}\n \n );\n};\n\nexport default B2bRequestsStatusView;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport { AsyncResult } from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport { ICategoryPromotionalContentData } from './navigation-menu.props.autogenerated';\r\n\r\nexport interface INavigationMenuData {\r\n categories: AsyncResult;\r\n}\r\n\r\nexport interface IMenuItemData {\r\n id?: number;\r\n linkText?: string;\r\n linkURL?: string;\r\n imageSource?: string;\r\n imageDestinationURL?: string;\r\n subMenu?: IMenuItemData[];\r\n promotionalContent?: ICategoryPromotionalContentData[];\r\n menuSource?: string;\r\n shouldOpenNewTab?: boolean;\r\n ariaLabel?: string;\r\n}\r\n\r\n/**\r\n *\r\n * Menu type index id.\r\n */\r\nexport enum MenuTypeIndexId {\r\n Cms = 1000,\r\n Retail = 5000\r\n}\r\n\r\n/**\r\n *\r\n * Menu type source.\r\n */\r\nexport enum MenuSource {\r\n Cms = 'Cms',\r\n Retail = 'Retail'\r\n}\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * INavigationMenu contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum navigationMenuSource {\r\n all = 'all',\r\n retailServerOnly = 'retailServerOnly',\r\n cmsOnly = 'cmsOnly'\r\n}\r\n\r\nexport interface INavigationMenuConfig extends Msdyn365.IModuleConfig {\r\n navigationMenuSource?: navigationMenuSource;\r\n cmsNavItems?: ICmsNavItemsData[];\r\n enableMultilevelMenu?: boolean;\r\n enabletopMenu?: boolean;\r\n menuLevelSupport?: number;\r\n rootMenuNavigation?: string;\r\n displayCategoryImage?: boolean;\r\n displayPromotionalImage?: boolean;\r\n categoryPromotionalContent?: ICategoryPromotionalContentData[];\r\n categoryImageSettings?: Msdyn365.IImageSettings;\r\n className?: string;\r\n clientRender?: boolean;\r\n}\r\n\r\nexport interface INavigationMenuResources {\r\n menuAriaLabel: string;\r\n backButtonAriaLabel: string;\r\n allCategoryMenuText: string;\r\n}\r\n\r\nexport interface ICmsNavItemsData {\r\n linkText?: string;\r\n linkUrl?: Msdyn365.ILinkData;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ICategoryPromotionalContentData {\r\n categoryName?: string;\r\n image: Msdyn365.IImageData;\r\n text?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n}\r\n\r\nexport interface INavigationMenuProps extends Msdyn365.IModule {\r\n resources: INavigationMenuResources;\r\n config: INavigationMenuConfig;\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n *\r\n * Commented out IActionContext and getCategoryUrl due to removal of the \"All\" node in hierarchy navigation\r\n */\r\n\r\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport MsDyn365, { /*IActionContext,*/ IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\r\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions/*, getCategoryUrl*/ } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { computed, observable } from 'mobx';\r\nimport * as React from 'react';\r\nimport { IMenuItemData, INavigationMenuData, MenuSource, MenuTypeIndexId } from './navigation-menu.data';\r\nimport { ICmsNavItemsData, INavigationMenuProps, ISubMenusData, navigationMenuSource } from './navigation-menu.props.autogenerated';\r\n\r\nexport interface INavigationMenuViewProps extends INavigationMenuProps {\r\n\tclassName: string;\r\n\tmenuItemData: IMenuItemData[];\r\n\tNavigation: IModuleProps;\r\n\tMenuList: INodeProps;\r\n\tListItem: INodeProps;\r\n\tLink: INodeProps;\r\n\tButton: INodeProps;\r\n\tSpan: INodeProps;\r\n\tImageContainer: INodeProps;\r\n\tMobileDescriptionContainer: INodeProps;\r\n\tMobileBackButton: INodeProps;\r\n\tMobileDescriptionLabel: INodeProps;\r\n\timageSettings: IImageSettings;\r\n\tgridSettings: IGridSettings;\r\n\tisMobileView: boolean;\r\n\tDivContainer?: INodeProps;\r\n\tImageDivContainer?: INodeProps;\r\n\tshowCategoryImage?: boolean;\r\n\tshowPromotionalContent?: boolean;\r\n}\r\n\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport interface INavigationMenuState {\r\n\tisMobile: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenu component.\r\n * @extends {React.PureComponent>}\r\n */\r\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\r\n\tprivate static CMSItemIdInit: number = MenuTypeIndexId.Cms;\r\n\tprivate static RSItemIdInit: number = MenuTypeIndexId.Retail;\r\n\tprivate resizeThrottledEventHandler?: (event: Event) => void;\r\n\tprivate menuItemList: IMenuItemData[];\r\n\tprivate isRetail: boolean = true;\r\n\tprivate isCMS: boolean = true;\r\n\r\n\t@observable\r\n\tprivate viewport: GridSize;\r\n\r\n\tpublic static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\r\n\t\tlet nameTranslation: TextValueTranslation | undefined;\r\n\t\tif (locale && nameTranslations && nameTranslations.length > 0) {\r\n\t\t\tnameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\r\n\t\t}\r\n\t\treturn nameTranslation && nameTranslation.Text;\r\n\t}\r\n\r\n\tconstructor(props: INavigationMenuProps) {\r\n\t\tsuper(props);\r\n\t\tthis._updateViewport = this._updateViewport.bind(this);\r\n\t\tthis.viewport =\tprops.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\r\n\t\tthis._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\r\n\t\tthis.state = { isMobile: this.isMobile };\r\n\t\tthis.menuItemList = [];\r\n\t}\r\n\r\n\t@computed get isMobile(): boolean {\r\n\t\treturn this.viewport === 'xs' || this.viewport === 'sm' || this.viewport === 'md';\r\n\t}\r\n\r\n\tpublic componentDidMount(): void {\r\n\t\tif (MsDyn365.isBrowser) {\r\n\t\t\tthis.resizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\r\n\t\t}\r\n\t\tthis._updateViewport();\r\n\t}\r\n\r\n\tpublic componentWillUnmount(): void {\r\n\t\tif (MsDyn365.isBrowser) {\r\n\t\t\twindow.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic render(): JSX.Element | null {\r\n\t\tthis.menuItemList = this._mapData();\r\n\t\tif (isEmptyOrNullObject(this.props.data)) {\r\n\t\t\tthis.props.telemetry.error('Navigatiomenu returned null');\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tconst defaultImageSettings: IImageSettings = {\r\n\t\t\tviewports: {\r\n\t\t\t\txs: { q: 'w=224&h=300&m=6', w: 0, h: 0 },\r\n\t\t\t\txl: { q: 'w=224&h=300&m=6', w: 0, h: 0 }\r\n\t\t\t},\r\n\t\t\tlazyload: true\r\n\t\t};\r\n\r\n\t\tconst viewProps = {\r\n\t\t\t...this.props,\r\n\t\t\t...this.state,\r\n\t\t\timageSettings: defaultImageSettings,\r\n\t\t\tgridSettings: this.props.context.request.gridSettings,\r\n\t\t\tNavigation: {\r\n\t\t\t\tmoduleProps: this.props,\r\n\t\t\t\tclassName: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\r\n\t\t\t\ttag: 'nav',\r\n\t\t\t\trole: this.isMobile ? 'listbox' : 'navigation'\r\n\t\t\t},\r\n\t\t\tMenuList: {\r\n\t\t\t\tclassName: 'ms-nav__list',\r\n\t\t\t\ttag: 'ul',\r\n\t\t\t\trole: this.isMobile ? 'listbox' : 'menu'\r\n\t\t\t},\r\n\t\t\tListItem: {\r\n\t\t\t\tclassName: 'ms-nav__list__item',\r\n\t\t\t\trole: 'presentation',\r\n\t\t\t\ttag: 'li'\r\n\t\t\t},\r\n\t\t\tshowCategoryImage: this.props.config.displayCategoryImage ?? false,\r\n\t\t\tshowPromotionalContent: this.props.config.displayPromotionalImage ?? false,\r\n\t\t\tLink: {\r\n\t\t\t\ttag: 'a',\r\n\t\t\t\tclassName: 'ms-nav__list__item__link',\r\n\t\t\t\trole: this.isMobile ? 'option' : 'menuitem'\r\n\t\t\t},\r\n\t\t\tDivContainer: {\r\n\t\t\t\ttag: 'div',\r\n\t\t\t\tclassName: 'ms-nav__feature'\r\n\t\t\t},\r\n\t\t\tImageDivContainer: {\r\n\t\t\t\ttag: 'div',\r\n\t\t\t\tclassName: 'category-image',\r\n\t\t\t\trole: 'tabpanel'\r\n\t\t\t},\r\n\t\t\tButton: {\r\n\t\t\t\tclassName: 'ms-nav__list__item__button',\r\n\t\t\t\ttag: 'button',\r\n\t\t\t\trole: this.isMobile ? 'option' : 'menuitem',\r\n\t\t\t\tonClick: this.props\r\n\t\t\t},\r\n\t\t\tImageContainer: {\r\n\t\t\t\tclassName: 'ms-nav__list__item__image'\r\n\t\t\t},\r\n\t\t\tSpan: {\r\n\t\t\t\tclassName: 'ms-nav__list__item__span',\r\n\t\t\t\ttag: 'span'\r\n\t\t\t},\r\n\t\t\tMobileDescriptionContainer: {\r\n\t\t\t\tclassName: 'ms-nav__list__mobile__container'\r\n\t\t\t},\r\n\t\t\tMobileBackButton: {\r\n\t\t\t\tclassName: 'ms-nav__list__mobile__container__button',\r\n\t\t\t\ttag: 'button',\r\n\t\t\t\t'aria-label': this.props.resources.backButtonAriaLabel,\r\n\t\t\t\tonClick: this.props\r\n\t\t\t},\r\n\t\t\tMobileDescriptionLabel: {\r\n\t\t\t\tclassName: 'ms-nav__list__mobile__container__span',\r\n\t\t\t\ttag: 'span'\r\n\t\t\t},\r\n\t\t\tisMobileView: this.state.isMobile,\r\n\t\t\tmenuItemData: this.menuItemList,\r\n\t\t\tclassName: classnames('ms-nav', this.props.config.className)\r\n\t\t};\r\n\t\treturn this.props.renderView(viewProps) as React.ReactElement;\r\n\t}\r\n\r\n\tprivate _mapData(): IMenuItemData[] {\r\n\t\tconst { data, config } = this.props;\r\n\t\tconst mergedData: IMenuItemData[] = [];\r\n\t\tif (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\r\n\t\t\tdata.categories.result.map((item: CategoryHierarchy, index) =>\r\n\t\t\t\tmergedData.push(this._constructMenuItemData(item, undefined, true, index, true))\r\n\t\t\t);\r\n\t\t}\r\n\t\tif (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\r\n\t\t\tconfig.cmsNavItems.map((item: ICmsNavItemsData, idx: number) =>\r\n\t\t\t\tmergedData.push(this._constructMenuItemData(undefined, item, false, idx + 1))\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn this._constructTopMenuItemData(mergedData);\r\n\t}\r\n\r\n\tprivate _constructTopMenuItemData(mergedData: IMenuItemData[]): IMenuItemData[] {\r\n\t\tconst enableTopLevelMenu = this.props.config.enabletopMenu ?? false;\r\n\t\tif (!enableTopLevelMenu) {\r\n\t\t\treturn mergedData;\r\n\t\t}\r\n\t\tconst mergedRootMenuData: IMenuItemData[] = [];\r\n\t\tconst topMenu = {\r\n\t\t\tid: 1,\r\n\t\t\tlinkText: this.props.config.rootMenuNavigation ?? '...',\r\n\t\t\tlinkURL: '#',\r\n\t\t\timageSource: undefined,\r\n\t\t\tsubMenu: mergedData\r\n\t\t} as IMenuItemData;\r\n\t\tmergedRootMenuData.push(topMenu);\r\n\r\n\t\treturn mergedRootMenuData;\r\n\t}\r\n\r\n\tprivate _constructMenuItemData(\r\n\t\tretailItem?: CategoryHierarchy,\r\n\t\tcmsItem?: ICmsNavItemsData,\r\n\t\tisRetail?: boolean,\r\n\t\tidx?: number,\r\n\t\taddedAllMenu?: boolean\r\n\t): IMenuItemData {\r\n\t\tconst locale =\r\n\t\t\tthis.props.context && this.props.context.request && this.props.context.request.locale\r\n\t\t\t\t? this.props.context.request.locale\r\n\t\t\t\t: 'en-us';\r\n\t\tconst { categoryPromotionalContent } = this.props.config;\r\n\t\tconst cmsItemText = (cmsItem && cmsItem.linkText) || '';\r\n\t\tconst { menuAriaLabel } = this.props.resources;\r\n\r\n\t\t// Filter category promotional data based on category name\r\n\t\tconst promotionalData =\r\n\t\t\tretailItem &&\r\n\t\t\tcategoryPromotionalContent?.filter(promoItem => promoItem.categoryName?.toLowerCase() === retailItem?.Name?.toLowerCase());\r\n\r\n\t\t// First check if image is available from promotional data else read from retail server\r\n\t\tlet imageSource: string = 'empty';\r\n\t\tif (ArrayExtensions.hasElements(retailItem?.Images) && retailItem!.Images[0].Uri) {\r\n\t\t\timageSource = retailItem!.Images[0].Uri;\r\n\t\t}\r\n\t\tif (isRetail) {\r\n\t\t\t// Additional Link code explodes && drops first element (removes root node from hierarchy)\r\n\t\t\treturn {\r\n\t\t\t\tid: NavigationMenu.RSItemIdInit++,\r\n\t\t\t\tlinkText: NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? '',\r\n\t\t\t\tlinkURL: `/${ retailItem && retailItem.Url?.substring(1).split('/').slice(1).join('/')}`,\r\n\t\t\t\timageSource,\r\n\t\t\t\tsubMenu: this._getNestedChildren(retailItem, imageSource, addedAllMenu),\r\n\t\t\t\tpromotionalContent: this.props.config.displayPromotionalImage && promotionalData,\r\n\t\t\t\tmenuSource: MenuSource.Retail,\r\n\t\t\t\tariaLabel: `${NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? ''} ${menuAriaLabel}`\r\n\t\t\t} as IMenuItemData;\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tid: NavigationMenu.CMSItemIdInit++,\r\n\t\t\tlinkText: cmsItemText,\r\n\t\t\tlinkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\r\n\t\t\timageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\r\n\t\t\timageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\r\n\t\t\tsubMenu: this._getCMSNestedChildren(cmsItem),\r\n\t\t\tmenuSource: MenuSource.Cms,\r\n\t\t\tshouldOpenNewTab: cmsItem?.openInNewTab,\r\n\t\t\tariaLabel: `${cmsItemText} ${menuAriaLabel}`\r\n\t\t} as IMenuItemData;\r\n\t}\r\n\r\n\tprivate _getNestedChildren(category?: CategoryHierarchy, imageSourceUrl?: string, addedAllMenu: boolean = false): IMenuItemData[] {\r\n\t\tconst nestedChildren: IMenuItemData[] = [];\r\n\t\tif (!category || !category.Children || category.Children.length === 0){\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\t/* /Removed to hide the root \"ALL\" items, also fixed to remove the bad node in case we decide to bring these back.\r\n\t\tif (!this.props.config.enabletopMenu && addedAllMenu){\r\n\t\t\tconst linkURL = getCategoryUrl(category, (this.props.context as unknown) as IActionContext, {});\r\n\t\t\tnestedChildren.push({\r\n\t\t\t\tlinkText: this.props.resources.allCategoryMenuText,\r\n\t\t\t\timageSource: imageSourceUrl,\r\n\t\t\t\tlinkURL: `/${ linkURL?.substring(1).split('/').slice(1).join('/')}`\r\n\t\t\t});\r\n\t\t}*/\r\n\t\tcategory.Children.map((item: CategoryHierarchy, index) => {\r\n\t\t\tnestedChildren.push(this._constructMenuItemData(item, undefined, true, index, false));\r\n\t\t});\r\n\t\treturn nestedChildren;\r\n\t}\r\n\r\n\tprivate _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\r\n\t\tconst nestedChildren: IMenuItemData[] = [];\r\n\r\n\t\tif (!category || !category.subMenus || category.subMenus.length === 0) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tcategory.subMenus.map((item: ISubMenusData, idx: number) => {\r\n\t\t\tnestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\r\n\t\t});\r\n\t\treturn nestedChildren;\r\n\t}\r\n\r\n\tprivate readonly _setNavigationSource = (sourceType?: navigationMenuSource): void => {\r\n\t\tswitch (sourceType) {\r\n\t\t\tcase navigationMenuSource.retailServerOnly:\r\n\t\t\t\tthis.isRetail = true;\r\n\t\t\t\tthis.isCMS = false;\r\n\t\t\t\tbreak;\r\n\t\t\tcase navigationMenuSource.cmsOnly:\r\n\t\t\t\tthis.isRetail = false;\r\n\t\t\t\tthis.isCMS = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase navigationMenuSource.all:\r\n\t\t\t\tthis.isRetail = true;\r\n\t\t\t\tthis.isCMS = true;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t}\r\n\t};\r\n\r\n\tprivate _updateViewport(): void {\r\n\t\tthis.viewport = this._getViewport();\r\n\t\tthis.setState({ isMobile: this.isMobile });\r\n\t}\r\n\r\n\tprivate _getViewport(): GridSize {\r\n\t\tconst { context } = this.props;\r\n\r\n\t\t// Always render in mobile viewport on a mobile device\r\n\t\tif (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n\t\t\treturn 'xs';\r\n\t\t}\r\n\r\n\t\tif (MsDyn365.isBrowser && window.innerWidth) {\r\n\t\t\tconst gridSettings = context.request.gridSettings;\r\n\t\t\tif (gridSettings) {\r\n\t\t\t\tif (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n\t\t\t\t\treturn 'xs';\r\n\t\t\t\t} else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n\t\t\t\t\treturn 'sm';\r\n\t\t\t\t} else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n\t\t\t\t\treturn 'md';\r\n\t\t\t\t} else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n\t\t\t\t\treturn 'lg';\r\n\t\t\t\t}\r\n\t\t\t\treturn 'xl';\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn 'xs';\r\n\t}\r\n}\r\n\r\nexport default NavigationMenu;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n ICategoryHierarchyViewProps,\n IRefineMenuViewProps,\n ISearchResultContainerViewProps,\n ISearchResultModalViewProps,\n ISortByViewProps,\n ITitleViewProps\n} from '@msdyn365-commerce-modules/search-result-container';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst SearchResultContainerView: React.FC = props => {\n const {\n SearchResultContainer,\n products,\n pagination,\n ProductsContainer,\n ProductSectionContainer,\n choiceSummary,\n isMobile,\n modalToggle,\n searchResultModal,\n TitleViewProps,\n refineMenu,\n categoryHierarchy,\n sortByOptions,\n CategoryNavContainer,\n RefineAndProductSectionContainer,\n errorMessage,\n FeatureSearchContainer,\n similarLookProduct\n } = props;\n const isRecoSearchPage = props.context.actionContext.requestContext.query?.recommendation;\n if (isMobile) {\n return (\n \n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\n {renderTitle(TitleViewProps)}\n {choiceSummary}\n {modalToggle}\n {createSearchResultModal(searchResultModal, refineMenu, sortByOptions, isRecoSearchPage)}\n {similarLookProduct}\n \n {errorMessage}\n {products}\n \n {pagination}\n \n );\n }\n return (\n \n {categoryHierarchy && {renderCategoryHierarchy(categoryHierarchy)}}\n \n {refineMenu && renderRefiner(refineMenu)}\n \n {similarLookProduct}\n
\n {TitleViewProps && renderTitle(TitleViewProps)}\n {choiceSummary}\n
\n
\n {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\n
\n \n {errorMessage}\n {products}\n \n {pagination}\n
\n
\n
\n );\n};\n\nconst createSearchResultModal = (\n modalProps: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element => {\n return React.cloneElement(\n modalProps.modal,\n {},\n modalProps.modalHeader,\n createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\n modalProps.modalFooter\n );\n};\n\nconst createModalBody = (\n props: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element | null => {\n if (sortByDropDown) {\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefiner(refineMenu));\n }\n return null;\n};\n\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\n const { SortingContainer, sortByDropDown } = props;\n if (sortByDropDown && !isRecoSearchPage) {\n return {sortByDropDown};\n }\n return null;\n};\n\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\n if (categoryHierarchyList) {\n return (\n \n {categoryHierarchyList.map((category, index) => (\n \n {category}\n {categoryHierarchyList && categoryHierarchyList[index + 1] && categoryHierarchySeparator}\n \n ))}\n \n );\n }\n\n return null;\n};\n\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\n const { title, TitleContainer } = props;\n if (title) {\n return (\n \n

\n {title.titlePrefix}\n {title.titleText}({title.titleCount})\n

\n
\n );\n }\n return null;\n};\n\nexport default SearchResultContainerView;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IProductSpecificationViewProps } from '@msdyn365-commerce-modules/product-specification/src/modules/product-specification/./product-specification';\r\n\r\nconst ProductSpecificationView: React.FC = props => {\r\n\tconst { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps, productSpecificationResult } = props;\r\n\tconst rowdata =\r\n\t\tproductSpecificationResult &&\r\n\t\tArrayExtensions.hasElements(productSpecificationResult) &&\r\n\t\tproductSpecificationResult.filter(row => !ObjectExtensions.isNullOrUndefined(row) && row.props.cellData.props.dangerouslySetInnerHTML);\r\n\treturn rowdata && ArrayExtensions.hasElements(rowdata) ? (\r\n\t\t\r\n\t\t\t{props.title}\r\n\t\t\t\r\n\t\t\t\t{rowdata}\r\n\t\t\t\r\n\t\t\r\n\t) : null;\r\n};\r\n\r\nexport default ProductSpecificationView;\r\n","/*!\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';\n\nimport { ICheckoutExpressPaymentContainerViewProps } from './checkout-express-payment-container';\n\ninterface IContainerItemsComponent {\n isLoadingClassName: string;\n items: React.ReactNode[];\n}\n\nconst ContainerItemsComponent: React.FC = ({ isLoadingClassName, items }) => (\n
{items}
\n);\n\nconst CheckoutExpressPaymentContainerView: React.FC = ({\n checkoutPlainContainerProps,\n items,\n isReady,\n waiting,\n title,\n headerProps\n}) => {\n const isLoadingClassName: string = isReady ? 'showContainer' : 'notShowContainer';\n return (\n \n {title}\n {!isReady && waiting}\n \n \n );\n};\n\nexport default CheckoutExpressPaymentContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IInvoicesListViewProps } from './invoices-list';\n\nexport const InvoiceListView: React.FC = props => {\n const { header, filter, content, invoiceRequestModal, pagination } = props;\n\n return (\n \n {header}\n {invoiceRequestModal}\n {filter}\n {content}\n {pagination}\n \n );\n};\n\nexport default InvoiceListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IContentBlockAdditionalContentItemViewProps,\n IContentBlockAdditionalContentViewProps,\n IContentBlockViewProps\n} from '@msdyn365-commerce-modules/content-block';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n {item.links}\n \n \n );\n })}\n \n );\n};\n\n/**\n * Render View.\n * @param props - The view props.\n * @returns -The JSX Element.\n */\nconst contentBlockView: React.FC = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n // @ts-expect-error HTML element need to be clear on run time.\n const hasImage: boolean = image.props.src;\n const imageClass: string = hasImage ? `${detailsContainer.className} withImage` : `${detailsContainer.className} withoutImage`;\n\n if (imageLink) {\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n {image}\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n};\n\nexport default contentBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createTabStateInput, getContentID, TabItemType } from '../..';\nimport { ITabData } from './tab.data';\nimport { ITabProps } from './tab.props.autogenerated';\n\n/**\n *\n * Tab component.\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\nexport interface ITabViewProps extends ITabProps<{}> {\n heading?: React.ReactNode;\n TabContainer: IModuleProps;\n headerSection: INodeProps;\n tabHeaderSection: INodeProps;\n tabsSection: INodeProps;\n tabItemContainer: INodeProps;\n tabHeaders: React.ReactNode;\n tabContents: React.ReactNode;\n}\n\nexport interface ITabViewStates {\n currentTabIndex: number;\n}\n\n/**\n *\n * Tab component.\n * @extends {React.Component>}\n */\n@observer\nclass Tab extends React.Component, ITabViewStates> {\n public readonly tabIndexQuery: string = 'activeTab';\n\n private activeLink: HTMLLIElement | null;\n\n constructor(props: ITabProps) {\n super(props);\n const { defaultTabIndex } = this.props.config;\n const { slots } = this.props;\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n let initialIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\n const queryString: string =\n (this.props.context &&\n this.props.context.request &&\n this.props.context.request.query &&\n this.props.context.request.query.activeTab) ||\n '';\n let queryTabIndex: number = 0;\n if (queryString.indexOf(':') > 0) {\n const arr = queryString.split(':');\n const moduleId = arr[0];\n if (moduleId === this.props.id) {\n queryTabIndex = Number.parseInt(arr[1], 10);\n }\n }\n initialIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex - 1 : initialIndex;\n this.state = { currentTabIndex: initialIndex };\n\n this._getTabHeader = this._getTabHeader.bind(this);\n this._getTabContent = this._getTabContent.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._setGetParameter = this._setGetParameter.bind(this);\n this.activeLink = null;\n }\n\n public shouldComponentUpdate(nextProps: ITabProps, nextState: ITabViewStates): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { slots } = this.props;\n const { heading, className } = this.props.config;\n\n const headingComponent = heading && (\n \n );\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n\n // Const queryTabIndex = this.props.context && this.props.context.request && this.props.context.request.query && +this.props.context.request.query.activeTabIndex || 0;\n // let activeIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\n // activeIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex - 1 : activeIndex;\n\n const tabViewProps = {\n ...this.props,\n TabContainer: {\n moduleProps: this.props,\n className: classnames('ms-tab', className)\n },\n headerSection: { className: 'ms-tab-header-section' },\n tabsSection: { className: 'ms-tab-tabs-section', tag: 'ul' as NodeTag, role: 'tablist' },\n heading: headingComponent,\n config: this.props && this.props.config,\n tabItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-tab-content-section'\n },\n tabContents: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabContent(item, index)),\n tabHeaders: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabHeader(item, index))\n };\n return this.props.renderView(tabViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: MsDyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public componentDidUpdate(): void {\n const { data } = this.props;\n if (!this.props.context.request.params.isEditor) {\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\n if (dataActionTabId) {\n if (this.props.id === dataActionTabId) {\n this.activeLink && this.activeLink.focus();\n }\n } else {\n const queryString: string =\n (this.props.context &&\n this.props.context.request &&\n this.props.context.request.query &&\n this.props.context.request.query.activeTab) ||\n '';\n if (queryString.indexOf(':') > 0) {\n const arr = queryString.split(':');\n const moduleId = arr[0];\n if (moduleId === this.props.id) {\n this.activeLink && this.activeLink.focus();\n }\n }\n }\n }\n }\n\n /**\n *Set the activate link value on tab click.\n * @param link -Ref link value.\n */\n private readonly _refHandler = (link: HTMLLIElement | null) => {\n this.activeLink = link;\n };\n\n private _getTabHeader(item: React.ReactNode, index: number): React.ReactNode {\n const { data } = this.props;\n const activeContentIndex =\n data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.activeContentIndex;\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\n const selected =\n activeContentIndex !== undefined && dataActionTabId === this.props.id\n ? activeContentIndex === index\n : this.state.currentTabIndex === index;\n const contentID = getContentID(index, this.props.id);\n\n return (\n \n \n {React.cloneElement(item as React.ReactElement, {\n tabItemType: TabItemType.TabHeader,\n isSelected: index === this.state.currentTabIndex,\n itemIndex: index,\n tabId: this.props.id\n })}\n \n \n );\n }\n\n private readonly _onClick = (index: number, id: string) => (e: React.MouseEvent) => {\n const activeTabState = { activeContentIndex: index, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 1)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n };\n\n private readonly _onKeyDown = (index: number, id: string) => (e: React.KeyboardEvent) => {\n if (e.keyCode === 13) {\n const activeTabState = { activeContentIndex: index, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 1)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n\n if (e.keyCode === 39 || e.keyCode === 37) {\n const { slots } = this.props;\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n\n if (e.keyCode === 39) {\n // If we're at the end, go to the start\n if (index + 1 === slotLength) {\n index = -1;\n }\n const activeTabState = { activeContentIndex: index + 1, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index + 1 });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 2)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n\n // Move left\n } else if (e.keyCode === 37) {\n // If we're at the start, move to the end\n if (index === 0) {\n index = slotLength;\n }\n const activeTabState = { activeContentIndex: index - 1, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index - 1 });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n }\n };\n\n private _getTabContent(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, {\n tabItemType: TabItemType.TabContent,\n isSelected: index === this.state.currentTabIndex,\n itemIndex: index,\n tabId: this.props.id\n })}\n \n );\n }\n\n private _setGetParameter(requestContext: MsDyn365.IRequestContext, paramName: string, paramValue: string): string {\n let url;\n\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n url = new URL(window.location.href);\n } else {\n url = new URL(requestContext.url.requestUrl.href);\n }\n\n const params = new window.URLSearchParams(url.search);\n params.set(paramName, paramValue);\n url.search = decodeURIComponent(params.toString());\n return url.toString();\n }\n}\n\nexport default Tab;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartViewProps, IOrderSummaryErrors } from './cart';\nimport { ICartlinesViewProps } from './components/cart-line-items';\nimport { ICartLineItemViewProps } from './components/cart-line-items-promotion';\n\nconst _renderCartlines = (\n cartLines: ICartlinesViewProps[] | undefined,\n cartEmptyText: string,\n CartlinesWrapper: INodeProps,\n storeSelector: React.ReactNode | undefined,\n backToShoppingButton: React.ReactNode,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n cartDataResult: boolean\n): JSX.Element[] | JSX.Element => {\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n if (cartLines) {\n return cartLines.map(cartLine => {\n return (\n
\n {cartLine.cartline}\n {storeSelector && cartLine.pickUpInStore ? (\n {cartLine.pickUpInStore.defaultComponent}\n ) : null}\n {cartLine.addToOrderTemplate ? (\n \n {cartLine.remove}\n {cartLine.addToWishlist}\n {cartLine.addToOrderTemplate}\n \n ) : (\n <>\n {cartLine.remove}\n {cartLine.addToWishlist}\n \n )}\n
\n );\n });\n }\n return cartDataResult ? (\n
\n

{cartEmptyText}

\n {backToShoppingButton}\n
\n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * Method will render error block.\n * @param errorData -The order summary errors interface.\n * @returns Jsx element.\n */\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\n return null;\n }\n return (\n \n {errorData.header}\n {errorData.errors}\n \n );\n};\n\n/**\n * Method will render invoice summary lines.\n * @param invoiceSummaryLines -The invoicesummary lines interface.\n * @param OrderSummaryItems -The order summary items props.\n * @param props -The cartview props.\n * @returns Jsx element.\n */\nconst _renderInvoiceSummarylines = (\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!invoiceSummaryLines) {\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {invoiceSummaryLines.invoices}\n {invoiceSummaryLines.giftCard}\n {invoiceSummaryLines.loyalty}\n {invoiceSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Method will render order summary lines.\n * @param orderSummaryLines -The ordersummary lines interface.\n * @param OrderSummaryItems -The order summary items props.\n * @param props -The cartview props.\n * @returns Jsx element.\n */\nconst _renderOrderSummarylines = (\n orderSummaryLines: IOrderSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!orderSummaryLines) {\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {props.promoCode}\n {orderSummaryLines.subtotal}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Method will render cart promotions.\n * @param promotions -The cartline item view props.\n * @returns Jsx element.\n */\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\n return (\n <>\n \n {promotions.promotionMessage}\n {promotions.promotionSeeAllLink}\n {promotions.promotionDialog}\n \n \n );\n};\n\n/**\n * Method will render cartlines group title.\n * @param cartLine -The cartline view props.\n * @param titleSeparate -The title separate.\n * @returns Jsx element.\n */\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, titleSeparate: string) => {\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\n return (\n <>\n \n {isBopisSelected ? (\n

\n {cartLine.pickUpInStore?.deliveryOption}\n {titleSeparate}\n {cartLine.pickUpInStore?.orgUnitName}\n

\n ) : null}\n
\n \n );\n};\n\n/**\n * Method will render cartlines groups header title.\n * @param pickUpText -The pickup text for group.\n * @param shippingText -The shipping text for group.\n * @param emailShippingText -The email shipping text for group.\n * @param titleSeparate -The title separator.\n * @param cartLine -The cartline view props.\n * @param emailDeliveryModeCode -The email delivery code from channel.\n * @returns Jsx element.\n */\nconst renderCartLinesGroupHeader = (\n pickUpText: string,\n shippingText: string,\n emailShippingText: string,\n titleSeparate: string,\n cartLine: ICartlinesViewProps,\n emailDeliveryModeCode?: string\n) => {\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n if (!StringExtensions.isNullOrEmpty(emailDeliveryModeCode)) {\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailShippingText : groupTitle;\n }\n\n return (\n <>\n
\n

\n

{groupTitle}

\n {renderCartLinesGroupTitle(cartLine, titleSeparate)}\n
\n \n );\n};\n\n/**\n * Method will render cartlines in groups.\n * @param props -The cartline.\n * @returns Jsx element.\n */\nconst renderCartLinesGroup = (props: ICartViewProps): JSX.Element | undefined => {\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\n return (\n
\n {props.cartLinesGroup.map(cartlines => {\n return (\n
\n {renderCartLinesGroupHeader(\n props.resources.pickUpText,\n props.resources.shippingText,\n props.resources.emailshippingText,\n props.resources.titleSeparate,\n cartlines[0],\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n {_renderCartlines(\n cartlines,\n props.resources.emptyCartText,\n props.CartlinesWrapper,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n
\n );\n })}\n
\n );\n }\n return props.cartDataResult ? (\n
\n
\n

{props.resources.emptyCartText}

\n {props.backToShoppingButton}\n
\n
\n ) : (\n <>{props.waitingComponent}\n );\n};\n\nconst CartView: React.FC = (props: ICartViewProps) => (\n
\n {props.title}\n {!props.cart?.hasInvoiceLine && props.promotionOptions && _renderPromotions(props.promotionOptions)}\n {props.multiplePickUpEnabled ? (\n renderCartLinesGroup(props)\n ) : (\n \n {_renderCartlines(\n props.cartlines,\n props.resources.emptyCartText,\n props.CartlinesWrapper,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n \n )}\n {props.orderSummaryHeading && (\n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {_renderErrorBlock(props.OrderSummaryErrors)}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\n {props.expressCheckoutButton}\n ) : null}\n {props.backToShoppingButton}\n {props.createTemplateFromCartButton}\n \n )}\n {props.storeSelector}\n
\n);\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n placedBy,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {placedBy}\n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBusinessPartnersViewProps } from './business-partners';\n\n/**\n * View layout of business partner module.\n * @param props - React props of the component.\n * @returns Functional component.\n */\nconst businessPartnersView: React.FC = props => {\n if (props.selectedBusinessPartnerUser) {\n return (\n \n {props.businessPartnersHeading}\n {props.catalogLoadingIndicator}\n {props.catalogLoadingErrorMessage}\n \n );\n }\n\n if (props.cookieConsentNotGivenErrorMessage) {\n return (\n \n {props.businessPartnersHeading}\n {props.cookieConsentNotGivenErrorMessage}\n \n );\n }\n\n return (\n \n {props.backToBusinessPartnersLink}\n {props.businessPartnersHeading}\n {props.businessPartnersTable}\n {props.businessPartnerUsersTable}\n \n );\n};\n\nexport default businessPartnersView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountGenericTileViewProps } from './account-generic-tile';\n\nconst AccountGenericTileView: React.FC = props => {\n const { AccountGenericTile, heading, links } = props;\n\n return (\n \n {heading}\n {links}\n \n );\n};\n\nexport default AccountGenericTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Store Pickup option list interface.\n */\nexport interface IStorePickUpOptionListProps {\n productPickupListOptionMenuText?: string;\n productPickupModeList?: DeliveryOption[];\n defaultOptionText?: string;\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Store Pickup option state interface.\n */\nexport interface IStorePickOptionListState {\n isFilterExpanded: boolean;\n selectedPickupMode?: string;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class StorePickUpOptionList extends React.PureComponent {\n private readonly _storePickupListOptionMenu: React.RefObject;\n\n public constructor(props: IStorePickUpOptionListProps) {\n super(props);\n this._storePickupListOptionMenu = React.createRef();\n this.state = {\n isFilterExpanded: false,\n selectedPickupMode: ''\n };\n }\n\n public render(): JSX.Element {\n const { productPickupListOptionMenuText, productPickupModeList, defaultOptionText } = this.props;\n const selectedPickupModeDesc = defaultOptionText\n ? defaultOptionText\n : productPickupModeList?.find((delivery: DeliveryOption) => delivery.Code === this.state.selectedPickupMode)?.Description;\n const role = 'menu';\n return (\n
\n \n {this.state.isFilterExpanded ? (\n
    \n {productPickupModeList?.map((delivery: DeliveryOption) => {\n return (\n
  • \n \n \n {delivery.Description}\n \n \n
  • \n );\n })}\n
\n ) : null}\n
\n );\n }\n\n /**\n * Method to call when drop dwon get selected.\n */\n private readonly _rendeDeliveryOptions = () => {\n const isExpandOptionsState = this.state.isFilterExpanded;\n this.setState({\n isFilterExpanded: !isExpandOptionsState\n });\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onKeyDown = async (event: React.KeyboardEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IStoreSelectorResources } from '../store-selector.props.autogenerated';\nimport { IStoreSelectorLocationLineItemResources, StoreSelectorLocationLineItemComponent } from './store-selector-location-line-item';\n\n/**\n * Store selector location lines props interface.\n */\nexport interface IStoreSelectorLocationLinesProps {\n locations?: IFullOrgUnitAvailability[];\n resources: IStoreSelectorResources;\n preferredDistanceUnit?: string;\n\n alreadySelectedLocation?: OrgUnitLocation;\n outOfStockThreshold: number;\n enableOutOfStockCheck: boolean;\n storeLocatorView?: boolean;\n selectedStoreLocationId?: string;\n isPreferredStoreEnabled?: boolean;\n displayList?: boolean;\n isLocationDisabled?: boolean;\n productPickUpDeliveryOptions?: DeliveryOption[];\n onClick: (locationId: string | undefined) => void;\n preferredStoreLocationId: string | null;\n onSetAsPreferredStore: (locationId: string | undefined) => void;\n onRemovePreferredStore: () => void;\n filteredPickupMode?: string;\n shouldShowIndex?: boolean;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n onLocationSelected(location: OrgUnitLocation | undefined): void;\n}\n\n/**\n * Displays all the location line items, or null if none exists.\n */\n@observer\nexport class StoreSelectorLocationLines extends React.PureComponent {\n @observable private _stores: IFullOrgUnitAvailability[] | undefined;\n\n private readonly selectedLocationRef: React.RefObject;\n\n private storeCounter: number;\n\n public constructor(props: IStoreSelectorLocationLinesProps) {\n super(props);\n this.selectedLocationRef = React.createRef();\n this.storeCounter = 0;\n }\n\n public componentDidUpdate(previousProps: IStoreSelectorLocationLinesProps): void {\n if (this.props.selectedStoreLocationId !== previousProps.selectedStoreLocationId) {\n this._scrollIntoView();\n }\n }\n\n public componentDidMount(): void {\n if (this.props.locations) {\n this._stores = this._sortStores(this.props.locations);\n }\n\n reaction(\n () => this.props.locations,\n () => {\n if (this.props.locations) {\n this._stores = this._sortStores(this.props.locations);\n }\n }\n );\n }\n\n public render(): JSX.Element | null {\n if (!ArrayExtensions.hasElements(this._stores)) {\n return null;\n }\n\n this.storeCounter = 0;\n\n return (\n
\n {this._stores.map((store, index) => {\n return this._renderStoreLocation(store, index);\n })}\n
\n );\n }\n\n /**\n * On click Handler function.\n * @param orgUnitLocation -OrgUnit location.\n * @returns Click action on orgUnit Location.\n */\n private readonly onClickHandler = (orgUnitLocation: OrgUnitLocation | undefined) => () => {\n this.props.onClick(orgUnitLocation?.OrgUnitNumber);\n };\n\n private _renderStoreLocation(store: IFullOrgUnitAvailability, index: number): JSX.Element | undefined {\n const orgUnitLocation = store?.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreLocationId = this.props.selectedStoreLocationId;\n const deliveryOptions = store?.OrgUnitPickUpDeliveryModes;\n const defaultAriaSetsize = 0;\n if (orgUnitLocation) {\n ++this.storeCounter;\n return (\n \n \n \n );\n }\n return undefined;\n }\n\n /**\n * Sort store.\n * @param stores - Array of stores data.\n * @returns Sorted stores array.\n */\n private _sortStores(stores: IFullOrgUnitAvailability[]): IFullOrgUnitAvailability[] {\n /**\n * IsPreferredStore.\n * @param value - Array of stores data.\n * @returns IsPreferred store boolean value.\n */\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n this.props.isPreferredStoreEnabled &&\n this.props.preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === this.props.preferredStoreLocationId;\n\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\n }\n\n /**\n * Scroll into view.\n */\n private readonly _scrollIntoView = () => {\n const selectedLocationDiv = this.selectedLocationRef.current;\n const parent = selectedLocationDiv?.parentElement;\n if (selectedLocationDiv && parent) {\n if (parent.scrollTop > selectedLocationDiv.offsetTop) {\n parent.scrollTop = selectedLocationDiv.offsetTop;\n } else if (selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight > parent.scrollTop + parent.clientHeight) {\n parent.scrollTop = selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight - parent.clientHeight;\n }\n }\n };\n\n /**\n * Is current location.\n * @param location - Org unit location.\n * @returns The current location.\n */\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined): boolean =>\n (this.props.alreadySelectedLocation && location && this.props.alreadySelectedLocation.OrgUnitNumber === location.OrgUnitNumber) ||\n false;\n\n /**\n * Check the product is in stock or not.\n * @param itemAvailabilities - Item availabilities.\n * @returns If the product is in stock.\n */\n private readonly _isProductInStock = (itemAvailabilities: ItemAvailability[] | undefined): boolean => {\n if (!this.props.enableOutOfStockCheck) {\n return true;\n }\n\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > 0 : false;\n }\n\n return false;\n };\n\n /**\n * Get the stock inventory label.\n * @param availabilityWithHours - Full org unit availability.\n * @returns The stock label.\n */\n private readonly _stockInventoryLabel = (availabilityWithHours: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (availabilityWithHours && ArrayExtensions.hasElements(availabilityWithHours.ProductInventoryInformation)) {\n for (let i = 0; i < availabilityWithHours.ProductInventoryInformation.length; i++) {\n if (\n availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n availabilityWithHours.ProductInventoryInformation[i].InventLocationId\n ) {\n return availabilityWithHours.ProductInventoryInformation[i].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n\n /**\n * Map resources.\n * @param resources - Store resources.\n * @returns Resources.\n */\n private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n pickupDeliveryOptionErrorMessage: resources.pickupDeliveryOptionErrorMessage,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n KeyCodes,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { StorePickUpOptionList } from './store-pickup-option-list';\n\n/**\n * Store Selector Search Form Props interface.\n */\nexport interface IStoreSelectorSearchFormProps {\n resources: {\n searchInputAriaLabel: string;\n searchButtonAriaLabel: string;\n searchPlaceholderText: string;\n seeAllStoresText: string;\n viewListText: string;\n viewMapText: string;\n pickupFilterByHeading?: string;\n pickupFilterMenuHeading?: string;\n };\n\n id: string;\n value: string;\n isMapDisabled?: boolean;\n showAllStores?: boolean;\n displayList?: boolean;\n locatorView?: boolean;\n productPickUpDeliveryOptions?: DeliveryOption[];\n hasEnabledPickupFilterToShowStore?: boolean;\n filteredPickupMode?: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n onShowAllStores(): void;\n onToggleListMapViewState(): void;\n performSearch(searchTerm: string): Promise;\n searchTermChanged(searchTerm: string): Promise;\n filterPickupModeSelected(pickupMode: string): void;\n}\n\n/**\n * Simple search form consisting of search text and a search button.\n */\nexport class StoreSelectorSearchForm extends React.PureComponent {\n private readonly searchBoxRef: React.RefObject = React.createRef();\n\n private readonly storeSearchAttributes: Msdyn365.IDictionary | undefined;\n\n private readonly showAllStoreAttributes: Msdyn365.IDictionary | undefined;\n\n private readonly toggleMapViewAttributes: Msdyn365.IDictionary | undefined;\n\n private previousValue: string = '';\n\n private isSearchResultOpened: boolean = false;\n\n public constructor(props: IStoreSelectorSearchFormProps) {\n super(props);\n this.state = { value: '' };\n this._handleKeyPressPrev = this._handleKeyPressPrev.bind(this);\n const payLoad: IPayLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.SearchStore);\n this.storeSearchAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ShowAllStore;\n this.showAllStoreAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ToggleMapView;\n this.toggleMapViewAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n const {\n resources: {\n searchButtonAriaLabel,\n searchPlaceholderText,\n seeAllStoresText,\n viewListText,\n viewMapText,\n pickupFilterByHeading,\n pickupFilterMenuHeading\n },\n id,\n value,\n isMapDisabled,\n showAllStores,\n displayList,\n locatorView,\n onShowAllStores,\n productPickUpDeliveryOptions,\n hasEnabledPickupFilterToShowStore\n } = this.props;\n\n const toggleButtonText = displayList ? viewMapText : viewListText;\n\n return (\n
\n \n
\n )}\n {this.renderPickupModesList(\n this.props,\n toggleButtonText,\n productPickUpDeliveryOptions,\n pickupFilterMenuHeading,\n locatorView,\n pickupFilterByHeading,\n hasEnabledPickupFilterToShowStore,\n displayList\n )}\n \n );\n }\n\n /**\n * Handles the key press on the input box.\n * @param event - Event object.\n */\n private readonly _handleInputKeyPress = (event: React.KeyboardEvent): void => {\n // When the user navigates through the up and down arrow on the result returned by the auto suggest and press enter.\n // At that time, two requests were made to fetch the store details due to which incorrect result is shown and causes flickering.\n // In order to avoid that. Checking if the search result is open or not.\n if (event.keyCode === KeyCodes.ArrowUp || event.keyCode === KeyCodes.ArrowDown) {\n const activeDescedantValue = (event.target as HTMLInputElement).getAttribute('aria-activedescendant');\n if (activeDescedantValue) {\n if (this.previousValue === '') {\n this.previousValue = activeDescedantValue;\n this.isSearchResultOpened = true;\n return;\n }\n\n if (activeDescedantValue !== this.previousValue) {\n this.previousValue = activeDescedantValue;\n this.isSearchResultOpened = true;\n } else {\n this.isSearchResultOpened = false;\n }\n }\n }\n };\n\n /**\n * Calls method display result.\n * @param event - The first number.\n */\n private readonly _handleKeyPressPrev = (event: React.KeyboardEvent): void => {\n if (event.keyCode === KeyCodes.Enter || event.keyCode === KeyCodes.Space) {\n this.props.onShowAllStores();\n }\n };\n\n /**\n * Method called on search text changed.\n * @param event - Input value.\n */\n private readonly _searchTextChanged = async (event: React.ChangeEvent): Promise => {\n const inputValue: string = event.target.value;\n\n await this.props.searchTermChanged(inputValue);\n };\n\n /**\n * Method called on search submit.\n * @param event - Input value.\n */\n private readonly _onSubmit = async (event: React.SyntheticEvent): Promise => {\n event.preventDefault(); // Prevents form submission\n this.searchBoxRef.current?.blur();\n if (!this.isSearchResultOpened) {\n await this.props.performSearch(this.props.value);\n }\n this.isSearchResultOpened = false;\n };\n\n /**\n * Method called on product pickup option change.\n * @returns - Void.\n */\n private readonly _onChangeHandler = () => async (deliveryCode: string): Promise => {\n this.props.filterPickupModeSelected(deliveryCode);\n return Promise.resolve();\n };\n\n /**\n * Method to render pickup mode list.\n * @param props - Store selector search form props.\n * @param toggleButtonText - Locator view button text.\n * @param productPickUpDeliveryOptions - Product DeliveryOption List.\n * @param pickupFilterMenuHeading - Pickup store button text.\n * @param locatorView - Locator View is on\\off.\n * @param pickupFilterByHeading - Pickup list label text.\n * @param hasEnabledPickupFilterToShowStore - Flag to check header filter is enabled.\n * @param shouldDisplayList - Display List.\n * @returns Jsx component.\n */\n private readonly renderPickupModesList = (\n props: IStoreSelectorSearchFormProps,\n toggleButtonText: string,\n productPickUpDeliveryOptions: DeliveryOption[] | undefined,\n pickupFilterMenuHeading: string | undefined,\n locatorView: boolean | undefined,\n pickupFilterByHeading: string | undefined,\n hasEnabledPickupFilterToShowStore: boolean | undefined,\n shouldDisplayList?: boolean\n ): JSX.Element | null => {\n const toggleButtonClass = shouldDisplayList ? 'view-map' : 'list-view';\n if (hasEnabledPickupFilterToShowStore) {\n return (\n
\n {locatorView && (\n \n {toggleButtonText}\n \n )}\n \n
{pickupFilterByHeading}
\n
\n );\n }\n if (locatorView) {\n return (\n \n {toggleButtonText}\n \n );\n }\n return null;\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorResources, ITermsOfServiceLinkData } from '../store-selector.props.autogenerated';\n\nexport interface IStoreSelectorEmptyMessageProps {\n resources: IStoreSelectorResources;\n}\nexport const StoreSelectorEmptyMessage: React.FC = ({ resources }) => (\n
\n

{resources.emptyLocationsText}

\n
\n);\n\nexport const StoreSelectorWaiting: React.FC = () =>
;\n\nexport interface IStoreSelectorTermsOfServiceProps {\n link?: ITermsOfServiceLinkData;\n requestContext: Msdyn365.IRequestContext;\n onTextChange?(event: Msdyn365.ContentEditableEvent): void;\n}\n\nexport const StoreSelectorTermsOfService: React.FC = ({ link, requestContext, onTextChange }) => {\n if (link) {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-store-select__terms-link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link'\n };\n\n return (\n
\n \n
\n );\n }\n return null;\n};\n\nexport interface IStoreSelectorFoundLocationsMessage {\n resources: IStoreSelectorResources;\n locations?: IFullOrgUnitAvailability[];\n searchRadius: number;\n preferredDistanceUnit: string;\n isSeeAllStore: boolean;\n}\nexport const StoreSelectorFoundLocationsMessage: React.FC = ({\n locations,\n searchRadius,\n resources,\n isSeeAllStore,\n preferredDistanceUnit\n}) => {\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n return (\n
\n {isSeeAllStore\n ? resources.storeAllCountMessage.replace('{count}', locations.length.toString())\n : storeCountMessage.replace('{count}', locations.length.toString()).replace('{radius}', searchRadius.toString())}\n
\n );\n }\n\n return null;\n};\n","/*!\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';\n\nimport {\n ISignUpEmailVerification,\n ISignUpGivenNameVerification,\n ISignUpItem,\n ISignUpLoading,\n ISignUpLocalAccount,\n ISignUpSurnameVerification,\n ISignUpViewProps\n} from './sign-up';\n\nconst SignUpItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst SignUpEmailVerification: React.FC = ({ email, buttonWrapper, buttons, successMessage, errorMessage }) => {\n return (\n <>\n {successMessage &&\n successMessage.map((message: React.ReactNode) => {\n return <>{message};\n })}\n \n {errorMessage &&\n errorMessage.map((message: React.ReactNode) => {\n return <>{message};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode) => {\n return <>{button};\n })}\n \n \n );\n};\n\n/**\n * Handles validation of sign-up givenName.\n * @param event - Content editable event.\n * @param event.givenName - Event Given Name.\n * @param event.errorMessage - Event Error Message.\n * @returns - Error Message for Given Name.\n */\nconst SignUpGivenNameVerificationComponent: React.FC = ({ givenName, errorMessage }) => {\n return (\n <>\n \n {errorMessage.map((message: React.ReactNode) => {\n return <>{message};\n })}\n \n );\n};\n\n/**\n * Handles validation of signUp surname.\n * @param event - Content editable event.\n * @param event.surname - Event surname.\n * @param event.errorMessage - Event Error Message.\n * @returns - Error Message for surname.\n */\nconst SignUpSurnameVerificationComponent: React.FC = ({ surname, errorMessage }) => {\n return (\n <>\n \n {errorMessage.map((message: React.ReactNode) => {\n return <>{message};\n })}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n emailVerification,\n givenNameVerification,\n surnameVerification,\n buttons,\n errorMessage,\n disclaimer\n}) => {\n return (\n \n {items &&\n items.map((item: ISignUpItem) => {\n if (item.key === 'email' && emailVerification.isRequired) {\n return (\n \n \n \n \n );\n }\n if (item.key === 'givenName' && givenNameVerification.isRequired) {\n return (\n \n \n \n \n );\n }\n if (item.key === 'surname' && surnameVerification.isRequired) {\n return (\n \n \n \n \n );\n }\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n {disclaimer}\n \n );\n};\n\nconst SignUpLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst SignUpView: React.FC = props => {\n const { signUp, viewState, loading, defaultAADConainer, aadConainer, heading, signUpLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(signUpLocalAccount)}\n \n \n );\n};\n\nexport default SignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\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';\n\nimport { ICheckoutLoyaltyAdd, ICheckoutLoyaltyRewardPoint, ICheckoutLoyaltyShow, ICheckoutLoyaltyViewProps } from './checkout-loyalty';\n\nconst AddCheckoutLoyalty: React.FC = ({\n heading,\n cardNumber,\n drawer,\n rewardPoints,\n loyaltyAmountContainer,\n appliedLoyaltyAmountContainer,\n loyaltyAmountLabel,\n loyaltyAmountInput,\n loyaltyAmountApplyButton,\n showAppliedAmount,\n loyaltyAmountAppliedText,\n loyaltyAmountAppliedPrice,\n loyaltyAmountRemoveButton\n}) => {\n return (\n <>\n {heading}\n {cardNumber}\n \n {rewardPoints.map((rewardPoint: ICheckoutLoyaltyRewardPoint) => {\n return (\n \n {rewardPoint.title}\n {rewardPoint.availablePointsText}\n {rewardPoint.activePoints}\n {rewardPoint.expiringPointsText}\n {rewardPoint.expiringPoints}\n \n );\n })}\n \n \n {loyaltyAmountLabel}\n {loyaltyAmountInput}\n {loyaltyAmountApplyButton}\n {showAppliedAmount && (\n \n {loyaltyAmountAppliedText}\n {loyaltyAmountAppliedPrice}\n {loyaltyAmountRemoveButton}\n \n )}\n \n \n );\n};\n\nconst ShowCheckoutLoyalty: React.FC = ({ heading, coveredAmountText, amount }) => {\n return (\n <>\n {heading}\n {coveredAmountText}\n {amount}\n \n );\n};\n\nconst CheckoutLoyaltyView: React.FC = props => {\n const { checkoutLoyalty, checkoutErrorRef, alert, viewState, showLoyalty, addLoyalty } = props;\n\n return (\n \n {alert}\n {viewState.isShowLoyalty && }\n {viewState.isShowAddLoyalty && }\n \n );\n};\n\nexport default CheckoutLoyaltyView;\n","/*!\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';\n\nimport {\n IAccountProfileEditItem,\n IAccountProfileEditLoading,\n IAccountProfileEditLocalAccount,\n IAccountProfileEditViewProps\n} from './account-profile-edit';\n\nconst AccountProfileEditItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n {items &&\n items.map((item: IAccountProfileEditItem) => {\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n \n \n \n );\n};\n\nconst AccountProfileEditLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst AccountProfileEditView: React.FC = props => {\n const { accountProfileEdit, viewState, loading, defaultAADConainer, aadConainer, heading, accountProfileEditLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(accountProfileEditLocalAccount)}\n \n \n );\n};\n\nexport default AccountProfileEditView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ITabItemData } from './tab-item.data';\nimport { ITabItemProps } from './tab-item.props.autogenerated';\n\nexport interface ITabItemViewProps {\n TabContentContainer: IModuleProps;\n TabHeaderContainer: IModuleProps;\n tabSlots: INodeProps;\n TabItemContent: INodeProps;\n tabItemType?: TabItemType;\n tabHeader: React.ReactNode;\n}\n\nexport interface ITabItemExtentedProps extends ITabItemProps {\n tabItemType?: TabItemType;\n isSelected?: boolean;\n itemIndex?: number;\n tabId?: string;\n}\n\nexport enum TabItemType {\n TabHeader,\n TabContent\n}\n\n/**\n *\n * TabItem component.\n * @extends {React.Component}\n */\n@observer\nclass TabItem extends React.PureComponent {\n private readonly moduleContentClassName: string = 'ms-tab-item-content';\n\n private readonly moduleHeaderClassName: string = 'ms-tab-item-header';\n\n constructor(props: ITabItemProps) {\n super(props);\n this._renderTabHeader = this._renderTabHeader.bind(this);\n }\n\n public render(): JSX.Element {\n const { slots, renderView, config, data, isSelected, itemIndex } = this.props;\n const index = itemIndex || 0;\n const contentID = getContentID(index, this.props.tabId || '');\n const activeContentIDResult = data && data.activeTabState && data.activeTabState.result;\n const shown =\n activeContentIDResult &&\n activeContentIDResult.tabId === this.props.tabId &&\n activeContentIDResult.activeContentIndex !== undefined\n ? activeContentIDResult.activeContentIndex === index\n : isSelected || false;\n const viewProps = {\n ...this.props,\n TabContentContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleContentClassName, config.className)\n },\n TabHeaderContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleHeaderClassName, config.className)\n },\n TabItemContent: {\n className: 'ms-tab-item-content__content',\n tag: 'section' as NodeTag,\n 'aria-hidden': !shown,\n role: 'tabpanel',\n tabIndex: shown ? 0 : -1,\n id: contentID\n },\n tabHeader: this._renderTabHeader(),\n tabSlots: slots\n };\n return renderView(viewProps) as React.ReactElement;\n }\n\n private _renderTabHeader(): React.ReactNode {\n return <>{this.props.config.tabItemTitle};\n }\n}\n\nexport const getContentID = (index: number, id: string) => {\n return `tab-item-content-${id}-${index}`;\n};\n\nexport default TabItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nconst headerView: React.FC = props => {\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, Divider } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {_renderAccountBlock(props, false)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n {_renderCollapseMenu(props)}\n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderCollapseMenu(props: IHeaderViewProps): JSX.Element | null {\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\n return (\n \n \n {_renderReactFragment(props.search)}\n {_renderMobileAccountBlock(props, true)}\n {props.wishListIconMobile}\n {props.siteOptions}\n \n \n {_renderReactFragment(props.menuBar)}\n \n );\n}\n\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\n const customer = accountInformation && accountInformation.result;\n return <>{customer ? customer.FirstName || customer.Name : ''};\n};\n\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n 'ms-header__drawer',\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n\n if (accountLinks) {\n return (\n \n
\n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n
\n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n return null;\n}\n\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0\n ? items.map((slot: React.ReactNode, index: number) => {\n return {slot};\n })\n : null}\n \n );\n}\n\nexport default headerView;\n","/*!\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';\n\nimport { IHelp, IOrderSummary, IPaymentMethods } from '../../common';\nimport { IGroup, IGroupDelivery, IGroups } from '../../common/get-groups';\nimport { IOrderInformation } from '../../common/get-order-information';\nimport { ISalesLine } from '../../common/get-sales-line';\nimport { IOrderDetailsViewProps } from './order-details';\n\nexport const OrderDetailsOrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {channelReferenceId}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n \n);\n\nexport const OrderDetailsSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const OrderDetailsGroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const OrderDetailsGroup: React.FC = ({\n groupProps,\n delivery,\n address,\n salesLinesProps,\n salesLines,\n isCashAndCarryTransaction\n}) => (\n \n {delivery && }\n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n);\n\nexport const OrderDetailsGroups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group: IGroup, index: number) => (\n \n ))}\n \n);\n\nexport const OrderDetailsOrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const OrderDetailsPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const OrderDetailsHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n tableViewActions,\n viewModes,\n table,\n placedBy,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {placedBy}\n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n {orderSummary && }\n {payment && }\n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Interface Pickup option list.\n */\nexport interface IPickUpOptionListProps {\n pickupListOptionMenuText: string;\n pickupmodeList?: DeliveryOption[];\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Interface pickup option list state.\n */\nexport interface IPickOptionListState {\n expandSiteOptions: boolean;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class PickUpOptionList extends React.PureComponent {\n private readonly _pickupListOptionMenu: React.RefObject;\n\n private readonly _pickupListOptionButton: React.RefObject;\n\n private readonly eventsToBeBind = ['click', 'touchstart'];\n\n public constructor(props: IPickUpOptionListProps) {\n super(props);\n this._renderDeliveryOptions = this._renderDeliveryOptions.bind(this);\n this._pickupListOptionMenu = React.createRef();\n this._pickupListOptionButton = React.createRef();\n this.state = {\n expandSiteOptions: false\n };\n }\n\n public componentDidMount(): void {\n for (const event of this.eventsToBeBind) {\n window.addEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public componentWillUnmount(): void {\n for (const event of this.eventsToBeBind) {\n window.removeEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public render(): JSX.Element {\n const { pickupListOptionMenuText, pickupmodeList } = this.props;\n\n return (\n
\n \n {pickupListOptionMenuText}\n \n \n {this.state.expandSiteOptions ? (\n
    \n {pickupmodeList?.map((delivery: DeliveryOption) => {\n return (\n
  • \n \n \n {delivery.Description}\n \n \n
  • \n );\n })}\n
\n ) : null}\n
\n );\n }\n\n /**\n * Handle the document click.\n * @param event -- Event object.\n */\n private readonly handleDocumentClick = (event: Event): void => {\n const htmlElement = event.target as HTMLElement;\n if (\n !(\n (this._pickupListOptionButton.current !== null &&\n (event.target === this._pickupListOptionButton.current ||\n this._pickupListOptionButton.current.contains(htmlElement))) ||\n (this._pickupListOptionMenu.current !== null &&\n (event.target === this._pickupListOptionMenu.current || this._pickupListOptionMenu.current.contains(htmlElement)))\n )\n ) {\n this.setState({\n expandSiteOptions: false\n });\n }\n };\n\n private _renderDeliveryOptions(event: React.MouseEvent): void {\n event.stopPropagation();\n const isExpandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !isExpandSiteOptionsState\n });\n }\n\n /**\n * Select Delivery option.\n * @param event -- Event Object.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode && deliveryCode.length > 0) {\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\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';\n\nimport { ITabViewProps } from './tab';\n\nconst tabView: React.FC = props => {\n const { heading, TabContainer, tabHeaders, tabContents } = props;\n if (!props.heading && !props.tabHeaders && !props.tabContents) {\n props.context.telemetry.error('Tab content is empty, module wont render');\n return null;\n }\n return (\n \n {heading}\n {tabHeaders}\n {tabContents}\n \n );\n};\n\nexport default tabView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, OrgUnitContact, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './date-time-helpers';\n\n/**\n * Store Locator line item resources.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n\n closedText: string;\n\n outOfStock: string;\n inStock: string;\n\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n pickupDeliveryOptionErrorMessage?: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * Store Locator line item props.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n filteredPickupMode?: string;\n shouldShowIndex?: boolean;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n };\n}\n\n/**\n * Store Locator line item action component.\n */\nconst storeSelectorLocationLineItemComponentActions = {\n onLocationSelected(props: IStoreSelectorLocationLineItemProps, deliveryMode?: string): void {\n props.handlers.onSelected(props.location, deliveryMode);\n },\n onSetAsPreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onSetAsPreferredStore(props.location.OrgUnitNumber);\n },\n onRemovePreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onRemovePreferredStore();\n }\n};\n\n/**\n * Function to render store hours.\n * @param storeHours - Store Hours object.\n * @param location - Store Unit.\n * @param resources - Resources.\n * @returns - Jsx element.\n */\nconst renderStoreHours = (\n storeHours: StoreHours | undefined,\n location: OrgUnitLocation,\n resources: IStoreSelectorLocationLineItemResources\n): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day houts\n if (storeHours?.RegularStoreHours) {\n const storeHoursList: IHoursDisplayInfo[] = buildStoreHours(storeHours.RegularStoreHours, resources);\n\n return (\n
\n {storeHoursList.map(displayTime => (\n
\n {displayTime.endDayShort ? (\n
\n {displayTime.startDayShort}–\n {displayTime.endDayShort}\n
\n ) : (\n
\n {displayTime.startDayShort}\n
\n )}\n
{displayTime.timeRange}
\n
\n ))}\n
\n );\n }\n\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n const storeOpenFrom: string | undefined = secondsToTime(location.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(location.OpenTo);\n\n return (\n
\n {storeOpenFrom}-{storeOpenTo}\n
\n );\n};\n\n/**\n * Function to return distance measure unit.\n * @param distance - Store location within radius.\n * @param preferredDistanceUnit - Unit configuration.\n * @param isLocationDisabled - Flag to check user location.\n * @returns - Unit of distance.\n */\nexport const buildDistanceString = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n isLocationDisabled?: boolean\n): string | undefined => {\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < 1) {\n return `(<1 ${preferredDistanceUnit})`;\n }\n return `(${Math.floor(distance)} ${preferredDistanceUnit})`;\n};\n\n/**\n * Function to store contact.\n * @param contacts - Store location within radius.\n * @returns - Return primary contact number of store.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === 1 && !contact.IsPrivate);\n\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n if (primaryPhoneContact) {\n return primaryPhoneContact.Locator;\n }\n\n return allPhoneContacts[0].Locator;\n }\n\n return undefined;\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: IStoreSelectorLocationLineItemProps, pickupMode?: string) => () => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, pickupMode);\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onSetAsPreferredStore(props);\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onRemovePreferredStore(props);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: IStoreSelectorLocationLineItemProps) => async (deliveryCode: string): Promise => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, deliveryCode);\n return Promise.resolve();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (\n props: IStoreSelectorLocationLineItemProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Method to check if we have atleast one common delivery code between product and channel.\n * @param productdeliveryOptions - Product DeliveryOption List.\n * @param storePickUpOptionList - Channel DeliveryOption List.\n * @returns DeliveryOptionList.\n */\nexport const matchDeliveryOptions = (\n productdeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n const deliveryOption: DeliveryOption[] = [];\n productdeliveryOptions?.map(delivery => {\n const pickup = storePickUpOptionList?.find(_delivery => _delivery.Code === delivery.Code);\n if (pickup) {\n deliveryOption.push(pickup);\n }\n });\n\n return deliveryOption;\n};\n\n/**\n * Renders store location line items.\n * @param props - Store location line items props.\n * @returns - HTML.\n */\nconst storeSelectorLocationLineItem: React.FC = (props: IStoreSelectorLocationLineItemProps) => {\n const {\n hideStockStatus,\n isCurrentLocation,\n isInStock,\n location,\n resources,\n storeHours,\n stockStatusLabel,\n storeLocatorView,\n index,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n shouldShowIndex\n } = props;\n\n const storeName: string | undefined = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(location.Distance, props.preferredDistanceUnit, isLocationDisabled);\n const storeAddress: string | undefined = location.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n const stockText: string | undefined = hideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n const canSelectLocation = hideStockStatus || isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName || '');\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const [isError, setError] = React.useState(false);\n\n const pickUpButtonClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n if (deliveryOptionList.length === 0) {\n setError(true);\n } else {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props);\n }\n };\n\n /* eslint-disable prettier/prettier */\n return (\n
\n
\n {(shouldShowIndex || storeLocatorView) && {index}}\n {storeName}\n {distanceAsString ? \n {' '}\n {distanceAsString}\n : false}\n
\n
\n
\n

{resources.contactInfoHeader}

\n {storeAddress && (\n
\n \n {storeAddress}\n
\n )}\n {phoneNumber && (\n
\n \n {phoneNumber}\n
\n )}\n
\n
\n

{resources.storeHoursHeader}

\n {renderStoreHours(storeHours, location, resources)}\n
\n {!storeLocatorView && (\n
\n {!hideStockStatus &&

{resources.availabilityInfoHeader}

}\n {stockText &&

{stockText}

}\n {isCurrentLocation ? (\n

{resources.currentLocation}

\n ) : canSelectLocation ? (\n deliveryOptionList.length === 0 ? (\n \n {pickupInStoreButtonText}\n \n ) : (\n renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel)\n )\n ) : (\n false\n )}\n
\n )}\n {isPreferredStoreEnabled ? (\n isPreferredStore ? (\n \n {resources.preferredStoreText}\n \n ) : (\n \n {resources.setAsPreferredStoreText}\n \n )\n ) : null}\n
\n {isError ? (\n \n \n ) : ('')}\n
\n );\n};\n\n/**\n * Store location line item component.\n */\nexport const StoreSelectorLocationLineItemComponent = storeSelectorLocationLineItem as (\n props: IStoreSelectorLocationLineItemProps\n) => JSX.Element;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IProductSpecificationViewProps } from '@msdyn365-commerce-modules/product-specification/src/modules/product-specification/./product-specification';\r\n\r\nconst ProductSpecificationView: React.FC = props => {\r\n\tconst { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps, productSpecificationResult } = props;\r\n\tconst rowdata =\r\n\t\tproductSpecificationResult &&\r\n\t\tArrayExtensions.hasElements(productSpecificationResult) &&\r\n\t\tproductSpecificationResult.filter(row => !ObjectExtensions.isNullOrUndefined(row) && row.props.cellData.props.dangerouslySetInnerHTML);\r\n\treturn rowdata && ArrayExtensions.hasElements(rowdata) ? (\r\n\t\t\r\n\t\t\t{props.title}\r\n\t\t\t\r\n\t\t\t\t{rowdata}\r\n\t\t\t\r\n\t\t\r\n\t) : null;\r\n};\r\n\r\nexport default ProductSpecificationView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { RichTextComponent } from '@msdyn365-commerce/core';\nimport {\n ContactInformationType,\n DeliveryOption,\n IDictionary,\n OrgUnitContact,\n OrgUnitLocation,\n StoreHours\n} from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n buildStoreHours,\n IHoursDisplayInfo,\n ILocationHours,\n IStoreSelectorFoundLocationsMessage,\n IStoreSelectorLocationLineItemProps,\n IStoreSelectorLocationLineItemResources,\n IStoreSelectorViewProps,\n secondsToTime\n} from '@msdyn365-commerce-modules/store-selector';\nimport { ISelectedStoreViewProps } from '@msdyn365-commerce-modules/store-selector/src/modules/store-selector/components/selected-store/selected-store';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n isMobile,\n Module,\n Node,\n TelemetryConstant,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorProps, IStoreSelectorResources } from '../definition-extensions/store-selector.ext.props.autogenerated';\n\n/**\n * PickUpMethodComponent View Props Interface.\n */\nexport interface IPickupComponent extends IStoreSelectorLocationLineItemProps {\n pickUpStatesProps: IStoreSelectorViewProps;\n}\n\nexport interface IPickUpButtonComponent {\n attributes: IDictionary | undefined;\n onPickupInStoreClickHandler?(): void;\n}\n\n/**\n * Found Locations Message component in Store Selector.\n * @param props - The component props.\n * @returns The JSX Element.\n */\nconst StoreSelectorFoundLocationsMessageComponent: React.FC = props => {\n const { locations, searchRadius, resources, isSeeAllStore, preferredDistanceUnit } = props;\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n\n return (\n ${locations.length.toString()}`\n )\n : storeCountMessage\n .replace(\n '{count}',\n `${locations.length.toString()}`\n )\n .replace(\n '{radius}',\n `${searchRadius.toString()}`\n )\n }\n />\n );\n }\n\n return null;\n};\n\n/**\n * Build distance string.\n * @param distance - The distance.\n * @param preferredDistanceUnit - The preferred distance unit.\n * @param resources - The module resources.\n * @param isLocationDisabled - True if location is disabled.\n * @returns The distance string.\n */\nconst buildDistanceString = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n resources: IStoreSelectorResources & IStoreSelectorResources,\n isLocationDisabled?: boolean\n): string | undefined => {\n const closeDistance: number = 1;\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < closeDistance) {\n const closeDistanceString: string = resources.closeDistanceString;\n return closeDistanceString.replace('{preferredDistanceUnit}', preferredDistanceUnit);\n }\n const distanceAsString: string = resources.distanceString;\n return distanceAsString\n .replace('{preferredDistanceUnit}', preferredDistanceUnit)\n .replace('{distance}', Math.floor(distance).toString());\n};\n\n/**\n * Extract phone number.\n * @param contacts - Contacts array.\n * @returns Phone number.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === ContactInformationType.Phone && !contact.IsPrivate);\n\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n if (primaryPhoneContact) {\n return primaryPhoneContact.Locator;\n }\n\n return allPhoneContacts[0].Locator;\n }\n\n return undefined;\n};\n\n/**\n * Render Store Hours Day.\n * @param displayTime - Store Hours Information.\n * @param storeHoursDayPeriodString - The string for store hours day period.\n * @param storeHoursDayString - The string for store hours day period.\n * @returns JSX element with store hours day.\n */\nconst buildStoreHoursDay = (displayTime: IHoursDisplayInfo, storeHoursDayPeriodString: string, storeHoursDayString: string) => {\n return (\n ${displayTime.startDayShort}`)\n .replace(\n '{endDay}',\n `${displayTime.endDayShort}`\n )\n : storeHoursDayString.replace(\n '{startDay}',\n `${displayTime.startDayShort}`\n )\n }\n />\n );\n};\n\n/**\n * Render Store Hours.\n * @param storeHours - Store hours.\n * @param storeHoursList - Store hours list.\n * @param locationOpen - Location open.\n * @param resources - The module resources.\n * @returns JSX element with store hours.\n */\nconst renderStoreHours = (\n storeHours: StoreHours | undefined,\n storeHoursList: IHoursDisplayInfo[] | undefined,\n locationOpen: ILocationHours | undefined,\n resources: IStoreSelectorResources & IStoreSelectorResources\n): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day hours\n if (storeHours?.RegularStoreHours) {\n return (\n
\n {storeHoursList?.map(displayTime => (\n
\n {buildStoreHoursDay(displayTime, resources.storeHoursDayPeriod, resources.storeHoursDay)}\n
{displayTime.timeRange}
\n
\n ))}\n
\n );\n }\n\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n const storeOpenFrom: string = locationOpen?.openFrom ? locationOpen.openFrom : '';\n const storeOpenTo: string = locationOpen?.openTo ? locationOpen.openTo : '';\n return (\n
\n {resources.storeHoursDayPeriod.replace('{startDay}', storeOpenFrom).replace('{endDay}', storeOpenTo)}\n
\n );\n};\n\n/**\n * Match delivery options.\n * @param productDeliveryOptions - The list of product delivery options.\n * @param storePickUpOptionList - The list of store pick up options.\n * @returns Matched delivery option.\n */\nconst matchDeliveryOptions = (\n productDeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n if (!productDeliveryOptions) {\n return [] as DeliveryOption[];\n }\n return productDeliveryOptions\n .map(productDeliveryOption => storePickUpOptionList?.find(delivery => delivery.Code === productDeliveryOption.Code))\n .filter(productDeliveryOption => productDeliveryOption) as DeliveryOption[];\n};\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpButtonResources {\n pickupInStoreAriaLabel: string;\n pickupInStoreButtonText: string;\n pickupDeliveryOptionErrorMessage: string;\n}\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpMethodResources {\n selectStoreText: string;\n pickUpMethodLabel: string;\n pickUpOptionPlaceholder: string;\n pickupOptionDropdownError: string;\n pickupButtonAriaLabel: string;\n}\n\n/**\n * PickUp method dropdown component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpMethodDropdownComponent = (props: IPickupComponent & IPickUpMethodResources) => {\n const {\n handlers,\n location,\n pickUpStatesProps,\n selectStoreText,\n pickUpMethodLabel,\n pickUpOptionPlaceholder,\n pickupOptionDropdownError,\n pickupButtonAriaLabel,\n productPickUpOptionList,\n storePickUpOptionList\n } = props;\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const [selectedStorePickUpOption, selectStorePickUpOption] = React.useState('');\n const [currentStorePickUpOption, setCurrentStorePickUpOption] = React.useState(pickUpOptionPlaceholder);\n const [isDropdownOpen, toggleDropdown] = React.useState(false);\n const [isError, setError] = React.useState(false);\n\n /**\n * Method to handle the store pickup option change.\n * @param event - Change Event.\n */\n const onChangeHandler = React.useCallback((event: React.MouseEvent) => {\n event.preventDefault();\n selectStorePickUpOption(event.currentTarget.value);\n setCurrentStorePickUpOption(event.currentTarget.dataset.description ? event.currentTarget.dataset.description : '');\n toggleDropdown(false);\n setError(false);\n }, []);\n\n /**\n * Method to render store location line pick up button.\n * @param filteredDeliveryMode - Filtered Delivery Mode.\n * @returns JSX Element.\n */\n const renderLocationLinePickupButton = (filteredDeliveryMode: DeliveryOption | undefined) => {\n return filteredDeliveryMode !== undefined ? (\n
\n \n {filteredDeliveryMode.Description}\n \n
\n ) : null;\n };\n\n /**\n * Method to handle the store pickup option submit.\n */\n const onClickHandler = React.useCallback(() => {\n if (!StringExtensions.isNullOrEmpty(selectedStorePickUpOption)) {\n handlers.onSelected(location, selectedStorePickUpOption);\n } else if (pickUpStatesProps.state.filteredPickupMode !== undefined) {\n handlers.onSelected(location, pickUpStatesProps.state.filteredPickupMode);\n } else {\n toggleDropdown(false);\n setError(true);\n }\n }, [location, selectedStorePickUpOption, handlers, pickUpStatesProps.state.filteredPickupMode]);\n\n const handleDropdownToggle = React.useCallback(() => {\n toggleDropdown(!isDropdownOpen);\n setError(false);\n }, [isDropdownOpen]);\n\n const filterDeliveryOption = deliveryOptionList.find(\n (delivery: DeliveryOption) => delivery.Code === pickUpStatesProps.state.filteredPickupMode\n );\n\n const pickupInStoreButtonText: string = selectStoreText;\n const filteredDeliveryMode: DeliveryOption | undefined =\n pickUpStatesProps.state.filteredPickupMode !== undefined ? filterDeliveryOption : undefined;\n\n return (\n \n
{pickUpMethodLabel}
\n {pickUpStatesProps.state.filteredPickupMode === undefined ? (\n
\n \n {currentStorePickUpOption}\n \n
    \n {deliveryOptionList.map((delivery: DeliveryOption) => (\n \n \n {delivery.Description}\n \n \n ))}\n
\n
{pickupOptionDropdownError}
\n
\n ) : (\n renderLocationLinePickupButton(filteredDeliveryMode)\n )}\n \n
\n );\n};\n\n/**\n * PickUp button component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpButtonComponent = (props: IPickUpButtonComponent & IPickUpButtonResources) => {\n const { pickupInStoreAriaLabel, pickupInStoreButtonText, pickupDeliveryOptionErrorMessage, attributes } = props;\n const [isError, setError] = React.useState(false);\n const onPickupButtonClickHandler = () => () => {\n setError(true);\n };\n\n return (\n <>\n \n {pickupInStoreButtonText}\n \n
\n {pickupDeliveryOptionErrorMessage}\n
\n \n );\n};\n\n/**\n * Method to render store location line item.\n * @param locationLineItem - The Location Line item view props.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst renderStoreLocationLineItem = (\n locationLineItem: IStoreSelectorLocationLineItemProps,\n props: IStoreSelectorViewProps & IStoreSelectorProps\n) => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n hideStockStatus,\n index,\n isInStock,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n location,\n resources,\n storeHours,\n storeHoursList,\n stockStatusLabel,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n storeLocatorView,\n telemetryContent\n } = locationLineItem;\n const storeName = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(\n location.Distance,\n locationLineItem.preferredDistanceUnit,\n props.resources,\n locationLineItem.isLocationDisabled\n );\n const storeAddress: string | undefined = location.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockStatus = stockStatusLabel ? stockStatusLabel : resourceLabel;\n const stockText: string | undefined = hideStockStatus ? undefined : stockStatus;\n\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n\n /**\n * Method to handle the change for preferred store.\n * @returns Void.\n */\n const onSetPreferredStoreClickHandler = () => {\n locationLineItem.handlers.onSetAsPreferredStore(locationLineItem.location.OrgUnitNumber);\n };\n\n /**\n * Method to handle the removal of the preferred store.\n * @returns Void.\n */\n const onRemovePreferredStoreClickHandler = async (event: React.MouseEvent) => {\n event.stopPropagation();\n locationLineItem.handlers.onRemovePreferredStore();\n await props.data.storeSelectorStateManager.result?.setSelectedStoreLocationId(undefined);\n };\n\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n
\n
\n {storeLocatorView && {index}}\n {storeName}\n {distanceAsString ? {distanceAsString} : false}\n
\n
\n
\n

{locationLineItem.resources.contactInfoHeader}

\n {storeAddress && (\n
\n
\n )}\n {phoneNumber && (\n
\n \n {phoneNumber}\n
\n )}\n
\n
\n

{locationLineItem.resources.storeHoursHeader}

\n {renderStoreHours(storeHours, storeHoursList, locationLineItem.locationOpen, props.resources)}\n
\n {!storeLocatorView && !hideStockStatus && (\n
\n

{resources.availabilityInfoHeader}

\n {stockText &&

{stockText}

}\n
\n )}\n {isPreferredStoreEnabled &&\n (isPreferredStore ? (\n \n {resources.preferredStoreText}\n \n ) : (\n \n {resources.setAsPreferredStoreText}\n \n ))}\n
\n
\n );\n};\n\n/**\n * Render Store Location.\n * @param location - The location props.\n * @param index - The location index.\n * @param props - The view props.\n * @param selectedLocationReference - The ref.\n * @returns The JSX Element.\n */\nconst renderStoreLocation = (\n location: IStoreSelectorLocationLineItemProps,\n index: number,\n props: IStoreSelectorViewProps & IStoreSelectorProps,\n selectedLocationReference: React.RefObject\n): JSX.Element | undefined => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n hideStockStatus,\n storeLocatorView,\n isCurrentLocation,\n isInStock,\n productPickUpOptionList,\n resources,\n storePickUpOptionList,\n telemetryContent\n } = location;\n\n const orgUnitLocation = location.location;\n const selectedStoreLocationId = location.selectedStoreLocationId;\n const defaultAriaSetsize = 0;\n const canSelectLocation = hideStockStatus ?? isInStock;\n const storeName = location.location.OrgUnitName;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName ?? '');\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickUpOptionDropdownPlaceholderText: string = props.resources.pickupOptionDropdownPlaceholderText;\n\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const selectStoreText = props.resources.selectStoreText;\n const pickUpMethodLabel = props.resources.pickUpMethodLabel;\n\n /**\n * Method to handle the pick up in store.\n * @returns Void.\n */\n const onPickupInStoreClickHandler = () => () => {\n location.handlers.onSelected(location.location);\n };\n\n /**\n * Render Store Locations.\n * @param unitLocation - The org unit location.\n * @returns Handler for onClick.\n */\n const onClickHandler = (unitLocation: OrgUnitLocation | undefined) => () => {\n location.onClick(unitLocation?.OrgUnitNumber);\n };\n\n const canSelectPickUpMethod = !ArrayExtensions.hasElements(deliveryOptionList) ? (\n \n ) : (\n \n );\n const pickUpMethodSelection = canSelectLocation ? canSelectPickUpMethod : false;\n\n return (\n \n \n {renderStoreLocationLineItem(location, props)}\n \n {!storeLocatorView &&\n (isCurrentLocation ? (\n

{resources.currentLocation}

\n ) : (\n pickUpMethodSelection\n ))}\n \n );\n};\n\n/**\n * Render Store Locations.\n * @param props - The view props.\n * @param selectedLocationReference - The ref.\n * @returns The JSX Element.\n */\nconst renderStoreLocations = (\n props: IStoreSelectorViewProps & IStoreSelectorProps,\n selectedLocationReference: React.RefObject\n) => {\n return (\n \n {props.locationListProps?.map((store, index) => {\n return renderStoreLocation(store, index, props, selectedLocationReference);\n })}\n \n );\n};\n\n/**\n * Method to map resources with Location Item.\n * @param resources - List of strings for module.\n * @returns Resources for StoreSelector location line.\n */\nconst mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n};\n\n/**\n * Render the selected store.\n * @param selectedLocationProps -- Selected store view props.\n * @param storeSelectorViewProps -- Store selector view props.\n * @returns -- HTML.\n */\nexport const renderSelectedStore = (\n selectedLocationProps: ISelectedStoreViewProps,\n storeSelectorViewProps: IStoreSelectorViewProps & IStoreSelectorProps\n): JSX.Element => {\n const {\n storeDetailsMain,\n storeHeader,\n storeName,\n storeDetailsCloseButton,\n storeDistance,\n storeDetailsAvailabilityContainer,\n productAvailability,\n stockStatus,\n isPreferredStore,\n preferredStoreButton,\n removePreferredStoreButton,\n selectedStore\n } = selectedLocationProps;\n\n const storeAddress: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.Contacts);\n const storeHoursList = selectedStore?.StoreHours?.RegularStoreHours\n ? buildStoreHours(selectedStore.StoreHours.RegularStoreHours, mapResources(storeSelectorViewProps.resources))\n : [];\n const storeOpenFrom: string | undefined = secondsToTime(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OpenTo);\n const locationOpen = { openFrom: storeOpenFrom, openTo: storeOpenTo };\n const storeNameValue = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\n const pickupInStoreAriaLabel: string = selectedLocationProps.resources.selectLocationAriaLabelFormat.replace(\n '{StoreName}',\n storeNameValue ?? ''\n );\n const telemetryContent = getTelemetryObject(\n storeSelectorViewProps.context.request.telemetryPageName!,\n storeSelectorViewProps.friendlyName,\n storeSelectorViewProps.telemetry\n );\n const payLoad = getPayloadObject('click', telemetryContent, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\n const pickupInStoreButtonText: string = selectedLocationProps.resources.selectLocation;\n const selectStoreText = storeSelectorViewProps.resources.selectStoreText;\n const pickUpMethodLabel = storeSelectorViewProps.resources.pickUpMethodLabel;\n const pickUpOptionDropdownPlaceholderText: string = storeSelectorViewProps.resources.pickupOptionDropdownPlaceholderText;\n const orgUnitNumber = selectedStore?.OrgUnitAvailability?.OrgUnitLocation!.OrgUnitNumber;\n const productPickUpOptionList = storeSelectorViewProps.data.storeSelectorStateManager.result?.context?.deliveryOptions?.DeliveryOptions;\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, selectedLocationProps.deliveryOptions);\n const selectedLocation = storeSelectorViewProps.locationListProps?.find(location => location.location.OrgUnitNumber === orgUnitNumber);\n\n /**\n * Method to handle the pick up in store.\n * @returns Void.\n */\n const onPickupInStoreClickHandler = () => () => {\n selectedLocationProps.handlers.onSelected(selectedStore!.OrgUnitAvailability!.OrgUnitLocation!);\n };\n const canSelectPickUpMethod = !ArrayExtensions.hasElements(deliveryOptionList) ? (\n \n ) : (\n selectedLocation && (\n \n )\n );\n\n return (\n \n \n {storeDetailsCloseButton}\n {storeName}\n {storeDistance}\n \n \n
\n

{storeSelectorViewProps.resources.contactText}

\n {storeAddress && (\n
\n
\n )}\n {phoneNumber && (\n
\n \n {phoneNumber}\n
\n )}\n
\n
\n

{storeSelectorViewProps.resources.timeText}

\n {renderStoreHours(selectedStore?.StoreHours, storeHoursList, locationOpen, storeSelectorViewProps.resources)}\n
\n {productAvailability && (\n
\n

{productAvailability}

\n {stockStatus &&

{stockStatus}

}\n
\n )}\n
\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n {canSelectPickUpMethod}\n
\n );\n};\n\n/**\n * Store Selector View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst StoreSelectorViewComponent: React.FC> = props => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Store-Selector.tsx file\n const {\n BodyContainerProps,\n storeResultContainerProps,\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n locationsMessage,\n search,\n state,\n spinner,\n maps,\n locationsList,\n noLocationsMessage,\n terms,\n storeDetailsModal,\n selectedLocation,\n bodyWrapperProps,\n data,\n context\n } = props;\n const selectedLocationReference = React.useRef(null);\n const [isDesktopPort, setIsDesktopPort] = React.useState(false);\n\n const isDesktopViewport = React.useCallback(() => {\n const portView = isMobile({ variant: VariantType.Browser, context: context.request });\n const isDesktopPorts = portView === 'md' || portView === 'xl' || portView === 'lg';\n setIsDesktopPort(isDesktopPorts);\n }, [context]);\n\n React.useEffect(() => {\n if (props.locationsList) {\n /**\n * Method to handle scrolling.\n */\n const scrollIntoView = () => {\n const selectedLocationDiv = (selectedLocationReference as React.RefObject).current;\n if (selectedLocationDiv !== null) {\n const offset = selectedLocationDiv.getBoundingClientRect();\n const parent = selectedLocationDiv.parentElement?.parentElement;\n if (parent && offset) {\n const totalHeight = parent.scrollTop + offset.top;\n parent.scrollTop = totalHeight - parent.clientHeight;\n }\n }\n };\n scrollIntoView();\n }\n }, [props.locationsList]);\n\n React.useEffect(() => {\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', isDesktopViewport);\n }\n isDesktopViewport();\n }, [isDesktopViewport]);\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\n\n const isDesktopView = viewport === 'md' || viewport === 'lg' || viewport === 'xl';\n\n if (!isDesktopView || !isDesktopPort) {\n return (\n \n {HeaderProps}\n \n \n {locationsMessage && (\n \n )}\n {search}\n \n \n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n )}\n \n {maps}\n \n {selectedLocation && renderSelectedStore(selectedLocation, props)}\n \n \n \n \n {terms}\n \n );\n }\n return (\n \n {HeaderProps}\n \n \n {locationsMessage && (\n \n )}\n {search}\n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n )}\n \n \n {maps}\n \n \n {terms}\n \n );\n};\n\nexport default StoreSelectorViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICookieComplianceViewProps } from './cookie-compliance';\n\nconst CookieComplianceView: React.FC = props => {\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\n\n return (\n \n \n \n {text}\n {links}\n \n {acceptButton}\n \n \n );\n};\nexport default CookieComplianceView;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IProductSpecificationViewProps } from '@msdyn365-commerce-modules/product-specification/src/modules/product-specification/./product-specification';\r\n\r\nconst ProductSpecificationView: React.FC = props => {\r\n\tconst { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps, productSpecificationResult } = props;\r\n\tconst rowdata =\r\n\t\tproductSpecificationResult &&\r\n\t\tArrayExtensions.hasElements(productSpecificationResult) &&\r\n\t\tproductSpecificationResult.filter(row => !ObjectExtensions.isNullOrUndefined(row) && row.props.cellData.props.dangerouslySetInnerHTML);\r\n\treturn rowdata && ArrayExtensions.hasElements(rowdata) ? (\r\n\t\t\r\n\t\t\t{props.title}\r\n\t\t\t\r\n\t\t\t\t{rowdata}\r\n\t\t\t\r\n\t\t\r\n\t) : null;\r\n};\r\n\r\nexport default ProductSpecificationView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IB2bRequestsTileViewProps } from './b2b-requests-tile';\n\nconst B2bRequestsTileView: React.FC = props => {\n const { b2bRequestsTile, heading, links } = props;\n\n return (\n \n {heading}\n {links}\n \n );\n};\n\nexport default B2bRequestsTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountWelcomeTileViewProps } from './account-welcome-tile';\n\nconst AccountWelcomeTileView: React.FC = props => {\n const { AccountWelcomeTile, heading } = props;\n\n return {heading};\n};\n\nexport default AccountWelcomeTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { 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","/*!\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';\n\nimport { ILoyaltyTermsViewProps } from './loyalty-terms';\n\nconst LoyaltyTermsView: React.FC = props => {\n const { LoyaltyTerms, modalToggle, modal, loading } = props;\n\n return !loading && modal ? (\n \n {modalToggle}\n \n {modal.heading}\n \n {modal.terms}\n \n {modal.checkbox}\n {modal.agreeText}\n \n \n \n {modal.submitButton}\n {modal.cancelButton}\n \n \n \n ) : null;\n};\n\nexport default LoyaltyTermsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RegularStoreHours } from '@msdyn365-commerce/retail-proxy';\nimport get from 'lodash/get';\n\nimport { IStoreSelectorLocationLineItemResources } from '.';\n\nexport interface IHoursDisplayInfo {\n startDayShort: string;\n startDayFull: string;\n endDayShort?: string;\n endDayFull?: string;\n timeRange: string;\n}\n\ninterface IHoursInfo {\n isClosed: boolean;\n openTime?: number;\n closeTime?: number;\n}\n\ntype DayType = 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT' | 'SUN';\n\nexport const secondsToTime = (seconds: number | undefined): string | undefined => {\n if (seconds === undefined) {\n return undefined;\n }\n let hours = Math.floor(seconds / (60 * 60));\n const ampm = hours >= 12 ? 'pm' : 'am';\n hours %= 12;\n hours = hours ? hours : 12;\n const divisorForMinutes = seconds % (60 * 60);\n const minutes = Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\n return `${hours}:${minutes} ${ampm}`;\n};\n\nconst getShortTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.monday;\n case 'TUE':\n return resources.days.tuesday;\n case 'WED':\n return resources.days.wednesday;\n case 'THU':\n return resources.days.thursday;\n case 'FRI':\n return resources.days.friday;\n case 'SAT':\n return resources.days.saturday;\n default:\n // Case 'SUN':\n return resources.days.sunday;\n }\n};\n\nconst getFullTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.mondayFull;\n case 'TUE':\n return resources.days.tuesdayFull;\n case 'WED':\n return resources.days.wednesdayFull;\n case 'THU':\n return resources.days.thursdayFull;\n case 'FRI':\n return resources.days.fridayFull;\n case 'SAT':\n return resources.days.saturdayFull;\n default:\n // Case 'SUN':\n return resources.days.sundayFull;\n }\n};\n\nconst buildHoursDisplayInfo = (\n startDay: DayType,\n endDay: DayType,\n hoursInfo: string,\n resources: IStoreSelectorLocationLineItemResources\n): IHoursDisplayInfo => {\n return {\n startDayShort: getShortTimeString(startDay, resources),\n startDayFull: getFullTimeString(startDay, resources),\n endDayShort: startDay !== endDay ? getShortTimeString(endDay, resources) : undefined,\n endDayFull: startDay !== endDay ? getFullTimeString(endDay, resources) : undefined,\n timeRange: hoursInfo\n };\n};\n\nconst shouldMergeLines = (firstLine: IHoursInfo, secondLine: IHoursInfo): boolean => {\n if (firstLine.isClosed && secondLine.isClosed) {\n return true;\n }\n\n if (!firstLine.isClosed && !secondLine.isClosed) {\n return firstLine.openTime === secondLine.openTime && firstLine.closeTime === secondLine.closeTime;\n }\n\n return false;\n};\n\nconst getStoreHoursData = (storeHours: RegularStoreHours, dateForLookup: string): IHoursInfo => {\n return {\n isClosed: get(storeHours, `IsClosedOn${dateForLookup}`, false),\n openTime: get(storeHours, `${dateForLookup}OpenTime`, undefined),\n closeTime: get(storeHours, `${dateForLookup}CloseTime`, undefined)\n };\n};\n\nconst buildStoreHoursString = (hoursInfo: IHoursInfo, resources: IStoreSelectorLocationLineItemResources): string => {\n if (hoursInfo.isClosed) {\n return resources.closedText;\n }\n const openFrom: string | undefined = secondsToTime(hoursInfo.openTime);\n const openTo: string | undefined = secondsToTime(hoursInfo.closeTime);\n\n return `${openFrom}–${openTo}`;\n};\n\nexport const buildStoreHours = (storeHours: RegularStoreHours, resources: IStoreSelectorLocationLineItemResources): IHoursDisplayInfo[] => {\n const storeHoursList: IHoursDisplayInfo[] = [];\n\n const mondayHours = getStoreHoursData(storeHours, 'Monday');\n const tuesdayHours = getStoreHoursData(storeHours, 'Tuesday');\n const wednesdayHours = getStoreHoursData(storeHours, 'Wednesday');\n const thursdayHours = getStoreHoursData(storeHours, 'Thursday');\n const fridayHours = getStoreHoursData(storeHours, 'Friday');\n const saturdayHours = getStoreHoursData(storeHours, 'Saturday');\n const sundayHours = getStoreHoursData(storeHours, 'Sunday');\n\n let periodStart: DayType = 'MON';\n let periodEnd: DayType = 'MON';\n\n if (!shouldMergeLines(mondayHours, tuesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(mondayHours, resources), resources));\n\n periodStart = 'TUE';\n }\n periodEnd = 'TUE';\n\n if (!shouldMergeLines(tuesdayHours, wednesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(tuesdayHours, resources), resources));\n\n periodStart = 'WED';\n }\n periodEnd = 'WED';\n\n if (!shouldMergeLines(wednesdayHours, thursdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(wednesdayHours, resources), resources));\n\n periodStart = 'THU';\n }\n periodEnd = 'THU';\n\n if (!shouldMergeLines(thursdayHours, fridayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(thursdayHours, resources), resources));\n\n periodStart = 'FRI';\n }\n periodEnd = 'FRI';\n\n if (!shouldMergeLines(fridayHours, saturdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(fridayHours, resources), resources));\n\n periodStart = 'SAT';\n }\n periodEnd = 'SAT';\n\n if (!shouldMergeLines(saturdayHours, sundayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(saturdayHours, resources), resources));\n\n periodStart = 'SUN';\n }\n periodEnd = 'SUN';\n\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(sundayHours, resources), resources));\n\n return storeHoursList;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { ICheckoutApplePayViewProps } from './checkout-apple-pay';\n\nconst CheckoutApplePayView: React.FC = props => {\n const { checkoutApplePay, applePayButton, alert } = props;\n\n return (\n \n {alert}\n {applePayButton}\n \n );\n};\n\nexport default CheckoutApplePayView;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport MsDyn365, { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getPayloadObject, getTelemetryAttributes, getTelemetryObject, IPayLoad, ITelemetryContent, Module, Node, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { INavigationMenuViewProps } from './navigation-menu';\r\nimport { IMenuItemData } from './navigation-menu.data';\r\n\r\ninterface INavigationState {\r\n\tparentMenu?: number;\r\n\tactiveMenu?: number;\r\n\tcategoryImage?: IImageData[] | null;\r\n\tmobileViewLabelText?: string;\r\n\tcategoryImageAltText: string;\r\n}\r\n\r\n/**\r\n * NavigationMenuView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuView extends React.PureComponent {\r\n\tprivate static isBackTrack: boolean = false;\r\n\tprivate currentLevel: number = 1;\r\n\tprivate readonly sm_text_count = 30;\r\n\tprivate readonly menuNode: React.RefObject;\r\n\tprivate readonly menuItemRef: React.RefObject;\r\n\tprivate readonly telemetryContent: ITelemetryContent;\r\n\tprivate readonly payLoad: IPayLoad;\r\n\r\n\tconstructor(props: INavigationMenuViewProps) {\r\n\t\tsuper(props);\r\n\t\tthis.menuNode = React.createRef();\r\n\t\tthis.menuItemRef = React.createRef();\r\n\t\tthis.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined, categoryImageAltText: '' };\r\n\t\tthis._closeSubmenu = this._closeSubmenu.bind(this);\r\n\t\tthis.telemetryContent = getTelemetryObject(\r\n\t\t\tthis.props.context.request.telemetryPageName!,\r\n\t\t\tthis.props.friendlyName,\r\n\t\t\tthis.props.telemetry\r\n\t\t);\r\n\t\tthis.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n\t}\r\n\r\n\tpublic componentDidMount(): void {\r\n\t\tif (MsDyn365.isBrowser) {\r\n\t\t\tdocument.body.addEventListener('mousedown', this._handleClickOutside);\r\n\t\t\tdocument.body.addEventListener('focusout', this._handleFocusOutside);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic componentDidUpdate(): void {\r\n\t\tif (this.menuItemRef.current?.children[0] && this.props.isMobileView) {\r\n\t\t\t(this.menuItemRef.current.children[0] as HTMLElement).focus();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic componentWillUnmount(): void {\r\n\t\tif (MsDyn365.isBrowser) {\r\n\t\t\tdocument.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n\t\t\tdocument.body.removeEventListener('focusout', this._handleFocusOutside, false);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic render(): JSX.Element | null {\r\n\t\tconst { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\r\n\t\tthis.currentLevel = 1;\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{isMobileView && this.state.activeMenu !== undefined && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{this.state.mobileViewLabelText}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{this._renderDisplay()}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\tprivate _renderDisplay(): JSX.Element[] {\r\n\t\tconst { ListItem, menuItemData, isMobileView } = this.props;\r\n\t\tconst { activeMenu } = this.state;\r\n\t\tconst menuItemList: JSX.Element[] = [];\r\n\t\tif (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n\t\t\tlet menuItem: IMenuItemData = {};\r\n\t\t\tfor (const menuItemDatum of menuItemData) {\r\n\t\t\t\tif (menuItemDatum && menuItemDatum.id === activeMenu) {\r\n\t\t\t\t\tmenuItem = menuItemDatum;\r\n\t\t\t\t\t!NavigationMenuView.isBackTrack\r\n\t\t\t\t\t\t? this.setState({ parentMenu: undefined })\r\n\t\t\t\t\t\t: this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemDatum.linkText });\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tmenuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\r\n\t\t\t\tif (menuItem && menuItem.id === activeMenu) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tmenuItem && menuItemList.push(\r\n\t\t\t\t\r\n\t\t\t\t\t{' '}\r\n\t\t\t\t\t{this._createMenuItemList(menuItem)}{' '}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tmenuItemData.forEach((item: IMenuItemData, index: number) => {\r\n\t\t\t\tmenuItemList.push(\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{this._createMenuItemList(item)}\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn menuItemList;\r\n\t}\r\n\r\n\t//TODO: refactor this to remove the annoying warning prompts\r\n\tprivate _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n\t\tconst subMenus = item && item.subMenu;\r\n\t\tif (subMenus && subMenus.length > 0) {\r\n\t\t\tfor (let i = 0; i <= subMenus.length - 1; i++) {\r\n\t\t\t\t// eslint-disable-next-line security/detect-object-injection\r\n\t\t\t\tif (subMenus[i].id === this.state.activeMenu) {\r\n\t\t\t\t\t!NavigationMenuView.isBackTrack\r\n\t\t\t\t\t\t? this.setState({ parentMenu: item?.id })\r\n\t\t\t\t\t\t: this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\r\n\t\t\t\t\treturn subMenus[i];\r\n\t\t\t\t}\r\n\t\t\t\tconst found = this._getFromSubMenu(subMenus[i]);\r\n\t\t\t\tif (found) {\r\n\t\t\t\t\treturn found;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.props.context.telemetry.error('Submenu content is empty, module wont render.');\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n\t\tif(menuItemData){\r\n\t\t\tif (menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n\t\t\t\tif (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n\t\t\t\t\treturn this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\r\n\t\t\t\t}\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t{this._renderButtonMenuItem(menuItemData)}\r\n\t\t\t\t\t\t{this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false)}\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t\t} else if (menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n\t\t\t\treturn this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\r\n\t\t\t} else if (menuItemData.linkText && !menuItemData.linkURL) {\r\n\t\t\t\treturn this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.props.context.telemetry.error('Navigation menu content is empty, module wont render.');\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\r\n\t\tconst { isMobileView, ListItem } = this.props;\r\n\t\tconst enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\r\n\t\tconst multiLevelSupportedMenu = this.props.config.menuLevelSupport || 3;\r\n\r\n\t\tif (activeMenu && this.state.activeMenu !== activeMenu) {\r\n\t\t\tthis.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tif (!subMenus || subMenus.length === 0) {\r\n\t\t\tthis.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tlet levelClassName: string = '';\r\n\t\tconst menuOptions = subMenus && subMenus.map((option: IMenuItemData, idx: number) => {\r\n\t\t\tconst hasOptions = option.subMenu && option.subMenu.length > 0;\r\n\t\t\tlet menuItem: JSX.Element | null;\r\n\t\t\tif (hasOptions && isMobileView) {\r\n\t\t\t\tmenuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n\t\t\t} else {\r\n\t\t\t\tmenuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\r\n\t\t\t}\r\n\t\t\tlet subMenu;\r\n\t\t\tconst haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\r\n\t\t\tif (haveSubmenu) {\r\n\t\t\t\tthis.currentLevel++;\r\n\t\t\t\tlevelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\r\n\t\t\t\tsubMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\r\n\t\t\t}\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t{menuItem}\r\n\t\t\t\t\t{subMenu}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t});\r\n\t\treturn this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\r\n\t}\r\n\r\n\tprivate _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n\t\tconst { Button } = this.props;\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{option.linkText}\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\tprivate _renderLinkMenuItem(option: IMenuItemData, index?: number, hoverEffect: boolean = true, isParent: boolean = false): JSX.Element | null {\r\n\t\tconst { Link } = this.props;\r\n\t\tconst linkText = option.linkText ? option.linkText : '';\r\n\t\tconst imagesource = option.imageSource ? option.imageSource : '';\r\n\t\tthis.payLoad.contentAction.etext = linkText;\r\n\t\tconst attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n\t\tconst className = (linkText.length > this.sm_text_count) ? 'ms-nav__list__item__link sm_txt' : 'ms-nav__list__item__link';\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{option.linkText}\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\tprivate _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\r\n\t\tconst { Link } = this.props;\r\n\t\tthis.payLoad.contentAction.etext = linkText;\r\n\t\tconst attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n\t\tif (linkText && linkUrl) {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t{linkText}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\r\n\t\tconst { Span } = this.props;\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{option.linkText}\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\tprivate _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\r\n\t\tconst { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent, isMobileView } = this.props;\r\n\t\tconst categoryImageDisplay =\r\n\t\t\t!isMobileView &&\r\n\t\t\t(showCategoryImage || showPromotionalContent) &&\r\n\t\t\t!ArrayExtensions.hasElements(this.state.categoryImage) &&\r\n\t\t\t!submenu;\r\n\t\tconst promotionalContentDisplay =\r\n\t\t\t!isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\r\n\t\tconst DivContainerClass = `${this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__dropped' } ${ level}`;\r\n\t\tthis.currentLevel = 1;\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t 2 && 'navmenu-multi-level'\r\n\t\t\t\t\t)}\r\n\t\t\t\t>\r\n\t\t\t\t\t{menuOptions}\r\n\t\t\t\t\r\n\t\t\t\t{categoryImageDisplay && this.state.categoryImage && this.state.categoryImage.map(item => (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{this.state.categoryImage && this._getCategoryImage(item)}\r\n\t\t\t\t\t\t{promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\r\n\t\t\t\t\t\r\n\t\t\t\t))}\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\tprivate readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\r\n\t\tconst linkText = option && option.linkText ? option.linkText : '';\r\n\t\tconst promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\r\n\r\n\t\t// Read category and promotional image in one array\r\n\t\tif (ArrayExtensions.hasElements(option.promotionalContent)) {\r\n\t\t\toption.promotionalContent.map(item => {\r\n\t\t\t\tif (item && item.image) {\r\n\t\t\t\t\tconst imageSrc = item.image.src;\r\n\t\t\t\t\tconst promotionalItemImageSettings = item.image.imageSettings;\r\n\t\t\t\t\tpromotionalImage.push({\r\n\t\t\t\t\t\tsrc: imageSrc,\r\n\t\t\t\t\t\taltText: item.text,\r\n\t\t\t\t\t\timageSettings: promotionalItemImageSettings,\r\n\t\t\t\t\t\tadditionalProperties: { linkUrl: item.linkUrl.destinationUrl }\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tthis.setState({\r\n\t\t\tcategoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\r\n\t\t\tcategoryImageAltText: linkText\r\n\t\t});\r\n\t};\r\n\r\n\tprivate readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n\t\tif (!this.props.isMobileView) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tactiveMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\r\n\t\t\t\tparentMenu: parentId\r\n\t\t\t});\r\n\t\t\tif (this.props.showCategoryImage) {\r\n\t\t\t\tthis._updateCategoryImage(data.imageSource!, data)();\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tNavigationMenuView.isBackTrack = false;\r\n\t\t\tthis.setState({\r\n\t\t\t\tactiveMenu: data.id,\r\n\t\t\t\tmobileViewLabelText: data.linkText!,\r\n\t\t\t\tparentMenu: parentId\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\tprivate readonly _handleGoBack = () => () => {\r\n\t\tNavigationMenuView.isBackTrack = true;\r\n\t\tthis.setState({ activeMenu: this.state.parentMenu });\r\n\t};\r\n\r\n\t/**\r\n\t * Method to handle click outside of menu.\r\n\t * @param event -HTML event.\r\n\t */\r\n\tprivate readonly _handleClickOutside = (event: MouseEvent) => {\r\n\t\tif (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\r\n\t\t\tthis.setState({activeMenu: undefined, mobileViewLabelText: '', categoryImage: null\t});\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Method to handle click outside of menu.\r\n\t * @param event -HTML event.\r\n\t */\r\n\tprivate readonly _handleFocusOutside = (event: FocusEvent) => {\r\n\t\tif (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\r\n\t\t\tthis._closeSubmenu();\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Checks to assign a ref for focus.\r\n\t * @param index -Sub menu list index.\r\n\t * @param mobileViewLabelText -Parent user clicked Sub menu list.\r\n\t * @param optionLinkText -Sub menu list.\r\n\t * @returns Ref.\r\n\t */\r\n\tprivate readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\r\n\t\tif(!NavigationMenuView.isBackTrack && index === 0){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif(!optionLinkText || !mobileViewLabelText){\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn mobileViewLabelText === optionLinkText;\r\n\t};\r\n\r\n\tprivate _closeSubmenu(): void {\r\n\t\tif (!this.props.isMobileView) {\r\n\t\t\tthis.setState({ activeMenu: undefined, categoryImage: null, mobileViewLabelText: '' });\r\n\t\t}\r\n\t}\r\n\r\n\tprivate readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\r\n\t\tif (!categoryImage || !categoryImage.src) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst categoryImageUrl = generateImageUrl(`${categoryImage.src}`, this.props.context.actionContext.requestContext.apiSettings);\r\n\t\tconst defaultImageSettings: IImageSettings = {\r\n\t\t\tviewports: {\r\n\t\t\t\txs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n\t\t\t\tsm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n\t\t\t\tmd: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n\t\t\t\tlg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\r\n\t\t\t},\r\n\t\t\tlazyload: true\r\n\t\t};\r\n\t\tif (categoryImageUrl !== undefined) {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n}\r\n\r\nexport default NavigationMenuView;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n *\n * FooterItemView component.\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\n const { FooterItem } = this.props;\n return {this._renderElement(this.props)};\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\n if (heading) {\n return (\n \n {' '}\n \n );\n } else if (Link && image) {\n return (\n \n {linkText}\n {image}\n \n );\n } else if (Link) {\n return EditableLink;\n }\n return (\n <>\n {text}\n {image}\n \n );\n }\n}\n\nexport default FooterItemView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceViewProps } from './account-customer-balance';\n\nexport default (props: IAccountCustomerBalanceViewProps) => {\n const {\n heading,\n accountSectionHeading,\n creditSummarySectionHeading,\n accountLabels,\n accountValues,\n creditSummaryLabels,\n creditSummaryValues,\n homeButton,\n actions,\n requestStatementModal,\n availableCredit,\n balanceOwed,\n creditExcess\n } = props;\n\n return (\n \n {heading}\n {requestStatementModal}\n {actions}\n {accountSectionHeading}\n
\n {accountLabels}\n {accountValues}\n
\n {creditSummarySectionHeading}\n
\n {creditSummaryLabels}\n {creditSummaryValues}\n {availableCredit}\n {balanceOwed}\n {creditExcess}\n
\n {homeButton}\n
\n );\n};\n"],"sourceRoot":""}