{"version":3,"sources":["webpack:///src/modules/store-selector/store-selector.view.tsx?b873","webpack:///src/modules/account-profile-edit/components/account-profile-edit-loading-icon.tsx?e178","webpack:///src/index.ts?c6ae","webpack:///src/modules/iframe/iframe.tsx?d14a","webpack:///./src/modules/advanced-notes/advanced-notes.tsx?0cd5","webpack:///src/modules/store-selector/components/selected-store/selected-store.tsx?8d1a","webpack:///src/modules/store-selector/store-selector.tsx?ce13","webpack:///src/modules/account-profile-edit/components/account-profile-edit-button.tsx?8f71","webpack:///src/modules/loyalty-sign-up/components/loyalty-sign-up-small-components.tsx?d781","webpack:///src/modules/loyalty-sign-up/loyalty-sign-up.tsx?f29d","webpack:///src/modules/iframe/iframe.view.tsx?dd86","webpack:///./src/modules/advanced-notes/advanced-notes.view.tsx?f5d4","webpack:///src/modules/account-profile-edit/components/account-profile-edit-label.tsx?505c","webpack:///./src/themes/gardner-theme/views/footer-item.view.tsx?7453","webpack:///src/modules/adventureworks/views/content-block.view.tsx?ebaa","webpack:///src/modules/adventureworks/views/order-details.view.tsx?1e8c","webpack:///src/modules/adventureworks/views/b2b-requests-status.view.tsx?b8db","webpack:///src/modules/account-profile-edit/components/account-profile-edit-error.tsx?a0b2","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/account-profile-edit/account-profile-edit.view.tsx?72b7","webpack:///src/modules/store-selector/components/pickup-option-list.tsx?9a9c","webpack:///src/modules/check-in-for-pickup/check-in-confirmation.tsx?9d47","webpack:///src/modules/check-in-for-pickup/check-in-error.tsx?9f7f","webpack:///src/modules/check-in-for-pickup/check-in-for-pickup.tsx?404b","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/adventureworks/views/cart.view.tsx?7e13","webpack:///./src/themes/gardner-theme-b2c/views/footer-item.view.tsx?3f11","webpack:///src/modules/check-in-for-pickup/check-in-for-pickup.view.tsx?26b3","webpack:///src/modules/account-profile-edit/components/account-profile-edit-loading-message.tsx?2c6f","webpack:///src/modules/fabrikam/views/order-details.view.tsx?2a61","webpack:///src/modules/store-selector/components/store-selector-location-line-item/date-time-helpers.ts?89f3","webpack:///src/modules/account-profile-edit/components/account-profile-edit-input.tsx?3bba","webpack:///src/modules/account-profile-edit/account-profile-edit.tsx?a9d6"],"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","AccountProfileEditLoadingIcon","_ref","className","Iframe","constructor","super","this","iframeRef","render","config","resources","isConsentGiven","context","request","cookies","target","destinationUrl","srcURL","URL","error","telemetry","exception","protocol","toLocaleLowerCase","iframeClassName","classnames","viewProps","_objectSpread","Heading","_createHeading","heading","IframeContainer","moduleProps","IFrame","_createIframe","cookieConsentAccepted","alert","_renderAlert","cookieConsentRequiredMessage","renderView","text","length","message","role","targetURL","src","height","iframeAriaLabel","ref","AdvancedNotes","_className","_renderNote","key","_renderNotes","notes","map","note","index","ItemId","TextValue","_renderStaticNotesDisplay","isNoteAreaActive","staticDisplay","tag","children","advancedNotesModuleProps","onPickupInStoreClickHandler","_props$selectedStore","selectedStore","OrgUnitAvailability","OrgUnitLocation","handlers","onSelected","onSetPreferredStoreClickHandler","_props$selectedStore2","onSetAsPreferredStore","OrgUnitNumber","onChangeHandler","async","_props$selectedStore3","deliveryCode","Promise","resolve","removePreferredStoreHandler","onRemovePreferredStore","onPickupModeSelectHandler","pickupMode","_props$selectedStore4","storeDetailsModalHandler","closeStoreDetailsModal","renderPickupModes","deliveryOptionList","pickupInStoreButtonText","pickupInStoreAriaLabel","undefined","filteredPickupMode","createElement","PickUpOptionList","pickupListOptionMenuText","pickupmodeList","onChange","onClick","SelectedStoreComponent","_selectedStore$OrgUni","_selectedStore$OrgUni2","shouldHideStockStatus","isInStock","stockStatusLabel","preferredStoreLocationId","isPreferredStoreEnabled","isLocationDisabled","telemetryContent","storePickUpOptionList","productPickUpOptionList","preferredDistanceUnit","parentClassName","OrgUnitName","location","distanceAsString","buildDistanceString","Distance","resourceLabel","inStock","outOfStock","stockLabel","stockText","selectLocation","selectLocationAriaLabelFormat","replace","payLoad","getPayloadObject","TelemetryConstant","PickupInStore","attributes","getTelemetryAttributes","contentAction","etext","PreferredStore","preferredStoreAttributes","RemovePreferredStore","removePreferredStoreAttributes","matchDeliveryOptions","Button","availabilityInfoHeader","preferredStoreAriaLabel","preferredStoreText","setAsPreferredStoreTextAriaLabel","setAsPreferredStoreText","StoreSelector","shouldHideInventory","preferredStore","hasEnabledOutOfStockCheck","shouldDisplayList","data","availabilitiesWithHours","result","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","handleLinkTextChange","event","termsOfServiceLink","linkText","value","handleHeadingChange","onShowAllStoresHandler","_getAndUpdateStoreLocation","setState","onFilterLocations","stores","filter","_location$OrgUnitPick","some","deliveryOption","Code","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","actionContext","requestContext","channel","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","id","_onSuggestionSelected","errorCallback","debug","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","storeId","mode","_store$OrgUnitAvailab2","setPreferredStoreLocation","Latitude","Longitude","clearPreferredStore","setSelectedStoreLocationId","_setSelectedStore","searchTerm","isSeeAllStoreValue","geoLocate","trim","_updateLocations","latitude","longitude","shouldShowAllStores","_navigator","style","isDialogOpen","navigator","geolocation","getCurrentPosition","position","coords","PERMISSION_DENIED","timeout","_closeDialog","_storeSelectorStateMa","parentElementRef","current","focus","closeDialog","_setOrgUnitStoreInformation","moduleId","styleDefault","input","onLocationSelected","preferredLocationId","storeLocationList","_sortStores","orgUnitStoreInformation","showMapViewLink","isDialog","product","setOrgUnitStoreInformation","catch","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","getTelemetryObject","telemetryPageName","friendlyName","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","_storeLocationList","_storeSelectorStateMa4","_storeSelectorStateMa5","setAsPreferredStore","shouldSetAsPreferredStore","showAllStores","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","app","appConfig","slots","mapSlot","isMobileDevice","isMobile","variant","VariantType","Viewport","isMapDisabled","isInlineView","isLocatorView","listMapViewState","displayList","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","milesShortText","sortLocation","isEnableOutofStock","enableStockCheck","locationListProps","_getStoreLocationListProps","hasMapSlot","dialogClassName","Modal","classname","autoFocus","fade","isOpen","onClosed","horizontalPosition","verticalPosition","toggle","ModalHeader","Msdyn365","editProps","onEdit","ModalFooter","ModalBody","StoreSelectorFoundLocationsMessage","locations","searchRadius","isSeeAllStore","StoreSelectorSearchForm","performSearch","searchTermChanged","onShowAllStores","onToggleListMapViewState","locatorView","productPickUpDeliveryOptions","filterPickupModeSelected","hasEnabledPickupFilterToShowStore","StoreSelectorWaiting","StoreSelectorLocationLines","outOfStockThreshold","enableOutOfStockCheck","storeLocatorView","shouldShowIndex","StoreSelectorEmptyMessage","StoreSelectorTermsOfService","link","onTextChange","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","_value$OrgUnitAvailab","isStoreLocatorView","storeList","storeLineProps","_createStoreLocationList","push","_store$OrgUnitAvailab3","selectedStoreLocation","lineResources","storeOpenFrom","secondsToTime","OpenFrom","storeOpenTo","OpenTo","storeHours","StoreHours","_store$OrgUnitAvailab4","toString","locationOpen","openFrom","openTo","storeHoursList","RegularStoreHours","buildStoreHours","__decorate","observer","AccountProfileEditButton","ariaLabel","disabled","SignUpText","LoyaltySignUp","handleMemberHeadingChange","memberHeading","_issueLoyalty","user","isAuthenticated","clicked","IssueLoyaltyInput","apiSettings","issueLoyalty","then","MsDyn365","isBrowser","window","SignIn","loyaltySignInAttributes","SignUp","loyaltySignUpAttributes","LoyaltyDetailLink","loyaltyDetailsLinkAttributes","LoyaltyTermsLink","loyaltyTermsLinkAttributes","nextProps","nextState","_data$customerInforma","signInUrl","termsUrl","loyaltyJoinUrl","origin","signInurl","completeClass","loyaltyCard","hasLoyaltyAccount","CardTenderTypeValue","customerInformation","invalidAsyncCustomerState","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","infoMessageBar","accountProcessingPendingInfoMessage","loading","status","signInLink","href","joinLoyaltyButtonText","signUpText","loyaltyProgramText","signUpButton","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","IFrameView","AccountProfileEditLabel","forId","htmlFor","FooterItemView","FooterItem","_renderElement","HeadingContainer","Link","image","EditableLink","renderAdditionalContent","additionalContent","_additionalContent$ad","additionalContentNode","additionalContentItems","item","additionalContentItemContainer","additionalContentItemLinks","links","contentBlockView","contentBlockContainer","imageContainer","detailsContainer","title","contentBlockAnchorTag","imageLink","imageAriaLabel","imageClass","OrderInfomation","orderInformationProps","salesId","receiptId","createdDate","count","amount","channelReferenceId","channelName","channelAddress","SalesLine","_ref2","salesLineProps","salesLine","buyAgainButton","errors","GroupDelivery","_ref3","deliveryProps","Group","_ref4","groupProps","delivery","address","salesLinesProps","salesLines","isCashAndCarryTransaction","LineId","deliveryType","shipment","trackingInfo","salesStatus","showTimeslot","pickupProps","pickupDateTimeslot","Groups","_ref5","groupsProps","groups","group","OrderSummary","_ref6","orderSummaryProps","subtotal","shipping","tax","totalAmount","earnedPoints","Payment","_ref7","paymentMethodsProps","methods","Help","_ref8","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","OrderDetailsView","_ref9","viewModes","tableViewActions","table","orderInfomation","orderSummary","payment","help","B2bRequestsStatusView","_props$data$operation","b2bRequestsStatus","continueShoppingButtonTitle","operationRequests","headingForEmptyRequestStatus","textForEmptyRequestStatus","getUrlSync","AccountProfileEditError","type","errorClassName","LoyaltySignUpView","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","_onSelect","preventDefault","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","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","name","autoComplete","onSubmit","searchInputAriaLabel","placeholder","onKeyUp","color","emptyLocationsText","editableLink","linkUrl","openInNewTab","storeCountMessage","storeCountMessageInKm","storeAllCountMessage","AccountProfileEditItem","wrapper","label","errorMessage","AccountProfileEditLoading","modal","modalBody","icon","AccountProfileEditView","accountProfileEdit","viewState","defaultAADConainer","aadConainer","accountProfileEditLocalAccount","isShowLoading","localAccount","items","buttonsWrapper","buttons","verificationSuccessModal","verificationSuccessModalMessage","button","LocalAccount","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","contains","_pickupListOptionMenu","expandSiteOptions","_renderDeliveryOptions","addEventListener","componentWillUnmount","removeEventListener","stopPropagation","isExpandSiteOptionsState","CheckInConfirmationComponent","confirmationText","shouldShowQrCode","channelReferenceIdLabel","QRCode","size","CheckInErrorComponent","CheckInForPickup","checkInForOrderPickup","channelId","Number","parseInt","query","packingSlipId","additionalInformationToSubmit","additionalInformationList","additionalInformationKeyValuePair","_additionalInformatio","formKey","resourceId","extensionPropertyList","ObjectExtensions","isNullOrUndefined","additionalInformation","Key","Value","StringValue","SalesOrdersDataActions","checkInForOrderPickupAsync","callerContext","queryResultSettings","headerErrorMessage","genericErrorMessage","isCheckedIn","_onInit","_this$props$context$r","_this$props$context$r2","_this$props$context$r3","_this$props$context$r4","isNaN","params","isEditor","isPreview","requiredParameterMissingErrorMessage","additionalInformationKeys","_this$props$context$r5","isHeaderError","headerError","confirmationComponent","defaultConfirmationText","confirmationIdLabel","additionalInformationValues","additionalInformationHeading","storeSelectorLocationLineItemComponentActions","distance","Math","floor","productdeliveryOptions","pickup","_delivery","hideStockStatus","storeAddress","Address","phoneNumber","contacts","allPhoneContacts","contact","ContactTypeValue","IsPrivate","primaryPhoneContact","IsPrimary","Locator","extractPhoneNumber","Contacts","renderStoreHours","displayTime","JSON","stringify","endDayShort","startDayFull","startDayShort","endDayFull","timeRange","StoreSelectorFoundLocationsMessageComponent","RichTextComponent","ContactInformationType","Phone","buildStoreHoursDay","storeHoursDayPeriodString","storeHoursDayString","storeHoursDayPeriod","storeHoursDay","productDeliveryOptions","productDeliveryOption","PickUpMethodDropdownComponent","pickUpStatesProps","pickUpMethodLabel","pickUpOptionPlaceholder","pickupOptionDropdownError","pickupButtonAriaLabel","selectedStorePickUpOption","selectStorePickUpOption","currentStorePickUpOption","setCurrentStorePickUpOption","isDropdownOpen","toggleDropdown","isError","setError","dataset","description","StringExtensions","isNullOrEmpty","handleDropdownToggle","filterDeliveryOption","filteredDeliveryMode","renderLocationLinePickupButton","renderStoreLocationLineItem","locationLineItem","closeDistanceString","distanceString","preferredStoreAttribute","removePreferredStoreAttribute","renderStoreLocations","selectedLocationReference","_props$data$storeSele","_props$locationListPr","renderStoreLocation","pickUpOptionDropdownPlaceholderText","pickupOptionDropdownPlaceholderText","unitLocation","canSelectPickUpMethod","pickupOptionDropdownErrorText","pickUpMethodSelection","selectedLocationProps","storeSelectorViewProps","_selectedStore$StoreH","_selectedStore$OrgUni4","_selectedStore$OrgUni5","_selectedStore$OrgUni6","_storeSelectorViewPro","_storeSelectorViewPro2","storeNameValue","orgUnitNumber","StoreSelectorViewComponent","_data$storeSelectorSt2","_data$storeSelectorSt3","isDesktopPort","setIsDesktopPort","isDesktopViewport","portView","Browser","scrollIntoView","_selectedLocationDiv$","totalTopHeight","viewport","_data$storeSelectorSt","displayMap","toggleBopisHandler","cartLine","isBopisSelected","_cartLine$pickUpInSto","pickUpInStore","toggleBopis","onChangeStoreHandler","_cartLine$pickUpInSto2","renderCartLine","storeSelector","isMultiplePickUp","emailDeliveryModeCode","outOfStockErrorMessage","addToWishlist","remove","renderGroupBopisBlock","_cartLine$data2","cartline","DeliveryMode","changeStoreDisplayText","shipInsteadDisplayText","pickItUpDisplayText","puckUpinStoreAttribute","addToOrderTemplate","renderCartlinesInternal","cartLines","itemIndex","renderBopisBlock","_cartLine$data","shipToAddressDisplayText","pickUpAtStoreWithLocationText","ContainerProps","orgUnitName","renderCartlines","waitingComponent","cartLoadingStatus","isCartDataResult","multiplePickUpEnabled","CartlinesWrapper","emptyCart","renderCartLinesGroupHeader","_cartLine$pickUpInSto6","pickUpText","shippingText","emailshippingText","groupTitle","toLowerCase","renderCartLinesGroupTitle","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","_cartLine$pickUpInSto5","itemLabel","itemsLabel","countTitle","CartView","_props$cart2","_props$cart3","_props$orderSummaryLi","_props$cart4","_props$cart5","updatedTitle","cartTitle","cart","totalItemsInCart","renderModuleAttributes","orderSummaryLineitems","orderTotal","checkoutAsSignInUserButton","checkoutAsGuestButton","renderOrderSummaryCheckoutButton","hasInvoiceLine","promotionOptions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action","_props$context$action2","cartlineId","countItem","reduce","_item$data$cartline$Q","_item$data","Quantity","countItems","EmailDeliveryModeCode","cartDataResult","orderSummaryHeading","OrderSummaryWrapper","renderInvoiceSummarylines","invoiceSummaryLines","orderSummaryItems","invoices","giftCard","loyalty","invoiceSummaryLineitems","OrderSummaryItems","renderOrderSummarylines","orderSummaryLines","totalDiscounts","otherCharge","errorData","OrderSummaryErrors","Wrapper","header","_props$cart","promoCode","createTemplateFromCartButton","renderOrderSummaryCheckout","CheckInViewComponent","_props$config$additio","FormBuilder","additionalInformationDefaultHeading","submitButtonText","additionalInformationSubmitButtonText","keys","requiredValueMissingErrorMessage","AccountProfileEditLoadingMessage","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","GetMaxLength","maxLength","parsedMaxLength","AccountProfileEditInput","pattern","AccountProfileEdit","moduleClassName","onTextBoxChange","givenName","surname","emailRegex","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","clearInterval","isInitialized","invalidEmailAddressError","obj","PRE","_htmlDecode","ID","email","PAT","PAT_DESC","required_field","requiredFieldMissingError","verifying_blurb","loadingMessage","EmailRegex","defaultRegex","source","AccountProfileEditLoadingIconComponent","AccountProfileEditLoadingMessageComponent","display","_renderLocalAccount","str","e","document","innerHTML","childNodes","nodeValue","_renderInput","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","AccountProfileEditErrorComponent","requiredFieldMissingSummaryError","fieldIncorrectError","AccountProfileEditButtonComponent","saveButtonAriaLabel","saveButtonText","cancelButtonText","showEmail","emailAddressLabelText","labelText","AccountProfileEditLabelComponent","AccountProfileEditInputComponent"],"mappings":"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","file":"static/js/14.936be816939a916e1310.chunk.js","sourcesContent":["/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 {\n canSelectLocation,\n deliveryOptions,\n pickUpDeliveryOptionButton,\n pickupModes\n } = 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 } = props;\n\n if (isMobileView) {\n return (\n \n {locationsMessage}\n {search}\n \n \n {state.isSearchInProgress ? spinner : <>\n {locationsList ? locationsList : noLocationsMessage}\n }\n {maps}\n \n {selectedLocation && renderSelectedStore(selectedLocation)}\n \n \n \n \n );\n }\n\n return (\n \n \n \n {locationsMessage}\n {search}\n {state.isSearchInProgress ? spinner : <>\n {locationsList ? locationsList : noLocationsMessage}\n }\n \n \n {maps}\n \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 } = props;\n\n return (\n \n \n {HeaderProps}\n \n {renderBody(props)}\n \n {terms}\n \n \n );\n};\n\nexport default StoreSelectorView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingIcon {\n className: string;\n}\n\nconst AccountProfileEditLoadingIcon: React.FC = ({ className }) => (\n
\n);\n\nexport default AccountProfileEditLoadingIcon;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 {\n StoreSelector,\n StoreSelectorView\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IHeadingData, IIframeConfig, IIframeProps } from './iframe.props.autogenerated';\n\nexport interface IIframeViewProps extends IIframeProps {\n Heading: React.ReactNode;\n IframeContainer: IModuleProps;\n IFrame: React.ReactNode;\n alert?: React.ReactNode;\n cookieConsentAccepted?: boolean;\n}\n\n/**\n *\n * Iframe component.\n * @extends {React.PureComponent}\n */\nclass Iframe extends React.PureComponent> {\n private readonly iframeRef: React.RefObject;\n\n constructor(props: IIframeProps) {\n super(props);\n this.iframeRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const { config, resources } = this.props;\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!(config && config.target && config.target.destinationUrl)) {\n return null;\n }\n\n let srcURL;\n try {\n srcURL = new URL(config.target.destinationUrl);\n } catch (error) {\n this.props.telemetry.exception(error);\n return null;\n }\n\n if (srcURL && srcURL.protocol && srcURL.protocol.toLocaleLowerCase() !== 'https:') {\n return null;\n }\n const iframeClassName = classnames('ms-iframe', config.className);\n\n let viewProps: IIframeViewProps = {\n ...(this.props as IIframeProps),\n Heading: this._createHeading(config.heading!),\n IframeContainer: {\n moduleProps: this.props,\n className: iframeClassName\n },\n IFrame: this._createIframe()\n };\n\n if (!isConsentGiven) {\n viewProps = {\n ...viewProps,\n alert: this._renderAlert(resources.cookieConsentRequiredMessage)\n };\n } else {\n viewProps = {\n ...viewProps,\n cookieConsentAccepted: true\n };\n }\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _renderAlert(message: string): React.ReactNode | null {\n return (\n

\n {message}\n

);\n }\n\n private _createIframe(): React.ReactNode | null {\n const { config } = this.props;\n const targetURL = config.target.destinationUrl;\n\n return (\n\n \n );\n }\n\n}\n\nexport default Iframe;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IAdvancedNotesData } from './advanced-notes.data';\r\nimport { IAdvancedNotesProps } from './advanced-notes.props.autogenerated';\r\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { IAdvancedNoteEntity } from '../../actions/DataServiceEntities.g';\r\n\r\nexport interface IAdvancedNotesViewProps extends IAdvancedNotesProps {\r\n staticDisplay: INodeProps;\r\n advancedNotesModuleProps: IModuleProps;\r\n}\r\n\r\ninterface IAdvancedNotesExtendedProps extends IAdvancedNotesProps {\r\n notes: IAdvancedNoteEntity[];\r\n}\r\n\r\ninterface IAdvancedNotesState {\r\n notes: IAdvancedNoteEntity[];\r\n isNoteAreaActive: boolean;\r\n}\r\n/**\r\n *\r\n * AdvancedNotes component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass AdvancedNotes extends React.PureComponent {\r\n private _className = 'advanced-notes';\r\n constructor(props: IAdvancedNotesExtendedProps) {\r\n super(props);\r\n this.state = {\r\n notes: props.notes,\r\n isNoteAreaActive: false\r\n };\r\n }\r\n private _renderNote = (key: string, message: string): React.ReactNode => {\r\n return (\r\n
\r\n

{message}

\r\n
\r\n );\r\n };\r\n\r\n private _renderNotes = (): React.ReactNode => {\r\n return (\r\n
\r\n {this.props.notes.map((note, index) => {\r\n return this._renderNote(`${index}${note.ItemId}`, note.TextValue || '');\r\n })}\r\n
\r\n );\r\n };\r\n\r\n /**\r\n * Renders the static comment display for when the isCommentAreaActive state param is false\r\n * @return React.ReactNode\r\n */\r\n private _renderStaticNotesDisplay = () => {\r\n const notes = this._renderNotes();\r\n return
{notes}
;\r\n };\r\n\r\n public render(): JSX.Element | null {\r\n const viewProps: IAdvancedNotesViewProps = {\r\n ...this.props,\r\n staticDisplay: {\r\n tag: 'div',\r\n className: `${this._className}__static-display`,\r\n children: this._renderStaticNotesDisplay()\r\n },\r\n advancedNotesModuleProps: {\r\n tag: 'div',\r\n className: `${this._className}`,\r\n moduleProps: { ...this.props }\r\n }\r\n };\r\n return this.props.renderView(viewProps);\r\n }\r\n}\r\n\r\nexport default AdvancedNotes;\r\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 { Button, getPayloadObject, getTelemetryAttributes, INodeProps, IPayLoad,\n ITelemetryContent, NodeTag, TelemetryConstant } 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 = (props: ISelectedStoreProps,\n deliveryOptionList: DeliveryOption[], pickupInStoreButtonText: string, pickupInStoreAriaLabel: string): 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\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: \n {storeName}\n ,\n storeDetailsCloseButton: ,\n storeDistance: distanceAsString ? \n {/* eslint-disable-next-line react-native/no-raw-text -- Need whitespace */}\n {' '}\n {distanceAsString}\n : '',\n storeDetailsAvailabilityContainer: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__container`\n },\n productAvailability: !shouldHideStockStatus &&

\n {resources.availabilityInfoHeader}\n

,\n stockStatus: stockText &&

\n {stockText}\n

,\n currentLocation:

\n {resources.currentLocation}\n

,\n pickUpDeliveryOptionButton: \n {pickupInStoreButtonText}\n ,\n pickupModes: renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel),\n preferredStoreButton: isPreferredStoreEnabled ? \n {resources.preferredStoreText}\n : null,\n removePreferredStoreButton: isPreferredStoreEnabled ? \n {resources.setAsPreferredStoreText}\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/**\n * Store location line item component.\n */\nexport const SelectedStoreComponent = selectedStoreDetails as (props: ISelectedStoreProps) => ISelectedStoreViewProps;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport {\n DeliveryOption,\n ItemAvailability,\n OrgUnitLocation,\n StoreHours\n} 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, IStoreSelectorResources, mode as modeEnum, 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(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n this.storeCounter = 0;\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n actionContext: {\n requestContext: {\n channel\n }\n }\n },\n config: {\n autoSuggestionEnabled: isAutoSuggestionEnabled\n }\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: {\n config: appConfig\n },\n actionContext: {\n requestContext: {\n channel,\n cookies\n }\n }\n },\n slots: {\n maps: mapSlot\n },\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 ? storeSelectorStateManager.isDialogOpen && (context?.id === this.props.id) : 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 = (context && (context.showMapViewLink === undefined || context.showMapViewLink)) &&\n 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 = 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(isEnableOutofStock, isLocatorView, preferredLocationId, this.isPreferredStoreEnabled,\n selectedStoreLocationId, storeLocationList ?? null, preferredDistanceUnit, alreadySelectedLocation, productPickUpOptionList);\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(`ms-store-${isInlineView ? 'locate' : 'select'}`, className, dialogClassName,\n isInlineView ? '' : 'msc-modal-input-required'),\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 ${selectedStoreLocationId && isDialogOpen && !shouldDisplayList ? 'show' : 'hide'}`\n },\n locationsMessage: !this.state.isLocationDisabled && (\n \n ),\n selectedLocation: this.renderSelectedStore(shouldHideInventory, preferredDistanceUnit, preferredStore, this.isPreferredStoreEnabled,\n isEnableOutofStock, productPickUpOptionList, shouldDisplayList),\n search: (\n \n ),\n spinner: ,\n locationsList: ArrayExtensions.hasElements(storeLocationList) ? (\n \n ) : undefined,\n noLocationsMessage: ,\n terms: ,\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(); 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 = (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 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, onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\n }\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(stores: IFullOrgUnitAvailability[],\n isPreferredStoreEnabled: boolean | undefined,\n preferredStoreLocationId: string): IFullOrgUnitAvailability[] {\n const isPreferredStore = (value: IFullOrgUnitAvailability) => isPreferredStoreEnabled && preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreLocationId;\n\n return [\n ...stores.filter(isPreferredStore),\n ...stores.filter(store => !isPreferredStore(store))\n ];\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, preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n stores: IFullOrgUnitAvailability[] | null,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation,\n productPickUpOptionList?: DeliveryOption[]): IStoreSelectorLocationLineItemProps[] {\n const storeList: IStoreSelectorLocationLineItemProps[] = [];\n if (ArrayExtensions.hasElements(stores)) {\n stores.map((store, index: number) => {\n const storeLineProps = this._createStoreLocationList(store, index,\n hasEnabledOutOfStockCheck, isStoreLocatorView, preferredStoreLocationId, isPreferredStoreEnabled,\n selectedStoreLocationId, preferredDistanceUnit, alreadySelectedLocation, productPickUpOptionList);\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: {\n autoSuggestOptions\n },\n context: {\n telemetry,\n actionContext: {\n requestContext: {\n channel\n }\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(`#ms-store-select__search-box_${this.props.id}`,\n `#ms-store-select__search-box-container_${this.props.id}`, this._onSuggestionSelected);\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: {\n cookies\n }\n }\n },\n config: {\n mode\n },\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(storeId, preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName,\n cookies.isConsentGiven(),\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Latitude, preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Longitude);\n };\n\n /**\n * On Removing Preferred Store.\n */\n private readonly _removePreferredStore = async (): Promise => {\n const {\n context: {\n actionContext: {\n requestContext: {\n cookies\n }\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: {\n actionContext\n },\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: {\n style\n },\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: {\n style\n },\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)\n .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\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: {\n mode,\n lookupRadius,\n style,\n searchRadiusUnit\n },\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 (calRadius: number, distanceUnitValue: number,\n latitude?: number, longitude?: number): Promise => {\n\n const {\n context: {\n actionContext\n }\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 (calRadius: number, distanceUnitValue: number,\n latitude?: number, longitude?: number): Promise => {\n\n const {\n telemetry,\n context: {\n actionContext\n },\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(store: IFullOrgUnitAvailability,\n index: number, hasEnabledOutOfStockCheck: boolean,\n isStoreLocatorView: boolean, preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation, productPickUpOptionList?: DeliveryOption[]): 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 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, 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,\n selectedLocation?: OrgUnitLocation): boolean => (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 = (hasEnableOutOfStockCheck: boolean, itemAvailabilities: ItemAvailability[] | undefined): 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 (isInStock.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId === isInStock.ProductInventoryInformation[index].InventLocationId) {\n return isInStock.ProductInventoryInformation[index].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n\n}\n\nexport default StoreSelector;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst AccountProfileEditButton: React.FC = ({ id, className, text, ariaLabel, disabled, telemetryContent, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {text}\n );\n};\n\nexport default AccountProfileEditButton;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport React from 'react';\n\nexport const SignUpText: React.FC<{ text: string }> = (props: { text: string }) => {\n return (

\n {props.text}\n

);\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getPayloadObject, getTelemetryAttributes, getTelemetryObject, IModuleProps, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { SignUpText } from './components/loyalty-sign-up-small-components';\nimport { ILoyaltySignUpData } from './loyalty-sign-up.data';\nimport { ILoyaltySignUpProps } from './loyalty-sign-up.props.autogenerated';\n\nexport interface IAccountLoyaltyJoinState {\n clicked: boolean;\n}\nexport interface ILoyaltySignUpViewProps extends ILoyaltySignUpProps {\n LoyaltySignUp: IModuleProps;\n heading: React.ReactNode;\n memberHeading: React.ReactNode;\n signInLink: React.ReactElement;\n signUpText: React.ReactElement;\n signUpButton: React.ReactElement;\n detailsLink: React.ReactElement;\n termsLink: React.ReactElement;\n loading: boolean;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * LoyaltySignUp component.\n * @extends {React.Component>}\n */\n@observer\nclass LoyaltySignUp extends React.Component, IAccountLoyaltyJoinState> {\n private readonly telemetryContent?: ITelemetryContent;\n private readonly loyaltySignInAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltySignUpAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyDetailsLinkAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyTermsLinkAttributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: ILoyaltySignUpProps) {\n super(props);\n this.state = { clicked: false };\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n this.loyaltySignInAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.SignUp;\n this.loyaltySignUpAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyDetailLink;\n this.loyaltyDetailsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsLink;\n this.loyaltyTermsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltySignUpProps,\n nextState: IAccountLoyaltyJoinState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className, heading, memberHeading },\n resources,\n context: {\n actionContext,\n request: {\n user: {\n signInUrl,\n isAuthenticated\n }\n }\n },\n data\n } = this.props;\n\n const termsUrl = Msdyn365.getUrlSync('loyaltyTerms', actionContext);\n let loyaltyJoinUrl = `${Msdyn365.getUrlSync('loyaltyJoin', actionContext)}?joiningLoyalty=true`;\n if (MsDyn365.isBrowser) {\n loyaltyJoinUrl = `${window.location.origin}${loyaltyJoinUrl}`;\n }\n const signInurl = `${signInUrl}?ru=${loyaltyJoinUrl}`;\n const completeClass = classname('ms-loyalty-signup', className);\n const loyaltyCard = data.loyaltyCard;\n const hasLoyaltyAccount = loyaltyCard.result && loyaltyCard.result.CardTenderTypeValue !== undefined;\n const customerInformation = data.customerInformation?.result;\n\n const invalidAsyncCustomerState: boolean =\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false);\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltySignUp: {\n moduleProps: this.props,\n className: completeClass\n },\n infoMessageBar: invalidAsyncCustomerState && (\n \n ),\n loading: loyaltyCard.status === 'LOADING',\n heading: !hasLoyaltyAccount && heading && heading.text && (\n \n ),\n memberHeading: hasLoyaltyAccount && memberHeading && memberHeading.text && (\n \n ),\n signInLink: !isAuthenticated && ,\n signUpText: !hasLoyaltyAccount && ,\n signUpButton: !hasLoyaltyAccount && isAuthenticated && (\n \n {this.props.resources.joinLoyaltyButtonText}\n \n ),\n detailsLink: hasLoyaltyAccount && (\n \n {this.props.resources.viewLoyaltyPageText}\n \n ),\n termsLink: !hasLoyaltyAccount && \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading!.text = event.target.value;\n\n public handleMemberHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.memberHeading!.text = event.target.value;\n\n private readonly _issueLoyalty = () => {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(() => {\n if (MsDyn365.isBrowser) {\n window.location.assign(Msdyn365.getUrlSync('loyalty', this.props.context.actionContext) || '');\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n };\n}\n\nexport default LoyaltySignUp;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IIframeViewProps } from './iframe';\n\n/**\n *\n * IFrameView component.\n * @extends {React.PureComponent}\n */\nexport class IFrameView extends React.PureComponent {\n\n public render(): JSX.Element | null {\n const { Heading, IframeContainer, IFrame, alert, cookieConsentAccepted } = this.props;\n\n return (\n \n {alert}\n {cookieConsentAccepted && cookieConsentAccepted ? (\n <>\n {Heading}\n {IFrame}\n ) : null}\n \n );\n }\n}\nexport default IFrameView;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { IAdvancedNotesViewProps } from './advanced-notes';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nexport default (props: IAdvancedNotesViewProps) => {\r\n const { staticDisplay, advancedNotesModuleProps } = props;\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst AccountProfileEditLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default AccountProfileEditLabel;\n","/*--------------------------------------------------------------\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 { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * FooterItemView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { FooterItem } = this.props;\r\n return (\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\r\n if (heading) {\r\n return (\r\n {' '}\r\n );\r\n } else if (Link && image) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n } else if (Link) {\r\n return (EditableLink);\r\n }\r\n return (\r\n <>\r\n {text}\r\n {image}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default FooterItemView;\r\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IContentBlockAdditionalContentItemViewProps,\n IContentBlockAdditionalContentViewProps, IContentBlockViewProps\n} from '@msdyn365-commerce-modules/content-block';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n \n {item.links}\n \n \n \n );\n })}\n \n );\n};\n\n/**\n * Render View.\n * @param props - The view props.\n * @returns -The JSX Element.\n */\nconst contentBlockView: React.FC = (props) => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n // @ts-expect-error HTML element need to be clear on run time.\n const hasImage: boolean = image.props.src;\n const imageClass: string = hasImage ? `${detailsContainer.className} withImage` : `${detailsContainer.className} withoutImage`;\n\n if (imageLink) {\n return (\n \n \n \n {image}\n \n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n\n};\n\nexport default contentBlockView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({ orderSummaryProps, heading, subtotal, shipping, tax, totalAmount, earnedPoints }) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { IB2bRequestsStatusViewProps } from '@msdyn365-commerce-modules/account-management';\nimport { Button, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IB2bRequestsStatusProps, IB2bRequestsStatusResources } from '../definition-extensions/b2b-requests-status.ext.props.autogenerated';\n\n/**\n * B2b Request status View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\nconst B2bRequestsStatusView: React.FC> = props => {\n const { b2bRequestsStatus, heading, table } = props;\n const { continueShoppingButtonTitle } = props.resources;\n const initialCount = 0;\n\n if (props.data.operationRequests.result?.length === initialCount) {\n return (\n \n {heading}\n \n
\n

\n {props.resources.headingForEmptyRequestStatus}\n

\n

\n {props.resources.textForEmptyRequestStatus}\n

\n \n \n {continueShoppingButtonTitle}\n \n \n
\n
\n
\n );\n }\n return (\n \n {heading}\n {table}\n \n );\n};\n\nexport default B2bRequestsStatusView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst AccountProfileEditError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n
\n );\n\n};\n\nexport default AccountProfileEditError;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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. All rights reserved.\n * See License.txt 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 {\n productPickupListOptionMenuText,\n productPickupModeList,\n defaultOptionText\n } = this.props;\n const selectedPickupModeDesc = defaultOptionText ? defaultOptionText : productPickupModeList?.find(\n (delivery: DeliveryOption) => delivery.Code === this.state.selectedPickupMode)?.Description;\n const role = 'menu';\n return (\n
\n \n {this.state.isFilterExpanded ?
    \n { productPickupModeList?.map((delivery: DeliveryOption) => {\n return (\n \n \n {delivery.Description}\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. All rights reserved.\n * See License.txt 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 {\n this._stores.map((store, index) => {\n return this._renderStoreLocation(store, index);\n })\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) => this.props.isPreferredStoreEnabled && this.props.preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === this.props.preferredStoreLocationId;\n\n return [\n ...stores.filter(isPreferredStore),\n ...stores.filter(store => !isPreferredStore(store))\n ];\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 => (this.props.alreadySelectedLocation &&\n location && this.props.alreadySelectedLocation.OrgUnitNumber === location.OrgUnitNumber) || 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 (availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId === availabilityWithHours.ProductInventoryInformation[i].InventLocationId) {\n return availabilityWithHours.ProductInventoryInformation[i].StockLevelLabel;\n }\n\n }\n }\n\n return undefined;\n };\n\n /**\n * Map resources.\n * @param resources - Store resoureces.\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\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. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent, KeyCodes, TelemetryConstant } 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: { searchButtonAriaLabel, searchPlaceholderText, seeAllStoresText, viewListText,\n viewMapText, pickupFilterByHeading, pickupFilterMenuHeading },\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 {this.renderPickupModesList(this.props, toggleButtonText, productPickUpDeliveryOptions, pickupFilterMenuHeading,\n locatorView, pickupFilterByHeading, hasEnabledPickupFilterToShowStore, displayList)}\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 /**\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 = (props: IStoreSelectorSearchFormProps, toggleButtonText: string,\n productPickUpDeliveryOptions: DeliveryOption[] | undefined,\n pickupFilterMenuHeading: string | undefined, locatorView: boolean | undefined,\n pickupFilterByHeading: string | undefined, hasEnabledPickupFilterToShowStore: boolean | undefined,\n shouldDisplayList?: boolean): JSX.Element | null => {\n\n const toggleButtonClass = shouldDisplayList ? 'view-map' : 'list-view';\n if (hasEnabledPickupFilterToShowStore) {\n return (\n
\n {locatorView && \n {toggleButtonText}\n }\n \n
\n {pickupFilterByHeading}\n
\n
);\n }\n if (locatorView) {\n return (\n {toggleButtonText}\n );\n }\n return null;\n\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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

\n {resources.emptyLocationsText}\n

\n
\n);\n\nexport const StoreSelectorWaiting: React.FC = () => (\n
\n);\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 }\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 = ({ locations, searchRadius, resources, isSeeAllStore, preferredDistanceUnit }) => {\n if (locations) {\n const storeCountMessage = preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n return (\n
\n { isSeeAllStore ? resources.storeAllCountMessage\n .replace('{count}', locations.length.toString()) : storeCountMessage\n .replace('{count}', locations.length.toString())\n .replace('{radius}', searchRadius.toString())}\n
\n );\n }\n\n return null;\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IAccountProfileEditItem, IAccountProfileEditLoading, IAccountProfileEditLocalAccount,\n IAccountProfileEditViewProps\n} from './account-profile-edit';\n\nconst AccountProfileEditItem: React.FC = ({\n wrapper,\n label,\n errorMessage,\n input\n}) => {\n\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n\n return (\n \n {items && items.map((item: IAccountProfileEditItem) => {\n return (\n\n \n );\n })}\n {errorMessage && errorMessage.map((error: React.ReactNode, index: number) => {\n return (\n \n {error}\n \n );\n })}\n \n {buttons && buttons.map((button: React.ReactNode, index: number) => {\n return (\n \n {button}\n \n );\n })}\n \n\n \n \n \n \n );\n};\n\nconst AccountProfileEditLoading: React.FC = ({\n modal,\n modalBody,\n icon,\n message\n}) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst AccountProfileEditView: React.FC = props => {\n\n const {\n accountProfileEdit,\n viewState,\n loading,\n defaultAADConainer,\n aadConainer,\n heading,\n accountProfileEditLocalAccount\n } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(accountProfileEditLocalAccount)}\n \n \n );\n};\n\nexport default AccountProfileEditView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 {\n pickupListOptionMenuText,\n pickupmodeList\n } = this.props;\n\n return (\n
\n \n {this.state.expandSiteOptions ?
    \n { pickupmodeList?.map((delivery: DeliveryOption) => {\n return (
  • \n \n \n {delivery.Description}\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 (this._pickupListOptionButton.current !== null && (event.target === this._pickupListOptionButton.current ||\n // eslint-disable-next-line xss/no-mixed-html -- Need to check if any option inside the div is clicked or not.\n this._pickupListOptionButton.current.contains(htmlElement))) ||\n (this._pickupListOptionMenu.current !== null &&\n // eslint-disable-next-line xss/no-mixed-html -- Need to check if any option inside the div is clicked or not.\n (event.target === this._pickupListOptionMenu.current || this._pickupListOptionMenu.current.contains(htmlElement))))) {\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. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport QRCode from 'qrcode.react';\nimport * as React from 'react';\n\n/**\n * CheckInConfirmation component Properties.\n */\nexport interface ICheckInConfirmationProps {\n\n /**\n * The confirmation text to show.\n */\n confirmationText: string;\n\n /**\n * Should the order confirmation number shown as QR code or not.\n * If false, the order confirmation number (channel reference ID) will be shown as text.\n */\n shouldShowQrCode: boolean;\n\n /**\n * The label shows for channel reference ID.\n */\n channelReferenceIdLabel: string;\n\n /**\n * The channel reference ID to show. When shouldShowQrCode is true, the ID is shown as QR code, otherwise it is shown as text.\n */\n channelReferenceId?: string;\n}\n\n/**\n * CheckInConfirmation component for showing confirmation information after check-in succeed.\n * @param confirmationProps - The confirmation properties.\n * @param confirmationProps.confirmationText - The confirmation text.\n * @param confirmationProps.shouldShowQrCode - Should the order confirmation number shown as QR code or not.\n * If false, the order confirmation number (channel reference ID) will be shown as text.\n * @param confirmationProps.channelReferenceIdLabel - The label shows for channel reference ID.\n * @param confirmationProps.channelReferenceId - The channel reference ID to show.\n * When shouldShowQrCode is true, the ID is shown as QR code, otherwise it is shown as text.\n * @returns The check-in confirmation component.\n */\nexport const CheckInConfirmationComponent: React.FC = ({\n confirmationText,\n shouldShowQrCode,\n channelReferenceIdLabel,\n channelReferenceId\n}) => {\n return (\n
\n

\n {confirmationText}\n

\n {\n channelReferenceId &&\n

\n {`${channelReferenceIdLabel} ${channelReferenceId}`}\n

\n }\n {\n channelReferenceId &&\n shouldShowQrCode &&\n \n \n \n }\n
\n );\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as React from 'react';\n\n/**\n * Check-in error properties.\n */\nexport interface ICheckInErrorProps {\n errorMessage?: string;\n}\n\n/**\n * Check-in error.\n * @param errorProps - The error properties.\n * @param errorProps.errorMessage - The error message to show.\n * @returns The alert element showing check-in errors.\n */\nexport const CheckInErrorComponent: React.FC = ({\n errorMessage\n}) => {\n if (!errorMessage) {\n return null;\n }\n\n return (\n \n \n );\n};\n\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IDictionary } from '@msdyn365-commerce/core';\nimport { CommerceProperty, SalesOrdersDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { CheckInConfirmationComponent } from './check-in-confirmation';\nimport { CheckInErrorComponent } from './check-in-error';\nimport { IAdditionalInformationKeysData, ICheckInForPickupConfig, ICheckInForPickupProps } from './check-in-for-pickup.props.autogenerated';\n\n/**\n * The interface representing a piece of additional information data.\n */\ninterface IAdditionalInformation {\n formKey: IAdditionalInformationKeysData;\n value: string;\n}\n\n/**\n * The state for check-in view.\n */\nexport interface ICheckInViewState {\n\n /**\n * If the module has header error to show.\n */\n isHeaderError: boolean;\n\n /**\n * If the customer has checked in.\n */\n isCheckedIn: boolean;\n\n /**\n * Additional information to capture.\n */\n additionalInformation: IDictionary[];\n}\n\n/**\n * The properties for check-in view.\n */\nexport interface ICheckInViewProps extends ICheckInForPickupProps {\n headerError: React.ReactNode;\n confirmationComponent: React.ReactNode;\n viewState: ICheckInViewState;\n additionalInformationValues: string[];\n checkInForOrderPickup(additionalInformation?: IAdditionalInformation[]): Promise;\n}\n\n/**\n * The state of the CheckInForPickup module.\n */\nexport interface ICheckInForPickupState {\n\n /**\n * The header error message.\n */\n headerErrorMessage: string;\n\n /**\n * If the customer has checked in successfully.\n */\n isCheckedIn: boolean;\n}\n\n/**\n *\n * CheckIn component.\n * @extends {React.Component, ICheckInForPickupState>}\n */\nclass CheckInForPickup extends React.Component, ICheckInForPickupState> {\n\n public constructor(props: ICheckInForPickupProps) {\n super(props);\n this.state = {\n headerErrorMessage: '',\n isCheckedIn: false\n };\n }\n\n public render(): JSX.Element | null {\n const isHeaderError: boolean = this.state.headerErrorMessage !== '';\n\n const viewProps = {\n ...this.props,\n headerError: ,\n confirmationComponent: ,\n checkInForOrderPickup: this.checkInForOrderPickup,\n additionalInformationValues: this.props.config.additionalInformationKeys ? this.props.config.additionalInformationKeys.map(() => {\n return {};\n }) : undefined,\n viewState: {\n isHeaderError,\n isCheckedIn: this.state.isCheckedIn\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public shouldComponentUpdate(nextProps: ICheckInForPickupProps, nextState: ICheckInForPickupState): boolean {\n if (this.props.config.additionalInformationHeading !== nextProps.config.additionalInformationHeading ||\n this.props.config.confirmationText !== nextProps.config.confirmationText) {\n\n return true;\n }\n if (this.state.headerErrorMessage !== nextState.headerErrorMessage ||\n this.state.isCheckedIn !== nextState.isCheckedIn) {\n return true;\n }\n return false;\n }\n\n public async componentDidMount(): Promise {\n await this._onInit();\n }\n\n /**\n * The async callback for submitting check-in.\n * @param additionalInformationList - The optional additional information captured.\n * @returns The async result.\n */\n public checkInForOrderPickup = async (additionalInformationList?: IAdditionalInformation[]): Promise => {\n const channelId: number = Number.parseInt(this.props.context.request.query!.channelId, 10);\n const channelReferenceId: string = this.props.context.request.query!.channelReferenceId;\n const packingSlipId: string = this.props.context.request.query!.packingSlipId;\n\n const additionalInformationToSubmit: { formKey: string; value: string }[] | undefined =\n additionalInformationList?.map(additionalInformationKeyValuePair => {\n return { formKey: additionalInformationKeyValuePair.formKey.resourceId ?? '', value: additionalInformationKeyValuePair.value };\n });\n const extensionPropertyList: CommerceProperty[] = [];\n if (!ObjectExtensions.isNullOrUndefined(additionalInformationToSubmit)) {\n for (const additionalInformation of additionalInformationToSubmit) {\n extensionPropertyList.push({\n Key: additionalInformation.formKey,\n Value: {\n StringValue: additionalInformation.value\n }\n });\n }\n }\n try {\n await SalesOrdersDataActions.checkInForOrderPickupAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\n channelId,\n packingSlipId,\n channelReferenceId,\n extensionPropertyList);\n } catch (error) {\n this.state = { headerErrorMessage: this.props.resources.genericErrorMessage, isCheckedIn: false };\n this.props.telemetry.error(error);\n return Promise.resolve();\n }\n this.setState({ headerErrorMessage: '', isCheckedIn: true });\n return Promise.resolve();\n };\n\n /**\n * The action performed on module initialization.\n * @returns The async result.\n */\n private readonly _onInit = async (): Promise => {\n const channelId: number = Number.parseInt(this.props.context.request.query?.channelId ?? '', 10);\n const channelReferenceId: string | undefined = this.props.context.request.query?.channelReferenceId;\n const packingSlipId: string | undefined = this.props.context.request.query?.packingSlipId;\n if (Number.isNaN(channelId) || !channelReferenceId || !packingSlipId) {\n // No error message shown in editor mode.\n if (this.props.context.request.params.isEditor) {\n return Promise.resolve();\n } else if (this.props.context.request.params.isPreview) {\n this.setState({ headerErrorMessage: this.props.resources.requiredParameterMissingErrorMessage });\n } else {\n this.setState({ headerErrorMessage: this.props.resources.genericErrorMessage });\n }\n this.props.context.telemetry.error('One or more required URL parameters are missing. ' +\n 'Please make sure you have pass in channelId, channelReferenceId and packingSlipId through URL parameter.');\n return Promise.resolve();\n }\n\n const {\n additionalInformationKeys\n } = this.props.config;\n\n const hasAdditionalInformation: boolean = ArrayExtensions.hasElements(additionalInformationKeys);\n\n // Call check-in-for-pickup directly if no additional information to capture.\n if (!hasAdditionalInformation) {\n try {\n await SalesOrdersDataActions.checkInForOrderPickupAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\n channelId,\n packingSlipId,\n channelReferenceId);\n } catch (error) {\n this.setState({ headerErrorMessage: this.props.resources.genericErrorMessage, isCheckedIn: false });\n this.props.telemetry.error(error);\n return Promise.resolve();\n }\n this.setState({ headerErrorMessage: '', isCheckedIn: true });\n }\n return Promise.resolve();\n };\n}\n\nexport default CheckInForPickup;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport {\n DeliveryOption,\n OrgUnitContact,\n OrgUnitLocation,\n StoreHours\n} from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent, TelemetryConstant } 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\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 = (storeHours: StoreHours | undefined, location: OrgUnitLocation,\n resources: IStoreSelectorLocationLineItemResources): 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 \n {displayTime.startDayShort}\n \n –\n \n {displayTime.endDayShort}\n \n
\n ) : (\n
\n \n {displayTime.startDayShort}\n \n
\n )}\n
\n {displayTime.timeRange}\n
\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}\n -\n {storeOpenTo}\n
\n );\n\n};\n\n/**\n * Function to retrun 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 = (distance: number | undefined, preferredDistanceUnit: string, isLocationDisabled?: boolean): 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/**\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 * @returns Store locator selected location line item action.\n */\nconst onPickupInStoreClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props);\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 = (props: IStoreSelectorLocationLineItemProps,\n deliveryOptionList: DeliveryOption[], pickupInStoreButtonText: string, pickupInStoreAriaLabel: string): 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 = (productdeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined): 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\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\n return (\n
\n
\n {(shouldShowIndex || storeLocatorView) && \n {index}\n }\n \n {storeName}\n \n {distanceAsString ? \n {' '}\n {distanceAsString}\n : false}\n
\n
\n
\n

\n {resources.contactInfoHeader}\n

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

\n {resources.storeHoursHeader}\n

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

\n {resources.availabilityInfoHeader}\n

\n {stockText &&

\n {stockText}\n

}\n {isCurrentLocation ? (\n

\n {resources.currentLocation}\n

\n ) : (canSelectLocation ? deliveryOptionList.length === 0 ? (\n \n {pickupInStoreButtonText}\n \n ) : renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel) : (\n false\n ))}\n
\n }\n {\n isPreferredStoreEnabled ? (isPreferredStore ? \n {resources.preferredStoreText}\n : \n {resources.setAsPreferredStoreText}\n ) : null\n }\n
\n
\n );\n};\n\n/**\n * Store location line item component.\n */\nexport const StoreSelectorLocationLineItemComponent = storeSelectorLocationLineItem as (props: IStoreSelectorLocationLineItemProps) => JSX.Element;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport MsDyn365, { RichTextComponent } from '@msdyn365-commerce/core';\nimport { ContactInformationType, DeliveryOption, OrgUnitContact, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n buildStoreHours, IHoursDisplayInfo, ILocationHours, IStoreSelectorFoundLocationsMessage,\n IStoreSelectorLocationLineItemProps, IStoreSelectorLocationLineItemResources, IStoreSelectorViewProps, 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, getTelemetryAttributes, getTelemetryObject, IPayLoad, isMobile, Module, Node, 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\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 = preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n\n return (\n ${locations.length.toString()}
`) : storeCountMessage\n .replace('{count}', `${locations.length.toString()}`)\n .replace('{radius}', `${searchRadius.toString()}`)}\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 = (distance: number | undefined, preferredDistanceUnit: string,\n resources: IStoreSelectorResources & IStoreSelectorResources, isLocationDisabled?: boolean): 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.replace('{preferredDistanceUnit}', preferredDistanceUnit)\n .replace('{distance}', Math.floor(distance).toString());\n\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('{endDay}',\n `${displayTime.endDayShort}`) : storeHoursDayString\n .replace('{startDay}', `${displayTime.startDayShort}`)}\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 = (storeHours: StoreHours | undefined, storeHoursList: IHoursDisplayInfo[] | undefined,\n locationOpen: ILocationHours | undefined, resources: IStoreSelectorResources & IStoreSelectorResources): 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
\n {displayTime.timeRange}\n
\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)\n .replace('{startDay}', storeOpenFrom)\n .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 = (productDeliveryOptions: DeliveryOption[] | undefined, storePickUpOptionList: DeliveryOption[] | undefined): 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 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 } = 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 (\n filteredDeliveryMode !== undefined ?
\n \n {filteredDeliveryMode.Description}\n \n
: null\n );\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((delivery: DeliveryOption) => delivery.Code === pickUpStatesProps.state.filteredPickupMode);\n\n const pickupInStoreButtonText: string = selectStoreText;\n const filteredDeliveryMode: DeliveryOption | undefined = (pickUpStatesProps.state.filteredPickupMode !== undefined ? filterDeliveryOption : undefined);\n\n return (\n \n
\n {pickUpMethodLabel}\n
\n {pickUpStatesProps.state.filteredPickupMode === undefined ?
\n \n {currentStorePickUpOption}\n \n \n {deliveryOptionList.map((delivery: DeliveryOption) => (\n \n \n {delivery.Description}\n \n \n ))}\n \n
\n {pickupOptionDropdownError}\n
\n
: renderLocationLinePickupButton(filteredDeliveryMode)}\n \n {pickupInStoreButtonText}\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 = (locationLineItem: IStoreSelectorLocationLineItemProps,\n props: IStoreSelectorViewProps & IStoreSelectorProps) => {\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 } = locationLineItem;\n const storeName = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(location.Distance,\n locationLineItem.preferredDistanceUnit, props.resources, locationLineItem.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 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 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 && \n {index}\n }\n \n {storeName}\n \n {distanceAsString ? \n {distanceAsString}\n : false}\n
\n
\n
\n

\n {locationLineItem.resources.contactInfoHeader}\n

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

\n {locationLineItem.resources.storeHoursHeader}\n

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

\n {resources.availabilityInfoHeader}\n

\n {stockText &&

\n {stockText}\n

}\n
\n }\n {\n isPreferredStoreEnabled && (isPreferredStore ? \n {resources.preferredStoreText}\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 = (location: IStoreSelectorLocationLineItemProps,\n index: number, props: IStoreSelectorViewProps & IStoreSelectorProps,\n selectedLocationReference: React.RefObject): JSX.Element | undefined => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n hideStockStatus, storeLocatorView,\n isCurrentLocation,\n isInStock,\n productPickUpOptionList,\n resources,\n storePickUpOptionList,\n telemetryContent } = 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 {pickupInStoreButtonText}\n \n ) : ();\n const pickUpMethodSelection = (\n canSelectLocation ? canSelectPickUpMethod : (\n false\n )\n );\n\n return (\n
\n \n {renderStoreLocationLineItem(location, props)}\n
\n {!storeLocatorView && (isCurrentLocation ? (\n

\n {resources.currentLocation}\n

\n ) : pickUpMethodSelection)}\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 = (props: IStoreSelectorViewProps & IStoreSelectorProps,\n selectedLocationReference: React.RefObject) => {\n return (\n \n {\n props.locationListProps?.map((store, index) => {\n return renderStoreLocation(store, index, props, selectedLocationReference);\n })\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 = (selectedLocationProps: ISelectedStoreViewProps,\n storeSelectorViewProps: IStoreSelectorViewProps & IStoreSelectorProps): 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 ? buildStoreHours(selectedStore.StoreHours.RegularStoreHours,\n mapResources(storeSelectorViewProps.resources)) : [];\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('{StoreName}', storeNameValue ?? '');\n const telemetryContent = getTelemetryObject(storeSelectorViewProps.context.request.telemetryPageName!,\n storeSelectorViewProps.friendlyName, storeSelectorViewProps.telemetry);\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 {pickupInStoreButtonText}\n \n ) : selectedLocation && ();\n\n return (\n \n \n {storeDetailsCloseButton}\n {storeName}\n {storeDistance}\n \n \n
\n

\n {storeSelectorViewProps.resources.contactText}\n

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

\n {storeSelectorViewProps.resources.timeText}\n

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

\n {productAvailability}\n

\n {stockStatus &&

\n {stockStatus}\n

}\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 { BodyContainerProps, storeResultContainerProps, FooterContainerProps, HeaderContainerProps, HeaderProps, 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 offSetTopHeight = 250;\n const parentClientHeight = 50;\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 scrollling.\n */\n const scrollIntoView = () => {\n const selectedLocationDiv = (selectedLocationReference as React.RefObject).current;\n if (selectedLocationDiv !== null) {\n const totalTopHeight = Number(selectedLocationDiv.offsetTop) + Number(selectedLocationDiv.clientHeight);\n const parent = selectedLocationDiv.parentElement?.parentElement;\n if (parent) {\n if (parent.scrollTop > selectedLocationDiv.offsetTop) {\n parent.scrollTop = selectedLocationDiv.offsetTop - offSetTopHeight;\n } else if (totalTopHeight > Number(parent.scrollTop) + Number(parent.clientHeight)) {\n parent.scrollTop = totalTopHeight - Number(parent.clientHeight) - parentClientHeight;\n }\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 \n {HeaderProps}\n \n \n \n {locationsMessage && }\n {search}\n \n \n {state.isSearchInProgress ? spinner : <>\n {locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n }\n \n {maps}\n \n \n {selectedLocation && renderSelectedStore(selectedLocation, props)}\n \n \n \n \n \n \n {terms}\n \n \n );\n }\n return (\n \n \n {HeaderProps}\n \n \n \n {locationsMessage && }\n {search}\n {state.isSearchInProgress ? spinner : <>\n {locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n }\n \n \n {maps}\n \n \n \n {terms}\n \n \n );\n};\n\nexport default StoreSelectorViewComponent;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { ICartLineItemViewProps, ICartlinesViewProps, ICartResources, ICartViewProps, IOrderSummaryErrors } from '@msdyn365-commerce-modules/cart';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getPayloadObject, getTelemetryAttributes, INodeProps, ITelemetryContent, Node, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartProps as ICartExtensionProps } from '../definition-extensions/cart.ext.props.autogenerated';\n\n/**\n * Toggle Bopis Function.\n * @param cartLine -CartLine.\n * @param isBopisSelected -Boolean.\n * @returns Toggle Bopis.\n */\nconst toggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(!isBopisSelected);\n};\n\n/**\n * Change Store Function.\n * @param cartLine -CartLine.\n * @returns Toggle Bopis.\n */\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(true);\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderBopisBlock = (cartLine: ICartlinesViewProps, resources: ICartResources, storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent, emailDeliveryModeCode?: string): JSX.Element | null => {\n // If it is electronic item cart line, then return null for BOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { shipInsteadDisplayText, shipToAddressDisplayText, pickItUpDisplayText, pickUpAtStoreWithLocationText, changeStoreDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\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 {\n isBopisSelected &&\n
\n \n {cartLine.pickUpInStore.orgUnitName}\n \n \n {changeStoreDisplayText}\n \n
\n }\n \n
\n );\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderGroupBopisBlock = (cartLine: ICartlinesViewProps, resources: ICartResources, storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent, emailDeliveryModeCode?: string): JSX.Element | null => {\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n {isBopisSelected ? : null}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - FLag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLine = (cartLine: ICartlinesViewProps, resources: ICartResources, storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent, isMultiplePickUp?: boolean, emailDeliveryModeCode?: string): JSX.Element => {\n\n if (cartLine.error === resources.outOfStockErrorMessage) {\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (isMultiplePickUp) {\n return (\n \n {renderGroupBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (cartLine.addToOrderTemplate) {\n return (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlinesInternal = (cartLines: ICartlinesViewProps[], resources: ICartResources,\n storeSelector: React.ReactNode | undefined, telemetryContent?: ITelemetryContent, isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string): JSX.Element[] | JSX.Element => {\n return (\n cartLines.map((cartLine, index) => {\n const itemIndex = index;\n return (\n
\n {cartLine.cartline}\n \n {isMultiplePickUp ? null : renderBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {\n renderCartLine(cartLine, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)\n }\n \n
\n );\n }));\n};\n\n/**\n * Render Cart Lines.\n * @param props - The cart line props.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param waitingComponent - Waiting component element.\n * @param cartLoadingStatus - Cart loading status string.\n * @param isCartDataResult - Flag to check if there is cart data.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlines = (props: ICartViewProps & ICartExtensionProps<{}>, cartLines: ICartlinesViewProps[] | undefined, resources: ICartResources,\n storeSelector: React.ReactNode | undefined, waitingComponent: React.ReactNode,\n cartLoadingStatus: string, isCartDataResult: boolean, telemetryContent?: ITelemetryContent, isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string): JSX.Element[] | JSX.Element => {\n\n if (cartLoadingStatus) {\n return (<>\n {cartLoadingStatus}\n );\n }\n\n // Props.CartlinesWrapper is only required on cart lines and when multiple pickup mode is disabled. This is also required to handle the empty cart styling.\n // Else, empty cart multiple pickup mode is disabled falls under the other cart line wrapper which is creating issue with Empty cart scenario.\n if (cartLines) {\n return props.multiplePickUpEnabled ? (\n renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)\n ) : (\n \n {renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n );\n }\n\n return (isCartDataResult ? (\n
\n
\n { props.slots.emptyCart }\n
\n
\n ) : <>\n {waitingComponent}\n \n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const itemCountOne: number = 1;\n const suffix = count > itemCountOne ? itemsLabel : itemLabel;\n const countTitle = `(${count} ${suffix})`;\n return (\n <>\n \n {isBopisSelected ?

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

: null}\n

\n {countTitle}\n

\n
\n \n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupHeader = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number, emailDeliveryModeCode?: string) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { pickUpText, shippingText, emailshippingText } = resources;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText : groupTitle;\n\n return (\n <>\n
\n

\n

\n {groupTitle}\n

\n {renderCartLinesGroupTitle(cartLine, resources, count)}\n
\n \n );\n};\n\n/**\n * Returns count of products.\n * @param cartLine - The cart line view props.\n * @returns Number of products.\n */\nconst countItems = (cartLine: ICartlinesViewProps[]): number => {\n let countItem = 0;\n const defaultItemCount = 0;\n countItem = cartLine.reduce((count, item) => {\n return count + (item.data?.cartline.Quantity ?? defaultItemCount);\n\n }, defaultItemCount);\n return countItem;\n};\n\n/**\n * Render Cart Lines group.\n * @param props - The cart line view props.\n * @param resources - Module resource strings.\n * @returns JSX Element.\n */\nconst renderCartLinesGroup = (props: ICartViewProps & ICartExtensionProps<{}>, resources: ICartResources): JSX.Element | undefined => {\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\n return (\n
\n { props.cartLinesGroup.map(cartlines => {\n return (
\n {renderCartLinesGroupHeader(cartlines[0], resources, countItems(cartlines),\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode)}\n {renderCartlines(props, cartlines, props.resources, props.storeSelector,\n props.waitingComponent, props.cartLoadingStatus, props.cartDataResult,\n props.telemetryContent, props.multiplePickUpEnabled, props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode)}\n
);\n })}\n
\n );\n }\n return (props.cartDataResult ? (\n
\n
\n {props.slots.emptyCart}\n
\n
\n ) : <>\n {props.waitingComponent}\n \n );\n\n};\n\n/**\n * Render error block.\n * @param errorData - Error component.\n * @returns JSX Element.\n */\nconst renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\n return null;\n }\n return (\n \n {errorData.header}\n {errorData.errors}\n \n );\n};\n\n/**\n * Render invoice summary.\n * @param invoiceSummaryLines - Invoice summary component.\n * @param orderSummaryItems - Order summary component.\n * @param props - The module props.\n * @returns JSX Element.\n */\nconst renderInvoiceSummarylines = (invoiceSummaryLines: IInvoiceSummaryLines | undefined, orderSummaryItems: INodeProps,\n props: ICartViewProps): JSX.Element | null => {\n if (!invoiceSummaryLines) {\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {invoiceSummaryLines.invoices}\n {invoiceSummaryLines.giftCard}\n {invoiceSummaryLines.loyalty}\n {invoiceSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Render order summary.\n * @param orderSummaryLines - Order summary component.\n * @param orderSummaryItems - Order summary items component.\n * @param props - The module props.\n * @returns JSX Element.\n */\nconst renderOrderSummarylines = (orderSummaryLines: IOrderSummaryLines | undefined, orderSummaryItems: INodeProps,\n props: ICartViewProps): JSX.Element | null => {\n if (!orderSummaryLines) {\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {orderSummaryLines.subtotal}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Render error block.\n * @param promotions - The module view props.\n * @returns JSX Element.\n */\nconst renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\n return (\n <>\n \n {promotions.promotionMessage}\n \n {promotions.promotionSeeAllLink}\n \n {promotions.promotionDialog}\n \n\n \n );\n};\n\n/**\n * Render order summary checkout.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst renderOrderSummaryCheckout = (props: ICartViewProps): JSX.Element | undefined => {\n return (\n \n {props.cart?.hasInvoiceLine ? null : props.promoCode}\n \n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n \n {props.createTemplateFromCartButton}\n \n );\n};\n\n/**\n * Render order summary checkout button.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst renderOrderSummaryCheckoutButton = (props: ICartViewProps): JSX.Element | undefined => {\n return (\n \n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n \n );\n};\n\n/**\n * Render cart view.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst CartView: React.FC> = (props: ICartViewProps & ICartExtensionProps<{}>) => {\n const totalItemCountOne: number = 1;\n const updatedTitle = (\n

\n {props.resources.cartTitle}\n \n {` (${Number(props.cart?.totalItemsInCart)} ${props.cart?.totalItemsInCart !== totalItemCountOne ? 'items' : 'item'})`}\n \n

\n );\n return (\n
\n {updatedTitle}\n
\n {props.orderSummaryLineitems?.orderTotal}\n
\n {renderOrderSummaryCheckoutButton(props)}\n {!props.cart?.hasInvoiceLine && props.promotionOptions && renderPromotions(props.promotionOptions)}\n {props.multiplePickUpEnabled ? renderCartLinesGroup(props, props.resources) : renderCartlines(props, props.cartlines,\n props.resources, props.storeSelector, props.waitingComponent, props.cartLoadingStatus, props.cartDataResult)}\n {props.orderSummaryHeading &&\n \n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine ? renderInvoiceSummarylines(\n props.invoiceSummaryLineitems, props.OrderSummaryItems, props) : renderOrderSummarylines(\n props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {renderErrorBlock(props.OrderSummaryErrors)}\n \n {renderOrderSummaryCheckout(props)}\n }\n {props.storeSelector}\n
\n );\n};\n\nexport default CartView;\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 { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * FooterItemView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { FooterItem } = this.props;\r\n return (\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\r\n if (heading) {\r\n return (\r\n {' '}\r\n );\r\n } else if (Link && image) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n } else if (Link) {\r\n return (EditableLink);\r\n }\r\n return (\r\n <>\r\n {text}\r\n {image}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default FooterItemView;\r\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { FormBuilder } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckInViewProps } from './check-in-for-pickup';\n\n/**\n * The check-in view for submitting check-in, capturing additional information, and showing check-in confirmation.\n * @param props - The check-in view properties.\n * @returns The check-in view as a react component.\n */\nconst CheckInViewComponent: React.FC = (props: ICheckInViewProps) => {\n const {\n headerError,\n checkInForOrderPickup,\n confirmationComponent,\n viewState\n } = props;\n return (\n <>\n { viewState.isHeaderError && headerError }\n { !viewState.isHeaderError && ArrayExtensions.hasElements(props.config.additionalInformationKeys) &&\n }\n {\n !viewState.isHeaderError && !ArrayExtensions.hasElements(props.config.additionalInformationKeys) && viewState.isCheckedIn &&\n confirmationComponent\n }\n \n );\n};\n\nexport default CheckInViewComponent;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingMessage {\n className: string;\n message: string;\n}\n\nconst AccountProfileEditLoadingMessage: React.FC = ({ className, message }) => (\n
\n {message}\n
\n);\n\nexport default AccountProfileEditLoadingMessage;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({ orderSummaryProps, heading, subtotal, shipping, tax, totalAmount, earnedPoints }) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 =\n Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\n return `${hours}:${minutes} ${ampm}`;\n\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: // 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: // Case 'SUN':\n return resources.days.sundayFull;\n }\n};\n\nconst buildHoursDisplayInfo = (startDay: DayType, endDay: DayType, hoursInfo: string, resources: IStoreSelectorLocationLineItemResources): 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};\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. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditInputProps {\n id?: string;\n\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IAccountProfileEditInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst AccountProfileEditInput: React.FC = ({\n id,\n type,\n value,\n pattern,\n className,\n maxLength,\n onChange\n}) => (\n \n);\n\nexport default AccountProfileEditInput;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n IAccountProfileEditConfig, IAccountProfileEditProps\n} from './account-profile-edit.props.autogenerated';\nimport AccountProfileEditButtonComponent from './components/account-profile-edit-button';\nimport AccountProfileEditErrorComponent from './components/account-profile-edit-error';\nimport AccountProfileEditInputComponent from './components/account-profile-edit-input';\nimport AccountProfileEditLabelComponent from './components/account-profile-edit-label';\nimport AccountProfileEditLoadingIconComponent from './components/account-profile-edit-loading-icon';\nimport AccountProfileEditLoadingMessageComponent from './components/account-profile-edit-loading-message';\n\nexport interface IAccountProfileEditViewState {\n isShowLoading: boolean;\n}\n\nexport interface IAccountProfileEditItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAccountProfileEditLocalAccount {\n localAccount: INodeProps;\n items: IAccountProfileEditItem[];\n errorMessage: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IAccountProfileEditLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAccountProfileEditViewProps {\n className: string;\n viewState: IAccountProfileEditViewState;\n loading: IAccountProfileEditLoading;\n accountProfileEdit: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n accountProfileEditLocalAccount: IAccountProfileEditLocalAccount;\n}\n\n/**\n *\n * AccountProfileEdit component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component>}\n */\n@observer\nclass AccountProfileEdit extends React.Component> {\n\n private readonly moduleClassName: string = 'ms-account-profile-edit';\n\n private readonly telemetryContent: ITelemetryContent;\n\n @observable private givenName: string;\n\n @observable private surname: string;\n\n @observable private email: string;\n\n @observable private emailRegex: string;\n\n @observable private isInitialized: boolean;\n\n private initializationTimer: any;\n\n constructor(props: IAccountProfileEditProps) {\n super(props);\n this.givenName = '';\n this.surname = '';\n this.email = '';\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(nextProps: IAccountProfileEditProps,\n nextState: IAccountProfileEditViewState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n accountProfileEdit: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading && config.heading.text && (\n \n ),\n accountProfileEditLocalAccount: this._renderLocalAccount()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading.text = event.target.value;\n\n public onTextBoxChange = (event: React.ChangeEvent) => {\n const id = event.target.id;\n const value = event.target.value;\n\n switch (id.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.emailRegex = value;\n break;\n }\n default:\n }\n };\n\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n const { resources } = this.props;\n const invalidEmailAddressError = resources.invalidEmailAddressError || 'Please enter a valid email address.';\n\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map((obj: { ID: string; PRE: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string }) => {\n const value = obj.PRE ? this._htmlDecode(obj.PRE) : '';\n switch (obj.ID.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.email = value;\n this.emailRegex = obj.PAT;\n obj.PAT_DESC = invalidEmailAddressError;\n break;\n }\n default:\n }\n\n });\n }\n };\n\n private _htmlDecode(str: string): string {\n const e = document.createElement('div');\n\n e.innerHTML = str;\n return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue || '';\n }\n\n private readonly _updateErrorMessage = () => {\n const { resources } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n\n const message = {\n required_field: resources.requiredFieldMissingError,\n verifying_blurb: resources.loadingMessage\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], message);\n }\n };\n\n private _renderLocalAccount(): IAccountProfileEditLocalAccount {\n const { config, resources } = this.props;\n const localAccount = {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('givenName', 'text', this.givenName, resources.firstNameLabelText, resources.firstNameMaxLength),\n this._renderInput('surname', 'text', this.surname, resources.lastNameLabelText, resources.lastNameMaxLength)\n ],\n errorMessage: [\n ,\n ,\n \n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`\n },\n buttons: [\n ,\n \n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n\n if (config.showEmail && this.email !== '') {\n localAccount.items.push(this._renderInput('email', 'email', this.email, resources.emailAddressLabelText, undefined, this.emailRegex));\n }\n\n return localAccount;\n }\n\n private _renderInput(id: string, type: string, value: string, labelText: string, maxLength?: string, pattern?: string): IAccountProfileEditItem {\n const className = `${this.moduleClassName}__account-item`;\n return (\n {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n\n }\n );\n }\n\n}\n\nexport default AccountProfileEdit;\n"],"sourceRoot":""}