{"version":3,"sources":["webpack:///src/modules/store-selector/store-selector.view.tsx?b873","webpack:///./src/themes/stemichelle/views/search.view.tsx?2542","webpack:///src/modules/fabrikam/views/reviews-list.view.tsx?39a2","webpack:///./src/themes/spring-valley-vineyard/views/search.view.tsx?5e43","webpack:///./src/themes/spring-valley-vineyard/views/order-details.view.tsx?8520","webpack:///./src/themes/erath/views/search.view.tsx?ae24","webpack:///./src/themes/colsolare/views/search.view.tsx?4c11","webpack:///./src/themes/blend/views/search.view.tsx?4345","webpack:///./src/models/notification-message-type.ts?e64a","webpack:///./src/themes/conn-creek/views/search.view.tsx?10cd","webpack:///./src/modules/shipping-map/shipping-map.data-states.ts?1152","webpack:///src/modules/store-selector/components/pickup-option-list.tsx?9a9c","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/store-selector.tsx?ce13","webpack:///./src/themes/columbiacrest/views/search.view.tsx?5c6c","webpack:///./src/themes/north-star/views/search.view.tsx?84b3","webpack:///./src/themes/fth/views/search.view.tsx?1a69","webpack:///./src/Utilities/brand-code-parser.tsx?0b81","webpack:///./src/themes/emp/views/search.view.tsx?c396","webpack:///./src/themes/generazioni/views/order-details.view.tsx?35c2","webpack:///./src/themes/patzhall/views/search.view.tsx?ebe1","webpack:///./src/themes/stemichelle/views/order-details.view.tsx?b3a4","webpack:///./src/themes/stagsleap/views/search.view.tsx?cc20","webpack:///./src/themes/stemichelle-new/views/search.view.tsx?b72e","webpack:///src/modules/business-organization-list/business-organization-list.view.tsx?8701","webpack:///./src/modules/shipping-popup/shipping-popup.tsx?9b38","webpack:///src/modules/business-organization-list/components/small-components.tsx?104e","webpack:///src/modules/business-organization-list/business-organization-list.tsx?b6f5","webpack:///./src/themes/enoteca/views/search.view.tsx?a3a3","webpack:///./src/themes/stagsleap/views/order-details.view.tsx?f05d","webpack:///./src/themes/intrinsic-wine-co/views/order-details.view.tsx?e680","webpack:///./src/themes/columbiacrest/views/order-details.view.tsx?23df","webpack:///./src/themes/emp/views/order-details.view.tsx?ce3b","webpack:///src/modules/account-profile-edit/account-profile-edit.view.tsx?72b7","webpack:///./src/themes/intrinsic-wine-co/views/search.view.tsx?3bbb","webpack:///./src/modules/notification/notification.tsx?7fc1","webpack:///./src/themes/generazioni/views/search.view.tsx?be00","webpack:///./src/themes/elicit/views/search.view.tsx?2ae0","webpack:///./src/themes/north-star/views/order-details.view.tsx?a13d","webpack:///./src/themes/patzhall/views/order-details.view.tsx?1682","webpack:///./src/modules/shipping-popup/shipping-popup.view.tsx?aa8b","webpack:///./src/themes/enoteca/views/order-details.view.tsx?2854","webpack:///./src/themes/colsolare/views/order-details.view.tsx?ceb5","webpack:///./src/themes/conn-creek/views/order-details.view.tsx?9ea7","webpack:///./src/themes/erath/views/order-details.view.tsx?495e","webpack:///./src/themes/elicit/views/order-details.view.tsx?f4a5","webpack:///src/modules/account-profile-edit/components/account-profile-edit-button.tsx?8f71","webpack:///src/modules/account-profile-edit/components/account-profile-edit-error.tsx?a0b2","webpack:///src/modules/account-profile-edit/components/account-profile-edit-input.tsx?3bba","webpack:///src/modules/account-profile-edit/components/account-profile-edit-label.tsx?505c","webpack:///src/modules/account-profile-edit/components/account-profile-edit-loading-icon.tsx?e178","webpack:///src/modules/account-profile-edit/components/account-profile-edit-loading-message.tsx?2c6f","webpack:///src/modules/account-profile-edit/account-profile-edit.tsx?a9d6"],"names":["StoreSelectorView","props","BodyContainerProps","FooterContainerProps","HeaderContainerProps","HeaderProps","ModuleProps","locationsMessage","search","state","spinner","locationsList","noLocationsMessage","terms","React","Module","Object","Node","isSearchInProgress","_renderForm","form","SearchForm","FormWrapper","submitBtn","input","cancelBtn","_renderKeywordSuggestions","KeywordSuggest","UlKeyword","keywordSuggestions","text","map","_renderProductSuggestions","ProductSuggest","UlProduct","productSuggestions","title","items","item","index","LiProduct","key","id","AProduct","thumbnail","price","className","_renderCategorySuggestions","CategorySuggest","UlCategory","categorySuggestions","SearchView","Search","AutoSuggestAriaLabel","AutoSuggestAriaLabelText","searchText","AutoSuggest","autosuggestCategory","autosuggestKeyword","autosuggestProduct","label","length","buildReviewCard","cardProps","headerProps","rating","name","date","cardBodyProps","reviewProps","reviewTitle","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","ratingHelpfulLabel","like","dislike","edit","report","createReviewModal","moduleProps","modal","modalHeader","modalBody","inputRow","ratingLabel","titleLabel","titleInput","textLabel","textInput","privacyPolicyUrl","error","modalFooter","submitButton","cancelButton","createReportModal","reported","headerSubmitted","header","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton","ReviewsListview","averageRating","filterByDropdown","noReviewsMessage","noReviewsWithFilterMessage","pageControls","refineReviewsProps","reportReviewModal","reviewsListProps","reviewCards","reviewCount","reviewModal","sortByDropdown","userReview","isFilterApplied","review","OrderDetailsOrderInfomation","orderInformationProps","salesId","createdDate","count","amount","channelReferenceId","OrderDetailsSalesLine","salesLineProps","salesLine","buyAgainButton","salesStatus","OrderDetailsGroupDelivery","deliveryProps","heading","address","trackingInfo","OrderDetailsGroup","groupProps","delivery","salesLinesProps","salesLines","data","LineId","OrderDetailsGroups","groupsProps","groups","group","OrderDetailsOrderSummary","orderSummaryProps","subtotal","shipping","tax","totalAmount","earnedPoints","OrderDetailsPayment","paymentMethodsProps","methods","OrderDetailsHelp","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","OrderDetailsView","alert","loading","orderInfomation","orderSummary","payment","help","NotificationType","dataStates","PickUpOptionList","constructor","super","_onSelect","async","e","preventDefault","deliveryCode","currentTarget","getAttribute","this","onChange","_rendeDeliveryOptions","bind","_pickupListOptionMenu","expandSiteOptions","render","pickupListOptionMenuText","pickupmodeList","onClick","role","ref","Code","tabIndex","Description","expandSiteOptionsState","setState","secondsToTime","seconds","undefined","hours","Math","floor","ampm","divisorForMinutes","getShortTimeString","day","resources","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","StoreSelectorLocationLineItemComponentActions","onLocationSelected","deliveryMode","handlers","onSelected","location","onSetAsPreferredStore","OrgUnitNumber","onRemovePreferredStore","renderStoreHours","RegularStoreHours","storeHoursList","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","push","buildStoreHours","displayTime","storeOpenFrom","OpenFrom","storeOpenTo","OpenTo","matchDeliveryOptions","productdeliveryOptions","storePickUpOptionList","deliveryOption","pickup","find","_delivery","StoreSelectorLocationLineItemComponent","hideStockStatus","isCurrentLocation","isInStock","stockStatusLabel","storeLocatorView","preferredStoreLocationId","isPreferredStoreEnabled","isLocationDisabled","telemetryContent","productPickUpOptionList","storeName","OrgUnitName","distanceAsString","distance","preferredDistanceUnit","buildDistanceString","Distance","storeAddress","Address","phoneNumber","contacts","allPhoneContacts","filter","contact","ContactTypeValue","IsPrivate","primaryPhoneContact","IsPrimary","Locator","extractPhoneNumber","Contacts","resourceLabel","inStock","outOfStock","stockLabel","stockText","canSelectLocation","pickupInStoreButtonText","selectLocation","pickupInStoreAriaLabel","selectLocationAriaLabelFormat","replace","isPreferredStore","payLoad","getPayloadObject","TelemetryConstant","PickupInStore","attributes","getTelemetryAttributes","contentAction","etext","PreferredStore","preferredStoreAttr","RemovePreferredStore","RemovePreferredStoreAttr","deliveryOptionList","contactInfoHeader","storeHoursHeader","availabilityInfoHeader","currentLocation","preferredStoreAriaLabel","preferredStoreText","setAsPreferredStoreTextAriaLabel","setAsPreferredStoreText","StoreSelectorLocationLines","_scrollIntoView","selectedLocationDiv","selectedLocationRef","current","parent","parentElement","scrollTop","offsetTop","clientHeight","_isCurrentLocation","alreadySelectedLocation","_isProductInStock","ItemAvailabilities","enableOutOfStockCheck","AvailableQuantity","_stockInventoryLabel","availabilityWithHours","ProductInventoryInformation","i","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","componentDidUpdate","prevProps","selectedStoreLocationId","componentDidMount","locations","_stores","_sortStores","classnames","show","displayList","store","_renderStoreLocation","orgUnitLocation","deliveryOptions","OrgUnitPickUpDeliveryModes","selected","StoreHours","toString","DeliveryOptions","productPickUpDeliveryOptions","stores","value","__decorate","observable","observer","StoreSelectorSearchForm","searchBoxRef","_searchTextChanged","inputValue","target","searchTermChanged","_onSubmit","blur","performSearch","SearchStore","storeSearchAttributes","ShowAllStore","showAllStoreAttributes","ToggleMapView","toggleMapViewAttributes","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","isMapDisabled","showAllStores","locatorView","onShowAllStores","onToggleListMapViewState","toggleButtonText","autoComplete","onSubmit","type","searchInputAriaLabel","placeholder","color","StoreSelectorEmptyMessage","emptyLocationsText","StoreSelectorWaiting","StoreSelectorTermsOfService","link","requestContext","onTextChange","editableLink","ariaLabel","linkText","linkUrl","destinationUrl","openInNewTab","Msdyn365","editProps","StoreSelectorFoundLocationsMessage","searchRadius","isSeeAllStore","storeCountMessage","milesShortText","storeCountMessageInKm","storeAllCountMessage","StoreSelector","handleLinkTextChange","event","config","termsOfServiceLink","handleHeadingChange","_attachMapAutoSuggest","autoSuggestOptions","context","telemetry","actionContext","channel","storeSelectorStateManager","result","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","debug","credentials","BingMapsApiKey","_searchTermChanged","formattedSuggestion","_performSearch","_setPreferredStore","storeId","cookies","mode","storeLocations","availabilitiesWithHours","preferedStore","setPreferredStoreLocation","isConsentGiven","Latitude","Longitude","_removePreferredStore","clearPreferredStore","_setSelectedStore","setSelectedStoreLocationId","searchTerm","isSeeAllStoreValue","geoLocate","trim","_updateLocations","latitude","longitude","_getAndUpdateStoreLocation","style","isDialogOpen","navigator","geolocation","getCurrentPosition","position","coords","PERMISSION_DENIED","timeout","_closeDialog","closeDialog","_setOrgUnitStoreInformation","styleDefault","setOrgUnitStoreInformation","showMapViewLink","isDialog","orgUnitStoreInformation","Promise","resolve","catch","message","radius","lookupRadius","calRadius","distanceUnitValue","searchRadiusUnit","modeDefault","preferredStore","lat","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","product","GetFullAvailableInventoryNearbyInput","RecordId","getFullAvailableInventoryNearby","warning","_onOrgUnitLocationSelected","getTelemetryObject","request","telemetryPageName","friendlyName","autoSuggestionEnabled","setTimeout","reaction","BingMapsEnabled","loadMapApi","lang","market","DefaultLanguageId","then","when","isSameContext","shouldComponentUpdate","nextProps","setAsPreferredStore","app","appConfig","inlineView","hideInventory","listMapViewState","showLocationView","isMapModuleLoaded","StoreSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","viewProps","tag","Modal","classname","autoFocus","fade","isOpen","onClosed","horizontalPosition","verticalPosition","toggle","ModalHeader","onEdit","ModalFooter","ModalBody","outOfStockThreshold","enableStockCheck","StoreId","headerText","callbacks","selectedLocation","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","renderView","brandCodeParser","description","appContext","brandCodeTable","currentBrandCode","slice","toLowerCase","brandFound","brand","brandCode","brandName","BusinessFormItem","wrapper","errorMessage","BusinessUserForm","modalClassName","modalHeading","modalDescription","inputs","buttons","button","_renderModal","BusinessUserDetails","selectedUser","FirstName","LastName","userFullName","keys","InputID","isModalOpen","headingSection","bodySection","footerSection","toggleModal","wrapClassName","applicationNode","BusinessOrganizationList","OrganizationUserList","moduleContainer","noUsersText","addUserButton","organizationListTable","formType","formProps","_getForm","ShippingPopup","_modalState","_toggleModal","modalState","FormInput","pattern","maxLength","isRequired","isDisabled","required","GetMaxLength","disabled","FormLabel","forId","htmlFor","FormButton","Button","FormFieldError","errorClassName","parsedMaxLength","parseInt","isNaN","FormType","InputType","renderInputSection","onInputChange","element","customClass","maxChars","BusinessFormDefaultInputs","Text","businessUserFirstNameLabelText","businessUserLastNameLabelText","Email","businessUserEmailAddressLabelText","SpendingLimit","businessUserSpendingLimitLabelText","moduleClassName","_handleAddUserButtonClicked","newForm","formItems","forEach","newUser","B2BUserId","Random","Guid","generateGuid","isFormActive","Add","hasFormError","hasActionError","selectedUserData","_handleAddEditFormSaveButton","updatedUser","_createBusinessPartner","Edit","editOrganizationUser","EditOrganizationUserInput","window","reload","trace","addOrganizationUser","AddOrganizationUserInput","parseFloat","_handleFormCancelButton","None","_handleEditIcon","userData","possibleName","cell","fullName","lastSpaceIndex","lastIndexOf","firstName","substring","lastName","possibleCell","dataCell","user","_handleDeleteIcon","displayedUserData","TableDataType","Price","cultureFormatter","formatCurrency","Remove","_handleViewDetails","View","_handleRemoveUserButton","deleteUserData","deleteOrganizationUser","DeleteOrganizationUserInput","_onInputChange","prev","refresh","isReady","_isFormReady","match","_formatPrice","_getCurrentUrl","reqContext","MsDyn365","isBrowser","URL","href","url","requestUrl","_getViewport","device","Type","innerWidth","gridSettings","xs","w","sm","md","lg","mobileExcludedColumns","Status","_viewport","_updateViewport","addEventListener","componentWillUnmount","removeEventListener","users","businessUserAddUserButtonText","businessUserLoadingMessage","businessUserEmptyListMessage","businessUserErrorGettingUsersMessage","hasUsers","AddUser","addUserAttributes","status","errorProps","Heading","headingTag","Table","_createTableProps","_renderUserForm","_renderUserDetails","tableSort","showPagination","paginationItemPerPage","businessUserPaginationNextButtonText","businessUserPaginationPreviousButtonText","businessUserEditButtonText","businessUserDeleteButtonText","businessUserActionButtonText","businessUserPaginationAriaLabel","tableData","_createTableItems","headings","row","isMobile","includes","sortable","rows","editLinkText","deleteLinkText","viewLinkText","enableToModify","actionLinkText","showCheckBoxes","isSortable","minifyActions","excludedColumns","paginationProperty","skipCount","query","skip","itemPerPage","prevText","nextText","paginationText","actions","onDelete","onView","formatPrice","businessUserActiveStatusText","businessUserPendingStatusText","businessUserRemovedStatusText","usersList","statusString","StatusValue","FullName","businessUserRemoveModalHeaderText","businessUserRemoveModalDescription","businessUserViewModalHeaderText","businessUserCancelButtonText","businessUserCancelRemoveUserButtonText","businessUserRemoveUserButtonText","businessUserErrorUpdatingUsersMessage","formClassName","typeClassName","businessUserEditUserFormHeadingText","businessUserAddUserFormHeadingText","businessUserSaveButtonArialabel","businessUserSaveButtonText","businessUserCancelButtonArialabel","businessUserFieldIncorrectErrorText","businessUserActionErrorText","businessUserAllFieldsRequiredMessage","computed","line","AccountProfileEditItem","AccountProfileEditLoading","icon","AccountProfileEditView","accountProfileEdit","viewState","defaultAADConainer","aadConainer","accountProfileEditLocalAccount","isShowLoading","localAccount","buttonsWrapper","verificationSuccessModal","verificationSuccessModalMessage","LocalAccount","Notification","_markNotificationDisplayed","notification","displayed","forceUpdate","_renderErrorBlock","_errorType","alertcolorclassName","_getClassName","messageTextClassName","Alert","errorType","classtype","info","success","validation","none","moduleData","notificationMessageObject","onAnimationEnd","messagetype","Boolean","shippingPopup__shippingModalTitle","shippingPopup__shippingModalDescription","shippingPopup__shippingModalLegend","states","statesSettings","zIndex","slots","shippingButtonText","AccountProfileEditButton","AccountProfileEditError","AccountProfileEditInput","AccountProfileEditLabel","AccountProfileEditLoadingIcon","AccountProfileEditLoadingMessage","AccountProfileEdit","onTextBoxChange","givenName","surname","emailRegex","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","clearInterval","isInitialized","invalidEmailAddressError","obj","PRE","_htmlDecode","ID","email","PAT","PAT_DESC","required_field","requiredFieldMissingError","verifying_blurb","loadingMessage","assign","AccountProfileEditLoadingIconComponent","AccountProfileEditLoadingMessageComponent","display","_renderLocalAccount","str","document","createElement","innerHTML","childNodes","nodeValue","_renderInput","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","AccountProfileEditErrorComponent","requiredFieldMissingSummaryError","fieldIncorrectError","AccountProfileEditButtonComponent","saveButtonAriaLabel","saveButtonText","cancelButtonText","showEmail","emailAddressLabelText","labelText","AccountProfileEditLabelComponent","AccountProfileEditInputComponent"],"mappings":"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","file":"static/js/15.534ab724239eec7c1c1a.chunk.js","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport { IStoreSelectorViewProps } from './store-selector';\n\nconst StoreSelectorView: React.FC = props => {\n const {\n BodyContainerProps,\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n // headerText,\n locationsMessage,\n search,\n state,\n spinner,\n locationsList,\n noLocationsMessage,\n terms } = props;\n\n return (\n \n \n {HeaderProps}\n \n \n {locationsMessage}\n {search}\n {state.isSearchInProgress ?\n spinner :\n <>\n {locationsList ? locationsList : noLocationsMessage}\n \n }\n \n \n {terms}\n \n \n );\n};\n\nexport default StoreSelectorView;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { ISearchCategoryViewProps, ISearchFormViewProps, ISearchKeywordViewProps, ISearchProductViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search/dist/types/index';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst SearchView: React.FC = props => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label\r\n } = props;\r\n\r\n return (\r\n \r\n {label}\r\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\r\n \r\n {searchText && searchText.length > 0 ?\r\n {AutoSuggestAriaLabelText} : ''\r\n }\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword)}\r\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct)}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\r\n return (\r\n \r\n \r\n {form.submitBtn}\r\n {form.input}\r\n {form.cancelBtn}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (\r\n KeywordSuggest: INodeProps,\r\n UlKeyword: INodeProps,\r\n keywordSuggestions?: ISearchKeywordViewProps\r\n) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (\r\n ProductSuggest: INodeProps,\r\n UlProduct: INodeProps,\r\n productSuggestions?: ISearchProductViewProps\r\n) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price !== 0 && (
{item.price}
)}\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;","import { IReviewModalViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport { IReportReviewModalViewProps, IReviewCardViewProps, IReviewsListState, IReviewsListViewProps } from '@msdyn365-commerce-modules/ratings-reviews/src/modules/reviews-list';\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst ReviewsListview: React.FC = props => {\n const {\n averageRating,\n filterByDropdown,\n moduleProps,\n noReviewsMessage,\n noReviewsWithFilterMessage,\n pageControls,\n refineReviewsProps,\n reportReviewModal,\n reviewsListProps,\n reviewCards,\n reviewCount,\n reviewModal,\n sortByDropdown,\n state,\n userReview\n } = props;\n\n if (!userReview && reviewCards.length === 0 && !state.isFilterApplied) {\n return {noReviewsMessage};\n }\n\n return (\n \n {averageRating}\n {reviewCount}\n { reviewCards.length === 0 ?\n null : \n {sortByDropdown}\n {filterByDropdown}\n \n }\n \n {userReview && buildReviewCard(userReview)}\n {reviewCards.map(review => {\n return buildReviewCard(review);\n })}\n \n { reviewCards.length === 0 && state.isFilterApplied && noReviewsWithFilterMessage}\n {pageControls}\n {createReviewModal(reviewModal, moduleProps)}\n {createReportModal(reportReviewModal, state)}\n \n );\n};\n\nconst buildReviewCard = (props: IReviewCardViewProps) => {\n return (\n \n \n {props.rating}\n {props.name}\n {props.date}\n \n \n \n {props.reviewTitle}\n {props.reviewText}\n \n \n {props.responseName}\n {props.responseDate}\n {props.responseText}\n \n \n {props.ratingHelpfulLabel}\n {props.like}\n {props.dislike}\n {props.edit}\n {props.report}\n \n \n \n );\n};\n\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\n return (\n \n {props.modalHeader}\n \n \n \n {props.rating}\n {props.ratingLabel}\n \n \n {props.titleLabel}\n {props.titleInput}\n \n \n {props.textLabel}\n {props.textInput}\n \n {props.privacyPolicyUrl}\n {props.error}\n \n \n \n {props.submitButton}\n {props.cancelButton}\n \n \n );\n};\n\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\n return (\n \n \n {state.reported ? props.headerSubmitted : props.header}\n \n \n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\n \n \n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\n \n \n );\n};\n\nexport default ReviewsListview;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { ISearchCategoryViewProps, ISearchFormViewProps, ISearchKeywordViewProps, ISearchProductViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search/dist/types/index';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst SearchView: React.FC = props => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label\r\n } = props;\r\n\r\n return (\r\n \r\n {label}\r\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\r\n \r\n {searchText && searchText.length > 0 ?\r\n {AutoSuggestAriaLabelText} : ''\r\n }\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword)}\r\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct)}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\r\n return (\r\n \r\n \r\n {form.submitBtn}\r\n {form.input}\r\n {form.cancelBtn}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (\r\n KeywordSuggest: INodeProps,\r\n UlKeyword: INodeProps,\r\n keywordSuggestions?: ISearchKeywordViewProps\r\n) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (\r\n ProductSuggest: INodeProps,\r\n UlProduct: INodeProps,\r\n productSuggestions?: ISearchProductViewProps\r\n) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price !== 0 && (
{item.price}
)}\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;","/*---------------------------------------------------------------------------------------------\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 {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHelp,\r\n IOrderDetailsViewProps,\r\n IOrderInformation,\r\n IOrderSummary,\r\n IPaymentMethods,\r\n ISalesLine\r\n} from '@msdyn365-commerce-modules/order-management/dist/types';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderDetailsOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId,\r\n}) => (\r\n \r\n {channelReferenceId}\r\n {salesId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n \r\n);\r\n\r\nexport const OrderDetailsSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, salesStatus }) => (\r\n \r\n {salesLine}\r\n
{salesStatus}
\r\n {buyAgainButton}\r\n
\r\n);\r\n\r\nexport const OrderDetailsGroupDelivery: React.FC = ({ deliveryProps, heading, count, address, trackingInfo }) => (\r\n \r\n Ship To\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderDetailsGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n \r\n \r\n ))}\r\n \r\n )}\r\n {delivery && }\r\n \r\n);\r\n\r\nexport const OrderDetailsGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderDetailsOrderSummary: React.FC = ({ orderSummaryProps, heading, subtotal, shipping, tax, totalAmount, earnedPoints }) => (\r\n \r\n {subtotal}\r\n {shipping}\r\n {tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n);\r\n\r\nexport const OrderDetailsPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const OrderDetailsHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst OrderDetailsView: React.FC = ({\r\n moduleProps,\r\n heading,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n {groups && }\r\n {orderSummary && }\r\n {payment && }\r\n {help && }\r\n \r\n );\r\n};\r\n\r\nexport default OrderDetailsView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { ISearchCategoryViewProps, ISearchFormViewProps, ISearchKeywordViewProps, ISearchProductViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search/dist/types/index';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst SearchView: React.FC = props => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label\r\n } = props;\r\n\r\n return (\r\n \r\n {label}\r\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\r\n \r\n {searchText && searchText.length > 0 ?\r\n {AutoSuggestAriaLabelText} : ''\r\n }\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword)}\r\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct)}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\r\n return (\r\n \r\n \r\n {form.submitBtn}\r\n {form.input}\r\n {form.cancelBtn}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (\r\n KeywordSuggest: INodeProps,\r\n UlKeyword: INodeProps,\r\n keywordSuggestions?: ISearchKeywordViewProps\r\n) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (\r\n ProductSuggest: INodeProps,\r\n UlProduct: INodeProps,\r\n productSuggestions?: ISearchProductViewProps\r\n) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price !== 0 && (
{item.price}
)}\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { ISearchCategoryViewProps, ISearchFormViewProps, ISearchKeywordViewProps, ISearchProductViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search/dist/types/index';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst SearchView: React.FC = props => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label\r\n } = props;\r\n\r\n return (\r\n \r\n {label}\r\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\r\n \r\n {searchText && searchText.length > 0 ?\r\n {AutoSuggestAriaLabelText} : ''\r\n }\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword)}\r\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct)}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\r\n return (\r\n \r\n \r\n {form.submitBtn}\r\n {form.input}\r\n {form.cancelBtn}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (\r\n KeywordSuggest: INodeProps,\r\n UlKeyword: INodeProps,\r\n keywordSuggestions?: ISearchKeywordViewProps\r\n) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (\r\n ProductSuggest: INodeProps,\r\n UlProduct: INodeProps,\r\n productSuggestions?: ISearchProductViewProps\r\n) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price !== 0 && (
{item.price}
)}\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;","/*---------------------------------------------------------------------------------------------\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 { ISearchCategoryViewProps, ISearchFormViewProps, ISearchKeywordViewProps, ISearchProductViewProps } from '@msdyn365-commerce-modules/search/src/modules/search/./components';\r\nimport { ISearchViewProps } from '@msdyn365-commerce-modules/search/src/modules/search/./search';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst SearchView: React.FC = props => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label\r\n } = props;\r\n\r\n return (\r\n \r\n {label}\r\n \r\n {_renderForm(form as ISearchFormViewProps, FormWrapper)}\r\n \r\n {searchText && searchText.length > 0 ?\r\n {AutoSuggestAriaLabelText} : ''\r\n }\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword)}\r\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct)}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory)}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (form: ISearchFormViewProps, FormWrapper: INodeProps) => {\r\n return (\r\n \r\n {form.submitBtn}\r\n
\r\n
\r\n {form.input}\r\n
\r\n {form.cancelBtn}\r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (\r\n KeywordSuggest: INodeProps,\r\n UlKeyword: INodeProps,\r\n keywordSuggestions?: ISearchKeywordViewProps\r\n) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (\r\n ProductSuggest: INodeProps,\r\n UlProduct: INodeProps,\r\n productSuggestions?: ISearchProductViewProps\r\n) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;\r\n","/**\r\n * enum to define all message types used in INotificationMessage\r\n */\r\nexport const enum NotificationType {\r\n info = 'info',\r\n success = 'success',\r\n warning = 'warning',\r\n error = 'error',\r\n validation = 'validation',\r\n none = 'none'\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\n\r\nimport { ISearchCategoryViewProps, ISearchFormViewProps, ISearchKeywordViewProps, ISearchProductViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search/dist/types/index';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst SearchView: React.FC = props => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label\r\n } = props;\r\n\r\n return (\r\n \r\n {label}\r\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\r\n \r\n {searchText && searchText.length > 0 ?\r\n {AutoSuggestAriaLabelText} : ''\r\n }\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword)}\r\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct)}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\r\n return (\r\n \r\n \r\n {form.submitBtn}\r\n {form.input}\r\n {form.cancelBtn}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (\r\n KeywordSuggest: INodeProps,\r\n UlKeyword: INodeProps,\r\n keywordSuggestions?: ISearchKeywordViewProps\r\n) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (\r\n ProductSuggest: INodeProps,\r\n UlProduct: INodeProps,\r\n productSuggestions?: ISearchProductViewProps\r\n) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price !== 0 && (
{item.price}
)}\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nexport enum dataStates {\r\n al = 'Alabama',\r\n ak = 'Alaska',\r\n az = 'Arizona',\r\n ar = 'Arkansas',\r\n ca = 'California',\r\n co = 'Colorado',\r\n ct = 'Connecticut',\r\n dc = 'District of Columbia',\r\n de = 'Delaware',\r\n fl = 'Florida',\r\n ga = 'Georgia',\r\n hi = 'Hawaii',\r\n id = 'Idaho',\r\n il = 'Illinois',\r\n in = 'Indiana',\r\n ia = 'Iowa',\r\n ks = 'Kansas',\r\n ky = 'Kentucky',\r\n la = 'Louisiana',\r\n me = 'Maine',\r\n md = 'Maryland',\r\n ma = 'Massachusetts',\r\n mi = 'Michigan',\r\n mn = 'Minnesota',\r\n ms = 'Mississippi',\r\n mo = 'Missouri',\r\n mt = 'Montana',\r\n ne = 'Nebraska',\r\n nv = 'Nevada',\r\n nh = 'New Hampshire',\r\n nj = 'New Jersey',\r\n nm = 'New Mexico',\r\n ny = 'New York',\r\n nc = 'North Carolina',\r\n nd = 'North Dakota',\r\n oh = 'Ohio',\r\n ok = 'Oklahoma',\r\n or = 'Oregon',\r\n pa = 'Pennsylvania',\r\n ri = 'Rhode Island',\r\n sc = 'South Carolina',\r\n sd = 'South Dakota',\r\n tn = 'Tennessee',\r\n tx = 'Texas',\r\n ut = 'Utah',\r\n vt = 'Vermont',\r\n va = 'Virginia',\r\n wa = 'Washington',\r\n wv = 'West Virginia',\r\n wi = 'Wisconsin',\r\n wy = 'Wyoming',\r\n}","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\nexport interface IPickUpOptionListProps {\n pickupListOptionMenuText: string;\n pickupmodeList?: DeliveryOption[];\n onChange(deliveryCode: string): Promise;\n}\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 _pickupListOptionMenu: React.RefObject;\n\n constructor(props: IPickUpOptionListProps) {\n super(props);\n this._rendeDeliveryOptions = this._rendeDeliveryOptions.bind(this);\n this._pickupListOptionMenu = React.createRef();\n this.state= {\n expandSiteOptions:false\n };\n }\n\n public render(): JSX.Element {\n const {\n pickupListOptionMenuText,\n pickupmodeList\n } = this.props;\n\n return (\n
\n \n {this.state.expandSiteOptions? : null}\n
\n );\n }\n\n private _rendeDeliveryOptions():void {\n const expandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !expandSiteOptionsState\n });\n }\n\n private _onSelect = async (e: React.MouseEvent): Promise => {\n e.preventDefault();\n const deliveryCode = e.currentTarget.getAttribute('data-value');\n if(deliveryCode && deliveryCode.length > 0) {\n await this.props.onChange(deliveryCode);\n }\n }\n}","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { RegularStoreHours } from '@msdyn365-commerce/retail-proxy';\nimport get from 'lodash/get';\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 } else {\n let hours = Math.floor(seconds / (60 * 60));\n const ampm = hours >= 12 ? 'pm' : 'am';\n hours = hours % 12;\n hours = hours ? hours : 12;\n const divisorForMinutes = seconds % (60 * 60);\n const minutes =\n Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\n return `${hours}:${minutes} ${ampm}`;\n }\n};\n\nconst getShortTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.monday;\n case 'TUE':\n return resources.days.tuesday;\n case 'WED':\n return resources.days.wednesday;\n case 'THU':\n return resources.days.thursday;\n case 'FRI':\n return resources.days.friday;\n case 'SAT':\n return resources.days.saturday;\n default: // case 'SUN':\n return resources.days.sunday;\n }\n};\n\nconst getFullTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.mondayFull;\n case 'TUE':\n return resources.days.tuesdayFull;\n case 'WED':\n return resources.days.wednesdayFull;\n case 'THU':\n return resources.days.thursdayFull;\n case 'FRI':\n return resources.days.fridayFull;\n case 'SAT':\n return resources.days.saturdayFull;\n default: // case 'SUN':\n return resources.days.sundayFull;\n }\n};\n\nconst buildHoursDisplayInfo = (startDay: DayType, endDay: DayType, hoursInfo: string, resources: IStoreSelectorLocationLineItemResources): IHoursDisplayInfo => {\n return {\n startDayShort: getShortTimeString(startDay, resources),\n startDayFull: getFullTimeString(startDay, resources),\n endDayShort: startDay !== endDay ? getShortTimeString(endDay, resources) : undefined,\n endDayFull: startDay !== endDay ? getFullTimeString(endDay, resources) : undefined,\n timeRange: hoursInfo\n };\n};\n\nconst shouldMergeLines = (firstLine: IHoursInfo, secondLine: IHoursInfo): boolean => {\n if (firstLine.isClosed && secondLine.isClosed) {\n return true;\n }\n\n if (!firstLine.isClosed && !secondLine.isClosed) {\n return firstLine.openTime === secondLine.openTime && firstLine.closeTime === secondLine.closeTime;\n }\n\n return false;\n};\n\nconst getStoreHoursData = (storeHours: RegularStoreHours, dateForLookup: string): IHoursInfo => {\n return {\n isClosed: get(storeHours, `IsClosedOn${dateForLookup}`, false),\n openTime: get(storeHours, `${dateForLookup}OpenTime`, undefined),\n closeTime: get(storeHours, `${dateForLookup}CloseTime`, undefined)\n };\n};\n\nconst buildStoreHoursString = (hoursInfo: IHoursInfo, resources: IStoreSelectorLocationLineItemResources): string => {\n if (hoursInfo.isClosed) {\n return resources.closedText;\n } else {\n const openFrom: string | undefined = secondsToTime(hoursInfo.openTime);\n const openTo: string | undefined = secondsToTime(hoursInfo.closeTime);\n\n return `${openFrom}–${openTo}`;\n }\n};\n\nexport const buildStoreHours = (storeHours: RegularStoreHours, resources: IStoreSelectorLocationLineItemResources): IHoursDisplayInfo[] => {\n const storeHoursList: IHoursDisplayInfo[] = [];\n\n const mondayHours = getStoreHoursData(storeHours, 'Monday');\n const tuesdayHours = getStoreHoursData(storeHours, 'Tuesday');\n const wednesdayHours = getStoreHoursData(storeHours, 'Wednesday');\n const thursdayHours = getStoreHoursData(storeHours, 'Thursday');\n const fridayHours = getStoreHoursData(storeHours, 'Friday');\n const saturdayHours = getStoreHoursData(storeHours, 'Saturday');\n const sundayHours = getStoreHoursData(storeHours, 'Sunday');\n\n let periodStart: DayType = 'MON';\n let periodEnd: DayType = 'MON';\n\n if (!shouldMergeLines(mondayHours, tuesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(mondayHours, resources), resources));\n\n periodStart = 'TUE';\n }\n periodEnd = 'TUE';\n\n if (!shouldMergeLines(tuesdayHours, wednesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(tuesdayHours, resources), resources));\n\n periodStart = 'WED';\n }\n periodEnd = 'WED';\n\n if (!shouldMergeLines(wednesdayHours, thursdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(wednesdayHours, resources), resources));\n\n periodStart = 'THU';\n }\n periodEnd = 'THU';\n\n if (!shouldMergeLines(thursdayHours, fridayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(thursdayHours, resources), resources));\n\n periodStart = 'FRI';\n }\n periodEnd = 'FRI';\n\n if (!shouldMergeLines(fridayHours, saturdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(fridayHours, resources), resources));\n\n periodStart = 'SAT';\n }\n periodEnd = 'SAT';\n\n if (!shouldMergeLines(saturdayHours, sundayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(saturdayHours, resources), resources));\n\n periodStart = 'SUN';\n }\n periodEnd = 'SUN';\n\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(sundayHours, resources), resources));\n\n return storeHoursList;\n};\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as React from 'react';\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport {\n DeliveryOption,\n OrgUnitContact,\n OrgUnitLocation,\n StoreHours\n} from '@msdyn365-commerce/retail-proxy';\nimport {PickUpOptionList} from '../pickup-option-list';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './date-time-helpers';\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\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 /** The telemetry content */\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\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\nconst renderStoreHours = (storeHours: StoreHours | undefined, location: OrgUnitLocation, resources: IStoreSelectorLocationLineItemResources): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day houts\n if (storeHours && 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 } else {\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\nconst buildDistanceString = (distance: number | undefined, preferredDistanceUnit: string, isLocationDisabled?: boolean): string | undefined => {\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < 1) {\n return `(<1 ${preferredDistanceUnit})`;\n } else {\n return `(${Math.floor(distance)} ${preferredDistanceUnit})`;\n }\n};\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 (allPhoneContacts && allPhoneContacts.length > 0) {\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// tslint:disable-next-line: max-func-body-length\nconst StoreSelectorLocationLineItem: React.FC = (props: IStoreSelectorLocationLineItemProps) => {\n const onClick = () => StoreSelectorLocationLineItemComponentActions.onLocationSelected(props);\n\n const onChange = async (deliveryCode: string): Promise => {\n StoreSelectorLocationLineItemComponentActions.onLocationSelected(props, deliveryCode);\n };\n\n const {\n hideStockStatus,\n isCurrentLocation,\n isInStock,\n location,\n resources,\n storeHours,\n stockStatusLabel,\n storeLocatorView,\n index,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList\n } = 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 preferredStoreAttr = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const RemovePreferredStoreAttr = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n\n const setAsPreferredStore = () => StoreSelectorLocationLineItemComponentActions.onSetAsPreferredStore(props);\n const removePreferredStore = () => StoreSelectorLocationLineItemComponentActions.onRemovePreferredStore(props);\n\n return (\n
\n
\n {storeLocatorView && {index}}\n {storeName}\n {distanceAsString ? {distanceAsString} : 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 {\n !storeLocatorView &&\n
\n

{resources.availabilityInfoHeader}

\n {stockText &&

{stockText}

}\n {isCurrentLocation ?\n (\n

{resources.currentLocation}

\n ) : canSelectLocation ?\n deliveryOptionList.length === 0 ? (\n \n {pickupInStoreButtonText}\n \n ): \n : (\n false\n )\n }\n
\n }\n {\n isPreferredStoreEnabled ?\n isPreferredStore ?\n \n : \n : null\n }\n
\n
\n );\n};\n\nconst matchDeliveryOptions = (productdeliveryOptions: DeliveryOption[] | undefined,storePickUpOptionList: DeliveryOption[] | undefined): DeliveryOption[] => {\n const deliveryOption: DeliveryOption[] = [];\n productdeliveryOptions?.map(delivery => {\n const pickup =(storePickUpOptionList?.find(_delivery => _delivery.Code === delivery.Code));\n if(pickup) {\n deliveryOption.push(pickup);\n }\n });\n\n return deliveryOption;\n };\n\nexport const StoreSelectorLocationLineItemComponent = StoreSelectorLocationLineItem as (props: IStoreSelectorLocationLineItemProps) => JSX.Element;","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { IStoreSelectorResources } from '../store-selector.props.autogenerated';\nimport { IStoreSelectorLocationLineItemResources, StoreSelectorLocationLineItemComponent } from './store-selector-location-line-item';\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 /** The telemetry content */\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 private selectedLocationRef: React.RefObject;\n\n @observable private _stores: IFullOrgUnitAvailability[] | undefined;\n\n constructor(props: IStoreSelectorLocationLinesProps) {\n super(props);\n this.selectedLocationRef = React.createRef();\n }\n\n public componentDidUpdate(prevProps: IStoreSelectorLocationLinesProps): void {\n if (this.props.selectedStoreLocationId !== prevProps.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\n public render(): JSX.Element | null {\n if (!this._stores || this._stores.length === 0) {\n return null;\n }\n\n return (\n
\n {\n this._stores.map((store, index) => {\n return this._renderStoreLocation(store, index);\n })\n }\n
\n );\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 return orgUnitLocation && (\n this.props.onClick(orgUnitLocation.OrgUnitNumber)}\n ref={selectedStoreLocationId === orgUnitLocation.OrgUnitNumber ? this.selectedLocationRef : undefined}\n >\n \n
\n );\n }\n\n private _sortStores(stores: IFullOrgUnitAvailability[]): IFullOrgUnitAvailability[] {\n const isPreferredStore = (value: IFullOrgUnitAvailability) => this.props.isPreferredStoreEnabled && this.props.preferredStoreLocationId &&\n value?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === this.props.preferredStoreLocationId;\n\n return [\n ...stores.filter(isPreferredStore),\n ...stores.filter(store => !isPreferredStore(store))\n ];\n }\n\n private _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 private _isCurrentLocation = (location: OrgUnitLocation | undefined): boolean =>\n (this.props.alreadySelectedLocation && location && this.props.alreadySelectedLocation.OrgUnitNumber === location.OrgUnitNumber) || false;\n\n private _isProductInStock = (ItemAvailabilities: ItemAvailability[] | undefined): boolean => {\n if (!this.props.enableOutOfStockCheck) {\n return true;\n }\n\n if (ItemAvailabilities && ItemAvailabilities.length > 0) {\n return ItemAvailabilities[0].AvailableQuantity ? ItemAvailabilities[0].AvailableQuantity > 0 : false;\n }\n\n return false;\n };\n\n private _stockInventoryLabel = (availabilityWithHours: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (availabilityWithHours?.ProductInventoryInformation\n && availabilityWithHours?.ProductInventoryInformation.length > 0) {\n for(let i=0; i {\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 * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\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 };\n\n id: string;\n value: string;\n isMapDisabled?: boolean;\n showAllStores?: boolean;\n displayList?: boolean;\n locatorView?: boolean;\n productPickUpDeliveryOptions?: DeliveryOption[];\n /** The telemetry content */\n telemetryContent?: ITelemetryContent;\n onShowAllStores(): void;\n onToggleListMapViewState(): void;\n performSearch(searchTerm: string): Promise;\n searchTermChanged(searchTerm: string): Promise;\n}\n\n/**\n * Simple search form consisting of search text and a search button\n */\nexport class StoreSelectorSearchForm extends React.PureComponent {\n private searchBoxRef: React.RefObject = React.createRef();\n private storeSearchAttributes: Msdyn365.IDictionary | undefined;\n private showAllStoreAttributes: Msdyn365.IDictionary | undefined;\n private toggleMapViewAttributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: IStoreSelectorSearchFormProps) {\n super(props);\n this.state = { value: '' };\n const payLoad: IPayLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.SearchStore);\n this.storeSearchAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ShowAllStore;\n this.showAllStoreAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ToggleMapView;\n this.toggleMapViewAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n const {\n resources: { searchButtonAriaLabel, searchPlaceholderText, seeAllStoresText, viewListText, viewMapText },\n id,\n value,\n isMapDisabled,\n showAllStores,\n displayList,\n locatorView,\n onShowAllStores,\n onToggleListMapViewState,\n } = this.props;\n\n const toggleButtonText = displayList ? viewMapText : viewListText;\n\n return (\n
\n \n
\n );\n }\n\n private _searchTextChanged = async (e: React.ChangeEvent): Promise => {\n const inputValue: string = e.target.value;\n\n await this.props.searchTermChanged(inputValue);\n };\n\n private _onSubmit = async (e: React.SyntheticEvent): Promise => {\n e.preventDefault(); // Prevents form submission\n this.searchBoxRef.current?.blur();\n await this.props.performSearch(this.props.value);\n }\n}","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport * as React from 'react';\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
\n);\n\nexport interface IStoreSelectorTermsOfServiceProps {\n link?: ITermsOfServiceLinkData;\n requestContext: Msdyn365.IRequestContext;\n onTextChange?(event: Msdyn365.ContentEditableEvent): void;\n}\n\nexport const StoreSelectorTermsOfService: React.FC = ({ link, requestContext, onTextChange }) => {\n if(link) {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-store-select__terms-link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button'\n };\n\n return(\n
\n \n
\n );\n\n }\n return null;\n};\n\nexport interface IStoreSelectorFoundLocationsMessage {\n resources: IStoreSelectorResources;\n locations?: IFullOrgUnitAvailability[];\n searchRadius: number;\n preferredDistanceUnit: string;\n isSeeAllStore: boolean;\n}\nexport const StoreSelectorFoundLocationsMessage: React.FC = ({ locations, searchRadius, resources, isSeeAllStore, preferredDistanceUnit }) => {\n if (locations) {\n const storeCountMessage = preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n return (\n
\n { isSeeAllStore ? resources.storeAllCountMessage\n .replace('{count}', locations.length.toString()) : storeCountMessage\n .replace('{count}', locations.length.toString())\n .replace('{radius}', searchRadius.toString())\n }\n
\n );\n }\n\n return null;\n};","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n// tslint:disable:no-reference\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { IStoreSelectorData } from './store-selector.data';\nimport { IStoreSelectorProps, mode as modeEnum, searchRadiusUnit, style as styleEnum } from './store-selector.props.autogenerated';\n\nimport {\n StoreSelectorEmptyMessage,\n StoreSelectorFoundLocationsMessage,\n StoreSelectorLocationLines,\n StoreSelectorSearchForm,\n StoreSelectorTermsOfService,\n StoreSelectorWaiting\n} from './components';\n\nimport { getFullAvailableInventoryNearby, GetFullAvailableInventoryNearbyInput, getOrgUnitLocationsByArea, GetOrgUnitLocationsByAreaInput, IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IStoreInfo } from '@msdyn365-commerce-modules/bopis-utilities';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody, ModalFooter, ModalHeader, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport classname from 'classnames';\nexport interface IStoreSelectorState {\n isSearchInProgress: boolean;\n searchTerm?: string;\n isSeeAllStoreValue: boolean;\n isLocationDisabled?: boolean;\n}\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 noLocationsMessage?: React.ReactNode;\n terms?: React.ReactNode;\n headerText?: React.ReactNode;\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 *\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 private telemetryContent: ITelemetryContent;\n\n constructor(props: IStoreSelectorProps) {\n super(props);\n this.state = { isSearchInProgress: true, searchTerm: '',isSeeAllStoreValue:false};\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n // tslint:disable-next-line: max-func-body-length\n public componentDidMount(): void {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: {\n channel\n }\n }\n },\n config: {\n autoSuggestionEnabled\n }\n } = this.props;\n\n // Adding Timeout to make sure it loads the data based upon the preferred store.\n setTimeout(() => {\n this._getAndUpdateStoreLocation();\n }, 0);\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result && 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 && this.props.data.storeSelectorStateManager.result.context && 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 (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?.loadMapApi) {\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\n key: channel?.BingMapsApiKey,\n lang: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode,\n market: this.props.context?.actionContext?.requestContext?.channel?.DefaultLanguageId\n }).then().catch();\n }\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\n key: channel?.BingMapsApiKey,\n lang: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode,\n market: this.props.context?.actionContext?.requestContext?.channel?.DefaultLanguageId\n });\n }\n );\n\n if (autoSuggestionEnabled) {\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 async () => {\n setTimeout(async () => {\n await this._attachMapAutoSuggest();\n }, 0);\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: IStoreSelectorProps): 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 // tslint:disable-next-line:max-func-body-length cyclomatic-complexity\n public render(): JSX.Element {\n const {\n config: {\n termsOfServiceLink,\n className,\n heading,\n mode,\n style,\n setAsPreferredStore,\n showAllStores,\n lookupRadius\n },\n context: {\n telemetry,\n app: {\n config: appConfig\n },\n actionContext: {\n requestContext: {\n channel,\n cookies\n }\n }\n },\n resources,\n data: {\n availabilitiesWithHours: { result: availabilitiesWithHours },\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations }\n }\n } = this.props;\n\n const isMapDisabled = (channel && channel.BingMapsApiKey && channel.BingMapsEnabled) ? false : true;\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n const isDialogOpen: boolean = storeSelectorStateManager ? storeSelectorStateManager.isDialogOpen && (context?.id === this.props.id) : false;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const inlineView = styleDefault === styleEnum.inline;\n const locatorView = modeDefault === modeEnum.findStores;\n const hideInventory = locatorView;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n const displayList = storeSelectorStateManager?.listMapViewState?.displayList;\n const isPreferredStoreEnabled = setAsPreferredStore && cookies?.isConsentGiven();\n const showLocationView = (context && (context.showMapViewLink === undefined || context.showMapViewLink)) && locatorView && storeSelectorStateManager?.isMapModuleLoaded;\n\n const StoreSelectorActions = {\n toggleListMapViewState(): void {\n storeSelectorStateManager?.toggleListMapViewState();\n }\n };\n\n if (!(channel && channel.BingMapsApiKey)) {\n telemetry.error('BingMapsApiKey is missing.');\n }\n\n const configHeading = heading ? heading : locatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText;\n const preferredDistanceUnit = this.props.config.searchRadiusUnit === searchRadiusUnit.kilometers ? resources.kilometersShortText : resources.milesShortText ;\n\n const viewProps = {\n ...(this.props as IStoreSelectorProps),\n state: this.state,\n\n ModuleProps: {\n tag: inlineView ? 'div' as NodeTag : Modal,\n moduleProps: this.props,\n className: classname(`ms-store-${inlineView ? 'locate' : 'select'}`, className, inlineView ? '': 'msc-modal-input-required'),\n autoFocus: true,\n fade: true,\n isOpen: isDialogOpen,\n onClosed: this._closeDialog,\n horizontalPosition: 'center',\n verticalPosition: 'center',\n toggle: this._closeDialog\n },\n HeaderContainerProps: {\n tag: inlineView ? 'div' as NodeTag : ModalHeader,\n className: `ms-store-select__${inlineView ? 'header' : 'modal-header'}`,\n toggle: this._closeDialog\n },\n HeaderProps: configHeading && (\n \n ),\n FooterContainerProps: {\n tag: inlineView ? 'div' as NodeTag : ModalFooter,\n className: `ms-store-select__${inlineView ? 'footer' : 'modal-footer'} ${!displayList ? 'map-only-view' : ''}`\n },\n BodyContainerProps: {\n tag: inlineView ? 'div' as NodeTag : ModalBody,\n className: `ms-store-select__${inlineView ? 'body' : 'modal-body'}`\n },\n locationsMessage: !this.state.isLocationDisabled && (\n \n ),\n search: (\n this._getAndUpdateStoreLocation(true)}\n onToggleListMapViewState={StoreSelectorActions.toggleListMapViewState}\n displayList={displayList}\n locatorView={showLocationView}\n productPickUpDeliveryOptions={storeSelectorStateManager?.context?.deliveryOptions?.DeliveryOptions}\n telemetryContent={this.telemetryContent}\n />\n ),\n spinner: ,\n locationsList: ((availabilitiesWithHours && availabilitiesWithHours.length) || (storeLocations && storeLocations.length)) && (\n \n ),\n noLocationsMessage: ,\n terms: ,\n // Not being used in current context, we can use it here to pass more props.\n headerText: {heading ? heading : locatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText},\n\n callbacks: {\n searchTermChanged: this._searchTermChanged,\n performSearch: this._performSearch,\n closeDialog: this._closeDialog,\n selectedLocation: this._onOrgUnitLocationSelected,\n getAndUpdateUserLocation: () => { this._getAndUpdateStoreLocation(); return Promise.resolve(); },\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 public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.termsOfServiceLink) {\n this.props.config.termsOfServiceLink.linkText = event.target.value;\n }\n };\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading = event.target.value;\n\n private _attachMapAutoSuggest = async (): Promise => {\n const {\n config: {\n autoSuggestOptions\n },\n context: {\n telemetry,\n actionContext: {\n requestContext: {\n channel\n }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded && !this.autoSuggestManager) {\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n callback: () => {\n const options = { ...autoSuggestOptions, countryCode: channel?.ChannelCountryRegionISOCode };\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n this.autoSuggestManager.attachAutosuggest(`#ms-store-select__search-box_${this.props.id}`, `#ms-store-select__search-box-container_${this.props.id}`, this._onSuggestionSelected);\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 private _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n const context = this.props.data.storeSelectorStateManager && this.props.data.storeSelectorStateManager.result &&\n 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 private _setPreferredStore = async (storeId: string | undefined): Promise => {\n if (!storeId) {\n return;\n }\n\n const {\n context: {\n actionContext: {\n requestContext: {\n cookies\n }\n }\n },\n config: {\n mode,\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: {result: storeLocations},\n availabilitiesWithHours: { result: availabilitiesWithHours }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) { return; }\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 preferedStore = stores.find(store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === storeId);\n\n await storeSelectorStateManager.setPreferredStoreLocation(storeId, preferedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName, cookies?.isConsentGiven(),\n preferedStore?.OrgUnitAvailability?.OrgUnitLocation?.Latitude, preferedStore?.OrgUnitAvailability?.OrgUnitLocation?.Longitude);\n }\n\n private _removePreferredStore = async (): Promise => {\n const {\n context: {\n actionContext: {\n requestContext: {\n cookies\n }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) { return; }\n\n await storeSelectorStateManager.clearPreferredStore(cookies?.isConsentGiven());\n }\n\n private _setSelectedStore = async (storeId: string | undefined): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) { return; }\n\n await storeSelectorStateManager.setSelectedStoreLocationId(storeId);\n }\n\n private _performSearch = async (searchTerm: string): Promise => {\n const {\n context: {\n actionContext\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!searchTerm || !storeSelectorStateManager) {\n return;\n }\n\n 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 this.setState({ isSearchInProgress: false });\n }\n\n private _searchTermChanged = async (searchTerm: string): Promise => {\n this.setState({ searchTerm: searchTerm });\n }\n\n private _getAndUpdateStoreLocation = (showAllStores?: boolean): void => {\n const {\n config: {\n style\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n\n if (styleDefault !== styleEnum.inline && (!storeSelectorStateManager || !storeSelectorStateManager.isDialogOpen)) {\n // Store selector dialog isn't open yet, so don't try and update anything\n return;\n }\n\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n if (navigator && navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(\n async position => {\n if (showAllStores) {\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 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 });\n if (showAllStores) {\n this.setState({ isSeeAllStoreValue: true });\n await this._searchTermChanged('');\n await this._updateLocations(void 0, void 0, 0);\n } else {\n await this._updateLocations();\n }\n }\n\n this.setState({ isSearchInProgress: false });\n },\n { timeout: 2000 }\n );\n } else {\n this.setState({ isSearchInProgress: false });\n }\n }\n\n private _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 return storeSelectorStateManager.closeDialog();\n }\n }\n\n private _setOrgUnitStoreInformation = async (orgUnitStoreInformation: IFullOrgUnitAvailability[]): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n config: {\n style\n },\n telemetry\n } = this.props;\n\n if (!storeSelectorStateManager) { return; }\n\n const context = storeSelectorStateManager.context;\n const id: string = context && context.id ? context.id : this.props.id;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n await storeSelectorStateManager.setOrgUnitStoreInformation({\n id,\n showMapViewLink: context && context.showMapViewLink,\n isDialog: styleDefault === styleEnum.dialog,\n orgUnitStoreInformation,\n onLocationSelected: orgUnitLocation => {\n // TO-DO handle event for when location in selected\n return Promise.resolve();\n }\n })\n .catch((error: Error) => {\n if (telemetry) {\n telemetry.error(error.message);\n telemetry.debug('Unable to Update store location state');\n }\n return;\n });\n return;\n }\n\n // tslint:disable-next-line: cyclomatic-complexity\n private _updateLocations = async (latitude?: number, longitude?: number, radius?: number): Promise => {\n const {\n telemetry,\n config: {\n mode,\n lookupRadius,\n style\n },\n context: {\n actionContext\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const calRadius = (radius || radius === 0) ? radius : (lookupRadius || 50);\n const distanceUnitValue = this.props.config.searchRadiusUnit === searchRadiusUnit.kilometers ? 1 : 0;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n let lat = 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 lat = lastInlineStoreLocation.Latitude ? lastInlineStoreLocation.Latitude : lat;\n long = lastInlineStoreLocation.Longitude ? lastInlineStoreLocation.Longitude : long;\n }\n await storeSelectorStateManager?.setLastInlineStoreInfo(lat, long);\n }\n\n if (modeDefault === modeEnum.findStores) {\n const orgUnitLocationsInput = new GetOrgUnitLocationsByAreaInput(\n lat,\n long,\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 return;\n }\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 lat || 0,\n long || 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 private _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\nexport default StoreSelector;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { ISearchCategoryViewProps, ISearchFormViewProps, ISearchKeywordViewProps, ISearchProductViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search/dist/types/index';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst SearchView: React.FC = props => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label\r\n } = props;\r\n\r\n return (\r\n \r\n {label}\r\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\r\n \r\n {searchText && searchText.length > 0 ?\r\n {AutoSuggestAriaLabelText} : ''\r\n }\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword)}\r\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct)}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\r\n return (\r\n \r\n \r\n {form.submitBtn}\r\n {form.input}\r\n {form.cancelBtn}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (\r\n KeywordSuggest: INodeProps,\r\n UlKeyword: INodeProps,\r\n keywordSuggestions?: ISearchKeywordViewProps\r\n) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (\r\n ProductSuggest: INodeProps,\r\n UlProduct: INodeProps,\r\n productSuggestions?: ISearchProductViewProps\r\n) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price !== 0 && (
{item.price}
)}\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { ISearchCategoryViewProps, ISearchFormViewProps, ISearchKeywordViewProps, ISearchProductViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search/dist/types/index';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst SearchView: React.FC = props => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label\r\n } = props;\r\n\r\n return (\r\n \r\n {label}\r\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\r\n \r\n {searchText && searchText.length > 0 ?\r\n {AutoSuggestAriaLabelText} : ''\r\n }\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword)}\r\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct)}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\r\n return (\r\n \r\n \r\n {form.submitBtn}\r\n {form.input}\r\n {form.cancelBtn}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (\r\n KeywordSuggest: INodeProps,\r\n UlKeyword: INodeProps,\r\n keywordSuggestions?: ISearchKeywordViewProps\r\n) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (\r\n ProductSuggest: INodeProps,\r\n UlProduct: INodeProps,\r\n productSuggestions?: ISearchProductViewProps\r\n) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price !== 0 && (
{item.price}
)}\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;","/*---------------------------------------------------------------------------------------------\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 { ISearchCategoryViewProps, ISearchFormViewProps, ISearchKeywordViewProps, ISearchProductViewProps } from '@msdyn365-commerce-modules/search/src/modules/search/./components';\r\nimport { ISearchViewProps } from '@msdyn365-commerce-modules/search/src/modules/search/./search';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst SearchView: React.FC = props => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label\r\n } = props;\r\n\r\n return (\r\n \r\n {label}\r\n \r\n {_renderForm(form as ISearchFormViewProps, FormWrapper)}\r\n \r\n {searchText && searchText.length > 0 ?\r\n {AutoSuggestAriaLabelText} : ''\r\n }\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword)}\r\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct)}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory)}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (form: ISearchFormViewProps, FormWrapper: INodeProps) => {\r\n return (\r\n \r\n {form.submitBtn}\r\n
\r\n
\r\n {form.input}\r\n
\r\n {form.cancelBtn}\r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (\r\n KeywordSuggest: INodeProps,\r\n UlKeyword: INodeProps,\r\n keywordSuggestions?: ISearchKeywordViewProps\r\n) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (\r\n ProductSuggest: INodeProps,\r\n UlProduct: INodeProps,\r\n productSuggestions?: ISearchProductViewProps\r\n) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;","import { ICoreContext } from '@msdyn365-commerce/core-internal';\r\ninterface IBrandCodeProps {\r\n description?: string;\r\n appContext: ICoreContext<{\r\n // any is just matching the types here.\r\n // tslint:disable-next-line: no-any\r\n [x: string]: any;\r\n }>;\r\n}\r\n\r\ntype BrandCodeTable = {\r\n brandName: string;\r\n brandCode: string;\r\n}[];\r\n\r\n/**\r\n * for converting a brand code to a brand name\r\n *\r\n */\r\nexport function brandCodeParser({ description, appContext }: IBrandCodeProps): string {\r\n\r\n // for mocking\r\n // const brandCodeTable: BrandCodeTable = [{ brandName: '14Hands', brandCode: 'FTH' }];\r\n\r\n const brandCodeTable = appContext.app.config.brandCodeTable as BrandCodeTable;\r\n\r\n // this is a safety check to ensure that brand code table does NOT crash in local or\r\n // if brand code table is somehow not connecting right to the global config. it will\r\n // essentially act as if there are no brand codes declared - keeping how everything\r\n // looks originally\r\n if (!brandCodeTable) { return ''; }\r\n\r\n // a brand code may and may only appear in the first three characters of a string\r\n // we are lowercasing in the off-chance that the authors type them differently between\r\n // the sources\r\n const currentBrandCode = description && description.slice(0, 3).toLowerCase();\r\n const brandFound = brandCodeTable.find(brand => brand.brandCode.toLowerCase() === currentBrandCode);\r\n if (brandFound) { return brandFound.brandName; }\r\n return '';\r\n}","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { ISearchCategoryViewProps, ISearchFormViewProps, ISearchKeywordViewProps, ISearchProductViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search/dist/types/index';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst SearchView: React.FC = props => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label\r\n } = props;\r\n\r\n return (\r\n \r\n {label}\r\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\r\n \r\n {searchText && searchText.length > 0 ?\r\n {AutoSuggestAriaLabelText} : ''\r\n }\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword)}\r\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct)}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\r\n return (\r\n \r\n \r\n {form.submitBtn}\r\n {form.input}\r\n {form.cancelBtn}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (\r\n KeywordSuggest: INodeProps,\r\n UlKeyword: INodeProps,\r\n keywordSuggestions?: ISearchKeywordViewProps\r\n) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (\r\n ProductSuggest: INodeProps,\r\n UlProduct: INodeProps,\r\n productSuggestions?: ISearchProductViewProps\r\n) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price !== 0 && (
{item.price}
)}\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;","/*---------------------------------------------------------------------------------------------\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 {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHelp,\r\n IOrderDetailsViewProps,\r\n IOrderInformation,\r\n IOrderSummary,\r\n IPaymentMethods,\r\n ISalesLine\r\n} from '@msdyn365-commerce-modules/order-management/dist/types';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderDetailsOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId,\r\n}) => (\r\n \r\n {channelReferenceId}\r\n {salesId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n \r\n);\r\n\r\nexport const OrderDetailsSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, salesStatus }) => (\r\n \r\n {salesLine}\r\n
{salesStatus}
\r\n {buyAgainButton}\r\n
\r\n);\r\n\r\nexport const OrderDetailsGroupDelivery: React.FC = ({ deliveryProps, heading, count, address, trackingInfo }) => (\r\n \r\n Ship To\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderDetailsGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n \r\n \r\n ))}\r\n \r\n )}\r\n {delivery && }\r\n \r\n);\r\n\r\nexport const OrderDetailsGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderDetailsOrderSummary: React.FC = ({ orderSummaryProps, heading, subtotal, shipping, tax, totalAmount, earnedPoints }) => (\r\n \r\n {subtotal}\r\n {shipping}\r\n {tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n);\r\n\r\nexport const OrderDetailsPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const OrderDetailsHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst OrderDetailsView: React.FC = ({\r\n moduleProps,\r\n heading,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n {groups && }\r\n {orderSummary && }\r\n {payment && }\r\n {help && }\r\n \r\n );\r\n};\r\n\r\nexport default OrderDetailsView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { ISearchCategoryViewProps, ISearchFormViewProps, ISearchKeywordViewProps, ISearchProductViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search/dist/types/index';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst SearchView: React.FC = props => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label\r\n } = props;\r\n\r\n return (\r\n \r\n {label}\r\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\r\n \r\n {searchText && searchText.length > 0 ?\r\n {AutoSuggestAriaLabelText} : ''\r\n }\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword)}\r\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct)}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\r\n return (\r\n \r\n \r\n {form.submitBtn}\r\n {form.input}\r\n {form.cancelBtn}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (\r\n KeywordSuggest: INodeProps,\r\n UlKeyword: INodeProps,\r\n keywordSuggestions?: ISearchKeywordViewProps\r\n) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (\r\n ProductSuggest: INodeProps,\r\n UlProduct: INodeProps,\r\n productSuggestions?: ISearchProductViewProps\r\n) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price !== 0 && (
{item.price}
)}\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;","/*---------------------------------------------------------------------------------------------\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 {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHelp,\r\n IOrderDetailsViewProps,\r\n IOrderInformation,\r\n IOrderSummary,\r\n IPaymentMethods,\r\n ISalesLine\r\n} from '@msdyn365-commerce-modules/order-management/dist/types';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderDetailsOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId,\r\n}) => (\r\n \r\n {channelReferenceId}\r\n {salesId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n \r\n);\r\n\r\nexport const OrderDetailsSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton,salesStatus }) => (\r\n \r\n {salesLine}\r\n
{salesStatus}
\r\n {buyAgainButton}\r\n
\r\n);\r\n\r\nexport const OrderDetailsGroupDelivery: React.FC = ({ deliveryProps, heading, count, address, trackingInfo }) => (\r\n \r\n Ship To\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderDetailsGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n \r\n \r\n ))}\r\n \r\n )}\r\n {delivery && }\r\n \r\n);\r\n\r\nexport const OrderDetailsGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderDetailsOrderSummary: React.FC = ({ orderSummaryProps, heading, subtotal, shipping, tax, totalAmount, earnedPoints }) => (\r\n \r\n {subtotal}\r\n {shipping}\r\n {tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n);\r\n\r\nexport const OrderDetailsPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const OrderDetailsHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst OrderDetailsView: React.FC = ({\r\n moduleProps,\r\n heading,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n {groups && }\r\n {orderSummary && }\r\n {payment && }\r\n {help && }\r\n \r\n );\r\n};\r\n\r\nexport default OrderDetailsView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { ISearchCategoryViewProps, ISearchFormViewProps, ISearchKeywordViewProps, ISearchProductViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search/dist/types/index';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst SearchView: React.FC = props => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label\r\n } = props;\r\n\r\n return (\r\n \r\n {label}\r\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\r\n \r\n {searchText && searchText.length > 0 ?\r\n {AutoSuggestAriaLabelText} : ''\r\n }\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword)}\r\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct)}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\r\n return (\r\n \r\n \r\n {form.submitBtn}\r\n {form.input}\r\n {form.cancelBtn}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (\r\n KeywordSuggest: INodeProps,\r\n UlKeyword: INodeProps,\r\n keywordSuggestions?: ISearchKeywordViewProps\r\n) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (\r\n ProductSuggest: INodeProps,\r\n UlProduct: INodeProps,\r\n productSuggestions?: ISearchProductViewProps\r\n) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price !== 0 && (
{item.price}
)}\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;","/*---------------------------------------------------------------------------------------------\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 { ISearchCategoryViewProps, ISearchFormViewProps, ISearchKeywordViewProps, ISearchProductViewProps } from '@msdyn365-commerce-modules/search/src/modules/search/./components';\r\nimport { ISearchViewProps } from '@msdyn365-commerce-modules/search/src/modules/search/./search';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst SearchView: React.FC = props => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label\r\n } = props;\r\n\r\n return (\r\n \r\n {label}\r\n \r\n {_renderForm(form as ISearchFormViewProps, FormWrapper)}\r\n \r\n {searchText && searchText.length > 0 ?\r\n {AutoSuggestAriaLabelText} : ''\r\n }\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword)}\r\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct)}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory)}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (form: ISearchFormViewProps, FormWrapper: INodeProps) => {\r\n return (\r\n \r\n {form.submitBtn}\r\n
\r\n
\r\n {form.input}\r\n
\r\n {form.cancelBtn}\r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (\r\n KeywordSuggest: INodeProps,\r\n UlKeyword: INodeProps,\r\n keywordSuggestions?: ISearchKeywordViewProps\r\n) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (\r\n ProductSuggest: INodeProps,\r\n UlProduct: INodeProps,\r\n productSuggestions?: ISearchProductViewProps\r\n) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\nimport * as React from 'react';\n\nimport { Modal, ModalBody, ModalFooter, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport { IBusinessOrganizationListViewProps, IFormViewProps, InputID } from './business-organization-list';\nimport { IBusinessFormItem} from './components/small-components';\n\nconst BusinessFormItem: React.FC = ({\n wrapper,\n label,\n errorMessage,\n input\n}) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst BusinessUserForm: React.FC = (props: IFormViewProps) => {\n const { modalClassName, FormWrapper, modalHeading, modalDescription, inputs, buttons, errorMessage, toggle } = props;\n\n const modalBody = (\n <>\n {modalDescription}\n \n {inputs && inputs.map((item: IBusinessFormItem) => {\n return (\n \n );\n })}\n {errorMessage && errorMessage.map((error: React.ReactNode, index: number) => {\n return (\n \n {error}\n \n );\n })}\n \n \n\n );\n\n const modalFooter = buttons && buttons.map((button: React.ReactNode, index: number) => {\n return (\n \n {button}\n \n );\n });\n\n return _renderModal(modalClassName, true, modalHeading, modalBody, modalFooter, toggle);\n};\n\nconst BusinessUserDetails: React.FC = (props: IFormViewProps) => {\n const { modalClassName, FormWrapper, modalHeading, modalDescription, selectedUser, buttons, errorMessage, resources, toggle } = props;\n let modalBody = null;\n\n if (!selectedUser) {\n modalBody = errorMessage;\n } else {\n const { FirstName, LastName } = selectedUser;\n const userFullName = `${FirstName} ${LastName}`;\n\n modalBody = (\n <>\n { modalDescription }\n
    \n
  • {userFullName}
  • \n { Object.keys(selectedUser).map((data)=> {\n if (data === InputID.FirstName || data === InputID.LastName) {\n return null;\n } else {\n const label = resources[`table${data}HeadingText`] || data;\n return
  • {label}: {selectedUser[data]}
  • ;\n }\n })}\n
\n \n );\n }\n\n const modalFooter = buttons && buttons.map((button: React.ReactNode, index: number) => {\n return (\n \n {button}\n \n );\n });\n\n return _renderModal(modalClassName, true, modalHeading, modalBody, modalFooter, toggle);\n};\n\nconst _getForm = (type: string, formProps: IFormViewProps, toggleModal?: () => void) => {\n switch(type) {\n case 'ADD':\n case 'EDIT':\n return ;\n case 'VIEW':\n case 'REMOVE':\n return ;\n default:\n return null;\n }\n};\n\nconst _renderModal = (className: string, isModalOpen: boolean, headingSection: React.ReactNode, bodySection: React.ReactNode, footerSection: React.ReactNode, toggleModal?: () => void) => {\n return (\n \n \n {headingSection}\n \n \n {bodySection}\n \n \n {footerSection}\n \n \n );\n};\n\nconst BusinessOrganizationList: React.FC = props => {\n const { OrganizationUserList, moduleContainer, heading, noUsersText, addUserButton, organizationListTable, form, formType, toggleModal } = props;\n\n if (noUsersText) {\n return (\n \n \n {heading}\n {addUserButton}\n {noUsersText}\n \n \n );\n }\n\n return (\n \n \n {heading}\n {addUserButton}\n {organizationListTable}\n \n { form && _getForm(formType, form, toggleModal) }\n \n );\n};\n\nexport default BusinessOrganizationList;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IShippingPopupData } from './shipping-popup.data';\r\nimport { IShippingPopupProps } from './shipping-popup.props.autogenerated';\r\n\r\nimport { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\n\r\nexport interface IShippingPopupViewProps extends IShippingPopupProps {\r\n modalState: boolean;\r\n toggleModal(): void;\r\n}\r\n\r\n/**\r\n *\r\n * ShippingPopup component\r\n * @extends {React.PureComponent>}\r\n */\r\n@observer\r\nclass ShippingPopup extends React.PureComponent> {\r\n\r\n @observable private _modalState: boolean = false;\r\n\r\n constructor(props: IShippingPopupProps) {\r\n super(props);\r\n\r\n this._toggleModal = this._toggleModal.bind(this);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n return this.props.renderView({\r\n modalState: this._modalState,\r\n toggleModal: this._toggleModal,\r\n ...this.props\r\n });\r\n }\r\n\r\n private _toggleModal(): void {\r\n this._modalState = !this._modalState;\r\n }\r\n}\r\n\r\nexport default ShippingPopup;\r\n","import * as React from 'react';\n\nimport { Button, getPayloadObject, getTelemetryAttributes, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { InputType } from '../business-organization-list';\n\nexport interface IBusinessForm {\n FormWrapper: INodeProps;\n message?: React.ReactNode;\n items: IBusinessFormItem[];\n buttons: React.ReactNode[];\n errorMessage: React.ReactNode[];\n}\n\nexport interface IBusinessFormItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IBusinessFormInput {\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IUserFormItem {\n id: string;\n type: InputType;\n label: string;\n value: string;\n maxChars?: string;\n isRequired: boolean;\n pattern?: string;\n isDisabled?: boolean;\n customClass?: string;\n}\n\nexport interface IBusinessFormInputProps {\n id?: string;\n type: string;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n isRequired: boolean;\n isDisabled?: boolean;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport const FormInput: React.FC = ({ id, type, value, pattern, className, maxLength, isRequired, isDisabled, onChange }) =>\n (\n \n );\n\nexport interface IBusinessFormLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nexport const FormLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport interface IBusinessFormButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nexport const FormButton: React.FC = ({ id, className, text, ariaLabel, telemetryContent, disabled, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {text}\n \n );\n};\n\nexport interface IBusinessFormErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nexport const FormFieldError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n\n};\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as React from 'react';\n\nimport { Random } from '@msdyn365-commerce-modules/retail-actions';\n// tslint:disable-next-line:no-duplicate-imports\nimport { addOrganizationUser, AddOrganizationUserInput, deleteOrganizationUser, DeleteOrganizationUserInput, editOrganizationUser, EditOrganizationUserInput } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { Button, getPayloadObject, getTelemetryAttributes, getTelemetryObject, Heading, IDataTableProps, IHeadingsProperty, IModuleProps, INodeProps, IPayLoad,\n ITableItemProps, ITableRowProps, ITelemetryContent, Table, TableDataType, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport MsDyn365, { IRequestContext } from '@msdyn365-commerce/core';\nimport { BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport { IBusinessOrganizationListData } from './business-organization-list.data';\nimport { IBusinessOrganizationListProps, IBusinessOrganizationListResources } from './business-organization-list.props.autogenerated';\nimport { FormButton, FormFieldError, FormInput, FormLabel, IBusinessFormItem, IUserFormItem } from './components';\n\nexport interface IBusinessOrganizationListViewProps extends IBusinessOrganizationListProps {\n OrganizationUserList: IModuleProps;\n moduleContainer: INodeProps;\n heading: React.ReactNode;\n noUsersText?: string;\n addUserButton?: React.ReactNode;\n search?: React.ReactNode;\n organizationListTable: React.ReactNode;\n form?: IFormViewProps;\n formItems?: IUserFormItem[];\n formType: FormType;\n deleteUserForm?: React.ReactNode;\n viewUserDetails?: React.ReactNode;\n modalHeading?: React.ReactNode;\n modalState?: boolean;\n toggleModal?(): void;\n}\n\nexport interface IBusinessOrganizationListState {\n isReady: boolean;\n formItems: IUserFormItem[];\n isFormActive: boolean;\n formType: FormType;\n selectedUserData?: BusinessPartnerUser;\n // tslint:disable-next-line:no-any\n displayedUserData?: any;\n refresh: boolean;\n isModalOpen: boolean;\n hasFormError: boolean;\n hasActionError: boolean;\n}\n\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport enum FormType {\n None = 'NONE',\n Edit = 'EDIT',\n Remove = 'REMOVE',\n View = 'VIEW',\n Add = 'ADD'\n}\n\nexport enum InputType {\n Text = 'text',\n Email = 'email'\n}\n\nexport enum InputID {\n FirstName = 'FirstName',\n LastName = 'LastName',\n B2BUserId = 'B2BUserId',\n Email = 'Email',\n SpendingLimit = 'SpendingLimit',\n Status = 'Status',\n FullName = 'Name'\n}\n\nexport interface IFormViewProps {\n modalClassName: string;\n FormWrapper: INodeProps;\n modalHeading?: string;\n modalDescription?: React.ReactNode;\n inputs?: IBusinessFormItem[];\n // tslint:disable-next-line:no-any\n selectedUser?: any;\n buttons?: React.ReactNode[];\n errorMessage?: React.ReactNode[];\n resources: IBusinessOrganizationListResources;\n toggle?(): void;\n}\n\nexport const renderInputSection = (inputs: IUserFormItem[], className: string, onInputChange: (event: React.ChangeEvent) => void): IBusinessFormItem[] => {\n return inputs.map((element) => {\n const { customClass, id, type, label, maxChars, isRequired, pattern, value, isDisabled } = element;\n\n return {\n wrapper: {\n className: classnames(className, id, customClass)\n },\n key: id,\n label: ,\n errorMessage: ,\n input: (\n \n )\n };\n });\n};\n\ninterface IUserTableItemProps extends ITableItemProps {\n user: BusinessPartnerUser;\n}\n\n/**\n *\n * BusinessOrganizationList component\n * @extends {React.PureComponent>}\n */\n@observer\nclass BusinessOrganizationList extends React.Component,IBusinessOrganizationListState> {\n public BusinessFormDefaultInputs: IUserFormItem[] = [\n {\n id: InputID.FirstName,\n type: InputType.Text,\n label: this.props.resources.businessUserFirstNameLabelText,\n value: '',\n isRequired: true,\n customClass: 'width-50'\n },\n {\n id: InputID.LastName,\n type: InputType.Text,\n label: this.props.resources.businessUserLastNameLabelText,\n value: '',\n isRequired: true,\n customClass: 'width-50'\n },\n {\n id: InputID.Email,\n type: InputType.Email,\n label: this.props.resources.businessUserEmailAddressLabelText,\n value: '',\n isRequired: true,\n pattern: '^[a-zA-Z0-9.!#$%&\\'^_`{}~-]+@[a-zA-Z0-9-]+(?:\\\\.[a-zA-Z0-9-]+)*$',\n customClass: 'width-100'\n },\n {\n id: InputID.SpendingLimit,\n type: InputType.Text,\n label: this.props.resources.businessUserSpendingLimitLabelText,\n value: '',\n isRequired: true,\n customClass: 'width-50'\n },\n ];\n\n private moduleClassName: string = 'ms-business-organization-list';\n private mobileExcludedColumns: string[];\n\n @observable\n private _viewport: GridSize;\n @computed get isMobile(): boolean {\n return (this._viewport === 'xs' || this._viewport === 'sm');\n }\n private telemetryContent?: ITelemetryContent;\n private payLoad: IPayLoad;\n\n constructor(props: IBusinessOrganizationListProps) {\n super(props);\n this._toggleModal = this._toggleModal.bind(this);\n this._onInputChange = this._onInputChange.bind(this);\n this._handleRemoveUserButton = this._handleRemoveUserButton.bind(this);\n\n this.mobileExcludedColumns = [InputID.Email, InputID.Status, InputID.SpendingLimit];\n this._viewport = props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._updateViewport = this._updateViewport.bind(this);\n\n this.state = {\n isReady: false,\n formItems: this.BusinessFormDefaultInputs,\n isFormActive: false,\n formType: FormType.None,\n refresh: true,\n isModalOpen: false,\n hasFormError: false,\n hasActionError: false\n };\n\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n this._updateViewport();\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser && window.addEventListener) {\n window.addEventListener('resize', this._updateViewport);\n this._updateViewport();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser && window.removeEventListener) {\n window.removeEventListener('resize', this._updateViewport);\n }\n }\n\n public render(): JSX.Element | null {\n const { config, resources, data: { users } } = this.props;\n const { className, heading } = config;\n const { businessUserAddUserButtonText, businessUserLoadingMessage, businessUserEmptyListMessage, businessUserErrorGettingUsersMessage } = resources;\n const { formItems, isFormActive, formType, isModalOpen } = this.state;\n\n const hasUsers = users && users.result && users.result.length > 0;\n this.payLoad.contentAction.etext = TelemetryConstant.AddUser;\n const addUserAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n\n if (!hasUsers) {\n let errorMessage = '';\n if (users.status === 'LOADING') {\n errorMessage = businessUserLoadingMessage;\n } else if (users.status === 'FAILED') {\n errorMessage = businessUserErrorGettingUsersMessage;\n } else if (users.result && users.result.length === 0) {\n errorMessage = businessUserEmptyListMessage;\n }\n\n const errorProps = {\n ...this.props,\n className: className,\n OrganizationUserList: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n moduleContainer: {\n className: `${this.moduleClassName}__container`\n },\n heading: heading && ,\n addUserButton: ,\n noUsersText:

{errorMessage}

\n };\n\n return this.props.renderView(errorProps) as React.ReactElement;\n }\n\n const viewProps = {\n ...this.props,\n className: className,\n OrganizationUserList: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n moduleContainer: {\n className: `${this.moduleClassName}__container`\n },\n heading: heading && ,\n modalState: isModalOpen,\n addUserButton: ,\n organizationListTable: ,\n toggleModal: this._toggleModal,\n formType: formType,\n form: isFormActive && isModalOpen && (formType === FormType.Add || formType === FormType.Edit) ? this._renderUserForm() : this._renderUserDetails(),\n formItems: formItems\n } as IBusinessOrganizationListViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n // _createTableProps: creates the props for the organization list table\n private _createTableProps(): IDataTableProps {\n const { config, resources, context } = this.props;\n const { tableSort, showPagination, paginationItemPerPage } = config;\n const { businessUserPaginationNextButtonText, businessUserPaginationPreviousButtonText, businessUserEditButtonText, businessUserDeleteButtonText, businessUserActionButtonText, businessUserPaginationAriaLabel } = resources;\n\n const tableData = this._createTableItems();\n const tableHeading = tableData.length > 0 && tableData[0].row.map((item) => {\n if (this.isMobile && this.mobileExcludedColumns.includes(item.id)) {\n return;\n } else {\n return {\n name: item.id,\n sortable: tableSort && tableSort || false\n } as IHeadingsProperty;\n }\n }) || [];\n\n return {\n resources: resources,\n headings: tableHeading,\n rows: tableData,\n className: `${this.moduleClassName}__table`,\n editLinkText: this.isMobile ? businessUserEditButtonText : '', // '' === showing just icon\n deleteLinkText: this.isMobile ? businessUserDeleteButtonText : '', // '' === showing just icon\n viewLinkText: 'View details',\n enableToModify: true,\n actionLinkText: businessUserActionButtonText,\n showCheckBoxes: false,\n isSortable: tableSort,\n showPagination: showPagination,\n minifyActions: this.isMobile,\n excludedColumns: this.isMobile ? this.mobileExcludedColumns : [],\n paginationProperty: {\n skipCount: context && context.request && context.request.query && context.request.query.skip && !isNaN(parseInt(context.request.query.skip, 10)) ? parseInt(context.request.query.skip, 10) : 0,\n itemPerPage: paginationItemPerPage || 10,\n prevText: businessUserPaginationPreviousButtonText,\n nextText: businessUserPaginationNextButtonText,\n paginationText: businessUserPaginationAriaLabel,\n url: context && this._getCurrentUrl(context.request).href || ''\n },\n actions: {\n onDelete: this._handleDeleteIcon,\n onEdit: this._handleEditIcon,\n onView: this.isMobile && this._handleViewDetails || undefined\n },\n formatPrice: this._formatPrice\n };\n }\n\n // _createTableItems: converts users recieved from the data-action(IBusinessParterUser[]) to tableRows(ITableItemProps[])\n private _createTableItems(): ITableRowProps[] {\n const { resources, data: { users } } = this.props;\n const { businessUserActiveStatusText, businessUserPendingStatusText, businessUserRemovedStatusText } = resources;\n const usersList = users && users.result;\n\n if (!usersList || usersList.length === 0) {\n return [];\n }\n\n return usersList.map((user) => {\n let statusString = '';\n\n switch(user.StatusValue) {\n case 0:\n statusString = businessUserPendingStatusText;\n break;\n case 1:\n statusString = businessUserActiveStatusText;\n break;\n case 2:\n default:\n statusString = businessUserRemovedStatusText;\n }\n\n return {\n row: [\n {\n id: InputID.FullName,\n type: TableDataType.Text,\n value: `${user.FirstName} ${user.LastName}`,\n user\n } as IUserTableItemProps,\n {\n id: InputID.Email,\n type: TableDataType.Text,\n value: user.Email || ''\n } as IUserTableItemProps,\n {\n id: InputID.Status,\n type: TableDataType.Text,\n value: statusString\n } as IUserTableItemProps,\n {\n id: InputID.SpendingLimit,\n type: TableDataType.Price,\n value: user.SpendingLimit || 0\n } as IUserTableItemProps\n ]\n };\n });\n }\n\n // _toggleModal: closes the modal and resets the form states\n private _toggleModal():void {\n this.setState({\n isModalOpen: false,\n isFormActive: false,\n formType: FormType.None\n });\n }\n\n // _handleAddUserButtonClicked: resets input fields, opens the modal, and sets the form states\n private _handleAddUserButtonClicked = () => {\n // reset form\n const newForm = this.state.formItems;\n newForm.forEach((input) => {\n if (input.id === InputID.Email) {\n // make sure email input is re enabled (it gets disabled when admin is editing user)\n input.isDisabled = false;\n }\n\n input.value = '';\n });\n\n const newUser = { B2BUserId: Random.Guid.generateGuid() } as BusinessPartnerUser;\n\n this.setState({\n formItems: newForm,\n isFormActive: true,\n formType: FormType.Add,\n isModalOpen: true,\n hasFormError: false,\n hasActionError: false,\n selectedUserData: newUser\n });\n }\n\n // _handleAddEditFormSaveButton: triggered on the save button for both add/edit forms. Calls the appropriate data-action and reloads the page when successful\n private _handleAddEditFormSaveButton = async () => {\n const { context } = this.props;\n const { formType, formItems } = this.state;\n\n const updatedUser = this._createBusinessPartner(formItems);\n\n if (formType === FormType.Edit) {\n editOrganizationUser(new EditOrganizationUserInput(updatedUser), context.actionContext)\n .then(() => {\n window.location.reload(false);\n })\n .catch(error => {\n context.telemetry.trace(error);\n this.setState({\n hasActionError: true\n });\n });\n } else {\n addOrganizationUser(new AddOrganizationUserInput(updatedUser), context.actionContext)\n .then(() => {\n window.location.reload(false);\n })\n .catch(error => {\n context.telemetry.trace(error);\n this.setState({\n hasActionError: true\n });\n });\n }\n }\n\n // _createBusinessPartner: attempts to convert input values(IUserFormItem) to a new user(BusinessPartnerUser)\n private _createBusinessPartner = (inputs: IUserFormItem[]): BusinessPartnerUser => {\n const newUser: BusinessPartnerUser = {...this.state.selectedUserData!};\n\n inputs.forEach((input) => {\n // deals with input values need need to be converted into numbers\n if (input.id === InputID.SpendingLimit) {\n newUser[input.id] = parseFloat(input.value) || 0;\n } else {\n newUser[input.id] = input.value;\n }\n });\n\n return newUser;\n }\n\n // _handleFormCancelButton: closes the modal when clicking the Cancel button\n private _handleFormCancelButton = () => {\n this.setState({\n isFormActive: false,\n isModalOpen: false,\n formType: FormType.None\n });\n }\n\n // _handleEditIcon: converts the table row data(ITableItemProps[]) to input fields(IUserFormItem) and opens the edit form\n private _handleEditIcon = (userData: ITableItemProps[]) => {\n // split full name into first and last\n const possibleName = userData.find(cell => {return cell.id === 'Name';});\n const fullName = possibleName && possibleName.value as string || '';\n const lastSpaceIndex = fullName.lastIndexOf(' ');\n const firstName = fullName.substring(0, lastSpaceIndex);\n // tslint:disable-next-line:restrict-plus-operands\n const lastName = fullName.substring(lastSpaceIndex + 1);\n\n // create clone of formItems, map users information, update state\n const { formItems } = this.state;\n const newForm = formItems;\n\n newForm.forEach(input => {\n switch (input.id) {\n case InputID.FirstName:\n input.value = firstName;\n break;\n case InputID.LastName:\n input.value = lastName;\n break;\n case InputID.Email: // email can never be null/undefined as it is a required field\n input.isDisabled = true;\n const possibleCell = userData.find(cell => {return input.id === cell.id;});\n input.value = possibleCell && possibleCell.value as string || '';\n break;\n default:\n const dataCell = userData.find(cell => {return input.id === cell.id;});\n input.value = dataCell && dataCell.value as string || '';\n }\n });\n\n this.setState({\n formItems: newForm,\n isFormActive: true,\n formType: FormType.Edit,\n isModalOpen: true,\n hasFormError: false,\n hasActionError: false,\n selectedUserData: (userData[0] as IUserTableItemProps).user\n });\n }\n\n // _handleDeleteIcon: opens removeUser confirmation window\n private _handleDeleteIcon = (userData: ITableItemProps[]) => {\n const newUser: BusinessPartnerUser = {...(userData[0] as IUserTableItemProps).user};\n // tslint:disable-next-line:no-any\n const displayedUserData: any = {};\n\n userData.forEach((cell: ITableItemProps) => {\n if (cell.id === 'Name') {\n // split full name into first and last\n const fullName = cell.value as string;\n const lastSpaceIndex = fullName.lastIndexOf(' ');\n displayedUserData.FirstName = fullName.substring(0, lastSpaceIndex);\n // tslint:disable-next-line\n displayedUserData.LastName = fullName.substring(lastSpaceIndex + 1);\n } else if (cell.type === TableDataType.Price) {\n displayedUserData[cell.id] = this.props.context.cultureFormatter.formatCurrency(cell.value as string);\n } else {\n displayedUserData[cell.id] = cell.value;\n }\n });\n\n this.setState({\n displayedUserData: displayedUserData,\n selectedUserData: newUser,\n formType: FormType.Remove,\n isModalOpen: true,\n isFormActive: false\n });\n }\n\n // _handleViewDetails: opens user details window\n private _handleViewDetails = (userData: ITableItemProps[]) => {\n const newUser: BusinessPartnerUser = {...(userData[0] as IUserTableItemProps).user};\n // tslint:disable-next-line:no-any\n const displayedUserData: any = {};\n\n userData.forEach((cell: ITableItemProps) => {\n if (cell.id === 'Name') {\n // split full name into first and last\n const fullName = cell.value as string;\n const lastSpaceIndex = fullName.lastIndexOf(' ');\n displayedUserData.FirstName = fullName.substring(0, lastSpaceIndex);\n // tslint:disable-next-line\n displayedUserData.LastName = fullName.substring(lastSpaceIndex + 1);\n } else if (cell.type === TableDataType.Price) {\n displayedUserData[cell.id] = this.props.context.cultureFormatter.formatCurrency(cell.value as string);\n } else {\n displayedUserData[cell.id] = cell.value;\n }\n });\n\n this.setState({\n displayedUserData: displayedUserData,\n selectedUserData: newUser,\n formType: FormType.View,\n isModalOpen: true,\n isFormActive: false\n });\n }\n\n // _handleRemoveUserButton: triggered on confirmation of removing a user.\n private _handleRemoveUserButton = () => {\n // TODO\n const { context } = this.props;\n const { selectedUserData: deleteUserData } = this.state;\n\n if (deleteUserData) {\n deleteOrganizationUser(new DeleteOrganizationUserInput(deleteUserData), context.actionContext)\n .then(() => {\n window.location.reload(false);\n })\n .catch((error) => {\n context.telemetry.trace(error);\n });\n }\n this.setState({\n formType: FormType.None,\n isModalOpen: false\n });\n }\n\n // _renderUserDetails: creates the remove/view form props\n private _renderUserDetails(): IFormViewProps {\n const { resources } = this.props;\n const { formType, displayedUserData } = this.state;\n const { businessUserRemoveModalHeaderText, businessUserRemoveModalDescription, businessUserViewModalHeaderText,\n businessUserCancelButtonText, businessUserCancelRemoveUserButtonText, businessUserRemoveUserButtonText, businessUserErrorUpdatingUsersMessage } = resources;\n\n const formClassName = `${this.moduleClassName}__form`;\n const typeClassName = formType === FormType.Remove ? 'type-remove' : 'type-view';\n const handleRemoveButton = (event: React.MouseEvent) => { this._handleRemoveUserButton(); };\n\n return {\n modalClassName: classnames(`${this.moduleClassName}__modal`, typeClassName),\n FormWrapper: {\n className: formClassName\n },\n modalHeading: formType === FormType.Remove ? businessUserRemoveModalHeaderText : businessUserViewModalHeaderText,\n modalDescription: formType === FormType.Remove &&

{businessUserRemoveModalDescription}

,\n selectedUser: displayedUserData,\n buttons: [\n // tslint:disable-next-line:react-this-binding-issue\n formType === FormType.Remove && ,\n \n ],\n errorMessage: [\n ,\n ],\n resources: resources\n };\n }\n\n // _renderUserForm: creates the add/edit form props\n private _renderUserForm(): IFormViewProps {\n const { resources } = this.props;\n const { formType, formItems, hasFormError, hasActionError, isReady } = this.state;\n const { businessUserEditUserFormHeadingText, businessUserAddUserFormHeadingText, businessUserSaveButtonArialabel,\n businessUserSaveButtonText, businessUserCancelButtonArialabel, businessUserCancelButtonText, businessUserFieldIncorrectErrorText, businessUserActionErrorText, businessUserAllFieldsRequiredMessage } = resources;\n\n const formClassName = `${this.moduleClassName}__form`;\n const typeClassName = formType === FormType.Add ? 'type-add' : 'type-edit';\n\n return {\n modalClassName: classnames(`${this.moduleClassName}__modal`, typeClassName),\n FormWrapper: {\n className: formClassName\n },\n modalHeading: formType === FormType.Add ? businessUserAddUserFormHeadingText : businessUserEditUserFormHeadingText,\n modalDescription: formType === FormType.Add &&

{businessUserAllFieldsRequiredMessage}

,\n inputs: renderInputSection(formItems, `${formClassName}-item`, this._onInputChange),\n buttons: [\n (\n ),\n (\n )\n ],\n errorMessage: [\n hasFormError && ,\n hasActionError && \n ],\n resources: resources\n };\n }\n\n // _onInputChange: updates the fomrItems state on every input change\n private _onInputChange = (event: React.ChangeEvent): void => {\n const newForm = this.state.formItems;\n\n newForm.forEach(item => {\n if (item.id === event.target.id) {\n item.value = event.target.value;\n }\n });\n\n // update state object with latest values and check if form is ready\n // TODO: remove !refresh\n this.setState((prev) => ({\n refresh: !prev.refresh,\n isReady: this._isFormReady(),\n formItems: newForm,\n hasFormError: false,\n hasActionError: false\n }));\n }\n\n // _isFormReady: checks whether the current values in the input fields are valid for submission, this will also disable/enable the submit button.\n private _isFormReady = (): boolean => {\n const { formItems } = this.state;\n\n for (let i = 0; i < formItems.length; i++) {\n // will return TRUE if:\n // - input field is required and EMPTY\n // OR\n // - pattern provided and value does not match pattern\n // OR\n // - if spendingLimit input --> make sure value can be parsed into an NUMBER\n if ((formItems[i].isRequired && formItems[i].value.length < 1)) {\n return false;\n } else if (formItems[i].pattern !== undefined && formItems[i].value.match(formItems[i].pattern as string) === null) {\n return false;\n } else if (formItems[i].id === InputID.SpendingLimit && isNaN(parseFloat(formItems[i].value))) {\n this.setState({\n hasFormError: true\n });\n return false;\n }\n }\n\n return true;\n }\n\n private _formatPrice = (price: number): string => {\n return this.props.context.cultureFormatter ? this.props.context.cultureFormatter.formatCurrency(price) : price.toString();\n }\n\n private _getCurrentUrl = (reqContext: IRequestContext): URL=> {\n if (MsDyn365.isBrowser) {\n return new URL(window.location.href);\n } else {\n // NOTE: Typing on requestURL is incorrect\n if (reqContext.url.requestUrl.href) {\n return new URL(reqContext.url.requestUrl.href);\n } else {\n return new URL(reqContext.url.requestUrl.href);\n }\n }\n }\n\n private _updateViewport(): void {\n this._viewport = this._getViewport();\n }\n\n private _getViewport = (): GridSize => {\n const { context } = this.props;\n\n // always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (typeof window !== undefined && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n } else {\n return 'xl';\n }\n }\n }\n\n return 'xs';\n }\n}\n\nexport default BusinessOrganizationList;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { ISearchCategoryViewProps, ISearchFormViewProps, ISearchKeywordViewProps, ISearchProductViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search/dist/types/index';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst SearchView: React.FC = props => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label\r\n } = props;\r\n\r\n return (\r\n \r\n {label}\r\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\r\n \r\n {searchText && searchText.length > 0 ?\r\n {AutoSuggestAriaLabelText} : ''\r\n }\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword)}\r\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct)}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\r\n return (\r\n \r\n \r\n {form.submitBtn}\r\n {form.input}\r\n {form.cancelBtn}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (\r\n KeywordSuggest: INodeProps,\r\n UlKeyword: INodeProps,\r\n keywordSuggestions?: ISearchKeywordViewProps\r\n) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (\r\n ProductSuggest: INodeProps,\r\n UlProduct: INodeProps,\r\n productSuggestions?: ISearchProductViewProps\r\n) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price !== 0 && (
{item.price}
)}\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;","/*---------------------------------------------------------------------------------------------\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 {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHelp,\r\n IOrderDetailsViewProps,\r\n IOrderInformation,\r\n IOrderSummary,\r\n IPaymentMethods,\r\n ISalesLine\r\n} from '@msdyn365-commerce-modules/order-management/dist/types';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderDetailsOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId,\r\n}) => (\r\n \r\n {channelReferenceId}\r\n {salesId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n \r\n);\r\n\r\nexport const OrderDetailsSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, salesStatus }) => (\r\n \r\n {salesLine}\r\n
{salesStatus}
\r\n {buyAgainButton}\r\n
\r\n);\r\n\r\nexport const OrderDetailsGroupDelivery: React.FC = ({ deliveryProps, heading, count, address, trackingInfo }) => (\r\n \r\n Ship To\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderDetailsGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n \r\n \r\n ))}\r\n \r\n )}\r\n {delivery && }\r\n \r\n);\r\n\r\nexport const OrderDetailsGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderDetailsOrderSummary: React.FC = ({ orderSummaryProps, heading, subtotal, shipping, tax, totalAmount, earnedPoints }) => (\r\n \r\n {subtotal}\r\n {shipping}\r\n {tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n);\r\n\r\nexport const OrderDetailsPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const OrderDetailsHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst OrderDetailsView: React.FC = ({\r\n moduleProps,\r\n heading,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n {groups && }\r\n {orderSummary && }\r\n {payment && }\r\n {help && }\r\n \r\n );\r\n};\r\n\r\nexport default OrderDetailsView;\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 {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHelp,\r\n IOrderDetailsViewProps,\r\n IOrderInformation,\r\n IOrderSummary,\r\n IPaymentMethods,\r\n ISalesLine\r\n} from '@msdyn365-commerce-modules/order-management/dist/types';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderDetailsOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId,\r\n}) => (\r\n \r\n {channelReferenceId}\r\n {salesId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n \r\n);\r\n\r\nexport const OrderDetailsSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, salesStatus }) => (\r\n \r\n {salesLine}\r\n
{salesStatus}
\r\n {buyAgainButton}\r\n
\r\n);\r\n\r\nexport const OrderDetailsGroupDelivery: React.FC = ({ deliveryProps, heading, count, address, trackingInfo }) => (\r\n \r\n Ship To\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderDetailsGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n \r\n \r\n ))}\r\n \r\n )}\r\n {delivery && }\r\n \r\n);\r\n\r\nexport const OrderDetailsGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderDetailsOrderSummary: React.FC = ({ orderSummaryProps, heading, subtotal, shipping, tax, totalAmount, earnedPoints }) => (\r\n \r\n {subtotal}\r\n {shipping}\r\n {tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n);\r\n\r\nexport const OrderDetailsPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const OrderDetailsHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst OrderDetailsView: React.FC = ({\r\n moduleProps,\r\n heading,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n {groups && }\r\n {orderSummary && }\r\n {payment && }\r\n {help && }\r\n \r\n );\r\n};\r\n\r\nexport default OrderDetailsView;\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 {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHelp,\r\n IOrderDetailsViewProps,\r\n IOrderInformation,\r\n IOrderSummary,\r\n IPaymentMethods,\r\n ISalesLine\r\n} from '@msdyn365-commerce-modules/order-management/dist/types';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderDetailsOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId,\r\n}) => (\r\n \r\n {channelReferenceId}\r\n {salesId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n \r\n);\r\n\r\nexport const OrderDetailsSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, salesStatus }) => (\r\n \r\n {salesLine}\r\n
{salesStatus}
\r\n {buyAgainButton}\r\n
\r\n);\r\n\r\nexport const OrderDetailsGroupDelivery: React.FC = ({ deliveryProps, heading, count, address, trackingInfo }) => (\r\n \r\n Ship To\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderDetailsGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n \r\n \r\n ))}\r\n \r\n )}\r\n {delivery && }\r\n \r\n);\r\n\r\nexport const OrderDetailsGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderDetailsOrderSummary: React.FC = ({ orderSummaryProps, heading, subtotal, shipping, tax, totalAmount, earnedPoints }) => (\r\n \r\n {subtotal}\r\n {shipping}\r\n {tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n);\r\n\r\nexport const OrderDetailsPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const OrderDetailsHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst OrderDetailsView: React.FC = ({\r\n moduleProps,\r\n heading,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n {groups && }\r\n {orderSummary && }\r\n {payment && }\r\n {help && }\r\n \r\n );\r\n};\r\n\r\nexport default OrderDetailsView;\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 {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHelp,\r\n IOrderDetailsViewProps,\r\n IOrderInformation,\r\n IOrderSummary,\r\n IPaymentMethods,\r\n ISalesLine\r\n} from '@msdyn365-commerce-modules/order-management/src/modules/order-details/./../..';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { ICoreContext } from '@msdyn365-commerce/core-internal';\r\nimport * as React from 'react';\r\nimport { brandCodeParser } from '../../../Utilities/brand-code-parser';\r\n\r\nexport const OrderDetailsOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId\r\n}) => (\r\n \r\n {channelReferenceId}\r\n {salesId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n \r\n );\r\n\r\nexport const OrderDetailsSalesLine: React.FC<{line: ISalesLine; context: ICoreContext}> = ({ line: { salesLineProps, salesLine, buyAgainButton, data }, context }) => {\r\n // tslint:disable-next-line: no-any\r\n const brandCode = brandCodeParser({ description: data.product.Description, appContext: context });\r\n return (\r\n \r\n {brandCode &&
{brandCode}
}\r\n {salesLine}\r\n {buyAgainButton}\r\n
\r\n );\r\n};\r\n\r\nexport const OrderDetailsGroupDelivery: React.FC = ({ deliveryProps, heading, count, address, trackingInfo }) => (\r\n \r\n {heading}\r\n {count}\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderDetailsGroup: React.FC<{group: IGroup; context:ICoreContext}> = ({ group: { groupProps, delivery, salesLinesProps, salesLines }, context }) => (\r\n \r\n {delivery && }\r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n \r\n {salesLine.salesStatus}\r\n \r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderDetailsGroups: React.FC<{groups: IGroups; context: ICoreContext}> = ({ groups: { groupsProps, groups }, context }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderDetailsOrderSummary: React.FC = ({ orderSummaryProps, heading, subtotal, shipping, tax, totalAmount, earnedPoints }) => (\r\n \r\n {heading}\r\n {subtotal}\r\n {shipping}\r\n {tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n);\r\n\r\nexport const OrderDetailsPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const OrderDetailsHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst OrderDetailsView: React.FC = ({\r\n moduleProps,\r\n heading,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups,\r\n context\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n {groups && }\r\n {orderSummary && }\r\n {payment && }\r\n {help && }\r\n \r\n );\r\n};\r\n\r\nexport default OrderDetailsView;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\n\nimport {\n IAccountProfileEditItem, IAccountProfileEditLoading, IAccountProfileEditLocalAccount,\n IAccountProfileEditViewProps\n} from './account-profile-edit';\n\nconst AccountProfileEditItem: React.FC = ({\n wrapper,\n label,\n errorMessage,\n input\n}) => {\n\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n\n return (\n \n {items && items.map((item: IAccountProfileEditItem) => {\n return (\n \n );\n })}\n {errorMessage && errorMessage.map((error: React.ReactNode, index: number) => {\n return (\n \n {error}\n \n );\n })}\n \n {buttons && buttons.map((button: React.ReactNode, index: number) => {\n return (\n \n {button}\n \n );\n })}\n \n\n \n \n \n \n );\n};\n\nconst AccountProfileEditLoading: React.FC = ({\n modal,\n modalBody,\n icon,\n message,\n}) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst AccountProfileEditView: React.FC = props => {\n\n const {\n accountProfileEdit,\n viewState,\n loading,\n defaultAADConainer,\n aadConainer,\n heading,\n accountProfileEditLocalAccount\n } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(accountProfileEditLocalAccount)}\n \n \n );\n};\n\nexport default AccountProfileEditView;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { ISearchCategoryViewProps, ISearchFormViewProps, ISearchKeywordViewProps, ISearchProductViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search/dist/types/index';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst SearchView: React.FC = props => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label\r\n } = props;\r\n\r\n return (\r\n \r\n {label}\r\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\r\n \r\n {searchText && searchText.length > 0 ?\r\n {AutoSuggestAriaLabelText} : ''\r\n }\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword)}\r\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct)}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\r\n return (\r\n \r\n \r\n {form.submitBtn}\r\n {form.input}\r\n {form.cancelBtn}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (\r\n KeywordSuggest: INodeProps,\r\n UlKeyword: INodeProps,\r\n keywordSuggestions?: ISearchKeywordViewProps\r\n) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (\r\n ProductSuggest: INodeProps,\r\n UlProduct: INodeProps,\r\n productSuggestions?: ISearchProductViewProps\r\n) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price !== 0 && (
{item.price}
)}\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;","/*---------------------------------------------------------------------------------------------\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 { Alert } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { NotificationType } from '../../models/notification-message-type';\r\nimport { INotificationData } from './notification.data';\r\nimport { INotificationProps } from './notification.props.autogenerated';\r\n\r\n/**\r\n *\r\n * Notification component\r\n * @extends {React.Component>}\r\n */\r\nclass Notification extends React.Component> {\r\n public render(): JSX.Element | null {\r\n const moduleData = this.props.data;\r\n if (!(moduleData && moduleData.notification && moduleData.notification.result)) {\r\n return null;\r\n }\r\n const notificationMessageObject = moduleData.notification.result;\r\n if (notificationMessageObject.message && !notificationMessageObject.displayed) {\r\n return (\r\n
\r\n {this._renderErrorBlock(notificationMessageObject.message, notificationMessageObject.messagetype)}\r\n
\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: INotificationProps): boolean {\r\n return Boolean(nextProps.data.notification && nextProps.data.notification.status === 'SUCCESS');\r\n }\r\n\r\n private _markNotificationDisplayed = () => {\r\n this.props.data.notification!.result!.displayed = true;\r\n this.forceUpdate();\r\n };\r\n\r\n private _renderErrorBlock = (message: string, _errorType: NotificationType): JSX.Element | null => {\r\n const alertcolorclassName = this._getClassName(_errorType,'color');\r\n const messageTextClassName = this._getClassName(_errorType,'text');\r\n return (\r\n \r\n
{message}
\r\n
\r\n );\r\n };\r\n\r\n private _getClassName = (errorType: NotificationType ,classtype:string): string => {\r\n switch (errorType) {\r\n case NotificationType.error:\r\n return `message-error-${classtype}`;\r\n case NotificationType.info:\r\n return `message-info-${classtype}`;\r\n case NotificationType.success:\r\n return `message-success-${classtype}`;\r\n case NotificationType.validation:\r\n return `message-validation-${classtype}`;\r\n case NotificationType.warning:\r\n return `message-warning-${classtype}`;\r\n case NotificationType.none:\r\n return '';\r\n default:\r\n return '';\r\n }\r\n };\r\n}\r\n\r\nexport default Notification;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { ISearchCategoryViewProps, ISearchFormViewProps, ISearchKeywordViewProps, ISearchProductViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search/dist/types/index';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst SearchView: React.FC = props => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label\r\n } = props;\r\n\r\n return (\r\n \r\n {label}\r\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\r\n \r\n {searchText && searchText.length > 0 ?\r\n {AutoSuggestAriaLabelText} : ''\r\n }\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword)}\r\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct)}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\r\n return (\r\n \r\n \r\n {form.submitBtn}\r\n {form.input}\r\n {form.cancelBtn}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (\r\n KeywordSuggest: INodeProps,\r\n UlKeyword: INodeProps,\r\n keywordSuggestions?: ISearchKeywordViewProps\r\n) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (\r\n ProductSuggest: INodeProps,\r\n UlProduct: INodeProps,\r\n productSuggestions?: ISearchProductViewProps\r\n) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price !== 0 && (
{item.price}
)}\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { ISearchCategoryViewProps, ISearchFormViewProps, ISearchKeywordViewProps, ISearchProductViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search/dist/types/index';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst SearchView: React.FC = props => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label\r\n } = props;\r\n\r\n return (\r\n \r\n {label}\r\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\r\n \r\n {searchText && searchText.length > 0 ?\r\n {AutoSuggestAriaLabelText} : ''\r\n }\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword)}\r\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct)}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\r\n return (\r\n \r\n \r\n {form.submitBtn}\r\n {form.input}\r\n {form.cancelBtn}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (\r\n KeywordSuggest: INodeProps,\r\n UlKeyword: INodeProps,\r\n keywordSuggestions?: ISearchKeywordViewProps\r\n) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (\r\n ProductSuggest: INodeProps,\r\n UlProduct: INodeProps,\r\n productSuggestions?: ISearchProductViewProps\r\n) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price !== 0 && (
{item.price}
)}\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;","/*---------------------------------------------------------------------------------------------\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 {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHelp,\r\n IOrderDetailsViewProps,\r\n IOrderInformation,\r\n IOrderSummary,\r\n IPaymentMethods,\r\n ISalesLine\r\n} from '@msdyn365-commerce-modules/order-management/dist/types';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderDetailsOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId,\r\n}) => (\r\n \r\n {channelReferenceId}\r\n {salesId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n \r\n);\r\n\r\nexport const OrderDetailsSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, salesStatus }) => (\r\n \r\n {salesLine}\r\n
{salesStatus}
\r\n {buyAgainButton}\r\n
\r\n);\r\n\r\nexport const OrderDetailsGroupDelivery: React.FC = ({ deliveryProps, heading, count, address, trackingInfo }) => (\r\n \r\n Ship To\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderDetailsGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n \r\n \r\n ))}\r\n \r\n )}\r\n {delivery && }\r\n \r\n);\r\n\r\nexport const OrderDetailsGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderDetailsOrderSummary: React.FC = ({ orderSummaryProps, heading, subtotal, shipping, tax, totalAmount, earnedPoints }) => (\r\n \r\n {subtotal}\r\n {shipping}\r\n {tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n);\r\n\r\nexport const OrderDetailsPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const OrderDetailsHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst OrderDetailsView: React.FC = ({\r\n moduleProps,\r\n heading,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n {groups && }\r\n {orderSummary && }\r\n {payment && }\r\n {help && }\r\n \r\n );\r\n};\r\n\r\nexport default OrderDetailsView;\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 {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHelp,\r\n IOrderDetailsViewProps,\r\n IOrderInformation,\r\n IOrderSummary,\r\n IPaymentMethods,\r\n ISalesLine\r\n} from '@msdyn365-commerce-modules/order-management/dist/types';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderDetailsOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId,\r\n}) => (\r\n \r\n {channelReferenceId}\r\n {salesId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n \r\n);\r\n\r\nexport const OrderDetailsSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, salesStatus }) => (\r\n \r\n {salesLine}\r\n
{salesStatus}
\r\n {buyAgainButton}\r\n
\r\n);\r\n\r\nexport const OrderDetailsGroupDelivery: React.FC = ({ deliveryProps, heading, count, address, trackingInfo }) => (\r\n \r\n Ship To\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderDetailsGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n \r\n \r\n ))}\r\n \r\n )}\r\n {delivery && }\r\n \r\n);\r\n\r\nexport const OrderDetailsGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderDetailsOrderSummary: React.FC = ({ orderSummaryProps, heading, subtotal, shipping, tax, totalAmount, earnedPoints }) => (\r\n \r\n {subtotal}\r\n {shipping}\r\n {tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n);\r\n\r\nexport const OrderDetailsPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const OrderDetailsHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst OrderDetailsView: React.FC = ({\r\n moduleProps,\r\n heading,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n {groups && }\r\n {orderSummary && }\r\n {payment && }\r\n {help && }\r\n \r\n );\r\n};\r\n\r\nexport default OrderDetailsView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { IShippingPopupViewProps } from './shipping-popup';\r\n\r\nimport { Modal, ModalBody, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\nimport { stateSettings } from '../../settings/app.settings';\r\nimport { dataStates } from '../shipping-map/shipping-map.data-states';\r\n\r\nexport default (props: IShippingPopupViewProps) => {\r\n\r\n const {\r\n shippingPopup__shippingModalTitle,\r\n shippingPopup__shippingModalDescription,\r\n shippingPopup__shippingModalLegend\r\n } = props.resources;\r\n\r\n const states = props.context.app.config.statesSettings as stateSettings || [];\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n

{shippingPopup__shippingModalTitle}

\r\n
\r\n
\r\n {props.slots.map}\r\n
\r\n
\r\n

{shippingPopup__shippingModalDescription}

\r\n

{shippingPopup__shippingModalLegend}

\r\n
\r\n {\r\n Object.keys(states)\r\n .filter(state => !states[state])\r\n .map((state, index) => (
{dataStates[state]}
))\r\n }\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n );\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 {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHelp,\r\n IOrderDetailsViewProps,\r\n IOrderInformation,\r\n IOrderSummary,\r\n IPaymentMethods,\r\n ISalesLine\r\n} from '@msdyn365-commerce-modules/order-management/dist/types';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderDetailsOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId,\r\n}) => (\r\n \r\n {channelReferenceId}\r\n {salesId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n \r\n);\r\n\r\nexport const OrderDetailsSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, salesStatus }) => (\r\n \r\n {salesLine}\r\n
{salesStatus}
\r\n {buyAgainButton}\r\n
\r\n);\r\n\r\nexport const OrderDetailsGroupDelivery: React.FC = ({ deliveryProps, heading, count, address, trackingInfo }) => (\r\n \r\n Ship To\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderDetailsGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n \r\n \r\n ))}\r\n \r\n )}\r\n {delivery && }\r\n \r\n);\r\n\r\nexport const OrderDetailsGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderDetailsOrderSummary: React.FC = ({ orderSummaryProps, heading, subtotal, shipping, tax, totalAmount, earnedPoints }) => (\r\n \r\n {subtotal}\r\n {shipping}\r\n {tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n);\r\n\r\nexport const OrderDetailsPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const OrderDetailsHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst OrderDetailsView: React.FC = ({\r\n moduleProps,\r\n heading,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n {groups && }\r\n {orderSummary && }\r\n {payment && }\r\n {help && }\r\n \r\n );\r\n};\r\n\r\nexport default OrderDetailsView;\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 {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHelp,\r\n IOrderDetailsViewProps,\r\n IOrderInformation,\r\n IOrderSummary,\r\n IPaymentMethods,\r\n ISalesLine\r\n} from '@msdyn365-commerce-modules/order-management/dist/types';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderDetailsOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId,\r\n}) => (\r\n \r\n {channelReferenceId}\r\n {salesId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n \r\n);\r\n\r\nexport const OrderDetailsSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, salesStatus }) => (\r\n \r\n {salesLine}\r\n
{salesStatus}
\r\n {buyAgainButton}\r\n
\r\n);\r\n\r\nexport const OrderDetailsGroupDelivery: React.FC = ({ deliveryProps, heading, count, address, trackingInfo }) => (\r\n \r\n Ship To\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderDetailsGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n \r\n \r\n ))}\r\n \r\n )}\r\n {delivery && }\r\n \r\n);\r\n\r\nexport const OrderDetailsGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderDetailsOrderSummary: React.FC = ({ orderSummaryProps, heading, subtotal, shipping, tax, totalAmount, earnedPoints }) => (\r\n \r\n {subtotal}\r\n {shipping}\r\n {tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n);\r\n\r\nexport const OrderDetailsPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const OrderDetailsHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst OrderDetailsView: React.FC = ({\r\n moduleProps,\r\n heading,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n {groups && }\r\n {orderSummary && }\r\n {payment && }\r\n {help && }\r\n \r\n );\r\n};\r\n\r\nexport default OrderDetailsView;\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 {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHelp,\r\n IOrderDetailsViewProps,\r\n IOrderInformation,\r\n IOrderSummary,\r\n IPaymentMethods,\r\n ISalesLine\r\n} from '@msdyn365-commerce-modules/order-management/dist/types';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderDetailsOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId,\r\n}) => (\r\n \r\n {channelReferenceId}\r\n {salesId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n \r\n);\r\n\r\nexport const OrderDetailsSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, salesStatus }) => (\r\n \r\n {salesLine}\r\n
{salesStatus}
\r\n {buyAgainButton}\r\n
\r\n);\r\n\r\nexport const OrderDetailsGroupDelivery: React.FC = ({ deliveryProps, heading, count, address, trackingInfo }) => (\r\n \r\n Ship To\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderDetailsGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n \r\n \r\n ))}\r\n \r\n )}\r\n {delivery && }\r\n \r\n);\r\n\r\nexport const OrderDetailsGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderDetailsOrderSummary: React.FC = ({ orderSummaryProps, heading, subtotal, shipping, tax, totalAmount, earnedPoints }) => (\r\n \r\n {subtotal}\r\n {shipping}\r\n {tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n);\r\n\r\nexport const OrderDetailsPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const OrderDetailsHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst OrderDetailsView: React.FC = ({\r\n moduleProps,\r\n heading,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n {groups && }\r\n {orderSummary && }\r\n {payment && }\r\n {help && }\r\n \r\n );\r\n};\r\n\r\nexport default OrderDetailsView;\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 {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHelp,\r\n IOrderDetailsViewProps,\r\n IOrderInformation,\r\n IOrderSummary,\r\n IPaymentMethods,\r\n ISalesLine\r\n} from '@msdyn365-commerce-modules/order-management/dist/types';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderDetailsOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId,\r\n}) => (\r\n \r\n {channelReferenceId}\r\n {salesId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n \r\n);\r\n\r\nexport const OrderDetailsSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, salesStatus }) => (\r\n \r\n {salesLine}\r\n
{salesStatus}
\r\n {buyAgainButton}\r\n
\r\n);\r\n\r\nexport const OrderDetailsGroupDelivery: React.FC = ({ deliveryProps, heading, count, address, trackingInfo }) => (\r\n \r\n Ship To\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderDetailsGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n \r\n \r\n ))}\r\n \r\n )}\r\n {delivery && }\r\n \r\n);\r\n\r\nexport const OrderDetailsGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderDetailsOrderSummary: React.FC = ({ orderSummaryProps, heading, subtotal, shipping, tax, totalAmount, earnedPoints }) => (\r\n \r\n {subtotal}\r\n {shipping}\r\n {tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n);\r\n\r\nexport const OrderDetailsPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const OrderDetailsHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst OrderDetailsView: React.FC = ({\r\n moduleProps,\r\n heading,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n {groups && }\r\n {orderSummary && }\r\n {payment && }\r\n {help && }\r\n \r\n );\r\n};\r\n\r\nexport default OrderDetailsView;\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 {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IOrderDetailsViewProps,\r\n IOrderInformation,\r\n IOrderSummary,\r\n IPaymentMethods,\r\n ISalesLine\r\n} from '@msdyn365-commerce-modules/order-management/src/modules/order-details/./../..';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { ICoreContext } from '@msdyn365-commerce/core-internal';\r\nimport * as React from 'react';\r\nimport { brandCodeParser } from '../../../Utilities/brand-code-parser';\r\n\r\nexport const OrderDetailsOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n createdDate,\r\n channelReferenceId,\r\n count\r\n}) => (\r\n \r\n {salesId}\r\n {createdDate}\r\n {channelReferenceId}\r\n {count}\r\n \r\n );\r\n\r\nexport const OrderDetailsSalesLine: React.FC<{line: ISalesLine; context: ICoreContext}> = ({ line: { salesLineProps, salesLine, buyAgainButton, data }, context }) => {\r\n // tslint:disable-next-line: no-any\r\n const brandCode = brandCodeParser({ description: data.product.Description, appContext: context });\r\n return (\r\n \r\n {brandCode &&
{brandCode}
}\r\n {salesLine}\r\n {buyAgainButton}\r\n
\r\n );\r\n};\r\n\r\nexport const OrderDetailsGroupDelivery: React.FC = ({ deliveryProps, address, trackingInfo }) => (\r\n \r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderDetailsGroup: React.FC<{group: IGroup; context:ICoreContext}> = ({ group: { groupProps, delivery, salesLinesProps, salesLines }, context }) => (\r\n \r\n {delivery && }\r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n \r\n \r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderDetailsGroups: React.FC<{groups: IGroups; context: ICoreContext}> = ({ groups: { groupsProps, groups }, context }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderDetailsOrderSummary: React.FC = ({ orderSummaryProps, heading, subtotal, shipping, tax, totalAmount }) => (\r\n \r\n {heading}\r\n {subtotal}\r\n {shipping}\r\n {tax}\r\n {totalAmount}\r\n \r\n);\r\n\r\nexport const OrderDetailsPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nconst OrderDetailsView: React.FC = ({\r\n moduleProps,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n groups,\r\n context\r\n}) => {\r\n return (\r\n \r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n
\r\n {groups && }\r\n
\r\n
\r\n
\r\n {groups && }\r\n {payment && }\r\n
\r\n
\r\n {orderSummary && }\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default OrderDetailsView;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst AccountProfileEditButton: React.FC = ({ id, className, text, ariaLabel, disabled, telemetryContent, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {text}\n );\n};\n\nexport default AccountProfileEditButton;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst AccountProfileEditError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n\n};\n\nexport default AccountProfileEditError;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\n\nexport interface IAccountProfileEditInputProps {\n id?: string;\n // tslint:disable-next-line:no-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 IAccountProfileEditInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst AccountProfileEditInput: React.FC = ({\n id,\n type,\n value,\n pattern,\n className,\n maxLength,\n onChange }) => (\n \n );\n\nexport default AccountProfileEditInput;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst AccountProfileEditLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default AccountProfileEditLabel;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingIcon {\n className: string;\n}\n\nconst AccountProfileEditLoadingIcon: React.FC = ({ className }) => (\n
\n);\n\nexport default AccountProfileEditLoadingIcon;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingMessage {\n className: string;\n message: string;\n}\n\nconst AccountProfileEditLoadingMessage: React.FC = ({ className, message }) => (\n
\n {message}\n
\n);\n\nexport default AccountProfileEditLoadingMessage;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody\n} from '@msdyn365-commerce-modules/utilities';\n\nimport {\n IAccountProfileEditConfig, IAccountProfileEditProps\n} from './account-profile-edit.props.autogenerated';\nimport AccountProfileEditButtonComponent from './components/account-profile-edit-button';\nimport AccountProfileEditErrorComponent from './components/account-profile-edit-error';\nimport AccountProfileEditInputComponent from './components/account-profile-edit-input';\nimport AccountProfileEditLabelComponent from './components/account-profile-edit-label';\nimport AccountProfileEditLoadingIconComponent from './components/account-profile-edit-loading-icon';\nimport AccountProfileEditLoadingMessageComponent from './components/account-profile-edit-loading-message';\n\nexport interface IAccountProfileEditViewState {\n isShowLoading: boolean;\n}\n\nexport interface IAccountProfileEditItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAccountProfileEditLocalAccount {\n localAccount: INodeProps;\n items: IAccountProfileEditItem[];\n errorMessage: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IAccountProfileEditLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAccountProfileEditViewProps {\n className: string;\n viewState: IAccountProfileEditViewState;\n loading: IAccountProfileEditLoading;\n accountProfileEdit: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n accountProfileEditLocalAccount: IAccountProfileEditLocalAccount;\n}\n\n/**\n *\n * AccountProfileEdit component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component>}\n */\n@observer\nclass AccountProfileEdit extends React.Component> {\n\n private moduleClassName: string = 'ms-account-profile-edit';\n private telemetryContent: ITelemetryContent;\n @observable private givenName: string;\n @observable private surname: string;\n @observable private email: string;\n @observable private emailRegex: string;\n\n @observable private isInitialized: boolean;\n\n // tslint:disable-next-line:no-any\n private initializationTimer: any;\n\n constructor(props: IAccountProfileEditProps) {\n super(props);\n this.givenName = '';\n this.surname = '';\n this.email = '';\n this.emailRegex = '^[a-zA-Z0-9.!#$%&\\^_`{}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$';\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // tslint:disable-next-line:no-string-literal\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // tslint:disable-next-line:no-string-literal\n window['$element']['initialize']();\n }\n }\n\n public render(): JSX.Element {\n const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n accountProfileEdit: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: ,\n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading && config.heading.text && (\n \n ),\n accountProfileEditLocalAccount: this._renderLocalAccount()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading.text = event.target.value;\n\n public onTextBoxChange = (event: React.ChangeEvent) => {\n const id = event.target.id;\n const value = event.target.value;\n\n switch (id.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.emailRegex = value;\n break;\n }\n default:\n }\n };\n\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n // 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(() => { this._isInitializationSuccessful(); }, 100);\n setTimeout(() => { clearInterval(this.initializationTimer); }, 10000);\n }\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private _isInitializationSuccessful = () => {\n // tslint:disable-next-line:no-string-literal\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n }\n\n private _prePopulateData = () => {\n const { resources } = this.props;\n const invalidEmailAddressError = resources.invalidEmailAddressError || 'Please enter a valid email address.';\n\n // tslint:disable-next-line:no-string-literal\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // tslint:disable-next-line:no-string-literal\n window['SA_FIELDS']['AttributeFields'].map((obj: { ID: string; PRE: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string }) => {\n const value = obj.PRE ? this._htmlDecode(obj.PRE) : '';\n switch (obj.ID.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.email = value;\n this.emailRegex = obj.PAT;\n obj.PAT_DESC = invalidEmailAddressError;\n break;\n }\n default:\n }\n\n });\n }\n }\n\n private _htmlDecode(str: string): string {\n const e = document.createElement('div');\n // tslint:disable-next-line:no-inner-html\n e.innerHTML = str;\n return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue || '';\n }\n\n private _updateErrorMessage = () => {\n const { resources } = this.props;\n\n // tslint:disable-next-line:no-string-literal\n if (window && window['CONTENT']) {\n\n const message = {\n required_field: resources.requiredFieldMissingError,\n verifying_blurb: resources.loadingMessage\n };\n\n // tslint:disable-next-line:no-string-literal\n Object.assign(window['CONTENT'], message);\n }\n }\n\n private _renderLocalAccount(): IAccountProfileEditLocalAccount {\n const { config, resources } = this.props;\n const localAccount = {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('givenName', 'text', this.givenName, resources.firstNameLabelText, resources.firstNameMaxLength),\n this._renderInput('surname', 'text', this.surname, resources.lastNameLabelText, resources.lastNameMaxLength),\n ],\n errorMessage: [\n ,\n ,\n \n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`,\n },\n buttons: [\n ,\n \n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n\n if (config.showEmail && this.email !== '') {\n localAccount.items.push(this._renderInput('email', 'email', this.email, resources.emailAddressLabelText, undefined, this.emailRegex));\n }\n\n return localAccount;\n }\n\n private _renderInput(id: string, type: string, value: string, labelText: string, maxLength?: string, pattern?: string): IAccountProfileEditItem {\n const className = `${this.moduleClassName}__account-item`;\n return (\n {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n\n }\n );\n }\n\n}\n\nexport default AccountProfileEdit;\n"],"sourceRoot":""}