{"version":3,"sources":["webpack:///src/modules/store-selector/store-selector.view.tsx?b873","webpack:///src/modules/sign-up/components/sign-up-success.tsx?be19","webpack:///src/modules/sign-up/components/sign-up-input.tsx?49f8","webpack:///./src/modules/farmlands-navigation-menu/farmlands-navigation-menu.props.autogenerated.ts?18d9","webpack:///./src/modules/farmlands-navigation-menu/farmlands-navigation-menu.tsx?ad9e","webpack:///src/modules/account-address-tile/account-address-tile.view.tsx?0b73","webpack:///src/modules/accordion-item/accordion-item.view.tsx?b04f","webpack:///src/modules/store-selector/components/pickup-option-list.tsx?9a9c","webpack:///src/modules/store-selector/components/store-pickup-option-list.tsx?27e0","webpack:///src/modules/store-selector/components/store-selector-location-line-item/date-time-helpers.ts?89f3","webpack:///src/modules/store-selector/components/store-selector-location-line-item/store-selector-location-line-item.components.tsx?5a50","webpack:///src/modules/store-selector/components/store-selector-location-lines.tsx?0668","webpack:///src/modules/store-selector/components/store-selector-search-form.tsx?1a99","webpack:///src/modules/store-selector/components/store-selector-small-components.tsx?c26d","webpack:///src/modules/store-selector/components/selected-store/selected-store.tsx?8d1a","webpack:///src/modules/store-selector/store-selector.tsx?ce13","webpack:///src/modules/accordion-item/accordion-item.tsx?fc54","webpack:///src/modules/aad-generic/aad-generic.view.tsx?ecad","webpack:///src/modules/accordion/accordion.view.tsx?8c70","webpack:///src/modules/account-wishlist-tile/components/account-wishlist-tile-description.tsx?c387","webpack:///src/modules/account-wishlist-tile/components/account-wishlist-tile-links.tsx?3c8d","webpack:///src/modules/account-wishlist-tile/account-wishlist-tile.tsx?8a2b","webpack:///src/modules/sign-up/components/sign-up-error.tsx?9100","webpack:///src/modules/sign-up/sign-up.tsx?f918","webpack:///src/modules/aad-generic/aad-generic.tsx?d537","webpack:///./src/modules/farmlands-navigation-menu/farmlands-navigation-menu.view.tsx?9456","webpack:///src/modules/sign-up/components/sign-up-button.tsx?4a5f","webpack:///src/modules/account-address-tile/account-address-tile.tsx?4565","webpack:///src/modules/sign-up/components/sign-up-loading-icon.tsx?9dc7","webpack:///src/modules/sign-up/sign-up.view.tsx?e4b6","webpack:///src/modules/account-wishlist-tile/account-wishlist-tile.view.tsx?58da","webpack:///src/modules/account-welcome-tile/account-welcome-tile.tsx?abcf","webpack:///src/modules/map/map.tsx?e2df","webpack:///src/modules/account-address-tile/components/account-address-tile-description.tsx?88b9","webpack:///src/modules/footer-item/footer-item.tsx?f8b4","webpack:///src/modules/accordion/accordion.tsx?45c1","webpack:///src/modules/account-welcome-tile/account-welcome-tile.view.tsx?a13c","webpack:///src/modules/account-address-tile/components/account-address-tile-links.tsx?7e3f","webpack:///src/modules/map/map.view.tsx?cd35","webpack:///src/modules/sign-up/components/sign-up-loading-message.tsx?1a3b","webpack:///src/index.ts?c6ae","webpack:///src/modules/footer-item/footer-item.view.tsx?235e","webpack:///src/modules/sign-up/components/sign-up-label.tsx?a805"],"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","SignUpSuccess","_ref","id","className","type","message","successClassName","classnames","role","GetMaxLength","maxLength","parsedMaxLength","Number","parseInt","isNaN","SignUpInput","value","pattern","onChange","undefined","navigationMenuSource","NavigationMenu","constructor","super","isRetail","isCMS","_setNavigationSource","sourceType","retailServerOnly","this","cmsOnly","all","_updateViewport","bind","viewport","context","request","device","Type","config","isMobile","menuItemList","locale","nameTranslations","nameTranslation","length","find","item","Language","toLowerCase","Text","componentDidMount","resizeThrottledEventHandler","window","addThrottledEvent","componentWillUnmount","removeEventListener","render","_mapData","isEmptyOrNullObject","data","telemetry","error","defaultImageSettings","viewports","xs","q","w","h","xl","lazyload","viewProps","_objectSpread","imageSettings","gridSettings","Navigation","moduleProps","tag","resources","menuAriaLabel","MenuListContainer","MenuList","ListItem","Link","Button","onClick","ImageContainer","Span","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","menuItemData","renderView","mergedData","categories","result","map","push","_constructMenuItemData","cmsNavItems","idx","retailItem","cmsItem","RSItemIdInit","linkText","getFriendlyName","NameTranslations","linkURL","Url","subMenu","_getNestedChildren","CMSItemIdInit","linkUrl","destinationUrl","imageDestinationURL","imageLink","imageSource","image","src","_getCMSNestedChildren","category","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","subMenus","_getViewport","setState","innerWidth","sm","md","lg","__decorate","observable","computed","AccountAddressTileView","AccountAddressTile","heading","description","links","_renderAccordionItemContent","items","index","key","AccordionItemView","drawer","accordionSlots","AccordionItemContainer","AccordionItemContent","accordionItemContent","PickUpOptionList","eventsToBeBind","handleDocumentClick","event","htmlElement","target","_pickupListOptionButton","current","contains","_pickupListOptionMenu","expandSiteOptions","_onSelect","async","preventDefault","deliveryCode","currentTarget","getAttribute","_renderDeliveryOptions","addEventListener","pickupListOptionMenuText","pickupmodeList","ref","delivery","Code","tabIndex","Description","stopPropagation","isExpandSiteOptionsState","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","onKeyDown","secondsToTime","seconds","hours","Math","floor","ampm","divisorForMinutes","getShortTimeString","day","days","monday","tuesday","wednesday","thursday","friday","saturday","sunday","getFullTimeString","mondayFull","tuesdayFull","wednesdayFull","thursdayFull","fridayFull","saturdayFull","sundayFull","buildHoursDisplayInfo","startDay","endDay","hoursInfo","startDayShort","startDayFull","endDayShort","endDayFull","timeRange","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","storeHours","dateForLookup","get","buildStoreHoursString","closedText","buildStoreHours","storeHoursList","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","storeSelectorLocationLineItemComponentActions","onLocationSelected","deliveryMode","handlers","onSelected","location","onSetAsPreferredStore","OrgUnitNumber","onRemovePreferredStore","buildDistanceString","distance","preferredDistanceUnit","isLocationDisabled","onPickupInStoreClickHandler","onPickupModeSelectHandler","pickupMode","onSetPreferredStoreClickHandler","removePreferredStoreHandler","onChangeHandler","Promise","resolve","matchDeliveryOptions","productdeliveryOptions","storePickUpOptionList","deliveryOption","pickup","_delivery","StoreSelectorLocationLineItemComponent","hideStockStatus","isInStock","stockStatusLabel","storeLocatorView","preferredStoreLocationId","isPreferredStoreEnabled","telemetryContent","productPickUpOptionList","shouldShowIndex","OrgUnitName","distanceAsString","Distance","storeAddress","Address","phoneNumber","contacts","allPhoneContacts","filter","contact","ContactTypeValue","IsPrivate","primaryPhoneContact","IsPrimary","Locator","extractPhoneNumber","Contacts","resourceLabel","inStock","outOfStock","stockLabel","stockText","pickupInStoreButtonText","selectLocation","pickupInStoreAriaLabel","selectLocationAriaLabelFormat","replace","payLoad","getPayloadObject","TelemetryConstant","PickupInStore","attributes","getTelemetryAttributes","contentAction","etext","PreferredStore","preferredStoreAttributes","RemovePreferredStore","removePreferredStoreAttributes","deliveryOptionList","contactInfoHeader","storeHoursHeader","renderStoreHours","RegularStoreHours","displayTime","JSON","stringify","title","storeOpenFrom","OpenFrom","storeOpenTo","OpenTo","availabilityInfoHeader","renderPickupModes","filteredPickupMode","preferredStoreAriaLabel","preferredStoreText","setAsPreferredStoreTextAriaLabel","setAsPreferredStoreText","StoreSelectorLocationLines","onClickHandler","orgUnitLocation","_scrollIntoView","selectedLocationDiv","selectedLocationRef","parent","parentElement","scrollTop","offsetTop","clientHeight","_isCurrentLocation","alreadySelectedLocation","_isProductInStock","itemAvailabilities","enableOutOfStockCheck","AvailableQuantity","_stockInventoryLabel","availabilityWithHours","ProductInventoryInformation","i","_availabilityWithHour","_availabilityWithHour2","OrgUnitAvailability","OrgUnitLocation","InventoryLocationId","InventLocationId","StockLevelLabel","_mapResources","contactText","timeText","availabilityText","storeHoursClosedText","outOfStockText","inStockText","selectedStoreLocationText","selectStoreText","selectStoreAriaFormatText","storeHoursMondayText","storeHoursTuesdayText","storeHoursWednesdayText","storeHoursThursdayText","storeHoursFridayText","storeHoursSaturdayText","storeHoursSundayText","storeHoursMondayFullText","storeHoursTuesdayFullText","storeHoursWednesdayFullText","storeHoursThursdayFullText","storeHoursFridayFullText","storeHoursSaturdayFullText","storeHoursSundayFullText","storeCounter","componentDidUpdate","previousProps","selectedStoreLocationId","locations","_stores","_sortStores","reaction","show","displayList","store","_renderStoreLocation","_store$OrgUnitAvailab","OrgUnitPickUpDeliveryModes","_store$OrgUnitAvailab2","selected","StoreHours","ItemAvailabilities","toString","DeliveryOptions","productPickUpDeliveryOptions","stores","_value$OrgUnitAvailab","_value$OrgUnitAvailab2","observer","StoreSelectorSearchForm","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","keyCode","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","_handleKeyPressPrev","Enter","Space","onShowAllStores","_searchTextChanged","inputValue","searchTermChanged","_onSubmit","_this$searchBoxRef$cu","blur","performSearch","_onChangeHandler","filterPickupModeSelected","renderPickupModesList","toggleButtonText","pickupFilterMenuHeading","locatorView","pickupFilterByHeading","hasEnabledPickupFilterToShowStore","shouldDisplayList","toggleButtonClass","onToggleListMapViewState","toggleMapViewAttributes","SearchStore","storeSearchAttributes","ShowAllStore","showAllStoreAttributes","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","isMapDisabled","showAllStores","name","autoComplete","onSubmit","searchInputAriaLabel","placeholder","onKeyUp","color","StoreSelectorEmptyMessage","emptyLocationsText","StoreSelectorWaiting","StoreSelectorTermsOfService","_ref2","link","requestContext","onTextChange","editableLink","ariaLabel","openInNewTab","Msdyn365","editProps","StoreSelectorFoundLocationsMessage","_ref3","searchRadius","isSeeAllStore","storeCountMessage","milesShortText","storeCountMessageInKm","storeAllCountMessage","_props$selectedStore","_props$selectedStore$","selectedStore","_props$selectedStore2","_props$selectedStore3","_props$selectedStore4","_props$selectedStore5","_props$selectedStore6","_props$selectedStore7","_props$selectedStore8","storeDetailsModalHandler","closeStoreDetailsModal","createElement","SelectedStoreComponent","_selectedStore$OrgUni","_selectedStore$OrgUni2","_selectedStore$OrgUni3","shouldHideStockStatus","parentClassName","StoreSelector","shouldHideInventory","preferredStore","hasEnabledOutOfStockCheck","availabilitiesWithHours","storeSelectorStateManager","storeLocations","selectedStoreResources","selectedProps","StoreId","_onOrgUnitLocationSelected","_setPreferredStore","_removePreferredStore","_closeStoreDetailModal","handleLinkTextChange","termsOfServiceLink","handleHeadingChange","onShowAllStoresHandler","_getAndUpdateStoreLocation","onFilterLocations","_location$OrgUnitPick","_location$OrgUnitPick2","some","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","actionContext","channel","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","debug","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","_preferredStore$OrgUn4","_preferredStore$OrgUn5","_preferredStore$OrgUn6","storeId","cookies","mode","_store$OrgUnitAvailab3","_store$OrgUnitAvailab4","setPreferredStoreLocation","isConsentGiven","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","_storeSelectorStateMa2","_storeSelectorStateMa3","parentElementRef","focus","closeDialog","_setOrgUnitStoreInformation","moduleId","styleDefault","input","preferredLocationId","storeLocationList","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","hasEnableOutOfStockCheck","_isInStock$OrgUnitAva","_isInStock$OrgUnitAva2","getTelemetryObject","telemetryPageName","friendlyName","_this$props$data$stor7","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","_this$props$context$a","_this$props$context$a2","_this$props$context$a3","setTimeout","_this$props$data$stor2","_this$props$data$stor3","_this$props$data$stor4","_this$props$data$stor5","_this$props$data$stor6","loadMapApi","BingMapsEnabled","lang","market","_this$props$data$stor8","_this$props$data$stor9","_this$props$context$a4","_this$props$data$stor10","when","_this$props$data$stor11","_this$props$data$stor12","_this$props$data$stor13","_this$props$data$stor14","isSameContext","shouldComponentUpdate","_storeSelectorStateMa4","_storeSelectorStateMa5","_storeSelectorStateMa6","_sortLocation","_storeSelectorStateMa7","_storeSelectorStateMa8","_storeSelectorStateMa9","_storeSelectorStateMa10","setAsPreferredStore","shouldSetAsPreferredStore","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","app","appConfig","slots","mapSlot","isMobileDevice","variant","VariantType","Viewport","isInlineView","isLocatorView","listMapViewState","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","sortLocation","isEnableOutofStock","enableStockCheck","locationListProps","_getStoreLocationListProps","hasMapSlot","dialogClassName","Modal","classname","autoFocus","fade","isOpen","onClosed","horizontalPosition","verticalPosition","toggle","ModalHeader","text","onEdit","ModalFooter","ModalBody","outOfStockThreshold","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","isStoreLocatorView","storeList","storeLineProps","_createStoreLocationList","_store$OrgUnitAvailab5","selectedStoreLocation","lineResources","_store$OrgUnitAvailab6","locationOpen","openFrom","openTo","AccordionItem","moduleClassName","accordionItemTitle","_onToggle","nextProps","accordionExpandedStateResult","accordionExpandedState","expanded","isAllExpanded","isExpandedOnInitialLoad","ControlledDrawer","collapseProps","onToggle","interactionStyle","accordionState","update","createAccordionStateInput","aadGeneric","aadConainer","aadAPIConainer","accordionView","AccordionContainer","accordionItems","accordionButtons","HeaderSection","HeadingWrapper","accordianButtonsContainer","accordionItemContainer","IAccountWishlistTileDescription","_mapEditableLinks","linkdata","editableLinks","forEach","additionalProperties","AccountWishlistTileLinks","AccountWishlistTile","linkIndex","accountWishlistTileDescription","wishlists","wishlistsCount","CommerceListLines","format","LinksComponent","DescriptionComponent","SignUpError","errorClassName","SignUp","handleParagraphChange","disclaimer","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","clearInterval","isInitialized","obj","ID","isEmailVerificationRequried","templateVersion","emailRegex","PAT","VERIFY","isGivenNameVerificationRequried","isSurnameVerificationRequried","newPasswordRegex","reenterPasswordRegex","UX_INPUT_TYPE","PAT_DESC","invalidPasswordError","invalidEmailAddressError","errorMessages","required_field","requiredFieldMissingError","getValue","v1Value","v2Value","EmailRegex","defaultRegex","source","PasswordRegex","nextState","viewState","isShowLoading","signUp","loading","modal","modalBody","icon","SignUpLoadingIconComponent","SignUpLoadingMessageComponent","loadingMessage","defaultAADConainer","display","signUpLocalAccount","_renderLocalAccount","localAccount","_renderInput","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","emailAddressLabelText","passwordLabelText","confirmPasswordLabelText","emailVerification","isRequired","email","verificationCodeLabelText","verificationControlWrapper","buttonWrapper","buttons","SignUpButtonComponent","sendCodeButtonAriaLabel","sendCodeButtonText","verifyCodeButtonAriaLabel","verifyCodeButtonText","resendCodeButtonAriaLabel","resendCodeButtonText","changeEmailButtonAriaLabel","changeEmailButtonText","successMessage","SignUpSuccessComponent","verificationCodeSendSuccess","emailAddressVerifiedSuccess","errorMessage","SignUpErrorComponent","retryError","retryNotAllowedError","throttledError","codeExpiredError","serverError","invalidEmailError","givenNameVerification","givenName","requiredFieldMissingSummaryError","surnameVerification","surname","signUpButtonArialabel","signUpButtonText","cancelButtonArialabel","cancelButtonText","passwordEntryMismatchError","fieldIncorrectError","labelText","cssClassName","wrapper","label","SignUpLabelComponent","forId","SignUpInputComponent","AadGeneric","$i2e","$element","insertServiceContent","getElementContent","initialize","NavigationMenuView","firstLevelMenuLinkText","supportedLevel","currentLevel","_renderReturnToFirstLevelButton","parentMenu","ButtonTo","_handleBackFirstLevel","_closeNavigationMenu","activeMenu","_handleDropdownToggle","parentId","isBackTrack","mobileViewLabelText","selectedSubMenu","_resetFocus","_handleGoBack","menuNode","_handleClickOutside","_updateSelectedSubMenu","subMenuHeight","_calculateSubNavHeight","_closeSubmenu","document","body","_renderDisplay","menuItem","_getFromSubMenu","_createMenuItemList","height","top","subMenuItemMax","_item$subMenu","subMenuLength","calculatedSubNavHeight","found","_renderSubMenu","_renderButtonMenuItem","_renderLinkMenuItem","_renderSpanMenuItem","levelClassName","menuOptions","option","hasOptions","_renderMenu","onFocus","isMainMenu","href","onMouseEnter","level","currentItem","SignUpButton","disabled","accountAddressTileDescriptionForSingleAddress","accountAddressTileDescriptionForMultipleAddresses","address","addressCount","accountAddressTileDescription","SignUpLoadingIcon","SignUpItem","SignUpEmailVerification","button","SignUpGivenNameVerificationComponent","SignUpSurnameVerificationComponent","_ref4","SignUpLoading","_ref6","SignUpView","_ref5","LocalAccount","AccountWishlistTileView","AccountWelcomeTile","accountInfo","accountInformation","FirstName","Map","mapRef","_initMap","pushpinAccessible","Events","addHandler","_updateMap","pushpinOptions","mapLocation","entities","clear","pushpins","unitStoreInfo","entries","_unitStoreInfo$OrgUni","storeLocation","isSelectedLocation","_getPushpinOptions","pushpin","Pushpin","Location","handleClickEvent","unshift","setView","center","bounds","LocationRect","fromShapes","setOptions","orgUnitNumber","showIndex","size","selectionColor","_getSvgIcon","setMapModuleLoaded","shouldDisplayMap","displayMap","Header","headerProps","MapProps","IAccountAddressTileDescription","FooterItem","handleTextChange","footerItemClassName","_createHeading","_createImageMarkup","_createText","_createLinkText","EditableLink","_createLink","HeadingContainer","ItemContainer","onTelemetryClick","ariaHiddenAttr","loadFailureBehavior","shouldSkipToMainImage","Accordion","expandAllButtonRef","collapseAllButtonRef","_onExpandAll","_onCollapseAll","isDisabled","headingComponent","accordionViewProps","_renderAccordionButton","_getAccordionItem","ExpandAll","attributeExpandAll","CollapseAll","attributeCollapseAll","showToggleAll","expandAllText","toggleAllSeparator","collapseAllText","_this$collapseAllButt","_this$expandAllButton","AccountWelcomeTileView","AccountAddressTileLinks","MapHeader","MapView","SignUpLoadingMessage","FooterItemView","_renderElement","SignUpLabel","htmlFor"],"mappings":"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","file":"static/js/14.0113bea90cab2baa7bdb.chunk.js","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISelectedStoreViewProps } from './components/selected-store/selected-store';\nimport { IStoreSelectorViewProps } from './store-selector';\n\n/**\n * Renders the pickup Delivery options.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderDeliveryOptions: React.FC = props => {\n const { canSelectLocation, deliveryOptions, pickUpDeliveryOptionButton, pickupModes } = props;\n\n return (\n <>\n {/* eslint-disable-next-line no-nested-ternary -- Need this.*/}\n {canSelectLocation ? (ArrayExtensions.hasElements(deliveryOptions) ? pickupModes : pickUpDeliveryOptionButton) : false}\n \n );\n};\n\n/**\n * Render the selected store.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderSelectedStore: React.FC = props => {\n const {\n storeDetailsMain,\n storeHeader,\n storeName,\n storeDetailsCloseButton,\n storeDistance,\n storeDetailsAvailabilityContainer,\n productAvailability,\n stockStatus,\n isCurrentLocation,\n currentLocation,\n isPreferredStore,\n preferredStoreButton,\n removePreferredStoreButton\n } = props;\n\n return (\n \n \n {storeDetailsCloseButton}\n {storeName}\n {storeDistance}\n \n \n {productAvailability}\n {stockStatus}\n \n {isCurrentLocation ? currentLocation : renderDeliveryOptions(props)}\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n \n );\n};\n\n/**\n * Render the body of the popup.\n * @param props -- Store selector view props.\n * @returns -- Returns the html.\n */\nconst renderBody: React.FC = props => {\n const {\n BodyContainerProps,\n locationsMessage,\n search,\n state,\n spinner,\n locationsList,\n noLocationsMessage,\n maps,\n bodyWrapperProps,\n storeResultContainerProps,\n mapContainerProps,\n isMobileView,\n storeDetailsModal,\n selectedLocation\n } = props;\n\n if (isMobileView) {\n return (\n \n {locationsMessage}\n {search}\n \n \n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\n {maps}\n {selectedLocation && renderSelectedStore(selectedLocation)}\n \n \n \n );\n }\n\n return (\n \n \n \n {locationsMessage}\n {search}\n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\n \n {maps}\n \n \n );\n};\n\n/**\n * Store selector view props.\n * @param props - Store selector view props.\n * @returns - HTML.\n */\nconst StoreSelectorView: React.FC = props => {\n const {\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n\n terms\n } = props;\n\n return (\n \n {HeaderProps}\n {renderBody(props)}\n {terms}\n \n );\n};\n\nexport default StoreSelectorView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface ISignUpSuccess {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst SignUpSuccess: React.FC = ({ id, className, type = 'page', message }) => {\n const successClassName = `${className}__${type}-success`;\n\n return (\n \n );\n};\n\nexport default SignUpSuccess;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignUpInputProps {\n id?: string;\n hasFocus?: boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 ISignUpInput {\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 SignUpInput: React.FC = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n \n);\n\nexport default SignUpInput;\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IFarmlandsNavigationMenu contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum navigationMenuSource {\r\n retailServerOnly = 'retailServerOnly',\r\n cmsOnly = 'cmsOnly',\r\n all = 'all'\r\n}\r\n\r\nexport interface IFarmlandsNavigationMenuConfig extends Msdyn365.IModuleConfig {\r\n navigationMenuSource?: navigationMenuSource;\r\n cmsNavItems?: ICmsNavItemsData[];\r\n className?: string;\r\n}\r\n\r\nexport interface IFarmlandsNavigationMenuResources {\r\n menuAriaLabel: string;\r\n backButtonAriaLabel: string;\r\n allCategoryMenuText: string;\r\n}\r\n\r\nexport interface ICmsNavItemsData {\r\n linkText?: string;\r\n linkUrl?: Msdyn365.ILinkData;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n}\r\n\r\nexport interface IFarmlandsNavigationMenuProps extends Msdyn365.IModule {\r\n resources: IFarmlandsNavigationMenuResources;\r\n config: IFarmlandsNavigationMenuConfig;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport { IActionContext, IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\r\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport { computed, observable } from 'mobx';\r\nimport * as React from 'react';\r\nimport { IMenuItemData, IFarmlandsNavigationMenuData } from './farmlands-navigation-menu.data';\r\nimport {\r\n ICmsNavItemsData,\r\n IFarmlandsNavigationMenuProps,\r\n ISubMenusData,\r\n navigationMenuSource\r\n} from './farmlands-navigation-menu.props.autogenerated';\r\n\r\nexport interface INavigationMenuViewProps extends IFarmlandsNavigationMenuProps {\r\n className: string;\r\n menuItemData: IMenuItemData[];\r\n Navigation: IModuleProps;\r\n MenuList: INodeProps;\r\n ListItem: INodeProps;\r\n Link: INodeProps;\r\n Button: INodeProps;\r\n Span: INodeProps;\r\n ImageContainer: INodeProps;\r\n MobileDescriptionContainer: INodeProps;\r\n MobileBackButton: INodeProps;\r\n MobileDescriptionLabel: INodeProps;\r\n imageSettings: IImageSettings;\r\n gridSettings: IGridSettings;\r\n isMobileView: boolean;\r\n}\r\n\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport interface INavigationMenuState {\r\n isMobile: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenu component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass NavigationMenu extends React.PureComponent<\r\n IFarmlandsNavigationMenuProps,\r\n INavigationMenuState\r\n> {\r\n private static CMSItemIdInit: number = 1000;\r\n private static RSItemIdInit: number = 5000;\r\n private resizeThrottledEventHandler?: (event: Event) => void;\r\n private menuItemList: IMenuItemData[];\r\n private isRetail: boolean = true;\r\n private isCMS: boolean = true;\r\n @observable\r\n private viewport: GridSize;\r\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\r\n let nameTranslation: TextValueTranslation | undefined;\r\n if (locale && nameTranslations && nameTranslations.length > 0) {\r\n nameTranslation = nameTranslations.find((item) => item.Language!.toLowerCase() === locale.toLowerCase());\r\n }\r\n\r\n return nameTranslation && nameTranslation.Text;\r\n }\r\n\r\n constructor(props: IFarmlandsNavigationMenuProps) {\r\n super(props);\r\n this._updateViewport = this._updateViewport.bind(this);\r\n this.viewport =\r\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile'\r\n ? 'xs'\r\n : 'lg';\r\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\r\n this.state = { isMobile: this.isMobile };\r\n this.menuItemList = [];\r\n }\r\n\r\n @computed get isMobile(): boolean {\r\n return this.viewport === 'xs' || this.viewport === 'sm';\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.resizeThrottledEventHandler =\r\n window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\r\n this._updateViewport();\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (!this.menuItemList || this.menuItemList.length === 0) {\r\n this.menuItemList = this._mapData();\r\n }\r\n if (isEmptyOrNullObject(this.props.data)) {\r\n this.props.telemetry.error('Navigatiomenu returned null');\r\n return null;\r\n }\r\n\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=224&h=300&m=6`, w: 0, h: 0 },\r\n xl: { q: `w=224&h=300&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n const viewProps = {\r\n ...this.props,\r\n ...this.state,\r\n imageSettings: defaultImageSettings,\r\n gridSettings: this.props.context.request.gridSettings,\r\n Navigation: {\r\n moduleProps: this.props,\r\n className: classnames(\r\n 'ms-nav',\r\n this.props.config.className,\r\n this.state.isMobile ? 'mobile-vp' : 'desktop-vp'\r\n ),\r\n tag: 'nav',\r\n role: 'navigation',\r\n 'aria-label': this.props.resources.menuAriaLabel\r\n },\r\n MenuListContainer: {\r\n className: 'ms-nav__list-container',\r\n tag: 'div'\r\n },\r\n MenuList: {\r\n className: 'ms-nav__list',\r\n tag: 'ul',\r\n role: 'menu'\r\n },\r\n ListItem: {\r\n className: 'ms-nav__list__item',\r\n role: 'presentation',\r\n tag: 'li'\r\n },\r\n Link: {\r\n tag: 'a',\r\n className: 'ms-nav__list__item__link pv-10',\r\n role: 'menuitem'\r\n },\r\n Button: {\r\n className: 'ms-nav__list__item__button pd-15',\r\n tag: 'button',\r\n role: 'menuitem',\r\n onClick: this.props\r\n },\r\n ImageContainer: {\r\n className: 'ms-nav__list__item__image'\r\n },\r\n Span: {\r\n className: 'ms-nav__list__item__span',\r\n tag: 'span'\r\n },\r\n MobileDescriptionContainer: {\r\n className: 'ms-nav__list__mobile__container'\r\n },\r\n MobileBackButton: {\r\n className: 'ms-nav__list__mobile__container__button',\r\n tag: 'button',\r\n 'aria-label': this.props.resources.backButtonAriaLabel,\r\n onClick: this.props\r\n },\r\n MobileDescriptionLabel: {\r\n className: 'ms-nav__list__mobile__container__span',\r\n tag: 'span'\r\n },\r\n isMobileView: this.state.isMobile,\r\n menuItemData: this.menuItemList,\r\n className: classnames('ms-nav', this.props.config.className)\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _mapData(): IMenuItemData[] {\r\n const { data, config } = this.props;\r\n const mergedData: IMenuItemData[] = [];\r\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\r\n data.categories.result.map((item: CategoryHierarchy) =>\r\n mergedData.push(this._constructMenuItemData(item, undefined, true))\r\n );\r\n }\r\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\r\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) =>\r\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx + 1))\r\n );\r\n }\r\n return mergedData;\r\n }\r\n private _constructMenuItemData(\r\n retailItem?: CategoryHierarchy,\r\n cmsItem?: ICmsNavItemsData,\r\n isRetail?: boolean,\r\n idx?: number\r\n ): IMenuItemData {\r\n const locale =\r\n this.props.context && this.props.context.request && this.props.context.request.locale\r\n ? this.props.context.request.locale\r\n : 'en-us';\r\n if (isRetail) {\r\n return {\r\n id: NavigationMenu.RSItemIdInit++,\r\n linkText: NavigationMenu.getFriendlyName(locale, retailItem && retailItem.NameTranslations) || '',\r\n linkURL: retailItem && retailItem.Url,\r\n subMenu: this._getNestedChildren(retailItem)\r\n } as IMenuItemData;\r\n } else {\r\n return {\r\n id: NavigationMenu.CMSItemIdInit++,\r\n linkText: (cmsItem && cmsItem.linkText) || '',\r\n linkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\r\n imageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\r\n imageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\r\n subMenu: this._getCMSNestedChildren(cmsItem)\r\n } as IMenuItemData;\r\n }\r\n }\r\n\r\n private _getNestedChildren(category?: CategoryHierarchy): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n if (!category || !category.Children || !category.Children.length) {\r\n return [];\r\n }\r\n\r\n nestedChildren.push({\r\n linkText: this.props.resources.allCategoryMenuText,\r\n linkURL: getCategoryUrl(category, (this.props.context as unknown) as IActionContext, {})\r\n });\r\n category.Children.map((item: CategoryHierarchy) => {\r\n nestedChildren.push(this._constructMenuItemData(item, undefined, true));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n\r\n if (!category || !category.subMenus || !category.subMenus.length) {\r\n return [];\r\n }\r\n\r\n category.subMenus.map((item: ISubMenusData, idx: number) => {\r\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _setNavigationSource = (sourceType?: navigationMenuSource): void => {\r\n switch (sourceType) {\r\n case navigationMenuSource.retailServerOnly:\r\n this.isRetail = true;\r\n this.isCMS = false;\r\n break;\r\n case navigationMenuSource.cmsOnly:\r\n this.isRetail = false;\r\n this.isCMS = true;\r\n break;\r\n case navigationMenuSource.all:\r\n this.isRetail = true;\r\n this.isCMS = true;\r\n break;\r\n default:\r\n }\r\n };\r\n\r\n private _updateViewport(): void {\r\n this.viewport = this._getViewport();\r\n this.setState({ isMobile: this.isMobile });\r\n }\r\n\r\n private _getViewport(): GridSize {\r\n const { context } = this.props;\r\n\r\n // always render in mobile viewport on a mobile device\r\n // if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n // return 'xs';\r\n // }\r\n if (typeof window !== undefined && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n } else {\r\n return 'xl';\r\n }\r\n }\r\n }\r\n\r\n return 'xs';\r\n }\r\n}\r\n\r\nexport default NavigationMenu;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountAddressTileViewProps } from './account-address-tile';\n\nconst AccountAddressTileView: React.FC = props => {\n const { AccountAddressTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountAddressTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccordionItemViewProps } from './accordion-item';\n\nconst AccordionItemView: React.FC = props => {\n const { drawer, accordionSlots, AccordionItemContainer, AccordionItemContent } = props;\n return (\n \n \n \n {accordionSlots &&\n accordionSlots.accordionItemContent &&\n accordionSlots.accordionItemContent.length &&\n _renderAccordionItemContent(accordionSlots.accordionItemContent)}\n \n \n \n );\n};\n\nconst _renderAccordionItemContent = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {items && items.length > 0\n ? items.map((item: React.ReactNode, index: number) => {\n return {item};\n })\n : null}\n \n );\n};\nexport default AccordionItemView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Interface Pickup option list.\n */\nexport interface IPickUpOptionListProps {\n pickupListOptionMenuText: string;\n pickupmodeList?: DeliveryOption[];\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Interface pickup option list state.\n */\nexport interface IPickOptionListState {\n expandSiteOptions: boolean;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class PickUpOptionList extends React.PureComponent {\n private readonly _pickupListOptionMenu: React.RefObject;\n\n private readonly _pickupListOptionButton: React.RefObject;\n\n private readonly eventsToBeBind = ['click', 'touchstart'];\n\n public constructor(props: IPickUpOptionListProps) {\n super(props);\n this._renderDeliveryOptions = this._renderDeliveryOptions.bind(this);\n this._pickupListOptionMenu = React.createRef();\n this._pickupListOptionButton = React.createRef();\n this.state = {\n expandSiteOptions: false\n };\n }\n\n public componentDidMount(): void {\n for (const event of this.eventsToBeBind) {\n window.addEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public componentWillUnmount(): void {\n for (const event of this.eventsToBeBind) {\n window.removeEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public render(): JSX.Element {\n const { pickupListOptionMenuText, pickupmodeList } = this.props;\n\n return (\n
\n \n {pickupListOptionMenuText}\n \n \n {this.state.expandSiteOptions ? (\n
    \n {pickupmodeList?.map((delivery: DeliveryOption) => {\n return (\n
  • \n \n \n {delivery.Description}\n \n \n
  • \n );\n })}\n
\n ) : null}\n
\n );\n }\n\n /**\n * Handle the document click.\n * @param event -- Event object.\n */\n private readonly handleDocumentClick = (event: Event): void => {\n const htmlElement = event.target as HTMLElement;\n if (\n !(\n (this._pickupListOptionButton.current !== null &&\n (event.target === this._pickupListOptionButton.current ||\n this._pickupListOptionButton.current.contains(htmlElement))) ||\n (this._pickupListOptionMenu.current !== null &&\n (event.target === this._pickupListOptionMenu.current || this._pickupListOptionMenu.current.contains(htmlElement)))\n )\n ) {\n this.setState({\n expandSiteOptions: false\n });\n }\n };\n\n private _renderDeliveryOptions(event: React.MouseEvent): void {\n event.stopPropagation();\n const isExpandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !isExpandSiteOptionsState\n });\n }\n\n /**\n * Select Delivery option.\n * @param event -- Event Object.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode && deliveryCode.length > 0) {\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Store Pickup option list interface.\n */\nexport interface IStorePickUpOptionListProps {\n productPickupListOptionMenuText?: string;\n productPickupModeList?: DeliveryOption[];\n defaultOptionText?: string;\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Store Pickup option state interface.\n */\nexport interface IStorePickOptionListState {\n isFilterExpanded: boolean;\n selectedPickupMode?: string;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class StorePickUpOptionList extends React.PureComponent {\n private readonly _storePickupListOptionMenu: React.RefObject;\n\n public constructor(props: IStorePickUpOptionListProps) {\n super(props);\n this._storePickupListOptionMenu = React.createRef();\n this.state = {\n isFilterExpanded: false,\n selectedPickupMode: ''\n };\n }\n\n public render(): JSX.Element {\n const { productPickupListOptionMenuText, productPickupModeList, defaultOptionText } = this.props;\n const selectedPickupModeDesc = defaultOptionText\n ? defaultOptionText\n : productPickupModeList?.find((delivery: DeliveryOption) => delivery.Code === this.state.selectedPickupMode)?.Description;\n const role = 'menu';\n return (\n
\n \n {this.state.isFilterExpanded ? (\n
    \n {productPickupModeList?.map((delivery: DeliveryOption) => {\n return (\n
  • \n \n \n {delivery.Description}\n \n \n
  • \n );\n })}\n
\n ) : null}\n
\n );\n }\n\n /**\n * Method to call when drop dwon get selected.\n */\n private readonly _rendeDeliveryOptions = () => {\n const isExpandOptionsState = this.state.isFilterExpanded;\n this.setState({\n isFilterExpanded: !isExpandOptionsState\n });\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onKeyDown = async (event: React.KeyboardEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RegularStoreHours } from '@msdyn365-commerce/retail-proxy';\nimport get from 'lodash/get';\n\nimport { IStoreSelectorLocationLineItemResources } from '.';\n\nexport interface IHoursDisplayInfo {\n startDayShort: string;\n startDayFull: string;\n endDayShort?: string;\n endDayFull?: string;\n timeRange: string;\n}\n\ninterface IHoursInfo {\n isClosed: boolean;\n openTime?: number;\n closeTime?: number;\n}\n\ntype DayType = 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT' | 'SUN';\n\nexport const secondsToTime = (seconds: number | undefined): string | undefined => {\n if (seconds === undefined) {\n return undefined;\n }\n let hours = Math.floor(seconds / (60 * 60));\n const ampm = hours >= 12 ? 'pm' : 'am';\n hours %= 12;\n hours = hours ? hours : 12;\n const divisorForMinutes = seconds % (60 * 60);\n const minutes = Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\n return `${hours}:${minutes} ${ampm}`;\n};\n\nconst getShortTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.monday;\n case 'TUE':\n return resources.days.tuesday;\n case 'WED':\n return resources.days.wednesday;\n case 'THU':\n return resources.days.thursday;\n case 'FRI':\n return resources.days.friday;\n case 'SAT':\n return resources.days.saturday;\n default:\n // Case 'SUN':\n return resources.days.sunday;\n }\n};\n\nconst getFullTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.mondayFull;\n case 'TUE':\n return resources.days.tuesdayFull;\n case 'WED':\n return resources.days.wednesdayFull;\n case 'THU':\n return resources.days.thursdayFull;\n case 'FRI':\n return resources.days.fridayFull;\n case 'SAT':\n return resources.days.saturdayFull;\n default:\n // Case 'SUN':\n return resources.days.sundayFull;\n }\n};\n\nconst buildHoursDisplayInfo = (\n startDay: DayType,\n endDay: DayType,\n hoursInfo: string,\n resources: IStoreSelectorLocationLineItemResources\n): IHoursDisplayInfo => {\n return {\n startDayShort: getShortTimeString(startDay, resources),\n startDayFull: getFullTimeString(startDay, resources),\n endDayShort: startDay !== endDay ? getShortTimeString(endDay, resources) : undefined,\n endDayFull: startDay !== endDay ? getFullTimeString(endDay, resources) : undefined,\n timeRange: hoursInfo\n };\n};\n\nconst shouldMergeLines = (firstLine: IHoursInfo, secondLine: IHoursInfo): boolean => {\n if (firstLine.isClosed && secondLine.isClosed) {\n return true;\n }\n\n if (!firstLine.isClosed && !secondLine.isClosed) {\n return firstLine.openTime === secondLine.openTime && firstLine.closeTime === secondLine.closeTime;\n }\n\n return false;\n};\n\nconst getStoreHoursData = (storeHours: RegularStoreHours, dateForLookup: string): IHoursInfo => {\n return {\n isClosed: get(storeHours, `IsClosedOn${dateForLookup}`, false),\n openTime: get(storeHours, `${dateForLookup}OpenTime`, undefined),\n closeTime: get(storeHours, `${dateForLookup}CloseTime`, undefined)\n };\n};\n\nconst buildStoreHoursString = (hoursInfo: IHoursInfo, resources: IStoreSelectorLocationLineItemResources): string => {\n if (hoursInfo.isClosed) {\n return resources.closedText;\n }\n const openFrom: string | undefined = secondsToTime(hoursInfo.openTime);\n const openTo: string | undefined = secondsToTime(hoursInfo.closeTime);\n\n return `${openFrom}–${openTo}`;\n};\n\nexport const buildStoreHours = (storeHours: RegularStoreHours, resources: IStoreSelectorLocationLineItemResources): IHoursDisplayInfo[] => {\n const storeHoursList: IHoursDisplayInfo[] = [];\n\n const mondayHours = getStoreHoursData(storeHours, 'Monday');\n const tuesdayHours = getStoreHoursData(storeHours, 'Tuesday');\n const wednesdayHours = getStoreHoursData(storeHours, 'Wednesday');\n const thursdayHours = getStoreHoursData(storeHours, 'Thursday');\n const fridayHours = getStoreHoursData(storeHours, 'Friday');\n const saturdayHours = getStoreHoursData(storeHours, 'Saturday');\n const sundayHours = getStoreHoursData(storeHours, 'Sunday');\n\n let periodStart: DayType = 'MON';\n let periodEnd: DayType = 'MON';\n\n if (!shouldMergeLines(mondayHours, tuesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(mondayHours, resources), resources));\n\n periodStart = 'TUE';\n }\n periodEnd = 'TUE';\n\n if (!shouldMergeLines(tuesdayHours, wednesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(tuesdayHours, resources), resources));\n\n periodStart = 'WED';\n }\n periodEnd = 'WED';\n\n if (!shouldMergeLines(wednesdayHours, thursdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(wednesdayHours, resources), resources));\n\n periodStart = 'THU';\n }\n periodEnd = 'THU';\n\n if (!shouldMergeLines(thursdayHours, fridayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(thursdayHours, resources), resources));\n\n periodStart = 'FRI';\n }\n periodEnd = 'FRI';\n\n if (!shouldMergeLines(fridayHours, saturdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(fridayHours, resources), resources));\n\n periodStart = 'SAT';\n }\n periodEnd = 'SAT';\n\n if (!shouldMergeLines(saturdayHours, sundayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(saturdayHours, resources), resources));\n\n periodStart = 'SUN';\n }\n periodEnd = 'SUN';\n\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(sundayHours, resources), resources));\n\n return storeHoursList;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, OrgUnitContact, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './date-time-helpers';\n\n/**\n * Store Locator line item resources.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n\n closedText: string;\n\n outOfStock: string;\n inStock: string;\n\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * Store Locator line item props.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n filteredPickupMode?: string;\n shouldShowIndex?: boolean;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n };\n}\n\n/**\n * Store Locator line item action component.\n */\nconst storeSelectorLocationLineItemComponentActions = {\n onLocationSelected(props: IStoreSelectorLocationLineItemProps, deliveryMode?: string): void {\n props.handlers.onSelected(props.location, deliveryMode);\n },\n onSetAsPreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onSetAsPreferredStore(props.location.OrgUnitNumber);\n },\n onRemovePreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onRemovePreferredStore();\n }\n};\n\n/**\n * Function to render store hours.\n * @param storeHours - Store Hours object.\n * @param location - Store Unit.\n * @param resources - Resources.\n * @returns - Jsx element.\n */\nconst renderStoreHours = (\n storeHours: StoreHours | undefined,\n location: OrgUnitLocation,\n resources: IStoreSelectorLocationLineItemResources\n): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day houts\n if (storeHours?.RegularStoreHours) {\n const storeHoursList: IHoursDisplayInfo[] = buildStoreHours(storeHours.RegularStoreHours, resources);\n\n return (\n
\n {storeHoursList.map(displayTime => (\n
\n {displayTime.endDayShort ? (\n
\n {displayTime.startDayShort}–\n {displayTime.endDayShort}\n
\n ) : (\n
\n {displayTime.startDayShort}\n
\n )}\n
{displayTime.timeRange}
\n
\n ))}\n
\n );\n }\n\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n const storeOpenFrom: string | undefined = secondsToTime(location.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(location.OpenTo);\n\n return (\n
\n {storeOpenFrom}-{storeOpenTo}\n
\n );\n};\n\n/**\n * Function to 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 = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n isLocationDisabled?: boolean\n): string | undefined => {\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < 1) {\n return `(<1 ${preferredDistanceUnit})`;\n }\n return `(${Math.floor(distance)} ${preferredDistanceUnit})`;\n};\n\n/**\n * Function to store contact.\n * @param contacts - Store location within radius.\n * @returns - Return primary contact number of store.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === 1 && !contact.IsPrivate);\n\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n if (primaryPhoneContact) {\n return primaryPhoneContact.Locator;\n }\n\n return allPhoneContacts[0].Locator;\n }\n\n return undefined;\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @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 = (\n props: IStoreSelectorLocationLineItemProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Method to check if we have atleast one common delivery code between product and channel.\n * @param productdeliveryOptions - Product DeliveryOption List.\n * @param storePickUpOptionList - Channel DeliveryOption List.\n * @returns DeliveryOptionList.\n */\nexport const matchDeliveryOptions = (\n productdeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n const deliveryOption: DeliveryOption[] = [];\n productdeliveryOptions?.map(delivery => {\n const pickup = storePickUpOptionList?.find(_delivery => _delivery.Code === delivery.Code);\n if (pickup) {\n deliveryOption.push(pickup);\n }\n });\n\n return deliveryOption;\n};\n\n/**\n * Renders store location line items.\n * @param props - Store location line items props.\n * @returns - HTML.\n */\nconst storeSelectorLocationLineItem: React.FC = (props: IStoreSelectorLocationLineItemProps) => {\n const {\n hideStockStatus,\n isCurrentLocation,\n isInStock,\n location,\n resources,\n storeHours,\n stockStatusLabel,\n storeLocatorView,\n index,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n shouldShowIndex\n } = props;\n\n const storeName: string | undefined = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(location.Distance, props.preferredDistanceUnit, isLocationDisabled);\n const storeAddress: string | undefined = location.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n const stockText: string | undefined = hideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n const canSelectLocation = hideStockStatus || isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName || '');\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n /* eslint-disable prettier/prettier */\n return (\n
\n
\n {(shouldShowIndex || storeLocatorView) && {index}}\n {storeName}\n {distanceAsString ? \n {' '}\n {distanceAsString}\n : false}\n
\n
\n
\n

{resources.contactInfoHeader}

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

{resources.storeHoursHeader}

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

{resources.availabilityInfoHeader}

\n {stockText &&

{stockText}

}\n {isCurrentLocation ? (\n

{resources.currentLocation}

\n ) : canSelectLocation ? (\n deliveryOptionList.length === 0 ? (\n \n {pickupInStoreButtonText}\n \n ) : (\n renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel)\n )\n ) : (\n false\n )}\n
\n )}\n {isPreferredStoreEnabled ? (\n isPreferredStore ? (\n \n {resources.preferredStoreText}\n \n ) : (\n \n {resources.setAsPreferredStoreText}\n \n )\n ) : null}\n
\n
\n );\n};\n\n/**\n * Store location line item component.\n */\nexport const StoreSelectorLocationLineItemComponent = storeSelectorLocationLineItem as (\n props: IStoreSelectorLocationLineItemProps\n) => JSX.Element;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IStoreSelectorResources } from '../store-selector.props.autogenerated';\nimport { IStoreSelectorLocationLineItemResources, StoreSelectorLocationLineItemComponent } from './store-selector-location-line-item';\n\n/**\n * Store selector location lines props interface.\n */\nexport interface IStoreSelectorLocationLinesProps {\n locations?: IFullOrgUnitAvailability[];\n resources: IStoreSelectorResources;\n preferredDistanceUnit?: string;\n\n alreadySelectedLocation?: OrgUnitLocation;\n outOfStockThreshold: number;\n enableOutOfStockCheck: boolean;\n storeLocatorView?: boolean;\n selectedStoreLocationId?: string;\n isPreferredStoreEnabled?: boolean;\n displayList?: boolean;\n isLocationDisabled?: boolean;\n productPickUpDeliveryOptions?: DeliveryOption[];\n onClick: (locationId: string | undefined) => void;\n preferredStoreLocationId: string | null;\n onSetAsPreferredStore: (locationId: string | undefined) => void;\n onRemovePreferredStore: () => void;\n filteredPickupMode?: string;\n shouldShowIndex?: boolean;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n onLocationSelected(location: OrgUnitLocation | undefined): void;\n}\n\n/**\n * Displays all the location line items, or null if none exists.\n */\n@observer\nexport class StoreSelectorLocationLines extends React.PureComponent {\n @observable private _stores: IFullOrgUnitAvailability[] | undefined;\n\n private readonly selectedLocationRef: React.RefObject;\n\n private storeCounter: number;\n\n public constructor(props: IStoreSelectorLocationLinesProps) {\n super(props);\n this.selectedLocationRef = React.createRef();\n this.storeCounter = 0;\n }\n\n public componentDidUpdate(previousProps: IStoreSelectorLocationLinesProps): void {\n if (this.props.selectedStoreLocationId !== previousProps.selectedStoreLocationId) {\n this._scrollIntoView();\n }\n }\n\n public componentDidMount(): void {\n if (this.props.locations) {\n this._stores = this._sortStores(this.props.locations);\n }\n\n reaction(\n () => this.props.locations,\n () => {\n if (this.props.locations) {\n this._stores = this._sortStores(this.props.locations);\n }\n }\n );\n }\n\n public render(): JSX.Element | null {\n if (!ArrayExtensions.hasElements(this._stores)) {\n return null;\n }\n\n this.storeCounter = 0;\n\n return (\n
\n {this._stores.map((store, index) => {\n return this._renderStoreLocation(store, index);\n })}\n
\n );\n }\n\n /**\n * On click Handler function.\n * @param orgUnitLocation -OrgUnit location.\n * @returns Click action on orgUnit Location.\n */\n private readonly onClickHandler = (orgUnitLocation: OrgUnitLocation | undefined) => () => {\n this.props.onClick(orgUnitLocation?.OrgUnitNumber);\n };\n\n private _renderStoreLocation(store: IFullOrgUnitAvailability, index: number): JSX.Element | undefined {\n const orgUnitLocation = store?.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreLocationId = this.props.selectedStoreLocationId;\n const deliveryOptions = store?.OrgUnitPickUpDeliveryModes;\n const defaultAriaSetsize = 0;\n if (orgUnitLocation) {\n ++this.storeCounter;\n return (\n \n \n \n );\n }\n return undefined;\n }\n\n /**\n * Sort store.\n * @param stores - Array of stores data.\n * @returns Sorted stores array.\n */\n private _sortStores(stores: IFullOrgUnitAvailability[]): IFullOrgUnitAvailability[] {\n /**\n * IsPreferredStore.\n * @param value - Array of stores data.\n * @returns IsPreferred store boolean value.\n */\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n this.props.isPreferredStoreEnabled &&\n this.props.preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === this.props.preferredStoreLocationId;\n\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\n }\n\n /**\n * Scroll into view.\n */\n private readonly _scrollIntoView = () => {\n const selectedLocationDiv = this.selectedLocationRef.current;\n const parent = selectedLocationDiv?.parentElement;\n if (selectedLocationDiv && parent) {\n if (parent.scrollTop > selectedLocationDiv.offsetTop) {\n parent.scrollTop = selectedLocationDiv.offsetTop;\n } else if (selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight > parent.scrollTop + parent.clientHeight) {\n parent.scrollTop = selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight - parent.clientHeight;\n }\n }\n };\n\n /**\n * Is current location.\n * @param location - Org unit location.\n * @returns The current location.\n */\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined): boolean =>\n (this.props.alreadySelectedLocation && location && this.props.alreadySelectedLocation.OrgUnitNumber === location.OrgUnitNumber) ||\n false;\n\n /**\n * Check the product is in stock or not.\n * @param itemAvailabilities - Item availabilities.\n * @returns If the product is in stock.\n */\n private readonly _isProductInStock = (itemAvailabilities: ItemAvailability[] | undefined): boolean => {\n if (!this.props.enableOutOfStockCheck) {\n return true;\n }\n\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > 0 : false;\n }\n\n return false;\n };\n\n /**\n * Get the stock inventory label.\n * @param availabilityWithHours - Full org unit availability.\n * @returns The stock label.\n */\n private readonly _stockInventoryLabel = (availabilityWithHours: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (availabilityWithHours && ArrayExtensions.hasElements(availabilityWithHours.ProductInventoryInformation)) {\n for (let i = 0; i < availabilityWithHours.ProductInventoryInformation.length; i++) {\n if (\n availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n availabilityWithHours.ProductInventoryInformation[i].InventLocationId\n ) {\n return availabilityWithHours.ProductInventoryInformation[i].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n\n /**\n * Map resources.\n * @param resources - Store resources.\n * @returns Resources.\n */\n private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n KeyCodes,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { StorePickUpOptionList } from './store-pickup-option-list';\n\n/**\n * Store Selector Search Form Props interface.\n */\nexport interface IStoreSelectorSearchFormProps {\n resources: {\n searchInputAriaLabel: string;\n searchButtonAriaLabel: string;\n searchPlaceholderText: string;\n seeAllStoresText: string;\n viewListText: string;\n viewMapText: string;\n pickupFilterByHeading?: string;\n pickupFilterMenuHeading?: string;\n };\n\n id: string;\n value: string;\n isMapDisabled?: boolean;\n showAllStores?: boolean;\n displayList?: boolean;\n locatorView?: boolean;\n productPickUpDeliveryOptions?: DeliveryOption[];\n hasEnabledPickupFilterToShowStore?: boolean;\n filteredPickupMode?: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n onShowAllStores(): void;\n onToggleListMapViewState(): void;\n performSearch(searchTerm: string): Promise;\n searchTermChanged(searchTerm: string): Promise;\n filterPickupModeSelected(pickupMode: string): void;\n}\n\n/**\n * Simple search form consisting of search text and a search button.\n */\nexport class StoreSelectorSearchForm extends React.PureComponent {\n private readonly searchBoxRef: React.RefObject = React.createRef();\n\n private readonly storeSearchAttributes: Msdyn365.IDictionary | undefined;\n\n private readonly showAllStoreAttributes: Msdyn365.IDictionary | undefined;\n\n private readonly toggleMapViewAttributes: Msdyn365.IDictionary | undefined;\n\n private previousValue: string = '';\n\n private isSearchResultOpened: boolean = false;\n\n public constructor(props: IStoreSelectorSearchFormProps) {\n super(props);\n this.state = { value: '' };\n this._handleKeyPressPrev = this._handleKeyPressPrev.bind(this);\n const payLoad: IPayLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.SearchStore);\n this.storeSearchAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ShowAllStore;\n this.showAllStoreAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ToggleMapView;\n this.toggleMapViewAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n const {\n resources: {\n searchButtonAriaLabel,\n searchPlaceholderText,\n seeAllStoresText,\n viewListText,\n viewMapText,\n pickupFilterByHeading,\n pickupFilterMenuHeading\n },\n id,\n value,\n isMapDisabled,\n showAllStores,\n displayList,\n locatorView,\n onShowAllStores,\n productPickUpDeliveryOptions,\n hasEnabledPickupFilterToShowStore\n } = this.props;\n\n const toggleButtonText = displayList ? viewMapText : viewListText;\n\n return (\n
\n \n
\n )}\n {this.renderPickupModesList(\n this.props,\n toggleButtonText,\n productPickUpDeliveryOptions,\n pickupFilterMenuHeading,\n locatorView,\n pickupFilterByHeading,\n hasEnabledPickupFilterToShowStore,\n displayList\n )}\n \n );\n }\n\n /**\n * Handles the key press on the input box.\n * @param event - Event object.\n */\n private readonly _handleInputKeyPress = (event: React.KeyboardEvent): void => {\n // When the user navigates through the up and down arrow on the result returned by the auto suggest and press enter.\n // At that time, two requests were made to fetch the store details due to which incorrect result is shown and causes flickering.\n // In order to avoid that. Checking if the search result is open or not.\n if (event.keyCode === KeyCodes.ArrowUp || event.keyCode === KeyCodes.ArrowDown) {\n const activeDescedantValue = (event.target as HTMLInputElement).getAttribute('aria-activedescendant');\n if (activeDescedantValue) {\n if (this.previousValue === '') {\n this.previousValue = activeDescedantValue;\n this.isSearchResultOpened = true;\n return;\n }\n\n if (activeDescedantValue !== this.previousValue) {\n this.previousValue = activeDescedantValue;\n this.isSearchResultOpened = true;\n } else {\n this.isSearchResultOpened = false;\n }\n }\n }\n };\n\n /**\n * Calls method display result.\n * @param event - The first number.\n */\n private readonly _handleKeyPressPrev = (event: React.KeyboardEvent): void => {\n if (event.keyCode === KeyCodes.Enter || event.keyCode === KeyCodes.Space) {\n this.props.onShowAllStores();\n }\n };\n\n /**\n * Method called on search text changed.\n * @param event - Input value.\n */\n private readonly _searchTextChanged = async (event: React.ChangeEvent): Promise => {\n const inputValue: string = event.target.value;\n\n await this.props.searchTermChanged(inputValue);\n };\n\n /**\n * Method called on search submit.\n * @param event - Input value.\n */\n private readonly _onSubmit = async (event: React.SyntheticEvent): Promise => {\n event.preventDefault(); // Prevents form submission\n this.searchBoxRef.current?.blur();\n if (!this.isSearchResultOpened) {\n await this.props.performSearch(this.props.value);\n }\n this.isSearchResultOpened = false;\n };\n\n /**\n * Method called on product pickup option change.\n * @returns - Void.\n */\n private readonly _onChangeHandler = () => async (deliveryCode: string): Promise => {\n this.props.filterPickupModeSelected(deliveryCode);\n return Promise.resolve();\n };\n\n /**\n * Method to render pickup mode list.\n * @param props - Store selector search form props.\n * @param toggleButtonText - Locator view button text.\n * @param productPickUpDeliveryOptions - Product DeliveryOption List.\n * @param pickupFilterMenuHeading - Pickup store button text.\n * @param locatorView - Locator View is on\\off.\n * @param pickupFilterByHeading - Pickup list label text.\n * @param hasEnabledPickupFilterToShowStore - Flag to check header filter is enabled.\n * @param shouldDisplayList - Display List.\n * @returns Jsx component.\n */\n private readonly renderPickupModesList = (\n props: IStoreSelectorSearchFormProps,\n toggleButtonText: string,\n productPickUpDeliveryOptions: DeliveryOption[] | undefined,\n pickupFilterMenuHeading: string | undefined,\n locatorView: boolean | undefined,\n pickupFilterByHeading: string | undefined,\n hasEnabledPickupFilterToShowStore: boolean | undefined,\n shouldDisplayList?: boolean\n ): JSX.Element | null => {\n const toggleButtonClass = shouldDisplayList ? 'view-map' : 'list-view';\n if (hasEnabledPickupFilterToShowStore) {\n return (\n
\n {locatorView && (\n \n {toggleButtonText}\n \n )}\n \n
{pickupFilterByHeading}
\n
\n );\n }\n if (locatorView) {\n return (\n \n {toggleButtonText}\n \n );\n }\n return null;\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorResources, ITermsOfServiceLinkData } from '../store-selector.props.autogenerated';\n\nexport interface IStoreSelectorEmptyMessageProps {\n resources: IStoreSelectorResources;\n}\nexport const StoreSelectorEmptyMessage: React.FC = ({ resources }) => (\n
\n

{resources.emptyLocationsText}

\n
\n);\n\nexport const StoreSelectorWaiting: React.FC = () =>
;\n\nexport interface IStoreSelectorTermsOfServiceProps {\n link?: ITermsOfServiceLinkData;\n requestContext: Msdyn365.IRequestContext;\n onTextChange?(event: Msdyn365.ContentEditableEvent): void;\n}\n\nexport const StoreSelectorTermsOfService: React.FC = ({ link, requestContext, onTextChange }) => {\n if (link) {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-store-select__terms-link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link'\n };\n\n return (\n
\n \n
\n );\n }\n return null;\n};\n\nexport interface IStoreSelectorFoundLocationsMessage {\n resources: IStoreSelectorResources;\n locations?: IFullOrgUnitAvailability[];\n searchRadius: number;\n preferredDistanceUnit: string;\n isSeeAllStore: boolean;\n}\nexport const StoreSelectorFoundLocationsMessage: React.FC = ({\n locations,\n searchRadius,\n resources,\n isSeeAllStore,\n preferredDistanceUnit\n}) => {\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n return (\n
\n {isSeeAllStore\n ? resources.storeAllCountMessage.replace('{count}', locations.length.toString())\n : storeCountMessage.replace('{count}', locations.length.toString()).replace('{radius}', searchRadius.toString())}\n
\n );\n }\n\n return null;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildDistanceString, matchDeliveryOptions } from '../store-selector-location-line-item';\n\n/**\n * Store Locator line item resources.\n */\nexport interface ISelectedStoreResources {\n availabilityInfoHeader: string;\n closedText: string;\n outOfStock: string;\n inStock: string;\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreProps {\n className?: string;\n shouldHideStockStatus?: boolean;\n isCurrentLocation?: boolean;\n isInStock?: boolean;\n selectedStore?: IFullOrgUnitAvailability;\n resources: ISelectedStoreResources;\n stockStatusLabel?: string;\n preferredStoreLocationId: string | null;\n isPreferredStoreEnabled?: boolean;\n isLocationDisabled?: boolean;\n telemetryContent?: ITelemetryContent;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n preferredDistanceUnit: string;\n filteredPickupMode?: string;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreViewProps {\n isCurrentLocation?: boolean;\n canSelectLocation?: boolean;\n selectedStore?: IFullOrgUnitAvailability;\n deliveryOptions?: DeliveryOption[];\n isPreferredStore?: boolean;\n resources: ISelectedStoreResources;\n\n storeDetailsMain: INodeProps;\n storeHeader: INodeProps;\n storeName: React.ReactNode;\n storeDistance: React.ReactNode;\n storeDetailsAvailabilityContainer: INodeProps;\n productAvailability: React.ReactNode;\n stockStatus: React.ReactNode;\n currentLocation: React.ReactNode;\n pickUpDeliveryOptionButton: React.ReactNode;\n pickupModes?: React.ReactNode;\n preferredStoreButton?: React.ReactNode;\n removePreferredStoreButton?: React.ReactNode;\n storeDetailsCloseButton?: React.ReactNode;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n}\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupInStoreClickHandler = (props: ISelectedStoreProps) => () => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation);\n }\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: ISelectedStoreProps) => () => {\n props.handlers.onSetAsPreferredStore(props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: ISelectedStoreProps) => async (deliveryCode: string): Promise => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, deliveryCode);\n }\n return Promise.resolve();\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: ISelectedStoreProps) => () => {\n props.handlers.onRemovePreferredStore();\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: ISelectedStoreProps, pickupMode?: string) => () => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, pickupMode);\n }\n};\n\n/**\n * On store details close functionality.\n * @param props -Store locator location items.\n * @returns Void promise.\n */\nconst storeDetailsModalHandler = (props: ISelectedStoreProps) => async (): Promise => {\n await props.handlers.closeStoreDetailsModal();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (\n props: ISelectedStoreProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Renders selected store details.\n * @param props - Store location details props.\n * @returns - Selected Store view props.\n */\nconst selectedStoreDetails = (props: ISelectedStoreProps): ISelectedStoreViewProps => {\n const {\n className,\n shouldHideStockStatus,\n isCurrentLocation,\n isInStock,\n selectedStore,\n resources,\n stockStatusLabel,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n preferredDistanceUnit\n } = props;\n\n const parentClassName = className ? className : 'ms-store-select__map__selected_store';\n const storeName: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\n const location = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n const distanceAsString: string | undefined = buildDistanceString(location?.Distance, preferredDistanceUnit, isLocationDisabled);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n // eslint-disable-next-line no-nested-ternary -- Required to check stock Label\n const stockText: string | undefined = shouldHideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n const canSelectLocation = !shouldHideStockStatus && isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName ?? '');\n const isPreferredStore = preferredStoreLocationId === location?.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n\n const viewProps: ISelectedStoreViewProps = {\n selectedStore,\n isCurrentLocation,\n canSelectLocation,\n isPreferredStore,\n resources,\n deliveryOptions: deliveryOptionList,\n storeDetailsMain: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__main`\n },\n storeHeader: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__header`\n },\n storeName: {storeName},\n storeDetailsCloseButton: \n ),\n pickupModes: renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel),\n preferredStoreButton: isPreferredStoreEnabled ? (\n \n {resources.preferredStoreText}\n \n ) : null,\n removePreferredStoreButton: isPreferredStoreEnabled ? (\n \n {resources.setAsPreferredStoreText}\n \n ) : null,\n handlers: {\n onSelected: props.handlers.onSelected,\n onSetAsPreferredStore: props.handlers.onSetAsPreferredStore,\n onRemovePreferredStore: props.handlers.onRemovePreferredStore,\n closeStoreDetailsModal: props.handlers.closeStoreDetailsModal\n }\n };\n\n return viewProps;\n};\n\n/**\n * Store location line item component.\n */\nexport const SelectedStoreComponent = selectedStoreDetails as (props: ISelectedStoreProps) => ISelectedStoreViewProps;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { IStoreInfo, IStoreSelectionStateContext } from '@msdyn365-commerce-modules/bopis-utilities';\nimport {\n ArrayExtensions,\n getFullAvailableInventoryNearby,\n GetFullAvailableInventoryNearbyInput,\n getOrgUnitLocationsByArea,\n GetOrgUnitLocationsByAreaInput,\n IFullOrgUnitAvailability\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n isMobile,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n NodeTag,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n StoreSelectorEmptyMessage,\n StoreSelectorFoundLocationsMessage,\n StoreSelectorLocationLines,\n StoreSelectorSearchForm,\n StoreSelectorTermsOfService,\n StoreSelectorWaiting\n} from './components';\nimport { ISelectedStoreProps, ISelectedStoreViewProps, SelectedStoreComponent } from './components/selected-store/selected-store';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './components/store-selector-location-line-item/date-time-helpers';\nimport { IStoreSelectorData } from './store-selector.data';\nimport {\n IStoreSelectorProps,\n IStoreSelectorResources,\n mode as modeEnum,\n searchRadiusUnit as SearchRadiusUnit,\n style as styleEnum\n} from './store-selector.props.autogenerated';\n\n/**\n * StoreSelector State Interface.\n */\nexport interface IStoreSelectorState {\n isSearchInProgress: boolean;\n searchTerm?: string;\n isSeeAllStoreValue: boolean;\n isLocationDisabled?: boolean;\n filteredPickupMode?: string;\n}\n\n/**\n * StoreSelector View Props Interface.\n */\nexport interface IStoreSelectorViewProps extends IStoreSelectorProps {\n state: IStoreSelectorState;\n\n // Containers:\n ModuleProps: IModuleProps;\n BodyContainerProps: INodeProps;\n FooterContainerProps: INodeProps;\n HeaderContainerProps: INodeProps;\n HeaderProps?: React.ReactNode;\n\n // Components\n locationsMessage?: React.ReactNode;\n search?: React.ReactNode;\n spinner?: React.ReactNode;\n locationsList?: React.ReactNode;\n selectedLocation?: ISelectedStoreViewProps;\n noLocationsMessage?: React.ReactNode;\n terms?: React.ReactNode;\n headerText?: React.ReactNode;\n sortLocations?: IFullOrgUnitAvailability[];\n locationListProps?: IStoreSelectorLocationLineItemProps[];\n bodyWrapperProps?: INodeProps;\n storeResultContainerProps?: INodeProps;\n mapContainerProps?: INodeProps;\n maps?: React.ReactNode;\n isMobileView?: boolean;\n storeDetailsModal?: INodeProps;\n\n callbacks: {\n closeDialog(): Promise;\n searchTermChanged(searchTerm: string): Promise;\n performSearch(searchTerm: string): Promise;\n selectedLocation(location: OrgUnitLocation | undefined): Promise;\n getAndUpdateUserLocation(): Promise;\n attachMapAutoSuggest(): Promise;\n onSuggestionSelected(result: Microsoft.Maps.ISuggestionResult): Promise;\n setPreferredStore(storeId: string | undefined): Promise;\n removePreferredStore(): Promise;\n setSelectedStore(storeId: string | undefined): Promise;\n setOrgUnitStoreInformation(location: OrgUnitLocation | undefined): Promise;\n };\n}\n\n/**\n * StoreSelectorLocation Line Resources Interface.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n closedText: string;\n outOfStock: string;\n inStock: string;\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * ILocationHours Interface.\n */\nexport interface ILocationHours {\n openFrom?: string;\n openTo?: string;\n}\n\n/**\n * StoreSelectorLocation Line Item Props Interface.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n storeHoursList?: IHoursDisplayInfo[];\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n selectedStoreLocationId?: string;\n locationOpen?: ILocationHours;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n onClick: (locationId: string | undefined) => void;\n}\n\n/**\n *\n * Pick Up In Store module.\n * @extends React.Component>}\n */\n@observer\nclass StoreSelector extends React.Component, IStoreSelectorState> {\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private storeCounter: number;\n\n private isPreferredStoreEnabled?: boolean;\n\n public constructor(props: IStoreSelectorProps) {\n super(props);\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.state = { isSearchInProgress: true, searchTerm: '', isSeeAllStoreValue: false, filteredPickupMode: undefined };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.storeCounter = 0;\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled: isAutoSuggestionEnabled }\n } = this.props;\n\n // Adding Timeout to make sure it loads the data based upon the preferred store.\n setTimeout(() => {\n this._getAndUpdateStoreLocation();\n }, 0);\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isDialogOpen,\n async () => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (context?.id === this.props.id) {\n this._getAndUpdateStoreLocation();\n }\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.context?.id,\n async () => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (!context || context.id === this.props.id) {\n await this._searchTermChanged('');\n this._getAndUpdateStoreLocation();\n }\n }\n );\n\n if (this.props.data.storeSelectorStateManager.result?.loadMapApi) {\n await this.props.data.storeSelectorStateManager.result.loadMapApi({\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n });\n }\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context.actionContext.requestContext.channel?.ChannelCountryRegionISOCode\n });\n }\n );\n\n reaction(\n () => this.props.data.availabilitiesWithHours.result,\n async () => {\n if (this.props.data.storeSelectorStateManager.result?.isDialogOpen) {\n const storeLocationList = this.props.data.availabilitiesWithHours.result;\n if (storeLocationList) {\n await this._setOrgUnitStoreInformation(storeLocationList);\n }\n }\n }\n );\n\n if (isAutoSuggestionEnabled) {\n when(\n () => {\n const isMapApiLoaded = !!this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\n const isDialogOpen = !!this.props.data.storeSelectorStateManager.result?.isDialogOpen;\n const isSameContext = this.props.data.storeSelectorStateManager.result?.context?.id === this.props.id;\n return isMapApiLoaded && isDialogOpen && isSameContext;\n },\n () => {\n setTimeout(async () => {\n await this._attachMapAutoSuggest();\n }, 0);\n }\n );\n }\n }\n\n public shouldComponentUpdate(): boolean {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n if (context && context.id === this.props.id) {\n return true;\n }\n return false;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element {\n const {\n config: {\n termsOfServiceLink,\n className,\n heading,\n mode,\n style,\n setAsPreferredStore: shouldSetAsPreferredStore,\n showAllStores: shouldShowAllStores,\n lookupRadius,\n enablePickupFilterToShowStore: hasEnablePickupFilterToShowStore,\n searchRadiusUnit\n },\n context: {\n telemetry,\n app: { config: appConfig },\n actionContext: {\n requestContext: { channel, cookies }\n }\n },\n slots: { maps: mapSlot },\n resources,\n data: {\n availabilitiesWithHours: { result: availabilitiesWithHours },\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations }\n }\n } = this.props;\n\n this.storeCounter = 0;\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n const isMapDisabled = !(channel?.BingMapsApiKey && channel.BingMapsEnabled);\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n const isDialogOpen: boolean = storeSelectorStateManager\n ? storeSelectorStateManager.isDialogOpen && context?.id === this.props.id\n : false;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const isInlineView = styleDefault === styleEnum.inline;\n const isLocatorView = modeDefault === modeEnum.findStores;\n const shouldHideInventory = isLocatorView;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n const shouldDisplayList = storeSelectorStateManager?.listMapViewState?.displayList;\n this.isPreferredStoreEnabled = shouldSetAsPreferredStore && cookies?.isConsentGiven();\n const canShowLocationView =\n context && (context.showMapViewLink === undefined || context.showMapViewLink) && storeSelectorStateManager?.isMapModuleLoaded;\n\n const storeSelectorActions = {\n async toggleListMapViewState(): Promise {\n await storeSelectorStateManager?.toggleListMapViewState();\n }\n };\n\n if (!channel?.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n }\n\n const configHeading = heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText;\n const preferredDistanceUnit =\n searchRadiusUnit === SearchRadiusUnit.kilometers ? resources.kilometersShortText : resources.milesShortText;\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n let storeLocationList: IFullOrgUnitAvailability[] | undefined = shouldHideInventory ? storeLocations : availabilitiesWithHours;\n let sortLocation = null;\n if (storeLocationList) {\n sortLocation = this._sortStores(storeLocationList, this.isPreferredStoreEnabled, preferredLocationId);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment -- Reading value from app config.\n const isEnableOutofStock: boolean = appConfig?.enableStockCheck || false;\n const alreadySelectedLocation = context ? context.alreadySelectedLocation : undefined;\n const productPickUpOptionList = storeSelectorStateManager?.context?.deliveryOptions?.DeliveryOptions;\n if (this.state.filteredPickupMode && storeLocationList) {\n storeLocationList = this.onFilterLocations(storeLocationList, this.state.filteredPickupMode);\n }\n const locationListProps = this._getStoreLocationListProps(\n isEnableOutofStock,\n isLocatorView,\n preferredLocationId,\n this.isPreferredStoreEnabled,\n selectedStoreLocationId,\n sortLocation ?? null,\n preferredDistanceUnit,\n alreadySelectedLocation,\n productPickUpOptionList\n );\n\n const hasMapSlot = ArrayExtensions.hasElements(mapSlot);\n const dialogClassName = hasMapSlot ? 'ms-store-select__map' : '';\n const viewProps: IStoreSelectorViewProps = {\n ...(this.props as IStoreSelectorProps),\n state: this.state,\n maps: hasMapSlot ? mapSlot[0] : undefined,\n\n ModuleProps: {\n tag: isInlineView ? ('div' as NodeTag) : Modal,\n moduleProps: this.props,\n className: classname(\n `ms-store-${isInlineView ? 'locate' : 'select'}`,\n className,\n dialogClassName,\n isInlineView ? '' : 'msc-modal-input-required'\n ),\n autoFocus: true,\n fade: true,\n isOpen: isDialogOpen,\n 'aria-label': configHeading,\n onClosed: this._closeDialog,\n horizontalPosition: 'center',\n verticalPosition: 'center',\n toggle: this._closeDialog\n },\n isMobileView: isMobileDevice,\n HeaderContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalHeader,\n className: `ms-store-select__${isInlineView ? 'header' : 'modal-header'}`,\n toggle: this._closeDialog\n },\n HeaderProps: configHeading && (\n \n ),\n FooterContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalFooter,\n className: `ms-store-select__${isInlineView ? 'footer' : 'modal-footer'} ${!shouldDisplayList ? 'map-only-view' : ''}`\n },\n BodyContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalBody,\n className: `ms-store-select__${isInlineView ? 'body' : 'modal-body'}`\n },\n bodyWrapperProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__body_wrapper'\n },\n storeResultContainerProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__store_container'\n },\n mapContainerProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__map_container'\n },\n storeDetailsModal: {\n tag: 'div' as NodeTag,\n className: `ms-store-select__map__selected_store__modal ${\n selectedStoreLocationId && isDialogOpen && !shouldDisplayList ? 'show' : 'hide'\n }`\n },\n locationsMessage: !this.state.isLocationDisabled && (\n \n ),\n selectedLocation: this.renderSelectedStore(\n shouldHideInventory,\n preferredDistanceUnit,\n preferredStore,\n this.isPreferredStoreEnabled,\n isEnableOutofStock,\n productPickUpOptionList,\n shouldDisplayList\n ),\n search: (\n \n ),\n spinner: ,\n locationsList: ArrayExtensions.hasElements(storeLocationList) ? (\n \n ) : (\n undefined\n ),\n noLocationsMessage: ,\n terms: (\n \n ),\n\n // Not being used in current context, we can use it here to pass more props.\n headerText: (\n {heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText}\n ),\n sortLocations: sortLocation,\n locationListProps,\n callbacks: {\n searchTermChanged: this._searchTermChanged,\n performSearch: this._performSearch,\n closeDialog: this._closeDialog,\n selectedLocation: this._onOrgUnitLocationSelected,\n getAndUpdateUserLocation: async () => {\n this._getAndUpdateStoreLocation();\n return Promise.resolve();\n },\n attachMapAutoSuggest: this._attachMapAutoSuggest,\n onSuggestionSelected: this._onOrgUnitLocationSelected,\n setPreferredStore: this._setPreferredStore,\n removePreferredStore: this._removePreferredStore,\n setSelectedStore: this._setSelectedStore,\n setOrgUnitStoreInformation: this._setOrgUnitStoreInformation\n }\n } as IStoreSelectorViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Render the selected store for the mobile devices.\n * @param shouldHideInventory -- Hide Inventory.\n * @param preferredDistanceUnit -- Preferred Distance Unit.\n * @param preferredStore -- Preferred Store.\n * @param isPreferredStoreEnabled -- Is Preferred Store Enabled.\n * @param hasEnabledOutOfStockCheck -- Stock check is enabled or not.\n * @param productPickUpOptionList -- Product pickup option list.\n * @param shouldDisplayList - Should Display list.\n * @returns -- Returns the view props.\n */\n public renderSelectedStore = (\n shouldHideInventory: boolean,\n preferredDistanceUnit: string,\n preferredStore: IStoreInfo | undefined,\n isPreferredStoreEnabled: boolean | undefined,\n hasEnabledOutOfStockCheck: boolean,\n productPickUpOptionList?: DeliveryOption[],\n shouldDisplayList?: boolean\n ): ISelectedStoreViewProps | undefined => {\n const {\n resources,\n data: {\n availabilitiesWithHours: { result: availabilitiesWithHours },\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations }\n }\n } = this.props;\n\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n const selectedStore = (shouldHideInventory ? storeLocations : availabilitiesWithHours)?.find(\n store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === selectedStoreLocationId\n );\n const orgUnitLocation = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreResources = this._mapResources(resources);\n\n if (!shouldDisplayList && selectedStore) {\n const selectedProps: ISelectedStoreProps = {\n shouldHideStockStatus: shouldHideInventory,\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, context?.alreadySelectedLocation),\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, selectedStore.OrgUnitAvailability?.ItemAvailabilities),\n selectedStore,\n resources: selectedStoreResources,\n stockStatusLabel: this._stockInventoryLabel(selectedStore),\n preferredStoreLocationId: preferredStore?.StoreId ? preferredStore.StoreId : '',\n isPreferredStoreEnabled,\n isLocationDisabled: this.state.isLocationDisabled,\n telemetryContent: this.telemetryContent,\n storePickUpOptionList: selectedStore.OrgUnitPickUpDeliveryModes?.DeliveryOptions,\n productPickUpOptionList,\n preferredDistanceUnit,\n handlers: {\n onSelected: this._onOrgUnitLocationSelected,\n onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\n }\n };\n\n return SelectedStoreComponent(selectedProps);\n }\n\n return undefined;\n };\n\n /**\n * Method to be called on link text change.\n * @param event -Content Edit Event.\n */\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.termsOfServiceLink) {\n this.props.config.termsOfServiceLink.linkText = event.target.value;\n }\n };\n\n /**\n * Method to be called on heading change.\n * @param event -Content Edit Event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading = event.target.value;\n };\n\n /**\n * Show all stores handler function.\n */\n private readonly onShowAllStoresHandler = () => {\n this._getAndUpdateStoreLocation(true);\n this.setState({ filteredPickupMode: undefined });\n };\n\n /**\n * Method to be called for filtered the store location based on the filter selected by the user.\n * @param stores -All the stores from the API.\n * @param filteredPickupMode -Filter selected by the user.\n * @returns -Filtered stores.\n */\n private readonly onFilterLocations = (stores: IFullOrgUnitAvailability[], filteredPickupMode: string) => {\n return stores.filter(location => {\n return location.OrgUnitPickUpDeliveryModes?.DeliveryOptions?.some(deliveryOption => {\n return deliveryOption.Code === filteredPickupMode;\n });\n });\n };\n\n /**\n * Filter Store by pickup mode.\n * @param deliveryCode -Delivery Code.\n */\n private readonly onFilteredPickupMode = (deliveryCode: string) => {\n this.setState({ filteredPickupMode: deliveryCode });\n };\n\n /**\n * Method will sort all stores.\n * @param stores -Stores List.\n * @param isPreferredStoreEnabled -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @returns List of Stores.\n */\n // eslint-disable-next-line class-methods-use-this -- No need of introducing new variable.\n private _sortStores(\n stores: IFullOrgUnitAvailability[],\n isPreferredStoreEnabled: boolean | undefined,\n preferredStoreLocationId: string\n ): IFullOrgUnitAvailability[] {\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n isPreferredStoreEnabled &&\n preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreLocationId;\n\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\n }\n\n /**\n * Method will list of store selector location line.\n * @param hasEnabledOutOfStockCheck -Stores List.\n * @param isStoreLocatorView -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @param isPreferredStoreEnabled -Stores List.\n * @param selectedStoreLocationId -Module config value.\n * @param stores -Store Id.\n * @param preferredDistanceUnit -Module config value.\n * @param alreadySelectedLocation -Already Selected Location.\n * @param productPickUpOptionList -Product supported Pickup Modes List.\n * @returns List of StoreSelectorLocation Line.\n */\n private _getStoreLocationListProps(\n hasEnabledOutOfStockCheck: boolean,\n isStoreLocatorView: boolean,\n preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n stores: IFullOrgUnitAvailability[] | null,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation,\n productPickUpOptionList?: DeliveryOption[]\n ): IStoreSelectorLocationLineItemProps[] {\n const storeList: IStoreSelectorLocationLineItemProps[] = [];\n if (ArrayExtensions.hasElements(stores)) {\n stores.map((store, index: number) => {\n const storeLineProps = this._createStoreLocationList(\n store,\n index,\n hasEnabledOutOfStockCheck,\n isStoreLocatorView,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n selectedStoreLocationId,\n preferredDistanceUnit,\n alreadySelectedLocation,\n productPickUpOptionList\n );\n if (storeLineProps) {\n storeList.push(storeLineProps);\n }\n });\n }\n return storeList;\n }\n\n /**\n * Initialize Map AutoSuggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n config: { autoSuggestOptions },\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded && !this.autoSuggestManager) {\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n /**\n * Callback for the autosuggest API.\n */\n callback: () => {\n const options = { ...autoSuggestOptions, countryCode: channel?.ChannelCountryRegionISOCode };\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n this.autoSuggestManager.attachAutosuggest(\n `#ms-store-select__search-box_${this.props.id}`,\n `#ms-store-select__search-box-container_${this.props.id}`,\n this._onSuggestionSelected\n );\n },\n\n /**\n * Error call back for autosuggest API.\n */\n errorCallback: () => {\n if (telemetry) {\n telemetry.debug('Unable to attach map auto suggest.');\n }\n },\n credentials: channel?.BingMapsApiKey\n });\n }\n };\n\n /**\n * On Selecting Location Suggestion.\n * @param result - Map Suggestions List.\n */\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (context && context.id === this.props.id) {\n await this._searchTermChanged(result.formattedSuggestion);\n await this._performSearch(result.formattedSuggestion);\n }\n };\n\n /**\n * On Selecting Preferred Store.\n * @param storeId - Store Id.\n */\n private readonly _setPreferredStore = async (storeId: string | undefined): Promise => {\n if (!storeId) {\n return;\n }\n\n const {\n context: {\n actionContext: {\n requestContext: { cookies }\n }\n },\n config: { mode },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations },\n availabilitiesWithHours: { result: availabilitiesWithHours }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n\n let stores: IFullOrgUnitAvailability[];\n if (modeDefault === modeEnum.findStores && storeLocations) {\n stores = storeLocations;\n } else {\n stores = availabilitiesWithHours!;\n }\n\n const preferredStore = stores.find(store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === storeId);\n\n await storeSelectorStateManager.setPreferredStoreLocation(\n storeId,\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName,\n cookies.isConsentGiven(),\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Latitude,\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Longitude\n );\n };\n\n /**\n * On Removing Preferred Store.\n */\n private readonly _removePreferredStore = async (): Promise => {\n const {\n context: {\n actionContext: {\n requestContext: { cookies }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n await storeSelectorStateManager.clearPreferredStore(cookies.isConsentGiven());\n };\n\n /**\n * Method called to close the store details modal that comes up on clicking the pushpin.\n * @returns Void promise.\n */\n private readonly _closeStoreDetailModal = async (): Promise => {\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\n await storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\n };\n\n /**\n * On Selecting Store for pickup.\n * @param storeId - Store Id.\n */\n private readonly _setSelectedStore = async (storeId: string | undefined): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n await storeSelectorStateManager.setSelectedStoreLocationId(storeId);\n };\n\n /**\n * Method to be called on search.\n * @param searchTerm - Search string.\n */\n private readonly _performSearch = async (searchTerm: string): Promise => {\n const {\n context: { actionContext },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!searchTerm || !storeSelectorStateManager) {\n return;\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n const location = await storeSelectorStateManager.geoLocate(searchTerm.trim() !== '' ? searchTerm : '0', actionContext);\n\n if (location) {\n await this._updateLocations(location.latitude, location.longitude);\n } else {\n await this._updateLocations();\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n };\n\n /**\n * Method to be called on search term changed.\n * @param searchTerm - Search string.\n */\n private readonly _searchTermChanged = async (searchTerm: string): Promise => {\n this.setState({ searchTerm });\n };\n\n /**\n * Method to be called updating the store location.\n * @param shouldShowAllStores - Flag to show all stores.\n */\n private readonly _getAndUpdateStoreLocation = (shouldShowAllStores?: boolean): void => {\n const {\n config: { style },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n\n if (styleDefault !== styleEnum.inline && (!storeSelectorStateManager || !storeSelectorStateManager.isDialogOpen)) {\n // Store selector dialog isn't open yet, so don't try and update anything\n return;\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n if (navigator?.geolocation) {\n navigator.geolocation.getCurrentPosition(\n async position => {\n // eslint-disable-next-line react/no-unused-state -- This state is used in the views.\n this.setState({ isLocationDisabled: false, isSearchInProgress: true });\n if (shouldShowAllStores) {\n this.setState({ isSeeAllStoreValue: true });\n await this._searchTermChanged('');\n await this._updateLocations(position.coords.latitude, position.coords.longitude, 0);\n } else {\n await this._updateLocations(position.coords.latitude, position.coords.longitude);\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n },\n async error => {\n // If the location setting is turned off\n if (error.PERMISSION_DENIED) {\n this.setState({ isLocationDisabled: true, isSeeAllStoreValue: true });\n await this._searchTermChanged('');\n await this._updateLocations(0, 0, 0);\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n },\n { timeout: 5000 }\n );\n } else {\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n }\n };\n\n /**\n * Method to be called closing the store selector dialog.\n * @returns Void promise.\n */\n private readonly _closeDialog = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n this.setState({ searchTerm: '' });\n\n if (storeSelectorStateManager) {\n storeSelectorStateManager.context?.parentElementRef?.current?.focus();\n return storeSelectorStateManager.closeDialog();\n }\n };\n\n /**\n * Method to set store info.\n * @param orgUnitStoreInformation - Store Info Object.\n * @returns Void promise.\n */\n private readonly _setOrgUnitStoreInformation = async (orgUnitStoreInformation: IFullOrgUnitAvailability[]): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n config: { style },\n telemetry\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n const context = storeSelectorStateManager.context;\n const moduleId: string = context?.id ? context.id : this.props.id;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n let input: IStoreSelectionStateContext = {\n /**\n * On Location selected.\n * @returns - Returns promise.\n */\n onLocationSelected: async () => {\n // TO-DO handle event for when location in selected\n return Promise.resolve();\n }\n };\n\n if (storeSelectorStateManager.context) {\n input = storeSelectorStateManager.context;\n }\n\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager.preferredStore;\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n const storeLocationList = this._sortStores(orgUnitStoreInformation, this.isPreferredStoreEnabled, preferredLocationId);\n\n input = {\n ...input,\n id: moduleId,\n showMapViewLink: context?.showMapViewLink,\n parentElementRef: context?.parentElementRef,\n isDialog: styleDefault === styleEnum.dialog,\n orgUnitStoreInformation: storeLocationList,\n product: context?.product\n };\n\n await storeSelectorStateManager.setOrgUnitStoreInformation(input).catch((error: Error) => {\n if (telemetry) {\n telemetry.error(error.message);\n telemetry.debug('Unable to Update store location state');\n }\n });\n };\n\n /**\n * Method to update user location.\n * @param latitude - User location.\n * @param longitude - User location.\n * @param radius - Search Criteria Radius.\n * @returns Void promise.\n */\n private readonly _updateLocations = async (latitude?: number, longitude?: number, radius?: number): Promise => {\n const {\n config: { mode, lookupRadius, style, searchRadiusUnit },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const calRadius = radius || radius === 0 ? radius : lookupRadius || 50;\n const distanceUnitValue = searchRadiusUnit === SearchRadiusUnit.kilometers ? 1 : 0;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n let localLatitude = this.state.searchTerm || !preferredStore?.Latitude ? latitude : preferredStore.Latitude;\n let long = this.state.searchTerm || !preferredStore?.Longitude ? longitude : preferredStore.Longitude;\n if (styleDefault === styleEnum.inline) {\n const lastInlineStoreLocation = storeSelectorStateManager?.lastInlineShownStoreInfo;\n if (lastInlineStoreLocation && !this.state.searchTerm) {\n localLatitude = lastInlineStoreLocation.Latitude ? lastInlineStoreLocation.Latitude : localLatitude;\n long = lastInlineStoreLocation.Longitude ? lastInlineStoreLocation.Longitude : long;\n }\n await storeSelectorStateManager?.setLastInlineStoreInfo(localLatitude, long);\n }\n\n if (modeDefault === modeEnum.findStores) {\n await this.getOrgUnitLocationByArea(calRadius, distanceUnitValue, localLatitude, long);\n return;\n }\n\n await this.getFullAvailableInventoryNearby(calRadius, distanceUnitValue, localLatitude, long);\n };\n\n /**\n * Get org unit location by area.\n * @param calRadius - Radius.\n * @param distanceUnitValue - Distance unit value.\n * @param latitude - Latitude.\n * @param longitude - Longitude.\n * @returns - Returns a void promise.\n */\n private readonly getOrgUnitLocationByArea = async (\n calRadius: number,\n distanceUnitValue: number,\n latitude?: number,\n longitude?: number\n ): Promise => {\n const {\n context: { actionContext }\n } = this.props;\n const orgUnitLocationsInput = new GetOrgUnitLocationsByAreaInput(\n latitude,\n longitude,\n calRadius,\n distanceUnitValue,\n this.state.isLocationDisabled\n );\n\n const orgUnitLocations = await getOrgUnitLocationsByArea(orgUnitLocationsInput, actionContext);\n if (orgUnitLocations) {\n await this._setOrgUnitStoreInformation(orgUnitLocations);\n await this._setSelectedStore(undefined);\n }\n };\n\n /**\n * Get full available inventory nearby.\n * @param calRadius - Radius.\n * @param distanceUnitValue - Distance unit value.\n * @param latitude - Latitude.\n * @param longitude - Longitude.\n * @returns - Returns a void promise.\n */\n private readonly getFullAvailableInventoryNearby = async (\n calRadius: number,\n distanceUnitValue: number,\n latitude?: number,\n longitude?: number\n ): Promise => {\n const {\n telemetry,\n context: { actionContext },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager || !storeSelectorStateManager.context) {\n // Store selector dialog isn't open yet, so don't try and update anything\n return;\n }\n\n if (!storeSelectorStateManager.context.product) {\n // TODO: Use alternative search method here to not make inventory check\n return;\n }\n\n const input = new GetFullAvailableInventoryNearbyInput(\n storeSelectorStateManager.context.product.RecordId,\n latitude ?? 0,\n longitude ?? 0,\n calRadius,\n distanceUnitValue,\n this.state.isLocationDisabled\n );\n\n await getFullAvailableInventoryNearby(input, actionContext).catch(error => {\n telemetry.warning(error);\n telemetry.error(error.message);\n telemetry.debug('Unable to get full available inventory near by');\n });\n };\n\n /**\n * Method to called on store selected.\n * @param location - Store Info.\n * @param deliveryMode - Pickup mode.\n * @returns Void promise.\n */\n private readonly _onOrgUnitLocationSelected = async (location: OrgUnitLocation | undefined, deliveryMode?: string): Promise => {\n const {\n telemetry,\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager) {\n if (location && storeSelectorStateManager.context) {\n // Want to eat exceptions here so that the dialog still closes even if the onLocationSelected call goes wrong\n await storeSelectorStateManager.context.onLocationSelected(location, deliveryMode).catch(error => {\n telemetry.warning(error);\n telemetry.error(error.message);\n telemetry.debug('Unable to get on org unit location selected');\n });\n }\n\n await storeSelectorStateManager.closeDialog();\n }\n };\n\n /**\n * Method will list of store selector location line.\n * @param store -Store Info.\n * @param index - List index.\n * @param hasEnabledOutOfStockCheck -Stores List.\n * @param isStoreLocatorView -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @param isPreferredStoreEnabled -Stores List.\n * @param selectedStoreLocationId -Module config value.\n * @param preferredDistanceUnit -Module config value.\n * @param alreadySelectedLocation -Already Selected Location.\n * @param productPickUpOptionList -Product supported Pickup Modes List.\n * @returns StoreSelectorLocation Line Prop.\n */\n private _createStoreLocationList(\n store: IFullOrgUnitAvailability,\n index: number,\n hasEnabledOutOfStockCheck: boolean,\n isStoreLocatorView: boolean,\n preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation,\n productPickUpOptionList?: DeliveryOption[]\n ): IStoreSelectorLocationLineItemProps | undefined {\n const orgUnitLocation = store.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreLocation = selectedStoreLocationId;\n const deliveryOptions = store.OrgUnitPickUpDeliveryModes;\n const lineResources = this._mapResources(this.props.resources);\n const storeOpenFrom: string | undefined = secondsToTime(orgUnitLocation?.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(orgUnitLocation?.OpenTo);\n const storeHours = store.StoreHours;\n\n if (orgUnitLocation) {\n ++this.storeCounter;\n return {\n location: orgUnitLocation,\n selectedStoreLocationId: selectedStoreLocation,\n storeHours,\n resources: lineResources,\n preferredDistanceUnit: preferredDistanceUnit!,\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, alreadySelectedLocation),\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, store.OrgUnitAvailability?.ItemAvailabilities),\n stockStatusLabel: this._stockInventoryLabel(store),\n storeLocatorView: isStoreLocatorView,\n index: this.storeCounter.toString(),\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n telemetryContent: this.telemetryContent,\n isLocationDisabled: this.state.isLocationDisabled,\n storePickUpOptionList: deliveryOptions?.DeliveryOptions,\n productPickUpOptionList,\n locationOpen: { openFrom: storeOpenFrom, openTo: storeOpenTo },\n storeHoursList: storeHours?.RegularStoreHours ? buildStoreHours(storeHours.RegularStoreHours, lineResources) : [],\n onClick: this._setSelectedStore,\n handlers: {\n onSelected: this._onOrgUnitLocationSelected,\n onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\n }\n };\n }\n return undefined;\n }\n\n /**\n * Method to map resources with Location Item.\n * @param resources - List of strings for module.\n * @returns Resources for StoreSelector location line.\n */\n private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n };\n\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined, selectedLocation?: OrgUnitLocation): boolean =>\n (selectedLocation && location && selectedLocation.OrgUnitNumber === location.OrgUnitNumber) || false;\n\n /**\n * Method to get stock.\n * @param hasEnableOutOfStockCheck - Config to check for stock check enabled.\n * @param itemAvailabilities - Item quantity availability.\n * @returns Boolean value for item stock.\n */\n private readonly _isProductInStock = (\n hasEnableOutOfStockCheck: boolean,\n itemAvailabilities: ItemAvailability[] | undefined\n ): boolean => {\n if (!hasEnableOutOfStockCheck) {\n return true;\n }\n const quantityCount = 0;\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > quantityCount : false;\n }\n\n return false;\n };\n\n /**\n * Method to get stocklevel label.\n * @param isInStock - Stock available in store.\n * @returns Label for stock status.\n */\n private readonly _stockInventoryLabel = (isInStock: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (isInStock?.ProductInventoryInformation && ArrayExtensions.hasElements(isInStock.ProductInventoryInformation)) {\n for (let index = 0; index < isInStock.ProductInventoryInformation.length; index++) {\n if (\n isInStock.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n isInStock.ProductInventoryInformation[index].InventLocationId\n ) {\n return isInStock.ProductInventoryInformation[index].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n}\n\nexport default StoreSelector;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ControlledDrawer, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { IDrawerState } from '@msdyn365-commerce-modules/utilities/dist/types/drawer/Drawer';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createAccordionStateInput, interactionStyle } from '../..';\nimport { IAccordionItemData } from './accordion-item.data';\nimport { IAccordionItemProps } from './accordion-item.props.autogenerated';\n\nexport interface IAccordionItemViewProps {\n AccordionItemContainer: IModuleProps;\n drawer: INodeProps;\n accordionSlots: INodeProps;\n AccordionItemContent: INodeProps;\n className: string;\n}\n\nexport interface IAccordionItemExtentedProps extends IAccordionItemProps {\n interactionStyle?: interactionStyle;\n}\n\n/**\n *\n * AccordionItem component.\n * @extends {React.Component}\n */\n@observer\nclass AccordionItem extends React.Component {\n private readonly moduleClassName: string = 'ms-accordion-item';\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IAccordionItemProps) {\n super(props);\n this._onToggle = this._onToggle.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public shouldComponentUpdate(nextProps: IAccordionItemProps): boolean {\n if (this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { slots, renderView, config, data } = this.props;\n const accordionExpandedStateResult = data && data.accordionExpandedState && data.accordionExpandedState.result;\n const expanded =\n accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded === undefined\n ? data && config.isExpandedOnInitialLoad\n : accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded;\n const viewProps = {\n ...this.props,\n AccordionItemContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n AccordionItemContent: {\n className: 'ms-accordion-item-content'\n },\n drawer: {\n tag: ControlledDrawer,\n className: `${this.moduleClassName}__drawer`,\n toggleButtonText: (config.accordionItemTitle && config.accordionItemTitle) || '',\n collapseProps: { isOpen: expanded },\n onToggle: this._onToggle,\n onTextChange: this.handleHeadingChange,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n },\n accordionSlots: slots\n };\n return renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.accordionItemTitle = event.target.value);\n\n private _onToggle(state: IDrawerState): void {\n if (!state.isOpen && this.props.interactionStyle === interactionStyle.ExpandOneItemOnly) {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n }\n }\n}\nexport default AccordionItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAadGenericViewProps } from './aad-generic';\n\nexport default (props: IAadGenericViewProps) => {\n const { aadGeneric, aadConainer, aadAPIConainer, heading } = props;\n\n return (\n \n \n {heading}\n {aadAPIConainer}\n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccordionViewProps } from './accordion';\n\nconst accordionView: React.FC = props => {\n const { heading, AccordionContainer, accordionItems } = props;\n if (!props.heading && !props.accordionButtons && !props.accordionItems) {\n props.context.telemetry.error('Accordion content is empty, module wont render');\n return null;\n }\n return (\n \n \n {heading}\n {props.accordionButtons && {props.accordionButtons}}\n \n {accordionItems}\n \n );\n};\n\nexport default accordionView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountWishlistTileDescription {\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountWishlistTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n\nexport default IAccountWishlistTileDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-wishlist-tile.props.autogenerated';\n\nexport interface IAccountWishlistTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountWishlistTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-wishlist-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountWishlistTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountWishlistTileData } from './account-wishlist-tile.data';\nimport { IAccountWishlistTileProps } from './account-wishlist-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-wishlist-tile-description';\nimport LinksComponent from './components/account-wishlist-tile-links';\n\nexport interface IAccountWishlistTileViewProps extends IAccountWishlistTileProps {\n AccountWishlistTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountWishlist component.\n * @extends {React.PureComponent>}\n */\nclass AccountWishlistTile extends React.PureComponent> {\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IAccountWishlistTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountWishlistTileDescription } = resources;\n const wishlists = data.wishlists.result;\n\n const wishlistsCount = ((wishlists && wishlists.length && wishlists[0].CommerceListLines) || []).length;\n const description = format(accountWishlistTileDescription || 'You have {0} items in the Wishlist.', wishlistsCount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountWishlistTile: {\n moduleProps: this.props,\n className: classnames('ms-account-wishlist-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountWishlistTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface ISignUpErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst SignUpError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default SignUpError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { EmailRegex, PasswordRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps, INodeProps, Modal, ModalBody } 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 SignUpButtonComponent from './components/sign-up-button';\nimport SignUpErrorComponent from './components/sign-up-error';\nimport SignUpInputComponent from './components/sign-up-input';\nimport SignUpLabelComponent from './components/sign-up-label';\nimport SignUpLoadingIconComponent from './components/sign-up-loading-icon';\nimport SignUpLoadingMessageComponent from './components/sign-up-loading-message';\nimport SignUpSuccessComponent from './components/sign-up-success';\nimport { ISignUpConfig, ISignUpProps, ISignUpResources } from './sign-up.props.autogenerated';\n\nexport interface ISignUpViewState {\n isShowLoading: boolean;\n}\n\nexport interface ISignUpItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface ISignUpEmailVerification {\n isRequired: boolean;\n email: ISignUpItem;\n buttonWrapper: INodeProps;\n buttons: React.ReactNode[];\n successMessage: React.ReactNode[];\n errorMessage: React.ReactNode[];\n verificationControlWrapper: INodeProps;\n}\n\n/**\n * SignUp Given Name Verification Interface.\n */\nexport interface ISignUpGivenNameVerification {\n isRequired: boolean;\n givenName: ISignUpItem;\n errorMessage: React.ReactNode[];\n verificationControlWrapper: INodeProps;\n}\n\n/**\n * SignUp Surname Verification Interface.\n */\nexport interface ISignUpSurnameVerification {\n isRequired: boolean;\n surname: ISignUpItem;\n errorMessage: React.ReactNode[];\n verificationControlWrapper: INodeProps;\n}\n\nexport interface ISignUpLocalAccount {\n localAccount: INodeProps;\n items: ISignUpItem[];\n emailVerification: ISignUpEmailVerification;\n givenNameVerification: ISignUpGivenNameVerification;\n surnameVerification: ISignUpSurnameVerification;\n buttons: React.ReactNode[];\n errorMessage: React.ReactNode[];\n disclaimer: React.ReactNode;\n}\n\nexport interface ISignUpLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ISignUpViewProps {\n className: string;\n viewState: ISignUpViewState;\n loading: ISignUpLoading;\n signUp: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n signUpLocalAccount: ISignUpLocalAccount;\n}\n\n/**\n *\n * SignUp 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 SignUp extends React.Component> {\n @observable private isGivenNameVerificationRequried: boolean;\n\n @observable private isSurnameVerificationRequried: boolean;\n\n private readonly moduleClassName: string = 'ms-sign-up';\n\n @observable private emailRegex: string;\n\n @observable private newPasswordRegex: string;\n\n @observable private reenterPasswordRegex: string;\n\n @observable private isEmailVerificationRequried: boolean;\n\n @observable private isInitialized: boolean;\n\n @observable private templateVersion: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: ISignUpProps) {\n super(props);\n\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.newPasswordRegex = PasswordRegex.defaultRegex.source;\n this.reenterPasswordRegex = PasswordRegex.defaultRegex.source;\n this.isEmailVerificationRequried = false;\n this.isGivenNameVerificationRequried = false;\n this.isSurnameVerificationRequried = false;\n this.isInitialized = false;\n this.templateVersion = '';\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: ISignUpProps, nextState: ISignUpViewState): 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 signUp: {\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: (\n \n ),\n signUpLocalAccount: this._renderLocalAccount()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles heading content change event.\n * @param event - Content editable event.\n * @returns - Heading Text.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n /**\n * Handles paragraph content change event.\n * @param event - Content editable event.\n * @returns - Paragraph Text.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.disclaimer = event.target.value);\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\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: ISignUpResources = this.props.resources || {};\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(\n (obj: { ID: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string; VERIFY: boolean }) => {\n switch (obj.ID.toLowerCase()) {\n case 'emailverificationcontrol': {\n this.isEmailVerificationRequried = true;\n this.templateVersion = 'v2';\n break;\n }\n case 'email': {\n this.emailRegex = obj.PAT;\n this.isEmailVerificationRequried = obj.VERIFY;\n this.templateVersion = 'v1';\n break;\n }\n case 'givennameverificationcontrol': {\n this.isGivenNameVerificationRequried = true;\n break;\n }\n case 'givenname': {\n this.isGivenNameVerificationRequried = obj.VERIFY;\n break;\n }\n case 'surnameverificationcontrol': {\n this.isEmailVerificationRequried = true;\n break;\n }\n case 'surname': {\n this.isSurnameVerificationRequried = obj.VERIFY;\n break;\n }\n case 'newpassword': {\n this.newPasswordRegex = obj.PAT;\n break;\n }\n case 'reenterpassword': {\n this.reenterPasswordRegex = obj.PAT;\n break;\n }\n default:\n }\n\n switch (obj.UX_INPUT_TYPE.toLowerCase()) {\n case 'password': {\n obj.PAT_DESC = resources.invalidPasswordError;\n break;\n }\n case 'emailbox': {\n obj.PAT_DESC = resources.invalidEmailAddressError;\n break;\n }\n default:\n }\n }\n );\n }\n };\n\n private readonly _updateErrorMessage = () => {\n const resources: ISignUpResources = this.props.resources || {};\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const errorMessages = {\n required_field: resources.requiredFieldMissingError\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], errorMessages);\n }\n };\n\n private readonly getValue = (v1Value: string, v2Value: string): string => {\n if (this.templateVersion) {\n return this.templateVersion === 'v1' ? v1Value : v2Value;\n }\n return '';\n };\n\n private _renderLocalAccount(): ISignUpLocalAccount {\n const { config, resources } = this.props;\n return {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('givenName', 'text', resources.firstNameLabelText, resources.firstNameMaxLength),\n this._renderInput('surname', 'text', resources.lastNameLabelText, resources.lastNameMaxLength),\n this._renderInput('email', 'email', resources.emailAddressLabelText, undefined, this.emailRegex),\n this._renderInput('newPassword', 'password', resources.passwordLabelText, undefined, this.newPasswordRegex),\n this._renderInput('reenterPassword', 'password', resources.confirmPasswordLabelText, undefined, this.reenterPasswordRegex)\n ],\n emailVerification: {\n isRequired: this.isEmailVerificationRequried,\n email: this._renderInput(\n this.getValue('email_ver_input', 'emailVerificationCode'),\n 'text',\n resources.verificationCodeLabelText,\n undefined,\n undefined,\n 'VerificationCode'\n ),\n verificationControlWrapper: {\n id: 'emailVerificationControl',\n className: `${this.moduleClassName}__verification-control-content verificationControlContent`\n },\n buttonWrapper: {\n className: `${this.moduleClassName}__email-verification-buttons ${this.getValue('verify', '')}`,\n 'data-claim_id': 'email'\n },\n buttons: [\n ,\n ,\n ,\n \n ],\n successMessage: [\n ,\n \n ],\n errorMessage: [\n ,\n ,\n ,\n ,\n ,\n ,\n \n ]\n },\n givenNameVerification: {\n isRequired: this.isGivenNameVerificationRequried,\n givenName: this._renderInput(\n this.getValue('givenName_ver_input', 'givenNameVerificationCode'),\n 'text',\n resources.verificationCodeLabelText,\n undefined,\n undefined,\n 'VerificationCode'\n ),\n verificationControlWrapper: {\n id: 'givenNameVerificationControl',\n className: `${this.moduleClassName}__verification-control-content verificationControlContent`\n },\n errorMessage: [\n \n ]\n },\n surnameVerification: {\n isRequired: this.isSurnameVerificationRequried,\n surname: this._renderInput(\n this.getValue('surname_ver_input', 'surnameVerificationCode'),\n 'text',\n resources.verificationCodeLabelText,\n undefined,\n undefined,\n 'VerificationCode'\n ),\n verificationControlWrapper: {\n id: 'surnameVerificationControl',\n className: `${this.moduleClassName}__verification-control-content verificationControlContent`\n },\n errorMessage: [\n \n ]\n },\n buttons: [\n ,\n \n ],\n errorMessage: [\n ,\n ,\n ,\n \n ],\n disclaimer: config.disclaimer && (\n \n )\n };\n }\n\n private _renderInput(\n id: string,\n type: string,\n labelText: string,\n maxLength?: string,\n pattern?: string,\n cssClassName?: string\n ): ISignUpItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry', cssClassName)\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n}\n\nexport default SignUp;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAadGenericData } from './aad-generic.data';\nimport { IAadGenericProps } from './aad-generic.props.autogenerated';\n\nexport interface IAadGenericViewProps extends IAadGenericProps {\n aadGeneric: IModuleProps;\n aadConainer: INodeProps;\n aadAPIConainer: React.ReactNode;\n heading?: React.ReactNode;\n}\n\n/**\n *\n * AadGeneric component.\n * @extends {React.Component>}\n */\nclass AadGeneric extends React.Component> {\n private readonly moduleClassName: string = 'ms-aad-generic';\n\n public componentDidMount(): void {\n // @ts-expect-error\n const { $i2e, $element } = window || {};\n\n if ($i2e && $element) {\n $i2e.insertServiceContent($element.getElementContent());\n $element.initialize();\n }\n }\n\n public shouldComponentUpdate(nextProps: IAadGenericViewProps): boolean {\n if (nextProps.config.heading !== this.props.config.heading) {\n return true;\n }\n return false;\n }\n\n public render(): JSX.Element | null {\n const { className, heading } = this.props.config;\n\n const viewProps = {\n ...this.props,\n aadGeneric: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n aadConainer: {\n className: `${this.moduleClassName}__container`\n },\n aadAPIConainer:
,\n heading: heading && (\n \n )\n };\n\n return this.props.renderView(viewProps);\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.heading) {\n this.props.config.heading.text = event.target.value;\n }\n };\n}\n\nexport default AadGeneric;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Button as ButtonTo, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { INavigationMenuViewProps } from './farmlands-navigation-menu';\r\nimport { IMenuItemData } from './farmlands-navigation-menu.data';\r\n\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n mobileViewLabelText?: string;\r\n subMenuHeight?: number;\r\n selectedSubMenu?: string;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenuView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuView extends React.PureComponent {\r\n private static isBackTrack: boolean = false;\r\n private firstLevelMenuLinkText: string = '';\r\n private supportedLevel: number = 3;\r\n private currentLevel: number = 0;\r\n private menuNode: React.RefObject;\r\n constructor(props: INavigationMenuViewProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.state = {\r\n activeMenu: undefined,\r\n mobileViewLabelText: '',\r\n parentMenu: undefined,\r\n subMenuHeight: this._calculateSubNavHeight(props.menuItemData),\r\n selectedSubMenu: undefined\r\n };\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n document.body && document.body.addEventListener('mousedown', this._handleClickOutside);\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n document.body && document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView, MenuList, MobileDescriptionContainer, Navigation } = this.props;\r\n return (\r\n \r\n {this._renderReturnToFirstLevelButton()}\r\n \r\n {isMobileView && this.state.activeMenu !== undefined && (\r\n \r\n \r\n {this.state.mobileViewLabelText}\r\n \r\n \r\n )}\r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderReturnToFirstLevelButton = () => {\r\n if (!this.state.parentMenu) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {this.firstLevelMenuLinkText}\r\n \r\n );\r\n };\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem, menuItemData, isMobileView } = this.props;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (let i = 0; i < menuItemData.length; i++) {\r\n if (menuItemData[i] && menuItemData[i].id === activeMenu) {\r\n menuItem = menuItemData[i];\r\n !NavigationMenuView.isBackTrack\r\n ? this.setState({ parentMenu: undefined })\r\n : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemData[i].linkText });\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemData[i]) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem &&\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(menuItem)}\r\n \r\n );\r\n } else {\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n );\r\n });\r\n }\r\n\r\n // render background for sub-menu dropdown\r\n if (!isMobileView && this.state.activeMenu) {\r\n menuItemList.push(
);\r\n menuItemList.push(\r\n \r\n );\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _closeNavigationMenu = (event: React.MouseEvent) => {\r\n this.setState({\r\n activeMenu: undefined,\r\n parentMenu: undefined\r\n });\r\n };\r\n\r\n private _calculateSubNavHeight(menuItemData: IMenuItemData[]): number {\r\n let subMenuItemMax = 0;\r\n menuItemData.forEach((item: IMenuItemData) => {\r\n const subMenuLength = item.subMenu?.length ? item.subMenu.length : 0;\r\n if (subMenuLength > subMenuItemMax) {\r\n subMenuItemMax = subMenuLength;\r\n }\r\n });\r\n\r\n const subMenuItemHeight = 38;\r\n const calculatedSubNavHeight = subMenuItemMax * subMenuItemHeight;\r\n\r\n const minSubMenuHeight = 390;\r\n\r\n return calculatedSubNavHeight > minSubMenuHeight ? calculatedSubNavHeight : minSubMenuHeight;\r\n }\r\n\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n !NavigationMenuView.isBackTrack\r\n ? this.setState({ parentMenu: item && item.id })\r\n : this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\r\n return subMenus[i];\r\n }\r\n const found = this._getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n this.props.context.telemetry.error('Submenu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\r\n } else {\r\n return (\r\n \r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\r\n \r\n );\r\n }\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL) {\r\n return this._renderLinkMenuItem(menuItemData, undefined, true);\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(menuItemData);\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return this._renderSpanMenuItem(menuItemData);\r\n }\r\n this.props.context.telemetry.error('Navigation menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number): JSX.Element | null {\r\n const { isMobileView, ListItem } = this.props;\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions =\r\n subMenus &&\r\n subMenus.map((option: IMenuItemData, idx: number) => {\r\n const hasOptions = option.subMenu && option.subMenu.length > 0;\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\r\n }\r\n\r\n let subMenu;\r\n\r\n // Render 3rd level submenu only if it is the currently selected submenu.\r\n if (hasOptions && this.state.selectedSubMenu === option.linkText) {\r\n this.currentLevel++;\r\n if (this.currentLevel <= this.supportedLevel - 1) {\r\n levelClassName = `level-${this.currentLevel.toString()}`;\r\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined);\r\n }\r\n }\r\n\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n\r\n return this._renderMenu(levelClassName, menuOptions, activeMenu);\r\n }\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number, isMainMenu?: boolean): JSX.Element | null {\r\n const { Link } = this.props;\r\n const hasOptions = option.subMenu && option.subMenu.length > 0;\r\n\r\n return (\r\n \r\n {option.linkText}\r\n {hasOptions &&
}\r\n \r\n );\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number): JSX.Element | null {\r\n const { MenuList, isMobileView } = this.props;\r\n this.currentLevel = 1;\r\n return (\r\n \r\n {menuOptions}\r\n \r\n );\r\n }\r\n\r\n private _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n this.setState({\r\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\r\n parentMenu: parentId,\r\n selectedSubMenu: undefined\r\n });\r\n } else {\r\n ++this.currentLevel;\r\n\r\n if (this.currentLevel === 1) {\r\n this.firstLevelMenuLinkText = `Back to ${data.linkText}`;\r\n }\r\n\r\n NavigationMenuView.isBackTrack = false;\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: this.currentLevel === 1 ? 'Back to main menu' : data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n };\r\n\r\n private _handleBackFirstLevel = () => {\r\n this.currentLevel = 0;\r\n NavigationMenuView.isBackTrack = true;\r\n this.setState({ activeMenu: undefined, parentMenu: undefined });\r\n this._resetFocus();\r\n };\r\n\r\n private _handleGoBack = () => () => {\r\n --this.currentLevel;\r\n NavigationMenuView.isBackTrack = true;\r\n this.setState({ activeMenu: this.state.parentMenu });\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n };\r\n\r\n // tslint:disable-next-line:no-any\r\n private _handleClickOutside = (event: any) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target)) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n };\r\n\r\n private _closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', selectedSubMenu: undefined });\r\n }\r\n }\r\n\r\n private _updateSelectedSubMenu = (selectedSubMenu?: string) => () => {\r\n if (!this.props.isMobileView && selectedSubMenu) {\r\n this.setState({ selectedSubMenu });\r\n }\r\n };\r\n}\r\n\r\nexport default NavigationMenuView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignUpButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst SignUpButton: React.FC = ({ id, className, text, ariaLabel, disabled, onClick }) => (\n \n);\n\nexport default SignUpButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountAddressTileData } from './account-address-tile.data';\nimport { IAccountAddressTileProps } from './account-address-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-address-tile-description';\nimport LinksComponent from './components/account-address-tile-links';\n\nexport interface IAccountAddressTileViewProps extends IAccountAddressTileProps {\n AccountAddressTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountAddress component.\n * @extends {React.PureComponent>}\n */\nclass AccountAddressTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountAddressTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountAddressTileDescriptionForSingleAddress, accountAddressTileDescriptionForMultipleAddresses } = resources;\n const { address } = data;\n const addressCount = (address && address.result && address.result.length) || 0;\n const accountAddressTileDescription =\n addressCount === 1 ? accountAddressTileDescriptionForSingleAddress : accountAddressTileDescriptionForMultipleAddresses;\n const description = format(accountAddressTileDescription, addressCount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountAddressTile: {\n moduleProps: this.props,\n className: classnames('ms-account-address-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountAddressTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignUpLoadingIcon {\n className: string;\n}\n\nconst SignUpLoadingIcon: React.FC = ({ className }) =>
;\n\nexport default SignUpLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ISignUpEmailVerification,\n ISignUpGivenNameVerification,\n ISignUpItem,\n ISignUpLoading,\n ISignUpLocalAccount,\n ISignUpSurnameVerification,\n ISignUpViewProps\n} from './sign-up';\n\nconst SignUpItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst SignUpEmailVerification: React.FC = ({ email, buttonWrapper, buttons, successMessage, errorMessage }) => {\n return (\n <>\n {successMessage &&\n successMessage.map((message: React.ReactNode) => {\n return <>{message};\n })}\n \n {errorMessage &&\n errorMessage.map((message: React.ReactNode) => {\n return <>{message};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode) => {\n return <>{button};\n })}\n \n \n );\n};\n\n/**\n * Handles validation of sign-up givenName.\n * @param event - Content editable event.\n * @param event.givenName - Event Given Name.\n * @param event.errorMessage - Event Error Message.\n * @returns - Error Message for Given Name.\n */\nconst SignUpGivenNameVerificationComponent: React.FC = ({ givenName, errorMessage }) => {\n return (\n <>\n \n {errorMessage.map((message: React.ReactNode) => {\n return <>{message};\n })}\n \n );\n};\n\n/**\n * Handles validation of signUp surname.\n * @param event - Content editable event.\n * @param event.surname - Event surname.\n * @param event.errorMessage - Event Error Message.\n * @returns - Error Message for surname.\n */\nconst SignUpSurnameVerificationComponent: React.FC = ({ surname, errorMessage }) => {\n return (\n <>\n \n {errorMessage.map((message: React.ReactNode) => {\n return <>{message};\n })}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n emailVerification,\n givenNameVerification,\n surnameVerification,\n buttons,\n errorMessage,\n disclaimer\n}) => {\n return (\n \n {items &&\n items.map((item: ISignUpItem) => {\n if (item.key === 'email' && emailVerification.isRequired) {\n return (\n \n \n \n \n );\n }\n if (item.key === 'givenName' && givenNameVerification.isRequired) {\n return (\n \n \n \n \n );\n }\n if (item.key === 'surname' && surnameVerification.isRequired) {\n return (\n \n \n \n \n );\n }\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n {disclaimer}\n \n );\n};\n\nconst SignUpLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst SignUpView: React.FC = props => {\n const { signUp, viewState, loading, defaultAADConainer, aadConainer, heading, signUpLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(signUpLocalAccount)}\n \n \n );\n};\n\nexport default SignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountWishlistTileViewProps } from './account-wishlist-tile';\n\nconst AccountWishlistTileView: React.FC = props => {\n const { AccountWishlistTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountWishlistTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountWelcomeTileData } from './account-welcome-tile.data';\nimport { IAccountWelcomeTileProps } from './account-welcome-tile.props.autogenerated';\n\nexport interface IAccountWelcomeTileViewProps extends IAccountWelcomeTileProps {\n AccountWelcomeTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n}\n\n/**\n *\n * AccountWelcome component.\n * @extends {React.PureComponent>}\n */\nclass AccountWelcomeTile extends React.PureComponent> {\n public render(): JSX.Element {\n const { config, data } = this.props;\n const { className } = config;\n\n const accountInfo = data.accountInformation.result;\n const heading = {\n ...config.heading,\n ...{\n text: `${config.heading.text} ${accountInfo && accountInfo.FirstName ? accountInfo.FirstName : ''}`\n }\n };\n\n const viewProps = {\n ...this.props,\n className,\n AccountWelcomeTile: {\n moduleProps: this.props,\n className: classnames('ms-account-welcome-tile', config.className)\n },\n heading: heading && heading.text && (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n}\n\nexport default AccountWelcomeTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IMapData } from './map.data';\nimport { IMapProps, IPushpinOptionsData } from './map.props.autogenerated';\n\n/**\n * Header Interface.\n */\nexport interface IHeader {\n headerProps: INodeProps;\n heading: React.ReactNode;\n}\n\n/**\n * MapViewProps Interface.\n */\nexport interface IMapViewProps extends IMapProps {\n ModuleProps: IModuleProps;\n Header: IHeader;\n MapProps: INodeProps;\n Map: Microsoft.Maps.Map | undefined;\n}\n\n/**\n *\n * Map component.\n * @extends {React.Component>}\n */\n@observer\nclass Map extends React.PureComponent> {\n @observable public map: Microsoft.Maps.Map | undefined;\n\n private readonly mapRef: React.RefObject = React.createRef();\n\n public constructor(props: IMapProps) {\n super(props);\n }\n\n public componentDidMount(): void {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n }\n } = this.props;\n\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n this._initMap();\n this._updateMap();\n }\n\n when(\n () => !!this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded,\n () => {\n this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded(true);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\n key: channel?.BingMapsApiKey,\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n });\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n () => {\n this._initMap();\n }\n );\n\n reaction(\n () => {\n return [\n this.props.data.storeSelectorStateManager.result?.context?.orgUnitStoreInformation,\n this.props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\n this.map\n ];\n },\n () => {\n this._updateMap();\n }\n );\n }\n\n public render(): JSX.Element | null {\n const {\n config: { heading, className },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const shouldDisplayMap = storeSelectorStateManager?.listMapViewState.displayMap;\n\n const viewProps: IMapViewProps = {\n ...this.props,\n ModuleProps: {\n tag: 'div',\n moduleProps: this.props,\n className: classname('ms-map', { show: shouldDisplayMap }, className)\n },\n Header: {\n headerProps: { className: 'ms-map__header' },\n heading: heading?.text && (\n \n )\n },\n MapProps: {\n tag: 'div',\n className: 'ms-map__body',\n ref: this.mapRef\n },\n Map: this.map\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\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!.text = event.target.value;\n };\n\n /**\n * Initialize the map.\n */\n private readonly _initMap = () => {\n const {\n context: {\n actionContext: {\n requestContext: { channel }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.map = new Microsoft.Maps.Map(this.mapRef.current as HTMLElement, {\n credentials: channel?.BingMapsApiKey,\n pushpinAccessible: true\n });\n Microsoft.Maps.Events.addHandler(this.map, 'click', async () => {\n await storeSelectorStateManager.setSelectedStoreLocationId(undefined);\n });\n }\n };\n\n /**\n * Update the map.\n */\n private readonly _updateMap = () => {\n const pushpinOptions = this.props.config.pushpinOptions;\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager?.result;\n const orgUnitStoreInformation = storeSelectorStateManager?.context?.orgUnitStoreInformation;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n\n if (this.map && orgUnitStoreInformation) {\n let mapLocation: OrgUnitLocation | undefined;\n this.map.entities.clear();\n const pushpins: Microsoft.Maps.IPrimitive[] = [];\n\n const storeLocationList = orgUnitStoreInformation.filter(store => store.OrgUnitAvailability !== undefined);\n\n for (const [index, unitStoreInfo] of storeLocationList.entries()) {\n const storeLocation = unitStoreInfo.OrgUnitAvailability?.OrgUnitLocation;\n\n if (storeLocation?.Latitude && storeLocation.Longitude) {\n const isSelectedLocation = selectedStoreLocationId === storeLocation.OrgUnitNumber;\n const options = this._getPushpinOptions(isSelectedLocation, index, pushpinOptions);\n const pushpin = new Microsoft.Maps.Pushpin(\n new Microsoft.Maps.Location(storeLocation.Latitude, storeLocation.Longitude),\n options\n );\n\n Microsoft.Maps.Events.addHandler(pushpin, 'click', () => {\n this.handleClickEvent(storeLocation.OrgUnitNumber);\n });\n isSelectedLocation ? pushpins.unshift(pushpin) : pushpins.push(pushpin);\n\n if (isSelectedLocation) {\n mapLocation = storeLocation;\n }\n }\n }\n\n if (mapLocation) {\n const currentLocation = new Microsoft.Maps.Location(mapLocation.Latitude, mapLocation.Longitude);\n this.map.setView({ center: currentLocation });\n } else {\n // Create a LocationRect from array of pushpins and set the map view.\n this.map.setView({\n bounds: Microsoft.Maps.LocationRect.fromShapes(pushpins)\n });\n }\n\n this.map.setOptions({ pushpinAccessible: true });\n this.map.entities.push(pushpins);\n }\n };\n\n /**\n * Handle click event.\n * @param orgUnitNumber - Organization unit number.\n */\n private readonly handleClickEvent = (orgUnitNumber: string | undefined): void => {\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\n storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\n if (orgUnitNumber) {\n setTimeout(() => {\n storeSelectorStateManager?.setSelectedStoreLocationId(orgUnitNumber);\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- Time out.\n }, 500);\n }\n };\n\n /**\n * Get the pushpin option.\n * @param isSelectedLocation - Is selected location.\n * @param index - Index.\n * @param pushpinOptions - PushpinOptions.\n * @returns - The pushpin options.\n */\n private readonly _getPushpinOptions = (isSelectedLocation: boolean, index: number, pushpinOptions?: IPushpinOptionsData) => {\n const text = pushpinOptions?.showIndex ? (index + 1).toString() : undefined;\n\n const size = pushpinOptions?.size || 1;\n const color = isSelectedLocation ? pushpinOptions?.selectionColor || pushpinOptions?.color : pushpinOptions?.color;\n const icon = this._getSvgIcon(size, color, text);\n\n return {\n // Fallback if icon doesn't render properly\n color: isSelectedLocation ? pushpinOptions?.selectionColor : pushpinOptions?.color,\n icon\n };\n };\n\n private readonly _getSvgIcon = (size: number, color?: string, text?: string) => {\n const baseValue: number = 32;\n return `\n \n ${text ? `${text}` : ''}\n `;\n };\n}\n\nexport default Map;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountAddressTileDescription {\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountAddressTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n\nexport default IAccountAddressTileDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IFooterItemConfig, IFooterItemProps, IHeadingData, ILinkData } from './footer-item.props.autogenerated';\n\nexport interface IFooterViewProps extends IFooterItemProps {\n heading: React.ReactNode;\n image: React.ReactNode;\n text: React.ReactNode;\n linkText: React.ReactNode;\n className?: string;\n FooterItem: IModuleProps;\n HeadingContainer: INodeProps;\n ItemContainer: INodeProps;\n Link: INodeProps;\n EditableLink: React.ReactNode;\n}\n\n/**\n *\n * FooterItem component.\n * @extends {React.PureComponent>}\n */\nexport class FooterItem extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private attributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: IFooterItemProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n // Construct telemetry attribute to render\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public render(): JSX.Element {\n const { heading, image, link, text } = this.props.config;\n const footerItemClassName = classnames('ms-footer__item', this.props.config.className);\n const linkText = link && link.linkText ? link.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n const viewProps: IFooterViewProps = {\n ...this.props,\n heading: this._createHeading(heading!),\n image: this._createImageMarkup(image!),\n text: this._createText(text!),\n linkText: this._createLinkText(link!),\n EditableLink: this._createLink(link!),\n\n FooterItem: {\n moduleProps: this.props,\n className: footerItemClassName\n },\n\n HeadingContainer: {\n className: 'ms-footer__heading'\n },\n\n ItemContainer: {\n className: 'ms-footer__link__container'\n },\n\n // @ts-expect-error\n Link: link &&\n link.linkUrl &&\n link.linkUrl.destinationUrl && {\n tag: 'a',\n role: 'link',\n className: 'ms-footer__link',\n href: link.linkUrl.destinationUrl,\n title: linkText,\n 'aria-label': link.ariaLabel,\n target: link.openInNewTab ? '_blank' : undefined,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText),\n ...this.attributes\n },\n className: footerItemClassName\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.text = event.target.value);\n\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.link!.linkText = event.target.value);\n\n private _createLink(link: ILinkData): React.ReactNode | null {\n if (link) {\n const linkText = link.linkText ? link.linkText : '';\n\n // TODO: Update the inner tag in the anchor link to span\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-footer__link',\n linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: this.attributes!,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText)\n };\n return (\n \n );\n }\n return null;\n }\n\n private _createLinkText(link: ILinkData): React.ReactNode | null {\n if (!link || !link.linkText) {\n return null;\n }\n\n return {link.linkText};\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _createText(text: string): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createImageMarkup(item: Msdyn365.IImageData, ariaHiddenAttr?: boolean): React.ReactNode | null {\n if (!item || !item.src || item.src.length === 0) {\n return null;\n }\n\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=24&h=24&m=6', w: 0, h: 0 },\n lg: { q: 'w=24&h=24&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n return (\n \n );\n }\n}\n\nexport default FooterItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createAccordionStateInput } from '../..';\nimport { IAccordionData } from './accordion.data';\nimport { IAccordionProps } from './accordion.props.autogenerated';\n\n/**\n *\n * Accordion component.\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\n/**\n * Added interface for state management.\n */\nexport interface IAccordianState {\n isDisabled: boolean;\n}\n\nexport interface IAccordionViewProps extends IAccordionProps<{}> {\n heading?: React.ReactNode;\n AccordionContainer: IModuleProps;\n HeaderSection: INodeProps;\n HeadingWrapper: INodeProps;\n accordianButtonsContainer: INodeProps;\n accordionButtons: React.ReactNode;\n accordionItemContainer: INodeProps;\n accordionItems: React.ReactNode;\n}\n\n/**\n *\n * Accordion component.\n * @extends {React.Component>}\n */\n@observer\nclass Accordion extends React.PureComponent, IAccordianState> {\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private readonly expandAllButtonRef: React.RefObject = React.createRef();\n\n private readonly collapseAllButtonRef: React.RefObject = React.createRef();\n\n constructor(props: IAccordionProps) {\n super(props);\n this._onExpandAll = this._onExpandAll.bind(this);\n this._onCollapseAll = this._onCollapseAll.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n this.state = { isDisabled: false };\n }\n\n public render(): JSX.Element {\n const { slots } = this.props;\n const { heading, className } = this.props.config;\n const headingComponent = heading && heading.text && (\n \n );\n\n const accordionViewProps = {\n ...this.props,\n AccordionContainer: {\n moduleProps: this.props,\n className: classnames('ms-accordion', className)\n },\n HeaderSection: { className: 'ms-accordion-header-section' },\n HeadingWrapper: { className: 'ms-accordion-header-section-container' },\n heading: headingComponent,\n config: this.props && this.props.config,\n accordianButtonsContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-header-section-toggle-button-container'\n },\n accordionButtons: this._renderAccordionButton(),\n accordionItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-item-section'\n },\n accordionItems:\n slots &&\n slots.accordionItems &&\n slots.accordionItems.length > 0 &&\n slots.accordionItems.map((item: React.ReactNode, index: number) => this._getAccordionItem(item, index))\n };\n return this.props.renderView(accordionViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n private _renderAccordionButton(): React.ReactNode | null {\n const { config, resources } = this.props;\n const { heading } = config;\n this.payLoad.contentAction.etext = TelemetryConstant.ExpandAll;\n const attributeExpandAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.CollapseAll;\n const attributeCollapseAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n if (!config.showToggleAll) {\n this.props.context.telemetry.error('Accordion button content is empty, module wont render');\n return null;\n }\n return (\n <>\n \n {resources.expandAllText}\n \n  \n {resources.toggleAllSeparator}\n  \n \n {resources.collapseAllText}\n \n \n );\n }\n\n private _onExpandAll(): void {\n const accordionState = { isAllExpanded: true };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n if (accordionState.isAllExpanded) {\n this.setState({\n isDisabled: true\n });\n setTimeout(() => {\n this.collapseAllButtonRef.current?.focus();\n }, 50);\n }\n }\n\n private _onCollapseAll(): void {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n if (!accordionState.isAllExpanded) {\n this.setState({\n isDisabled: false\n });\n setTimeout(() => {\n this.expandAllButtonRef.current?.focus();\n }, 50);\n }\n }\n\n private _getAccordionItem(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, { interactionStyle: this.props.config.interactionStyle })}\n \n );\n }\n}\n\nexport default Accordion;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountWelcomeTileViewProps } from './account-welcome-tile';\n\nconst AccountWelcomeTileView: React.FC = props => {\n const { AccountWelcomeTile, heading } = props;\n\n return {heading};\n};\n\nexport default AccountWelcomeTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-address-tile.props.autogenerated';\n\nexport interface IAccountAddressTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountAddressTileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-address-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountAddressTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IHeader, IMapViewProps } from './map';\n\n/**\n * Render the heading.\n * @param param0 -- Heading props.\n * @param param0.headerProps -- Heading Props.\n * @param param0.heading -- Heading Node.\n * @returns -- Returns the node.\n */\nconst MapHeader: React.FC = ({ headerProps, heading }) => {heading};\n\n/**\n * Renders the map view props.\n * @param param0 -- Map view props.\n * @param param0.ModuleProps -- Module props.\n * @param param0.Header -- Header props.\n * @param param0.MapProps -- Map props.\n * @returns -- Returns the map module.\n */\nconst MapView: React.FC = ({ ModuleProps, Header, MapProps }) => (\n \n {Header && }\n \n \n);\n\nexport default MapView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignUpLoadingMessage {\n className: string;\n message: string;\n}\n\nconst SignUpLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default SignUpLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IAccordionExpandedState } from './data-actions/accordion-state';\nimport { createAccordionStateInput } from './data-actions/accordion-state-data-action';\nimport accordion from './modules/accordion/accordion';\nimport { interactionStyle } from './modules/accordion/accordion.props.autogenerated';\nimport accordionView from './modules/accordion/accordion.view';\n\nexport * from './modules/accordion/accordion';\nexport * from './modules/accordion/accordion.view';\n\nexport { accordion, accordionView, createAccordionStateInput, IAccordionExpandedState, interactionStyle };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IFooterViewProps } from './footer-item';\n\n/**\n *\n * FooterItemView component.\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { FooterItem } = this.props;\n return {this._renderElement(this.props)};\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\n if (heading) {\n return {heading} ;\n } else if (Link && image) {\n return (\n \n {linkText}\n {image}\n \n );\n } else if (Link) {\n return EditableLink;\n }\n return (\n <>\n {text}\n {image}\n \n );\n }\n}\n\nexport default FooterItemView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignUpLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst SignUpLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default SignUpLabel;\n"],"sourceRoot":""}