{"version":3,"sources":["webpack:///src/modules/store-selector/store-selector.view.tsx?b873","webpack:///src/modules/checkout-customer-account-payment/checkout-customer-account-payment.view.tsx?c009","webpack:///src/index.ts?c6ae","webpack:///src/modules/content-block/components/additional-content.tsx?1a32","webpack:///src/modules/content-block/components/links.tsx?5056","webpack:///src/modules/content-block/content-block.tsx?8675","webpack:///src/modules/social-share/social-share.view.tsx?76da","webpack:///src/modules/site-picker/site-picker.view.tsx?dcff","webpack:///src/modules/adventureworks/views/checkout-customer-account-payment.view.tsx?fdf3","webpack:///./src/themes/leblanc/views/header.view.tsx?d0cb","webpack:///src/modules/adventureworks/views/reviews-list.view.tsx?ebec","webpack:///./src/themes/connselmer2/views/header.view.tsx?fae5","webpack:///src/modules/store-selector/components/selected-store/selected-store.tsx?8d1a","webpack:///src/modules/store-selector/store-selector.tsx?ce13","webpack:///src/modules/subscribe/subscribe.view.tsx?c40a","webpack:///src/modules/fabrikam/views/cart.view.tsx?8115","webpack:///src/modules/fabrikam/views/ratings-histogram.view.tsx?96ae","webpack:///src/modules/account-management-address/account-management-address.view.tsx?739e","webpack:///src/modules/fabrikam/views/order-history.view.tsx?46de","webpack:///src/modules/loyalty-sign-up/loyalty-sign-up.view.tsx?ed3f","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/store-selector/components/pickup-option-list.tsx?9a9c","webpack:///src/modules/social-share/social-share.tsx?ed88","webpack:///src/modules/store-selector/components/store-selector-location-line-item/store-selector-location-line-item.components.tsx?5a50","webpack:///src/modules/adventureworks/views/store-selector.view.tsx?1470","webpack:///src/modules/footer-item/footer-item.tsx?f8b4","webpack:///./src/themes/connselmer/views/header.view.tsx?bce8","webpack:///src/modules/site-picker/site-picker.tsx?35ca","webpack:///src/modules/order-template/order-template.view.tsx?f2c8","webpack:///src/modules/order-history/order-history.view.tsx?251d","webpack:///src/modules/ratings-histogram/ratings-histogram.view.tsx?4481","webpack:///src/modules/map/map.view.tsx?cd35","webpack:///src/modules/store-selector/components/store-selector-location-line-item/date-time-helpers.ts?89f3","webpack:///src/modules/footer-item/footer-item.view.tsx?235e","webpack:///src/modules/content-block/content-block.view.tsx?a86e","webpack:///src/modules/adventureworks/views/media-gallery.view.tsx?e2f6","webpack:///src/modules/write-review/write-review.view.tsx?9069"],"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","SummaryForm","_ref","formProps","label","paymentAmount","addPaymentButton","appliedLine","bottomBorder","EditForm","_ref2","inputLabel","inputAmount","customerName","customerAccountNumber","customerSince","accountCredit","alert","accountDetails","CheckoutCustomerAccountView","checkoutCustomerAccount","checkoutErrorRef","summaryView","editView","moduleState","ref","isReady","assembleNode","item","itemIndex","_item$links","heading","renderHeading","additionalContentHeading","requestContext","Msdyn365","text","tag","className","editProps","onEdit","event","handleAdditionalTextChange","subtext","renderParagraph","additionalContentParagraphText","links","map","ctaLink","index","renderLinks","linkIndex","editableLink","ariaLabel","linkText","linkUrl","destinationUrl","openInNewTab","role","key","link","onTextChange","handleAdditionalLinkTextChange","additionalContentItemContainer","additionalContentItemLinks","contentBlockAdditionalContent","additionalContent","reactNodes","push","additionalContentNode","additionalContentItems","ContentCardLinks","constructor","_mapEditableLinks","linkdata","length","editableLinks","forEach","payLoad","getPayloadObject","this","telemetryContent","contentAction","etext","attributes","getTelemetryAttributes","btnClass","additionalProperties","onClick","onTelemetryClick","render","ContentBlock","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","handleTextChange","config","target","value","handleParagraphChange","paragraph","handleLinkTextChange","Number","_heading$tag","_this$props$context$r","_this$props$config$im","image","imageAriaLabel","contentBlockTitle","imageProps","gridSettings","imageSettings","contentBlockLinks","LinksComponent","msdyn365__moduleLayout","contentBlockText","contentBlockImage","preserveImageSpace","moduleType","typeName","imagePropertyName","moduleId","id","layout","shouldSkipToMainImage","error","contentBlockviewProps","_objectSpread","title","moduleClass","contentBlockContainer","moduleProps","classnames","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","_getImageLink","handleAdditionalParagraphChange","handleAdditionalText","handleAdditionalParagraph","renderView","additionalContentObject","actionableRegion","SocialShareView","SocialShareList","SocialShareItemElements","SocialShareItem","SocialShare","createElement","SocialShareElement","_renderSitePicker","_renderSiteOptionsList","SitePickerMenuList","SitePickerMenuListItem","SitePickerMenuListItemArray","options","onMouseLeave","resetSiteOptionsState","SitePicker","_props$SitePickerMenu","SitePickerMobileContainer","renderSiteOptions","_renderMobileView","_props$config$heading","SitePickerMenu","SitePickerMenuSpan","siteOptionsState","_renderDesktopView","paymentAmountInput","_renderReactFragment","items","slot","headerView","HeaderTag","HeaderContainer","HeaderTopBarContainer","MobileMenuContainer","MobileMenuBodyContainer","MobileMenuLinksContainer","Divider","navIcon","logo","preferredStore","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","signInLink","accountLinks","_renderDesktopAccountBlock","wishListIconDesktop","cartIcon","siteOptions","MobileMenuHeader","menuBar","wishListIconMobile","buildReviewCard","resources","isUserReview","cardProps","headerProps","rating","date","name","cardBodyProps","reviewProps","reviewTitle","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","undefined","wasReviewHelpfulText","like","dislike","edit","renderProductDescription","product","data","result","_props$data$product$r","primaryImageSource","PrimaryImageUrl","imageUrl","generateImageUrl","apiSettings","Image","src","viewports","xs","q","w","h","sm","md","lg","xl","lazyload","cropFocalRegion","renderProductImage","Name","ItemId","ReviewsListview","filterByDropdown","noReviewsMessage","noReviewsWithFilterMessage","pageControls","refineReviewsProps","reportReviewModal","reviewsListProps","reviewCards","sortByDropdown","userReview","isFilterApplied","review","reviewModal","modal","modalHeader","modalBody","form","inputRow","selectRatingLabel","reviewTitleLabel","titleInput","reviewTextLabel","textInput","privacyPolicyUrl","modalFooter","submitButton","cancelButton","createReviewModal","createReportModal","reported","headerSubmitted","header","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton","href","xmlns","viewBox","style","fill","d","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","filteredPickupMode","PickUpOptionList","pickupListOptionMenuText","pickupmodeList","onChange","SelectedStoreComponent","_selectedStore$OrgUni","_selectedStore$OrgUni2","shouldHideStockStatus","isInStock","stockStatusLabel","preferredStoreLocationId","isPreferredStoreEnabled","isLocationDisabled","storePickUpOptionList","productPickUpOptionList","preferredDistanceUnit","parentClassName","OrgUnitName","location","distanceAsString","buildDistanceString","Distance","resourceLabel","inStock","outOfStock","stockLabel","stockText","selectLocation","selectLocationAriaLabelFormat","replace","TelemetryConstant","PickupInStore","PreferredStore","preferredStoreAttributes","RemovePreferredStore","removePreferredStoreAttributes","matchDeliveryOptions","Button","availabilityInfoHeader","preferredStoreAriaLabel","preferredStoreText","setAsPreferredStoreTextAriaLabel","setAsPreferredStoreText","StoreSelector","super","shouldHideInventory","hasEnabledOutOfStockCheck","shouldDisplayList","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","setState","onFilterLocations","stores","filter","_location$OrgUnitPick","some","deliveryOption","Code","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","actionContext","channel","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","debug","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","storeId","cookies","mode","_store$OrgUnitAvailab2","setPreferredStoreLocation","isConsentGiven","Latitude","Longitude","clearPreferredStore","setSelectedStoreLocationId","_setSelectedStore","searchTerm","isSeeAllStoreValue","geoLocate","trim","_updateLocations","latitude","longitude","shouldShowAllStores","_navigator","isDialogOpen","navigator","geolocation","getCurrentPosition","position","coords","PERMISSION_DENIED","timeout","_closeDialog","_storeSelectorStateMa","parentElementRef","current","focus","closeDialog","_setOrgUnitStoreInformation","styleDefault","input","onLocationSelected","preferredLocationId","storeLocationList","_sortStores","orgUnitStoreInformation","showMapViewLink","isDialog","setOrgUnitStoreInformation","catch","message","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","viewProps","Modal","classname","autoFocus","fade","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","onSubmit","preventDefault","subscribeView","_subscribeForm$classN","_emailInput$className","_submitButton$classNa","subscribe","subscribeContainer","subscribeForm","emailInput","submitButtonLabelText","_renderPromotions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","_renderCartlines","cartLines","storeSelector","backToShoppingButton","waitingComponent","cartLoadingStatus","cartDataResult","mulitplePickUp","emailDeliveryModeCode","emptyCartText","cartLine","MsDyn365","isBrowser","cartline","_renderBOPISBlock","_renderGroupBOPISBlock","addToOrderTemplate","addToWishlist","remove","onToggleBopisHandler","isBopisSelected","pickUpInStore","toggleBopis","onChangeStoreHandler","_cartLine$data","DeliveryMode","shipInsteadDisplayText","shipToAddressDisplayText","pickItUpDisplayText","pickUpAtStoreWithLocationText","changeStoreDisplayText","puckUpinStoreAttribute","ContainerProps","orgUnitName","_renderErrorBlock","errorData","errors","Wrapper","_renderOrderSummarylines","orderSummaryLines","OrderSummaryItems","promoCode","subtotal","shipping","otherCharge","tax","totalDiscounts","orderTotal","_renderInvoiceSummarylines","invoiceSummaryLines","invoices","giftCard","loyalty","_renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action2","_props$context$action3","cartlineId","_renderCartLinesGroupHeader","_countItems","EmailDeliveryModeCode","multiplePickUpEnabled","count","_cartLine$pickUpInSto","pickUpText","shippingText","emailshippingText","payInvoicesDisplayText","groupTitle","IsInvoiceLine","StringExtensions","isNullOrEmpty","toLowerCase","_renderCartLinesGroupTitle","_cartLine$data2","countItem","reduce","_item$data","Quantity","_cartLine$pickUpInSto2","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","itemLabel","itemsLabel","suffix","CartView","_props$cart","_props$context$action","_props$cart2","renderModuleAttributes","promotionOptions","cart","hasInvoiceLine","CartlinesWrapper","orderSummaryHeading","OrderSummaryWrapper","invoiceSummaryLineitems","orderSummaryLineitems","OrderSummaryErrors","checkoutAsSignInUserButton","checkoutAsGuestButton","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","histogramItem","buttonProps","starLabel","bar","percentage","RatingsHistogramView","histogramItems","histogramProps","AddressShow","AddressDetail","description","AddressList","List","isShowList","Item","showItems","isShowPrimaryButton","primaryButton","editButton","removeButton","Error","isShowError","AddressLists","_ref3","ListAddress","isShowEmptyListMessage","emptyListMessage","addButton","primaryAddressList","otherAddressList","AddressAddUpdate","_ref4","AddressForm","hasError","isShowSaveButton","saveButton","isShowCancelButton","AddressItem","AddressError","AccountManagementAddressView","AccountAddressManagement","infoMessageBar","viewState","showAddressList","showAddOrUpdateAddress","screenReaderNotification","isShowAddresList","isShowAddOrUpdateAddress","OrderHistoryOrderInfomation","orderInformationProps","salesId","receiptId","channelName","createdDate","amount","channelReferenceId","OrderHistoryGroupDelivery","deliveryProps","processing","address","trackingInfo","OrderHistoryGroup","groupProps","delivery","salesLinesProps","salesLines","salesLine","LineId","OrderHistoryGroups","groupsProps","groups","group","OrderHistoryHeader","_ref5","orderCountLabel","extraActions","OrderHistorySalesOder","_ref6","salesOrderProps","orderInfomation","orderDetailsLink","expandProductsButton","OrderHistoryList","_ref7","listProps","salesOrders","salesOrder","OrderHistoryView","_ref8","orderHistoryProps","loading","emptyMessage","backToShoppingLink","list","table","moreButton","LoyaltySignUpView","LoyaltySignUp","memberHeading","signUpText","signUpButton","detailsLink","termsLink","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","_onSelect","currentTarget","getAttribute","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","Description","tabIndex","onKeyDown","onClickHandler","_scrollIntoView","selectedLocationDiv","selectedLocationRef","parent","parentElement","scrollTop","offsetTop","clientHeight","availabilityWithHours","i","_availabilityWithHour","pickupDeliveryOptionErrorMessage","componentDidUpdate","previousProps","componentDidMount","_stores","show","_renderStoreLocation","selected","StoreSelectorLocationLineItemComponent","observable","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","keyCode","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","_handleKeyPressPrev","Enter","Space","_searchTextChanged","inputValue","_onSubmit","_this$searchBoxRef$cu","blur","_onChangeHandler","renderPickupModesList","toggleButtonText","pickupFilterMenuHeading","pickupFilterByHeading","toggleButtonClass","toggleMapViewAttributes","bind","SearchStore","storeSearchAttributes","ShowAllStore","showAllStoreAttributes","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","autoComplete","type","searchInputAriaLabel","placeholder","onKeyUp","color","emptyLocationsText","storeCountMessage","storeCountMessageInKm","storeAllCountMessage","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","contains","_pickupListOptionMenu","expandSiteOptions","_renderDeliveryOptions","window","addEventListener","componentWillUnmount","removeEventListener","stopPropagation","isExpandSiteOptionsState","socialShareItems","params","isEditor","viewprops","caption","orientation","storeSelectorLocationLineItemComponentActions","distance","Math","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","RichTextComponent","ContactInformationType","Phone","buildStoreHoursDay","storeHoursDayPeriodString","storeHoursDayString","storeHoursDayPeriod","storeHoursDay","productDeliveryOptions","productDeliveryOption","PickUpMethodDropdownComponent","pickUpStatesProps","pickUpMethodLabel","pickUpOptionPlaceholder","pickupOptionDropdownError","pickupButtonAriaLabel","selectedStorePickUpOption","selectStorePickUpOption","currentStorePickUpOption","setCurrentStorePickUpOption","isDropdownOpen","toggleDropdown","dataset","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","parseInt","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","viewport","_data$storeSelectorSt","displayMap","FooterItem","footerItemClassName","_createHeading","_createImageMarkup","_createText","_createLinkText","EditableLink","_createLink","HeadingContainer","ItemContainer","Link","ariaHiddenAttr","loadFailureBehavior","PureComponent","_cookieName","_cookieExpirationInSeconds","_escFunction","Escape","_this$_sitePickerMenu","_this$_sitePickerMenu2","nextFocus","document","activeElement","_this$_sitePickerMenu3","_sitePickerMenuButton","_sitePickerMenuNode","_resetSiteOptionsState","Tab","_this$_sitePickerMenu4","_this$_sitePickerMenu5","_handleOutsideClick","_this$_sitePickerMenu6","_this$_sitePickerMenu7","_handleChange","createRef","_renderSiteOptions","_updateViewport","device","Type","_document","_document2","body","resizeThrottledEventHandler","addThrottledEvent","_document3","_document4","_this$props$config$he","_this$props$config$he2","Drawer","openGlyph","closeGlyph","glyphPlacement","_renderSitePickerImage","expandSiteOptionsState","e","cookieConfig","maxAge","set","defaultImageSettings","_image$imageSettings","_item$siteRedirectUrl","siteImage","siteRedirectUrl","siteName","altText","_getViewport","innerWidth","computed","_renderItem","quantityLabel","ProductsTableRow","selectLine","productLineCatalog","productImage","productPrice","productNumber","addToBagButton","productInfo","productUnitOfMeasure","productQuantityView","productQuantity","popUp","extraActionsPopup","isMultipleCatalogFeatureEnabledInHq","disabled","lineVisibility","pointerEvents","opacity","OrderTemplateLinesView","OrderTemplateLines","status","statusMessage","ProductsTable","ProductsTableHeading","orderLines","productsStatusMessage","OrderTemplateActions","orderActions","pagination","itemAddedToCartDialog","bulkOrderLineActions","isDetailsDisplayed","detailedProductView","toggleDetailsDisplayed","cancelBtnLabel","productNumberText","productText","productUnitPriceText","productUOMText","productQuantityText","productLineCatalogName","toggleDetails","addTemplateToBag","renameTemplate","removeTemplate","actionsSplitButton","wrapClassName","applicationNode","MapHeader","MapView","Header","MapProps","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","FooterItemView","_renderElement","renderAdditionalContent","_additionalContent$ad","ContentBlockView","renderThumbnailItem","thumbnail","ThumbnailItemContainerProps","Picture","GetEmptyThumbnailItemComponent","_props$context$app$co2","_props$config$thumbna2","fallbackImage","emptyPlaceHolderImage","placeholderImageName","_props$context$reques2","getFallbackImageUrl","OmniChannelMedia","thumbnailImageSettings","imageFallbackOptimize","skipImageValidation","fallBackSrc","defaultThumbnailImageSettings","renderThumbnails","thumbnails","ThumbnailsContainerProps","SingleSlideCarouselComponentProps","Thumbnails","mediaGalleryItems","getMediaGalleryItems","lastUpdate","GetThumbnailItemComponent","imageId","modifiedActiveIndex","_props$context$app$co","_props$config$thumbna","_props$context$reques","_props$callbackToggle","_props$callbackThumbn","callbackToggle","call","callbackThumbnailClick","activeIndex","handleKeyDown","shouldUseOptimizedImage","bypassHideOnFailure","fullScreenTitleText","mediaGalleryView","CarouselProps","MediaGallery","ratingLabel","titleLabel","textLabel","WriteReviewView","signInMessage","signInButton","modalToggle","isAuthenticated","user"],"mappings":"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","file":"static/js/7.0c97b84dcde687578467.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 { ICheckoutCustomerAccountPaymentViewProps } from './checkout-customer-account-payment';\nimport { IAccountPaymentEditViewForm } from './components/get-account-payment-form-edit-mode';\nimport { IAccountPaymentSummaryViewForm } from './components/get-account-payment-form-summary-mode';\n\nexport const SummaryForm: React.FC = ({\n formProps,\n label,\n paymentAmount,\n addPaymentButton,\n appliedLine,\n bottomBorder\n}) => (\n \n <>\n {label}\n {paymentAmount}\n {addPaymentButton}\n {appliedLine}\n {bottomBorder}\n \n \n);\n\nexport const EditForm: React.FC = ({\n formProps,\n inputLabel,\n inputAmount,\n addPaymentButton,\n customerName,\n customerAccountNumber,\n customerSince,\n accountCredit,\n alert,\n accountDetails,\n appliedLine,\n bottomBorder\n}) => (\n \n <>\n {customerName}\n {customerAccountNumber}\n {customerSince}\n {accountCredit}\n {accountDetails}\n {inputLabel}\n {alert}\n {inputAmount}\n {addPaymentButton}\n {appliedLine}\n {bottomBorder}\n \n \n);\n\nconst CheckoutCustomerAccountView: React.FC = props => {\n const { checkoutCustomerAccount, checkoutErrorRef, summaryView, editView, moduleState, alert } = props;\n return (\n \n {alert}\n {moduleState.isReady && summaryView && }\n {!moduleState.isReady && editView && }\n \n );\n};\n\nexport default CheckoutCustomerAccountView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport StoreSelector from './modules/store-selector/store-selector';\nimport StoreSelectorView from './modules/store-selector/store-selector.view';\n\nexport * from './modules/store-selector/components';\nexport * from './modules/store-selector/components/store-selector-location-line-item/date-time-helpers';\nexport * from './modules/store-selector/store-selector';\nexport * from './modules/store-selector/store-selector.data';\nexport * from './modules/store-selector/store-selector.props.autogenerated';\nexport * from './modules/store-selector/store-selector.view';\n\nexport { StoreSelector, StoreSelectorView };\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 { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAdditionalContentData, ILinksData } from '../content-block.props.autogenerated';\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Component props.\n */\nexport interface IContentBlockAdditionalContentProps {\n requestContext: Msdyn365.IRequestContext;\n additionalContent: IAdditionalContentData[] | undefined;\n handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content view props.\n */\nexport interface IContentBlockAdditionalContentViewProps {\n additionalContentNode: INodeProps;\n additionalContentItems?: IContentBlockAdditionalContentItemViewProps[];\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Item view props.\n */\nexport interface IContentBlockAdditionalContentItemViewProps {\n heading: React.ReactNode;\n text: React.ReactNode;\n links: React.ReactNode;\n additionalContentItemContainer: INodeProps;\n additionalContentItemLinks: INodeProps;\n}\n\n/**\n * Renders additional content heading.\n * @param additionalContentHeading - Additional content heading.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Heading Node.\n */\nconst renderHeading = (additionalContentHeading: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param additionalContentParagraphText - Additional content paragraph text.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Paragraph Node.\n */\nconst renderParagraph = (additionalContentParagraphText: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param ctaLink - Additional content link.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @param linkIndex - Additional content link index.\n * @returns Link Node.\n */\nconst renderLinks = (ctaLink: ILinksData, props: IContentBlockAdditionalContentProps, itemIndex: number, linkIndex: number) => {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: ctaLink.ariaLabel,\n className: 'ms-content-block__details__additional-content-cta-links',\n linkText: ctaLink.linkText,\n linkUrl: ctaLink.linkUrl.destinationUrl,\n openInNewTab: ctaLink.openInNewTab,\n role: 'link'\n };\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalLinkTextChange(linkIndex, itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Create node for each additonal content item.\n * @param item - Content block additonal content item props.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns IContentBlockAdditionalContentItemViewProps.\n */\nconst assembleNode = (\n item: IAdditionalContentData,\n props: IContentBlockAdditionalContentProps,\n itemIndex: number\n): IContentBlockAdditionalContentItemViewProps => {\n const headingNode = item.heading && renderHeading(item.heading, props, itemIndex);\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props, itemIndex);\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\n return renderLinks(ctaLink, props, itemIndex, index);\n });\n\n return {\n heading: headingNode,\n text: paragraphNode,\n links: linksNode,\n additionalContentItemContainer: { className: 'ms-content-block__details__additional-content__container' },\n additionalContentItemLinks: { className: 'ms-content-block__details__additional-content-cta' }\n };\n};\n\n/**\n * ContentBlockAdditionalContent component.\n * @param props - Content Block Additional content component props.\n * @returns Content Block Additional content view props.\n */\nexport const contentBlockAdditionalContent = (\n props: IContentBlockAdditionalContentProps\n): IContentBlockAdditionalContentViewProps | undefined => {\n const { additionalContent } = props;\n if (!additionalContent) {\n return undefined;\n }\n\n const reactNodes: IContentBlockAdditionalContentItemViewProps[] = [];\n additionalContent.map((item, index: number) => {\n return reactNodes.push(assembleNode(item, props, index));\n });\n\n return {\n additionalContentNode: { className: 'ms-content-block__details__additional-content' },\n additionalContentItems: reactNodes\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 { ILinksData } from '../content-block.props.autogenerated';\n\nexport interface IContentCardLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n role?: string;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class ContentCardLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n }\n\n private readonly _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: btnClass,\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: this.props.role,\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\nexport default ContentCardLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\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, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { contentBlockAdditionalContent, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport LinksComponent from './components/links';\nimport { actionableRegion as region, IContentBlockConfig, IContentBlockProps } from './content-block.props.autogenerated';\n\nexport interface IContentBlockViewProps extends IContentBlockProps<{}> {\n title?: React.ReactNode;\n text?: React.ReactNode;\n image?: React.ReactNode;\n links?: React.ReactNode;\n className?: string;\n contentBlockContainer: IModuleProps;\n imageContainer: INodeProps;\n detailsContainer: INodeProps;\n contentBlockAnchorTag?: INodeProps;\n imageLink?: string;\n imageAriaLabel?: string;\n additionalContent?: IContentBlockAdditionalContentViewProps;\n handleAdditionalText?(): void;\n handleAdditionalParagraph?(): void;\n handleAdditionalLinkTextChange?(): void;\n}\n\n/**\n * Site-builder configuration for the module.\n */\nexport interface IContentBlockFullConfig extends IContentBlockConfig {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- This field comes from SDK.\n msdyn365__moduleLayout?: string;\n}\n\n/**\n * ContentCard component.\n * @extends {React.PureComponent}\n */\nexport class ContentBlock extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public render(): JSX.Element | null {\n const { heading, paragraph, image, links, className, imageAriaLabel } = this.props.config;\n const contentBlockTitle = heading && (\n \n );\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings ?? {},\n imageSettings: image?.imageSettings\n };\n const contentBlockLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n const contentBlockText = paragraph && (\n \n );\n const contentBlockImage = (\n \n );\n\n if (!contentBlockTitle && !contentBlockText && !contentBlockLinks) {\n this.props.context.telemetry.error('Content block content is empty, module wont render.');\n return null;\n }\n const contentBlockviewProps = {\n ...this.props,\n title: contentBlockTitle,\n text: contentBlockText,\n image: contentBlockImage,\n links: contentBlockLinks,\n moduleClass: this.props.config.className,\n contentBlockContainer: {\n moduleProps: this.props,\n className: classnames('ms-content-block', className)\n },\n imageContainer: { className: 'ms-content-block__image' },\n detailsContainer: { className: 'ms-content-block__details' },\n contentBlockAnchorTag: {\n tag: 'a',\n className: 'ms-content-block__link',\n role: 'link'\n },\n imageLink: this._getImageLink(),\n imageAriaLabel,\n additionalContent: contentBlockAdditionalContent({\n requestContext: this.props.context.request,\n additionalContent: this.props.config.additionalContent,\n handleAdditionalTextChange: this.handleAdditionalTextChange,\n handleAdditionalParagraphChange: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n }),\n handleAdditionalText: this.handleAdditionalTextChange,\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n };\n\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\n }\n\n /**\n * To handle text change.\n * @param event - To handle text change event.\n * @name - HandleTextChange\n * @public\n * @returns - The Text value.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n /**\n * To handle paragraph change.\n * @param event - To handle text change event.\n * @name - HandleParagraphChange\n * @public\n * @returns - The Paragraph value.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.paragraph = event.target.value);\n\n /**\n * Handle link text change.\n * @param linkIndex - The link index.\n * @returns - Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n public handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].heading = event.target.value;\n }\n }\n\n public handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void {\n const additionalContentObject =\n (this.props.config.additionalContent &&\n ArrayExtensions.hasElements(this.props.config.additionalContent) &&\n this.props.config.additionalContent[Number(index)]) ||\n {};\n if (additionalContentObject.links) {\n additionalContentObject.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n public handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].subtext = event.target.value;\n }\n }\n\n private _getImageLink(): string | null {\n const { imageLink, links, actionableRegion } = this.props.config;\n if (actionableRegion === region.imageAndLinks) {\n if (imageLink?.destinationUrl) {\n return imageLink.destinationUrl;\n } else if (links && ArrayExtensions.hasElements(links) && links[0].linkUrl) {\n return links[0].linkUrl.destinationUrl;\n }\n return null;\n }\n return null;\n }\n}\n\nexport default ContentBlock;\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 React, { ReactNode } from 'react';\n\nimport { ISocialShareViewProps } from './social-share';\n\nexport const SocialShareView: React.FC = props => {\n const { SocialShareList, SocialShareItemElements, SocialShareItem, SocialShare } = props;\n if (SocialShareItemElements.length === 0) {\n props.context.telemetry.error('Social media list is empty, module wont render');\n return null;\n }\n return (\n \n \n {SocialShareItemElements.map((SocialShareElement: ReactNode, index: number) => {\n return (\n \n {SocialShareElement}\n \n );\n })}\n \n \n );\n};\n\nexport default SocialShareView;\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 { ISitePickerViewProps } from './site-picker';\n\nexport default (props: ISitePickerViewProps) => {\n return <>{_renderSitePicker(props)};\n};\n\nconst _renderDesktopView = (props: ISitePickerViewProps) => {\n const { SitePickerMenu, SitePickerMenuSpan } = props;\n return (\n <>\n \n {props.config.heading?.text}\n \n \n {props.siteOptionsState ? _renderSiteOptionsList(props) : null}\n \n );\n};\n\nconst _renderSiteOptionsList = (props: ISitePickerViewProps): React.ReactNode => {\n const { SitePickerMenuList, SitePickerMenuListItem, SitePickerMenuListItemArray } = props;\n const options = SitePickerMenuListItemArray!.map((item, index) => {\n return (\n \n {item}\n \n );\n });\n return (\n \n {options}\n \n );\n};\n\nconst _renderMobileView = (props: ISitePickerViewProps): React.ReactNode => {\n const { SitePickerMobileContainer } = props;\n return (\n \n
\n {props.SitePickerMenuListItemArray?.map((item, index) => {\n return
{item}
;\n })}\n
\n
\n );\n};\n\nconst _renderSitePicker = (props: ISitePickerViewProps): React.ReactNode => {\n const { isMobileView, SitePicker } = props;\n return {isMobileView ? _renderMobileView(props) : _renderDesktopView(props)};\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 { ICheckoutCustomerAccountPaymentViewProps } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/checkout-customer-account-payment';\nimport { IAccountPaymentEditViewForm } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/components/get-account-payment-form-edit-mode';\nimport { IAccountPaymentSummaryViewForm } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/components/get-account-payment-form-summary-mode';\n\nexport const SummaryForm: React.FC = ({\n formProps,\n label,\n addPaymentButton,\n appliedLine,\n bottomBorder,\n paymentAmountInput\n}) => (\n \n <>\n {label}\n {paymentAmountInput}\n {addPaymentButton}\n {appliedLine}\n {bottomBorder}\n \n \n);\n\nexport const EditForm: React.FC = ({\n formProps,\n inputLabel,\n inputAmount,\n addPaymentButton,\n customerName,\n customerAccountNumber,\n customerSince,\n accountCredit,\n alert,\n accountDetails,\n appliedLine,\n bottomBorder\n}) => (\n \n <>\n {customerName}\n {customerAccountNumber}\n {customerSince}\n {accountCredit}\n {accountDetails}\n {inputLabel}\n {alert}\n {inputAmount}\n {addPaymentButton}\n {appliedLine}\n {bottomBorder}\n \n \n);\n\nconst CheckoutCustomerAccountView: React.FC = props => {\n const { checkoutCustomerAccount, checkoutErrorRef, summaryView, editView, moduleState, alert } = props;\n return (\n \n {alert}\n {moduleState.isReady && summaryView && }\n {!moduleState.isReady && editView && }\n \n );\n};\n\nexport default CheckoutCustomerAccountView;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IHeaderProps } from '../definition-extensions/header.ext.props.autogenerated';\r\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header/src/modules/header/./header';\r\n\r\nconst headerView: React.FC> = (props: IHeaderViewProps & IHeaderProps<{}>) => {\r\n const {\r\n HeaderTag,\r\n HeaderContainer,\r\n HeaderTopBarContainer,\r\n MobileMenuContainer,\r\n MobileMenuBodyContainer,\r\n MobileMenuLinksContainer,\r\n Divider\r\n } = props;\r\n return (\r\n \r\n \r\n \r\n {props.navIcon}\r\n {props.logo}\r\n {_renderReactFragment(props.search)}\r\n {props.preferredStore}\r\n {_renderDesktopAccountBlock(props)}\r\n {props.wishListIconDesktop}\r\n \r\n {props.cartIcon}\r\n {_renderReactFragment(props.siteOptions)}\r\n \r\n \r\n \r\n { props.MobileMenuHeader }\r\n {_renderReactFragment(props.menuBar)}\r\n \r\n { props.accountLinks ? props.accountLinks.map(link => link) : false }\r\n { props.siteOptions }\r\n { props.wishListIconMobile }\r\n { props.signInLink }\r\n { props.signOutLink }\r\n \r\n \r\n \r\n {_renderReactFragment(props.menuBar)}\r\n \r\n \r\n );\r\n};\r\n\r\nfunction _renderDesktopAccountBlock(props: IHeaderViewProps): JSX.Element | null {\r\n const {\r\n AccountInfoDropdownParentContainer,\r\n AccountInfoDropdownPopoverConentContainer,\r\n accountInfoDropdownButton,\r\n signOutLink,\r\n signInLink,\r\n accountLinks\r\n } = props;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n if (AccountInfoDropdownPopoverConentContainer) {\r\n return (\r\n \r\n {accountInfoDropdownButton}\r\n \r\n { accountLinks ? accountLinks.map(link => link) : false }\r\n {signOutLink}\r\n \r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n props.context.telemetry.error('Header content is empty, module wont render.');\r\n return null;\r\n}\r\n\r\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\r\n return (\r\n <>\r\n {items && items.length > 0 ? items.map((slot: React.ReactNode, index: number) => {\r\n return (\r\n {slot}\r\n );\r\n }) : null}\r\n \r\n );\r\n}\r\n\r\nexport default headerView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport {\n IReportReviewModalViewProps,\n IReviewCardViewProps,\n IReviewsListData,\n IReviewsListResources,\n IReviewsListState,\n IReviewsListViewProps\n} from '@msdyn365-commerce-modules/ratings-reviews';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IReviewsListProps } from '../definition-extensions/reviews-list.ext.props.autogenerated';\n\n/**\n * Build Review Card.\n * @param props - Review Card ViewProps.\n * @param resources - Resource Strings.\n * @param isUserReview - User review flag.\n * @returns JSX Element.\n */\nconst buildReviewCard = (props: IReviewCardViewProps, resources: IReviewsListResources, isUserReview: boolean) => {\n return (\n \n \n
\n {props.rating}\n {props.date}\n
\n {props.name}\n
\n \n \n {props.reviewTitle}\n {props.reviewText}\n \n \n {props.responseName}\n {props.responseDate}\n {props.responseText}\n \n \n {isUserReview ? undefined :

{resources.wasReviewHelpfulText}

}\n {props.like}\n {props.dislike}\n {props.edit}\n
\n
\n
\n );\n};\n\n/**\n * Render Product Image.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductImage = (props: IReviewsListViewProps & IReviewsListProps): 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: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\n const product = props.data.product.result;\n return (\n \n
{renderProductImage(props)}
\n
\n
{product?.Name}
\n
{product?.Name}
\n
{product?.ItemId}
\n
\n
\n );\n};\n\n/**\n * Build Review modal.\n * @param props - Review list ViewProps.\n * @returns JSX Element.\n */\nconst createReviewModal = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\n const { resources, moduleProps, reviewModal } = props;\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 * Build Review modal.\n * @param props - Review modal ViewProps.\n * @param state - Review List State.\n * @returns JSX Element.\n */\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\n return (\n \n {state.reported ? props.headerSubmitted : props.header}\n \n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\n \n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\n \n );\n};\n\n/**\n * ReviewsList view.\n * @param props - Ratings ReviewsList ViewProps.\n * @returns ReviewsList view module.\n */\nconst ReviewsListview: React.FC> = props => {\n const {\n filterByDropdown,\n heading,\n moduleProps,\n noReviewsMessage,\n noReviewsWithFilterMessage,\n pageControls,\n refineReviewsProps,\n reportReviewModal,\n reviewsListProps,\n reviewCards,\n sortByDropdown,\n state,\n userReview,\n resources\n } = props;\n\n if (!userReview && !ArrayExtensions.hasElements(reviewCards) && !state.isFilterApplied) {\n return {noReviewsMessage};\n }\n\n return (\n \n {heading}\n \n {sortByDropdown}\n {filterByDropdown}\n \n \n {userReview && buildReviewCard(userReview, resources, true)}\n {reviewCards.map(review => {\n return buildReviewCard(review, resources, false);\n })}\n \n {!ArrayExtensions.hasElements(reviewCards) && state.isFilterApplied && noReviewsWithFilterMessage}\n {pageControls}\n {createReviewModal(props)}\n {createReportModal(reportReviewModal, state)}\n \n );\n};\n\nexport default ReviewsListview;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IHeaderProps } from '../definition-extensions/header.ext.props.autogenerated';\r\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header/src/modules/header/./header';\r\n\r\nconst headerView: React.FC> = (props: IHeaderViewProps & IHeaderProps<{}>) => {\r\n const {\r\n HeaderTag,\r\n HeaderContainer,\r\n HeaderTopBarContainer,\r\n MobileMenuContainer,\r\n MobileMenuBodyContainer,\r\n MobileMenuLinksContainer,\r\n Divider\r\n } = props;\r\n return (\r\n \r\n \r\n \r\n {props.preferredStore}\r\n {_renderDesktopAccountBlock(props)}\r\n {props.wishListIconDesktop}\r\n {props.cartIcon}\r\n \r\n {_renderReactFragment(props.siteOptions)}\r\n \r\n
\r\n {_buildLogo()}\r\n {_renderReactFragment(props.menuBar)}\r\n {props.navIcon}\r\n {_renderReactFragment(props.search)}\r\n
\r\n \r\n \r\n { props.MobileMenuHeader }\r\n {_renderReactFragment(props.menuBar)}\r\n \r\n { props.accountLinks ? props.accountLinks.map(link => link) : false }\r\n { props.siteOptions }\r\n { props.wishListIconMobile }\r\n { props.signInLink }\r\n { props.signOutLink }\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nfunction _renderDesktopAccountBlock(props: IHeaderViewProps): JSX.Element | null {\r\n const {\r\n AccountInfoDropdownParentContainer,\r\n AccountInfoDropdownPopoverConentContainer,\r\n accountInfoDropdownButton,\r\n signOutLink,\r\n signInLink,\r\n accountLinks\r\n } = props;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n if (AccountInfoDropdownPopoverConentContainer) {\r\n return (\r\n \r\n {accountInfoDropdownButton}\r\n \r\n { accountLinks ? accountLinks.map(link => link) : false }\r\n {signOutLink}\r\n \r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n props.context.telemetry.error('Header content is empty, module wont render.');\r\n return null;\r\n}\r\n\r\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\r\n return (\r\n <>\r\n {items && items.length > 0 ? items.map((slot: React.ReactNode, index: number) => {\r\n return (\r\n {slot}\r\n );\r\n }) : null}\r\n \r\n );\r\n}\r\n\r\n//Moved this to a function to clean up the render code above\r\nfunction _buildLogo(): JSX.Element{\r\n return
\r\n}\r\n\r\nexport default headerView;","/*!\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISubscribeViewProps } from './subscribe';\n\n/**\n * Override form action and button action below.\n * @param event - The form event.\n */\nconst onSubmit = (event: React.FormEvent): void => {\n event.preventDefault();\n};\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns - Returns nothing.\n */\nexport const subscribeView: React.FC = props => {\n const { subscribe, subscribeContainer, heading, text, subscribeForm, emailInput, submitButton } = props;\n return (\n \n \n {heading}\n {text}\n \n \n \n {props.submitButtonLabelText}\n \n \n \n \n );\n};\n\nexport default subscribeView;\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 { ICartlinesViewProps, ICartResources, ICartViewProps, IOrderSummaryErrors } from '@msdyn365-commerce-modules/cart';\nimport { ICartLineItemViewProps } from '@msdyn365-commerce-modules/cart/dist/types/modules/cart/components/cart-line-items-promotion';\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 {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst CartView: React.FC = (props: ICartViewProps) => (\n
\n {props.title}\n {props.promotionOptions && _renderPromotions(props.promotionOptions)}\n {props.cart?.hasInvoiceLine || props.multiplePickUpEnabled ? (\n _renderCartLinesGroup(props, props.resources)\n ) : (\n \n {_renderCartlines(\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\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\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\nconst _renderCartlines = (\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n backToShoppingButton: React.ReactNode,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n cartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n mulitplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n const { emptyCartText } = resources;\n\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n if (cartLines) {\n return cartLines.map((cartLine, index) => {\n return (\n
\n {cartLine.cartline}\n {mulitplePickUp ? null : _renderBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {mulitplePickUp ? (\n \n {_renderGroupBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n ) : cartLine.addToOrderTemplate ? (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n ) : (\n <>\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n )}\n
\n );\n });\n }\n return cartDataResult ? (\n
\n

{emptyCartText}

\n {backToShoppingButton}\n
\n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * On Toggle function.\n * @param cartLine -Cartline.\n * @param isBopisSelected -Boolean.\n * @returns Set state of button.\n */\nconst onToggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\n cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(!isBopisSelected);\n};\n\n/**\n * On change store function.\n * @param cartLine -CartLine items prop.\n * @returns Set state of button.\n */\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\n cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(true);\n};\n\nconst _renderBOPISBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for BOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const {\n shipInsteadDisplayText,\n shipToAddressDisplayText,\n pickItUpDisplayText,\n pickUpAtStoreWithLocationText,\n changeStoreDisplayText\n } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n
\n {isBopisSelected ? (\n {pickUpAtStoreWithLocationText}\n ) : (\n {shipToAddressDisplayText}\n )}\n
\n {isBopisSelected && (\n
\n {cartLine.pickUpInStore.orgUnitName}\n \n
\n )}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n
\n );\n};\n\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\n if (!errorData || errorData.errors.length === 0) {\n return null;\n }\n return (\n \n {errorData.header}\n {errorData.errors}\n \n );\n};\n\nconst _renderOrderSummarylines = (\n orderSummaryLines: IOrderSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!orderSummaryLines) {\n return null;\n }\n return (\n \n {props.promoCode}\n {orderSummaryLines.subtotal}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.orderTotal}\n \n );\n};\n\nconst _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\nconst _renderCartLinesGroup = (props: ICartViewProps, resources: ICartResources): JSX.Element | undefined => {\n if (props.cartLinesGroup && props.cartLinesGroup.length > 0) {\n return (\n
\n {props.cartLinesGroup.map(cartlines => {\n return (\n
\n {_renderCartLinesGroupHeader(\n cartlines[0],\n props.storeSelector,\n resources,\n _countItems(cartlines),\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n {_renderCartlines(\n cartlines,\n props.resources,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\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};\nconst _renderCartLinesGroupHeader = (\n cartLine: ICartlinesViewProps,\n storeSelector: React.ReactNode | undefined,\n resources: ICartResources,\n count: number,\n emailDeliveryModeCode?: string\n) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { pickUpText, shippingText, emailshippingText, payInvoicesDisplayText } = resources;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n if (cartLine.data && cartLine.data.cartline.IsInvoiceLine) {\n groupTitle = payInvoicesDisplayText;\n } else 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, resources, count)}\n
\n \n );\n};\n\nconst _renderGroupBOPISBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n {isBopisSelected ? (\n \n ) : null}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n \n );\n};\n\nconst _countItems = (cartLine: ICartlinesViewProps[]): number => {\n let countItem = 0;\n countItem = cartLine.reduce((count, item) => {\n return count + (item.data?.cartline.Quantity || 0);\n }, 0);\n return countItem;\n};\n\nconst _renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const suffix = count > 1 ? itemsLabel : itemLabel;\n return (\n <>\n \n {isBopisSelected ? (\n

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

\n ) : null}\n

\n ({count}\n {` `}\n {suffix})\n

\n
\n \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 { IHistogramItemViewProps, IRatingsHistogramViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst RatingsHistogramView: React.FC = props => {\n const { heading, histogramItems, histogramProps, moduleProps } = props;\n return (\n \n {heading}\n \n {histogramItems.map(item => {\n return histogramItem(item);\n })}\n \n \n );\n};\n\nconst histogramItem = (props: IHistogramItemViewProps) => {\n return (\n \n {props.starLabel}\n {props.bar}\n {props.percentage}\n \n );\n};\n\nexport default RatingsHistogramView;\n","/*!\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 { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressList, IAddressListItem, IAddressListProps } from '../../common/components/address-list';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { IAccountManagementAddressViewProps } from './account-management-address';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address List Component.\n * @param param0 - Root param.\n * @param param0.List - Address list.\n * @param param0.isShowList - Boolean.\n * @param param0.heading - Address heading.\n * @param param0.items - IAddressListItem[].\n * @returns - AddressListComponent Node.\n */\nconst AddressList: React.FC = ({ List, isShowList, heading, items }) => {\n if (!isShowList) {\n return null;\n }\n\n return (\n \n {heading}\n {items.map((item: IAddressListItem) => {\n const { Item, key, error, showItems, isShowPrimaryButton, primaryButton, editButton, removeButton } = item;\n const { Error, isShowError, title, message } = error;\n return (\n \n \n {isShowError && (\n \n {title}\n {message}\n \n )}\n {isShowPrimaryButton && primaryButton}\n {editButton}\n {removeButton}\n \n );\n })}\n \n );\n};\n\n/**\n * Address Lists Component.\n * @param param0 - Root param.\n * @param param0.ListAddress - List address.\n * @param param0.heading - List heading.\n * @param param0.isShowEmptyListMessage - Boolean.\n * @param param0.emptyListMessage - Empty list message.\n * @param param0.addButton - Add button.\n * @param param0.primaryAddressList - Primary address.\n * @param param0.otherAddressList - Other address.\n * @returns Address Lists Component Node.\n */\nconst AddressLists: React.FC = ({\n ListAddress,\n heading,\n isShowEmptyListMessage,\n emptyListMessage,\n addButton,\n primaryAddressList,\n otherAddressList\n}) => {\n return (\n \n {heading}\n {isShowEmptyListMessage && emptyListMessage}\n {addButton}\n \n \n \n );\n};\n\n/**\n * AddressAddUpdateComponent.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - Error message.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns Address add update component node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Account Management Address View Component.\n * @param props - Props.\n * @returns - AccountAddressManagement Module.\n */\nconst AccountManagementAddressView: React.FC = props => {\n const {\n AccountAddressManagement,\n infoMessageBar,\n viewState,\n showAddressList,\n showAddOrUpdateAddress,\n screenReaderNotification\n } = props;\n\n return (\n \n {infoMessageBar}\n {viewState.isShowAddresList && }\n {viewState.isShowAddOrUpdateAddress && }\n {screenReaderNotification}\n \n );\n};\n\nexport default AccountManagementAddressView;\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 IHeader,\n IList,\n IOrderHistoryViewProps,\n IOrderInformation,\n ISalesOrder\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderHistoryOrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n channelName,\n createdDate,\n count,\n amount,\n channelReferenceId\n}) => (\n \n {channelName}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const OrderHistoryGroupDelivery: React.FC = ({\n deliveryProps,\n heading,\n count,\n processing,\n address,\n trackingInfo\n}) => (\n \n {heading}\n {count}\n {processing}\n {address}\n {trackingInfo}\n \n);\n\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n {salesLine.salesLine}\n ))}\n \n )}\n \n);\n\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\n \n {heading}\n {orderCountLabel}\n {extraActions}\n \n);\n\nexport const OrderHistorySalesOder: React.FC = ({\n salesOrderProps,\n orderInfomation,\n groups,\n orderDetailsLink,\n expandProductsButton\n}) => (\n \n {orderInfomation && }\n {groups && }\n {expandProductsButton}\n {orderDetailsLink}\n \n);\n\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\n \n {salesOrders && salesOrders.map((salesOrder, index) => )}\n \n);\n\nconst OrderHistoryView: React.FC = ({\n orderHistoryProps,\n header,\n alert,\n loading,\n emptyMessage,\n backToShoppingLink,\n list,\n table,\n moreButton\n}) => (\n \n {header && }\n {loading}\n {alert && (\n <>\n {alert}\n {backToShoppingLink}\n \n )}\n {emptyMessage && (\n \n {emptyMessage}\n {backToShoppingLink}\n \n )}\n {list && }\n {table}\n {moreButton && moreButton}\n \n);\n\nexport default OrderHistoryView;\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 { ILoyaltySignUpViewProps } from './loyalty-sign-up';\n\nconst LoyaltySignUpView: React.FC = props => {\n const {\n LoyaltySignUp,\n heading,\n memberHeading,\n signInLink,\n signUpText,\n signUpButton,\n detailsLink,\n termsLink,\n loading,\n infoMessageBar\n } = props;\n\n if (loading) {\n props.context.telemetry.error('LoyaltySignUp data is empty, module wont render');\n return null;\n }\n\n return (\n \n {infoMessageBar}\n {memberHeading}\n {heading}\n {detailsLink}\n {signUpText}\n {termsLink}\n {signUpButton}\n {signInLink}\n \n );\n};\n\nexport default LoyaltySignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\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 { 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 { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ISocialShareConfig, ISocialShareProps, orientation } from './social-share.props.autogenerated';\n\nexport interface ISocialShareViewProps extends ISocialShareProps {\n isConsentGiven: boolean;\n SocialShareItemElements: React.ReactNode[];\n SocialShare: IModuleProps;\n SocialShareList: INodeProps;\n SocialShareItem: INodeProps;\n SocialShareItemCustomization: INodeProps;\n}\n\n/**\n *\n * SocialShare component.\n * @extends {React.PureComponent>}\n */\nclass SocialShare extends React.PureComponent> {\n constructor(props: ISocialShareProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { slots } = this.props;\n\n if (!slots || !ArrayExtensions.hasElements(slots.socialShareItems)) {\n this.props.context.telemetry.error('No social media is enable for sharing, module wont render');\n return null;\n }\n\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!isConsentGiven && !this.props.context.request.params.isEditor) {\n return null;\n }\n\n const viewprops = {\n ...this.props,\n SocialShare: {\n moduleProps: this.props,\n className: classnames('ms-social-share', this.props.config.className)\n },\n SocialShareList: {\n 'data-title': this.props.config.caption,\n className: `ms-social-share-ul ${this.props.config.caption && 'caption'} ${\n this.props.config.orientation === orientation.vertical ? 'vertical' : ''\n }`,\n tag: 'ul',\n role: 'group'\n },\n SocialShareItem: {\n className: 'ms-social-share-li',\n tag: 'li',\n tabIndex: '0',\n role: 'link'\n },\n SocialShareItemElements: slots && slots.socialShareItems.length > 0 && slots.socialShareItems\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n}\n\nexport default SocialShare;\n","/*!\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","/*!\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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IFooterItemConfig, IFooterItemProps, IHeadingData, ILinkData } from './footer-item.props.autogenerated';\n\nexport interface IFooterViewProps extends IFooterItemProps {\n heading: React.ReactNode;\n image: React.ReactNode;\n text: React.ReactNode;\n linkText: React.ReactNode;\n className?: string;\n FooterItem: IModuleProps;\n HeadingContainer: INodeProps;\n ItemContainer: INodeProps;\n Link: INodeProps;\n EditableLink: React.ReactNode;\n}\n\n/**\n *\n * FooterItem component.\n * @extends {React.PureComponent>}\n */\nexport class FooterItem extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private attributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: IFooterItemProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n // Construct telemetry attribute to render\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public render(): JSX.Element {\n const { heading, image, link, text } = this.props.config;\n const footerItemClassName = classnames('ms-footer__item', this.props.config.className);\n const linkText = link && link.linkText ? link.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n const viewProps: IFooterViewProps = {\n ...this.props,\n heading: this._createHeading(heading!),\n image: this._createImageMarkup(image!),\n text: this._createText(text!),\n linkText: this._createLinkText(link!),\n EditableLink: this._createLink(link!),\n\n FooterItem: {\n moduleProps: this.props,\n className: footerItemClassName\n },\n\n HeadingContainer: {\n className: 'ms-footer__heading'\n },\n\n ItemContainer: {\n className: 'ms-footer__link__container'\n },\n\n // @ts-expect-error\n Link: link &&\n link.linkUrl &&\n link.linkUrl.destinationUrl && {\n tag: 'a',\n role: 'link',\n className: 'ms-footer__link',\n href: link.linkUrl.destinationUrl,\n title: linkText,\n 'aria-label': link.ariaLabel,\n target: link.openInNewTab ? '_blank' : undefined,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText),\n ...this.attributes\n },\n className: footerItemClassName\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.text = event.target.value);\n\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.link!.linkText = event.target.value);\n\n private _createLink(link: ILinkData): React.ReactNode | null {\n if (link) {\n const linkText = link.linkText ? link.linkText : '';\n\n // TODO: Update the inner tag in the anchor link to span\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-footer__link',\n linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: this.attributes!,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText)\n };\n return (\n \n );\n }\n return null;\n }\n\n private _createLinkText(link: ILinkData): React.ReactNode | null {\n if (!link || !link.linkText) {\n return null;\n }\n\n return {link.linkText};\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _createText(text: string): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createImageMarkup(item: Msdyn365.IImageData, ariaHiddenAttr?: boolean): React.ReactNode | null {\n if (!item || !item.src || item.src.length === 0) {\n return null;\n }\n\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=24&h=24&m=6', w: 0, h: 0 },\n lg: { q: 'w=24&h=24&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n return (\n \n );\n }\n}\n\nexport default FooterItem;\n","/*--------------------------------------------------------------\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IHeaderProps } from '../definition-extensions/header.ext.props.autogenerated';\r\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header/src/modules/header/./header';\r\n\r\nconst headerView: React.FC> = (props: IHeaderViewProps & IHeaderProps<{}>) => {\r\n const {\r\n HeaderTag,\r\n HeaderContainer,\r\n HeaderTopBarContainer,\r\n MobileMenuContainer,\r\n MobileMenuBodyContainer,\r\n MobileMenuLinksContainer,\r\n Divider\r\n } = props;\r\n return (\r\n \r\n \r\n \r\n {props.navIcon}\r\n {props.logo}\r\n {_renderReactFragment(props.search)}\r\n {props.preferredStore}\r\n {_renderDesktopAccountBlock(props)}\r\n {props.wishListIconDesktop}\r\n \r\n {props.cartIcon}\r\n {_renderReactFragment(props.siteOptions)}\r\n \r\n \r\n \r\n { props.MobileMenuHeader }\r\n {_renderReactFragment(props.menuBar)}\r\n \r\n { props.accountLinks ? props.accountLinks.map(link => link) : false }\r\n { props.siteOptions }\r\n { props.wishListIconMobile }\r\n { props.signInLink }\r\n { props.signOutLink }\r\n \r\n \r\n \r\n {_renderReactFragment(props.menuBar)}\r\n \r\n \r\n );\r\n};\r\n\r\nfunction _renderDesktopAccountBlock(props: IHeaderViewProps): JSX.Element | null {\r\n const {\r\n AccountInfoDropdownParentContainer,\r\n AccountInfoDropdownPopoverConentContainer,\r\n accountInfoDropdownButton,\r\n signOutLink,\r\n signInLink,\r\n accountLinks\r\n } = props;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n if (AccountInfoDropdownPopoverConentContainer) {\r\n return (\r\n \r\n {accountInfoDropdownButton}\r\n \r\n { accountLinks ? accountLinks.map(link => link) : false }\r\n {signOutLink}\r\n \r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n props.context.telemetry.error('Header content is empty, module wont render.');\r\n return null;\r\n}\r\n\r\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\r\n return (\r\n <>\r\n {items && items.length > 0 ? items.map((slot: React.ReactNode, index: number) => {\r\n return (\r\n {slot}\r\n );\r\n }) : null}\r\n \r\n );\r\n}\r\n\r\nexport default headerView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { addThrottledEvent, Drawer, IModuleProps, INodeProps, KeyCodes, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport React from 'react';\n\nimport { ISitePickerConfig, ISitePickerProps } from './site-picker.props.autogenerated';\n\nexport interface ISitePickerViewProps extends ISitePickerProps {\n SitePicker: IModuleProps;\n SitePickerMenu: INodeProps;\n SitePickerMenuSpan: INodeProps;\n SitePickerMenuList: INodeProps;\n SitePickerMenuListItem: INodeProps;\n SitePickerMenuListItemArray: React.ReactNode[] | undefined;\n siteOptionsState: boolean;\n SitePickerMobileContainer: INodeProps;\n isMobileView: boolean;\n renderSiteOptions(): void;\n resetSiteOptionsState(): void;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\ninterface ISitePickerState {\n expandSiteOptions: boolean;\n isMobile: boolean;\n}\n\n/**\n *\n * SitePicker component.\n * @extends {React.PureComponent>}\n */\nclass SitePicker extends React.PureComponent, ISitePickerState> {\n private readonly _cookieName: string = '_msdyn365___site_';\n\n private readonly _cookieExpirationInSeconds: number = 5_184_000;\n\n private readonly _sitePickerMenuNode: React.RefObject;\n\n private readonly _sitePickerMenuButton: React.RefObject;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n @observable\n private viewport: GridSize;\n\n public constructor(props: ISitePickerViewProps) {\n super(props);\n this._handleChange = this._handleChange.bind(this);\n this._sitePickerMenuNode = React.createRef();\n this._sitePickerMenuButton = React.createRef();\n this._renderSiteOptions = this._renderSiteOptions.bind(this);\n this._resetSiteOptionsState = this._resetSiteOptionsState.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this._handleOutsideClick = this._handleOutsideClick.bind(this);\n this._updateViewport = this._updateViewport.bind(this);\n this.viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this.state = {\n expandSiteOptions: false,\n isMobile: this.isMobile\n };\n }\n\n @computed get isMobile(): boolean {\n return this.viewport === 'xs' || this.viewport === 'sm';\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document?.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document?.body?.addEventListener('mousedown', this._handleOutsideClick);\n this.resizeThrottledEventHandler = window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n this._updateViewport();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document?.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document?.body?.removeEventListener('mousedown', this._handleOutsideClick, false);\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n const viewProps: ISitePickerViewProps = {\n ...(this.props as ISitePickerProps),\n SitePicker: {\n moduleProps: this.props,\n className: classnames('ms-site-picker', this.props.config.className, this.state.isMobile ? 'mobile-view' : 'desktop-view'),\n tag: 'div'\n },\n SitePickerMenu: {\n tag: 'button' as NodeTag,\n className: 'ms-site-picker__button',\n 'aria-label': this.props.config.heading?.text,\n 'aria-expanded': this.state.expandSiteOptions,\n onClick: this.props,\n ref: this._sitePickerMenuButton\n },\n SitePickerMenuSpan: {\n className: 'ms-site-picker__span',\n tag: 'span'\n },\n SitePickerMenuList: {\n className: 'ms-site-picker__list',\n role: 'menu',\n tag: 'ul',\n ref: this._sitePickerMenuNode\n },\n SitePickerMenuListItem: {\n className: 'ms-site-picker__list__item',\n role: 'presentation',\n tag: 'li'\n },\n SitePickerMobileContainer: {\n tag: Drawer,\n className: 'ms-site-picker__drawer',\n toggleButtonText: this.props.config.heading?.text,\n openGlyph: 'ms-site-picker__drawer-open',\n closeGlyph: 'ms-site-picker__drawer-close',\n glyphPlacement: 'end'\n },\n isMobileView: this.state.isMobile,\n SitePickerMenuListItemArray: this._renderSitePickerImage(),\n renderSiteOptions: this._renderSiteOptions,\n resetSiteOptionsState: this._resetSiteOptionsState,\n siteOptionsState: this.state.expandSiteOptions\n };\n return this.props.renderView(viewProps);\n }\n\n private _renderSiteOptions(): void {\n const expandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !expandSiteOptionsState\n });\n }\n\n private _resetSiteOptionsState(): void {\n this.setState({\n expandSiteOptions: false\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _escFunction = (event: any) => {\n const key = event.keyCode;\n if (this.state.expandSiteOptions) {\n switch (key) {\n case KeyCodes.Escape: {\n setTimeout(() => {\n const nextFocus = document && document.activeElement;\n if (\n this._sitePickerMenuButton?.current?.contains(nextFocus) ||\n this._sitePickerMenuNode?.current?.contains(nextFocus)\n ) {\n this._resetSiteOptionsState();\n this._sitePickerMenuButton?.current?.focus();\n }\n }, 50);\n break;\n }\n case KeyCodes.Tab: {\n setTimeout(() => {\n const nextFocus = document && document.activeElement;\n if (\n !this._sitePickerMenuButton?.current?.contains(nextFocus) &&\n !this._sitePickerMenuNode?.current?.contains(nextFocus)\n ) {\n this._resetSiteOptionsState();\n }\n }, 50);\n break;\n }\n default:\n return;\n }\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _handleOutsideClick = (event: any) => {\n if (\n (this._sitePickerMenuButton.current?.contains(event.target) && this.state.expandSiteOptions) ||\n (this._sitePickerMenuNode.current?.contains(event.target) && this.state.expandSiteOptions)\n ) {\n return;\n }\n this._resetSiteOptionsState();\n };\n\n private _handleChange(e: React.MouseEvent): void {\n e.preventDefault();\n if (e.currentTarget.href && e.currentTarget.href.length > 0 && window) {\n if (this.props.context.request.cookies.isConsentGiven()) {\n const cookieConfig = { maxAge: this._cookieExpirationInSeconds };\n this.props.context.request.cookies.set(this._cookieName, e.currentTarget.href, cookieConfig);\n }\n window.location.assign(e.currentTarget.href);\n }\n }\n\n private _renderSitePickerImage(): React.ReactNode[] | undefined {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\n sm: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\n md: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\n lg: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\n xl: { q: 'w=40&h=20&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n const siteOptions = this.props.config.siteOptions && this.props.config.siteOptions;\n return (\n siteOptions &&\n siteOptions.map((item, index) => {\n const image = item?.siteImage;\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: image?.imageSettings?.viewports ? image.imageSettings : defaultImageSettings\n };\n return (\n \n {item?.siteName}\n \n \n );\n })\n );\n }\n\n private _updateViewport(): void {\n this.viewport = this._getViewport();\n this.setState({ isMobile: this.isMobile });\n }\n\n private _getViewport(): GridSize {\n const { context } = this.props;\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (typeof window !== undefined && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n return 'xs';\n }\n}\n\nexport default SitePicker;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, INodeProps, Modal, ModalBody, ModalFooter, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderTemplateLineViewProps } from './components';\nimport { IOrderTemplateViewProps } from './order-template';\n\nconst OrderTemplateLinesView: React.FC = (props: IOrderTemplateViewProps) => {\n const {\n OrderTemplateLines,\n status,\n statusMessage,\n heading,\n ProductsTable,\n ProductsTableHeading,\n orderLines,\n ProductsTableRow,\n productsStatusMessage,\n OrderTemplateActions,\n orderActions,\n pagination,\n itemAddedToCartDialog,\n bulkOrderLineActions,\n isDetailsDisplayed,\n detailedProductView,\n toggleDetailsDisplayed,\n resources: {\n cancelBtnLabel,\n productNumberText,\n productText,\n productUnitPriceText,\n productUOMText,\n productQuantityText,\n productLineCatalogName\n }\n } = props;\n\n const toggleDetails = React.useCallback(() => {\n toggleDetailsDisplayed && toggleDetailsDisplayed(undefined);\n }, [toggleDetailsDisplayed]);\n\n return (\n \n {heading}\n {OrderTemplateActions && (\n \n {orderActions?.addTemplateToBag}\n {orderActions?.renameTemplate}\n {orderActions?.removeTemplate}\n {orderActions?.actionsSplitButton}\n {!isDetailsDisplayed && productsStatusMessage}\n \n )}\n {bulkOrderLineActions}\n {status !== 'SUCCESS' && statusMessage}\n {ProductsTable && orderLines && orderLines.length > 0 && (\n \n \n {ProductsTableHeading}\n \n {orderLines &&\n orderLines.map(product => {\n return _renderItem(product, productQuantityText, ProductsTableRow);\n })}\n \n \n {pagination}\n \n )}\n {itemAddedToCartDialog}\n \n Product Details\n \n
    \n
  • {detailedProductView?.productImage}
  • \n
  • \n {productText}:\n {detailedProductView?.productInfo}\n
  • \n
  • \n {productLineCatalogName}:\n {detailedProductView?.productLineCatalog}\n
  • \n
  • \n {productNumberText}:\n {detailedProductView?.productNumber}\n
  • \n
  • \n {productUnitPriceText}:\n {` `}\n {detailedProductView?.productPrice}\n
  • \n
  • \n {productUOMText}:\n {` `}\n {detailedProductView?.productUnitOfMeasure}\n
  • \n
  • \n {productQuantityText}:\n {detailedProductView?.productQuantityView}\n
  • \n {productsStatusMessage &&
  • {productsStatusMessage}
  • }\n
\n
\n \n \n \n \n
\n );\n};\n\nconst _renderItem = (product: IOrderTemplateLineViewProps, quantityLabel: string, ProductsTableRow?: INodeProps): JSX.Element | null => {\n if (!product) {\n return null;\n }\n\n const {\n key,\n selectLine,\n productLineCatalog,\n productImage,\n productPrice,\n productNumber,\n addToBagButton,\n removeButton,\n productInfo,\n productUnitOfMeasure,\n productQuantityView,\n productQuantity,\n popUp,\n isMobile,\n extraActionsPopup,\n isMultipleCatalogFeatureEnabledInHq,\n disabled\n } = product;\n\n const lineVisibility = disabled\n ? {\n pointerEvents: 'none',\n opacity: 0.5\n }\n : {\n pointerEvents: 'auto',\n opacity: 1\n };\n\n return (\n \n {selectLine}\n {!isMobile && isMultipleCatalogFeatureEnabledInHq && {productLineCatalog}}\n {productImage}\n {isMobile ? (\n \n
{productNumber}
\n
\n {quantityLabel}:{` `}\n {productQuantity}\n
\n \n ) : (\n {productNumber}\n )}\n {!isMobile && {productInfo}}\n {!isMobile && {productPrice}}\n {!isMobile && {productUnitOfMeasure}}\n {!isMobile && {productQuantityView}}\n {isMobile && {popUp}}\n {!isMobile && !isMultipleCatalogFeatureEnabledInHq && (\n \n {addToBagButton}\n {removeButton}\n \n )}\n {extraActionsPopup}\n
\n );\n};\n\nexport default OrderTemplateLinesView;\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 { IGroup, IGroupDelivery, IGroups } from '../../common/get-groups';\nimport { IOrderInformation } from '../../common/get-order-information';\nimport { ISalesLine } from '../../common/get-sales-line';\nimport { ISalesOrder } from './components/get-sales-order';\nimport { IHeader, IList, IOrderHistoryViewProps } from './order-history';\n\nexport const OrderHistoryOrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n channelName,\n createdDate,\n count,\n amount,\n channelReferenceId\n}) => (\n \n {channelName}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const OrderHistoryGroupDelivery: React.FC = ({\n deliveryProps,\n heading,\n count,\n processing,\n address,\n trackingInfo\n}) => (\n \n {heading}\n {count}\n {processing}\n {address}\n {trackingInfo}\n \n);\n\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\n \n {delivery && }\n {salesLines && (\n \n {salesLines.map((salesLine: ISalesLine) => (\n {salesLine.salesLine}\n ))}\n \n )}\n \n);\n\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group: IGroup, index: number) => (\n \n ))}\n \n);\n\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\n \n {heading}\n {orderCountLabel}\n {extraActions}\n \n);\n\nexport const OrderHistorySalesOder: React.FC = ({\n salesOrderProps,\n orderInfomation,\n groups,\n orderDetailsLink,\n expandProductsButton\n}) => (\n \n {orderInfomation && }\n {groups && }\n {expandProductsButton}\n {orderDetailsLink}\n \n);\n\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\n \n {salesOrders && salesOrders.map((salesOrder: ISalesOrder, index: number) => )}\n \n);\n\nconst OrderHistoryView: React.FC = ({\n orderHistoryProps,\n header,\n alert,\n loading,\n emptyMessage,\n backToShoppingLink,\n list,\n table,\n moreButton\n}) => (\n \n {header && }\n {loading}\n {alert && (\n <>\n {alert}\n {backToShoppingLink}\n \n )}\n {emptyMessage && (\n <>\n {emptyMessage}\n {backToShoppingLink}\n \n )}\n {list && }\n {table}\n {moreButton && moreButton}\n \n);\n\nexport default OrderHistoryView;\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 { IHistogramItemViewProps } from './component/components';\nimport { IRatingsHistogramViewProps } from './ratings-histogram';\n\nconst RatingsHistogramView: React.FC = props => {\n const { heading, histogramItems, histogramProps, moduleProps } = props;\n\n return (\n \n {heading}\n \n {histogramItems.map(item => {\n return histogramItem(item);\n })}\n \n \n );\n};\n\nconst histogramItem = (props: IHistogramItemViewProps) => {\n return (\n \n {props.starLabel}\n {props.bar}\n {props.percentage}\n \n );\n};\n\nexport default RatingsHistogramView;\n","/*!\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 { IHeader, IMapViewProps } from './map';\n\n/**\n * Render the heading.\n * @param param0 -- Heading props.\n * @param param0.headerProps -- Heading Props.\n * @param param0.heading -- Heading Node.\n * @returns -- Returns the node.\n */\nconst MapHeader: React.FC = ({ headerProps, heading }) => {heading};\n\n/**\n * Renders the map view props.\n * @param param0 -- Map view props.\n * @param param0.ModuleProps -- Module props.\n * @param param0.Header -- Header props.\n * @param param0.MapProps -- Map props.\n * @returns -- Returns the map module.\n */\nconst MapView: React.FC = ({ ModuleProps, Header, MapProps }) => (\n \n {Header && }\n \n \n);\n\nexport default MapView;\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, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IFooterViewProps } from './footer-item';\n\n/**\n *\n * FooterItemView component.\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { FooterItem } = this.props;\n return {this._renderElement(this.props)};\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\n if (heading) {\n return {heading} ;\n } else if (Link && image) {\n return (\n \n {linkText}\n {image}\n \n );\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IContentBlockAdditionalContentItemViewProps, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport { IContentBlockViewProps } from './content-block';\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\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 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 { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport {\n IMediaGalleryThumbnailItemViewProps,\n IMediaGalleryThumbnailsViewProps,\n IMediaGalleryViewProps\n} from '@msdyn365-commerce-modules/media-gallery';\nimport { getFallbackImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, KeyCodes, Module, Node, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\n/**\n * Render the thumbnail item images.\n * @param thumbnail - The carousel thumbnail line props.\n * @returns Return HTML having thumnailcontainer props with image.\n */\nconst renderThumbnailItem = (thumbnail: IMediaGalleryThumbnailItemViewProps): JSX.Element => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\n const { ThumbnailItemContainerProps, Picture } = thumbnail;\n\n return {Picture};\n};\n\n/**\n * Gets the thumbnail item to display media gallery images.\n * @param image - The media gallery images.\n * @param imageSettings - Image settings for the image gallery items.\n * @param imageId - Image id.\n * @param modifiedActiveIndex - Modified Index of the images when selection changes.\n * @param props - The Media gallery view props from business layer.\n * @returns Return thumbnail view props which will be used to render images.\n */\nconst GetThumbnailItemComponent = (\n image: IImageData,\n imageSettings: IImageSettings,\n imageId: number,\n modifiedActiveIndex: number,\n props: IMediaGalleryViewProps\n): IMediaGalleryThumbnailItemViewProps => {\n let fallbackImage: string | undefined = '';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Site level config can be of any type.\n const emptyPlaceHolderImage = props.context.app.config?.placeholderImageName as string;\n if (props.data.product.result) {\n fallbackImage = getFallbackImageUrl(\n props.data.product.result.ItemId,\n props.context.request.apiSettings,\n props.context.request.app?.config?.OmniChannelMedia\n );\n }\n if (emptyPlaceHolderImage && fallbackImage) {\n fallbackImage = `${fallbackImage},${emptyPlaceHolderImage}`;\n }\n\n /**\n * OnClick method of media gallery item.\n */\n const onClick = () => {\n props.callbackToggle?.();\n props.callbackThumbnailClick?.(imageId);\n props.state.activeIndex = imageId;\n };\n\n const classes = classnames(\n 'ms-media-gallery__thumbnail-item',\n modifiedActiveIndex === imageId ? 'ms-media-gallery__thumbnail-item-active' : ''\n );\n\n /**\n * Keydown event of media gallery item.\n * @param event - React.KeyboardEvent.\n */\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.keyCode === KeyCodes.Enter) {\n event.preventDefault();\n onClick();\n }\n };\n const defaultIndex = 0;\n return {\n ThumbnailItemContainerProps: {\n tag: 'li' as NodeTag,\n className: classes,\n role: 'presentation',\n key: imageId\n },\n Picture: (\n \n \n \n \n \n \n \n \n )\n };\n};\n\n/**\n * Gets the empty thumbnail item to display media gallery images.\n * @param imageSettings - Image settings for the image gallery items.\n * @param props - The Media gallery view props from business layer.\n * @returns Return thumbnail view props which will be used to render empty images.\n */\nconst GetEmptyThumbnailItemComponent = (\n imageSettings: IImageSettings,\n props: IMediaGalleryViewProps\n): IMediaGalleryThumbnailItemViewProps => {\n let fallbackImage: string | undefined = '';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Site level config can be of any type.\n const emptyPlaceHolderImage = props.context.app.config?.placeholderImageName as string;\n if (props.data.product.result) {\n fallbackImage = getFallbackImageUrl(\n props.data.product.result.ItemId,\n props.context.request.apiSettings,\n props.context.request.app?.config?.OmniChannelMedia\n );\n }\n if (emptyPlaceHolderImage && fallbackImage) {\n fallbackImage = `${fallbackImage},${emptyPlaceHolderImage}`;\n }\n return {\n ThumbnailItemContainerProps: {\n tag: 'li' as NodeTag,\n className: 'ms-media-gallery__thumbnail-item',\n role: 'tab',\n tabIndex: 0,\n key: 0,\n 'aria-label': '',\n 'aria-selected': true\n },\n Picture: (\n \n )\n };\n};\n\n/**\n * Update media gallery items method.\n * @param items - The media gallery thumbnail item view props.\n * @returns The IImageData array.\n */\nconst getMediaGalleryItems = (items?: IMediaGalleryThumbnailItemViewProps[]): IImageData[] | undefined => {\n return items?.map(item => {\n return {\n altText: item.Picture.props.altText,\n src: item.Picture.props.src\n };\n });\n};\n\nconst defaultThumbnailImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 },\n xl: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 }\n },\n lazyload: true,\n cropFocalRegion: true\n};\n\n/**\n * Render the Media gallery thumbnails to represent images in grid view.\n * @param thumbnails - The thumbnail view props.\n * @param props - The media gallery view props.\n * @returns - The single slide carousel component to render as media gallery image.\n */\nconst renderThumbnails = (thumbnails: IMediaGalleryThumbnailsViewProps, props: IMediaGalleryViewProps): JSX.Element => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\n const { ThumbnailsContainerProps, SingleSlideCarouselComponentProps } = thumbnails;\n const { state, Thumbnails } = props;\n const mediaGalleryItems = getMediaGalleryItems(Thumbnails.items);\n\n const items: IMediaGalleryThumbnailItemViewProps[] | undefined =\n // eslint-disable-next-line multiline-ternary -- need multiline for easy code reading\n state.lastUpdate && mediaGalleryItems && mediaGalleryItems[0].src === 'empty'\n ? [GetEmptyThumbnailItemComponent(defaultThumbnailImageSettings, props)]\n : // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery\n mediaGalleryItems?.map((item: IImageData, id: number) =>\n GetThumbnailItemComponent(item, defaultThumbnailImageSettings, id, state.activeIndex, props)\n );\n\n return (\n \n {items?.map(renderThumbnailItem)}\n \n );\n};\n\n/**\n * Render the Media gallery items using viewprops.\n * @param props - The media gallery view props.\n * @returns The media gallery module wrapping up images node.\n */\nconst mediaGalleryView: React.FC = props => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\n const { CarouselProps, Thumbnails, MediaGallery, Modal } = props;\n return (\n \n \n {Modal}\n {renderThumbnails(Thumbnails, props)}\n \n );\n};\n\nexport default mediaGalleryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IReviewModalViewProps } from '../../common/review-modal';\nimport { IWriteReviewViewProps } from './write-review';\n\nconst WriteReviewView: React.FC = props => {\n const { heading, signInMessage, signInButton, modalToggle, reviewModal, moduleProps } = props;\n const isAuthenticated = props.context.request.user.isAuthenticated;\n return (\n \n {heading}\n {!isAuthenticated ? (\n <>\n {signInMessage}\n {signInButton}\n \n ) : (\n <>\n {modalToggle}\n {createReviewModal(reviewModal, moduleProps)}\n \n )}\n \n );\n};\n\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\n return (\n \n {props.modalHeader}\n \n \n \n {props.rating}\n {props.ratingLabel}\n \n \n {props.titleLabel}\n {props.titleInput}\n \n \n {props.textLabel}\n {props.textInput}\n \n {props.privacyPolicyUrl}\n {props.error}\n \n \n \n {props.submitButton}\n {props.cancelButton}\n \n \n );\n};\n\nexport default WriteReviewView;\n"],"sourceRoot":""}