{"version":3,"sources":["webpack:///./src/themes/gardner-theme-b2c/views/account-profile.view.tsx?2237","webpack:///src/modules/image-list/image-list.tsx?18cb","webpack:///src/modules/interactive-feature-item/interactive-feature-item.view.tsx?d4e3","webpack:///src/modules/image-list/image-list.view.tsx?cab9","webpack:///./src/themes/gardner-theme/views/write-review.view.tsx?9fd7","webpack:///./src/themes/gardner-theme/views/sign-up.view.tsx?ffcc","webpack:///src/modules/b2b-requests-status/b2b-requests-status.view.tsx?afa7","webpack:///./src/themes/gardner-theme/views/components/invoice-details-products.component.tsx?1184","webpack:///./src/themes/gardner-theme/views/sign-in.view.tsx?1369","webpack:///src/modules/interactive-feature-collection/interactive-feature-collection.view.tsx?5927","webpack:///./src/themes/gardner-theme-b2c/views/sign-in.view.tsx?1764","webpack:///./src/modules/eve-quick-order/components/EveQuickOrderRow.tsx?1048","webpack:///./src/modules/eve-quick-order/components/EveQuickOrderButtonRow.tsx?ff83","webpack:///./src/modules/eve-quick-order/components/EveQuickOrderHeader.tsx?b15a","webpack:///./src/modules/eve-quick-order/eve-quick-order.tsx?f2e8","webpack:///./src/themes/gardner-theme-b2c/views/write-review.view.tsx?e706","webpack:///./src/modules/eve-quick-order/eve-quick-order.view.tsx?79e4","webpack:///src/modules/interactive-feature-item/components/links.tsx?8ab2","webpack:///src/modules/interactive-feature-item/interactive-feature-item.tsx?340f","webpack:///./src/themes/gardner-theme-b2c/views/sign-up.view.tsx?1185","webpack:///src/modules/interactive-feature-collection/interactive-feature-collection.tsx?2538","webpack:///./src/themes/gardner-theme/views/invoice-details.view.tsx?aa0d","webpack:///./src/themes/gardner-theme/views/account-profile.view.tsx?fc1f","webpack:///./src/themes/gardner-theme/models/SupersessionKey.ts?fe2d","webpack:///src/modules/map/map.tsx?e2df","webpack:///src/modules/map/map.view.tsx?cd35","webpack:///src/modules/b2b-requests-status/components/b2b-requests-table.tsx?6d33","webpack:///src/modules/b2b-requests-status/b2b-requests-status.tsx?692d"],"names":["AccountPreferencesSection","_ref","accountPreferences","heading","personalization","extraPreferences","React","Node","Object","assign","AccountPreferenceSection","map","preferenceSecton","index","key","_ref2","accountPreference","description","buttonWrapper","buttonYesText","button","buttonNoText","AccountProfileSection","_ref3","AccountProfileItem","links","AccountProfileView","props","AccountProfile","accountProfileWrapper","emailSection","nameSection","preferenceSection","customerAttributesWrapper","customerAttributesSection","Module","ImageList","constructor","handleParagraphChange","event","this","config","images","paragraph","target","value","_renderImageListItems","imageList","defaultImageSettings","viewports","xs","q","w","h","lg","xl","lazyload","disableLazyLoad","item","_image$imageSettings","_link$linkText","image","link","imageProps","gridSettings","context","request","imageSettings","imageLink","linkUrl","destinationUrl","imageLinkText","linkText","ariaLabel","imageLinkAriaLabel","Msdyn365","loadFailureBehavior","requestContext","text","className","editProps","onEdit","linkAltText","linkAriaLabel","render","_heading$tag","imageListTitle","tag","viewProps","_objectSpread","moduleProps","classnames","imageListHeading","imageListContainer","role","imageListItem","imageListItemAnchorTag","imageListItems","renderView","MagicNumber","FeatureItemViewComponent","isMosaic","featureItem","indexItem","itemCounter","renderMosaic","thisProps","title","interactiveFeatureCollectionMosaicContainer","interactiveFeatureCollectionMosaicImage","interactiveFeatureCollectionMosaicDetails","indexAux","caseNumberOne","itemCounterAux","caseNumberZero","modularAux","modularDivisor","firstRow","caseNumberTwo","lastRow","onCornerRight","onCornerLeft","containerClasses","interactiveFeatureCollectionCarouselContainer","interactiveFeatureCollectionCarouselImage","interactiveFeatureCollectionCarouselContent","renderCarousel","imageListView","indexKey","src","href","altText","renderProductDescription","product","data","result","_props$data$product$r","primaryImageSource","PrimaryImageUrl","imageUrl","generateImageUrl","apiSettings","Image","fallBackSrc","sm","md","cropFocalRegion","renderProductImage","Name","ItemId","WriteReviewView","signInMessage","signInButton","modalToggle","isAuthenticated","user","RichTextComponent","resources","reviewModal","modal","modalHeader","modalBody","form","inputRow","selectRatingLabel","rating","reviewTitleLabel","titleInput","reviewTextLabel","textInput","privacyPolicyUrl","error","modalFooter","submitButton","cancelButton","createReviewModal","SignUpItem","wrapper","label","errorMessage","input","SignUpEmailVerification","email","buttons","successMessage","message","SignUpGivenNameVerificationComponent","givenName","SignUpSurnameVerificationComponent","_ref4","surname","SignUpLoading","_ref6","icon","SignUpView","signUp","viewState","loading","defaultAADConainer","aadConainer","signUpLocalAccount","isShowLoading","_ref5","localAccount","items","emailVerification","givenNameVerification","surnameVerification","disclaimer","isRequired","verificationControlWrapper","LocalAccount","B2bRequestsStatusView","b2bRequestsStatus","table","createElement","InvoiceDetailsModel","invoice","invoiceDetails","products","id","Id","invoiceDate","InvoiceDate","Date","undefined","customerName","CustomerName","dueDate","InvoiceDueDate","amountDue","AmountBalance","status","InvoicePaidStatusValue","lines","SalesInvoiceLine","line","_products$find","primaryImageUrl","find","RecordId","totalDiscount","TotalDiscount","subtotal","InvoiceSubtotal","totalCharges","TotalCharges","totalTax","TotalTaxAmount","totalAmount","TotalAmount","currencyCode","CurrencyCode","InvoicePaidStatus","Paid","formatAmount","amount","cultureFormatter","formatCurrency","InvoiceDetailsProductsComponent","msdyn365Commerce","createComponent","component","productLineClass","productLineInfoContainerClass","productLineDetailsClass","productLineSmallDetailsClass","quantity","Quantity","productUrl","ObjectExtensions","isNullOrUndefined","ProductName","getProductPageUrlSync","actionContext","_renderProductImage","fallbackImage","getFallbackImageUrl","_renderProductDimensions","StringExtensions","isNullOrWhitespace","ColorName","invoiceProductColor","replace","SizeName","invoiceProductSize","StyleName","invoiceProductStyle","Price","invoiceQuantity","toString","NetAmount","SignInLoading","SignInView","signIn","signInSection","signInSectionHeading","signInLocalAccount","forgetPassword","interactiveFeatureCollectionView","interactiveFeatureCollectionHeading","interactiveFeatureCollectionContainer","interactiveFeatureCollectionDesktopContainer","interactiveFeatureCollectionDesktopItems","interactiveFeatureCollectionMobileItems","interactiveFeatureCollectionMobileContainer","singleSlideCarouselComponentProps","singleSlideCarouselItemContainer","tileItem","keyIndex","signUpDescription","signUpLink","signUpSection","signUpSectionHeading","EveQuickOrderRow","onDelete","onRowChange","currencyFormatter","isLastRow","onAddRows","manufacturerCodes","defaultManufacturerCodeText","productEligibilityText","supersededProductText","rowError","manufacturerCode","advancedNotes","addRows","isToolTipOpen","setIsToolTipOpen","useState","toggleTooltip","Fragment","name","onChange","e","length","code","GDNManufacturerCode","Description","type","onFocus","RowError","None","_product$ExtensionPro","supersessionName","ExtensionProperties","ep","Key","SupersessionKey","SupersededName","Value","StringValue","notes","Tooltip","placement","isOpen","toggle","note","RecId","TextValue","InvalidQuantity","ProductNotFound","MultipleChoicesAvailable","NotEligbile","Unavailable","getRowStatusMessage","_product$ExtensionPro2","Inventory","onClick","handleRowDelete","xmlns","width","height","fill","viewBox","d","fillRule","getAvailability","EveQuickOrderButtonRow","clearAllText","addAllToCartText","canAddToCart","handleClearAll","handleAddToCart","isLoading","disabled","EveQuickOrderHeader","helpText","EveQuickOrder","super","_defaultMinQueryLength","_manufacturerCodeExtensionPropertyKey","getProductSupersessionProperty","extensionKey","properties","_properties$find","pr","_getManufacturerCodeList","row","availableProducts","availableCodes","p","_getManufacturerCodeForRow","filter","includes","_getExtensionPropertyValueByKey","valueType","_properties$find2","property","handleGuideTextChange","orderUploadGuideText","_handleRowDelete","bind","_generateRow","_renderTable","_updateRowValue","_addTwoRows","_handleUploadedItems","_tableInit","_handleAddToCart","_handleSelectedProductChange","_reorderRows","state","rows","debounce","_initDebounceFn","componentDidMount","defaultRows","i","push","_generateEmptyRow","setState","_debounce","async","responseData","getProductSearchResult","searchText","ArrayExtensions","hasElements","Products","_responseData$0$Produ","getAdvancedNotesAsync","callerContext","_updateRowProduct","idx","findIndex","r","_updateRowErrorState","combinedProducts","reduce","acc","cur","_cur$product","parseInt","cartState","cart","count","catalogId","addProductsToCart","itemIds","response","getProductsByManufacturerItemIdAsync","queryResultSettings","Paging","Top","list","inventoryRanges","_cart$result","_eligibilityData$resu","newItemIds","forEach","_r$Products","GetProductEligibilityInput","eligibilityData","GetProductEligibilityAction","getInventoryLevelRangesAsync","_eligibilityData$resu2","Promise","all","CommercePropertyValueEnum","string","String","IsEligible","IsAssorted","_pr$Products","_inventoryRanges","eligibilityRecord","l","IsUnavailable","currentInvString","currentInventory","ir","_ir$Profile","tempInvRange","Profile","invP","Code","OosUpperBound","hasOwnProperty","UpperBoundInclusive","_renderHeading","clearFormText","_getAllAddedProducts","_renderButtonRow","_this$props$data$cart","_this$props$data$cart2","addMoreRowsText","courseInCartText","invoiceInCartText","courseId","hasInvoiceLine","cartlines","CartLines","_row$product","isLast","defaultDropdownText","deleteText","deleteHeading","onSelectedProductChange","productId","itemids","it","manufacturer","part_number","chunks","chunk","slice","promises","promiseResult","res","rowId","responseMatch","_it$manufacturer","_it$part_number","_r$SearchText","partNum","toLowerCase","partNumWithMfr","SearchText","foundProduct","qty","_generateRowData","_stripManufacturerFromSearchText","RegExp","prod","every","manufacturerCodeTableHeading","partNumberTableHeading","quantityTableHeading","itemNameHeading","priceHeading","availabilityHeading","splice","newRowId","_row$product2","maxQuantity","Number","isNaN","_getProductByRowQuery","_getProductManufacturerById","mfrCode","_product","minQueryLength","textToSearch","guideText","handleUploadedItems","quickOrderTable","quickOrderHeader","quickOrderWrapper","classNames","orderUploadWrapper","onUploadItems","slots","orderUpload","_renderGuide","orderUploadHelpLink","orderUploadHelpLinkDisplayText","InteractiveFeatureCollectionLinks","_mapEditableLinks","linkdata","editableLinks","payLoad","getPayloadObject","telemetryContent","contentAction","etext","attributes","getTelemetryAttributes","editableLink","openInNewTab","additionalProperties","onTelemetryClick","onTextChange","InteractiveFeatureItem","_telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","telemetry","handleHeadingChange","handleLinkTextChange","linkIndex","_this$props$config$li","featureItemLinks","_createHeading","_createParagraph","_renderImage","tabindex","isAriaHiddenAttribute","_item$imageSettings","_this$props$config$im","verifiedImageSettings","moduleType","typeName","imagePropertyName","InteractiveFeatureCollection","handleTextChange","itemsCounter","_this$props$config$cl","_title$tag","interactiveItems","interactiveFeatureItems","itemsFeatureCounter","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","vertical","createHeading","_getFeatureItem","InvoiceDetailsView","header","paymentDetails","payInvoiceError","setInvoiceDetails","setProducts","getProducts","productInputs","invDetails","invoiceDetailsModel","getInvoiceDetails","ProductInput","channelId","simpleProductsRes","getSimpleProductsAction","renderProducts","Map","mapRef","_initMap","channel","storeSelectorStateManager","isMapApiLoaded","Microsoft","Maps","current","credentials","BingMapsApiKey","pushpinAccessible","Events","addHandler","setSelectedStoreLocationId","_updateMap","_this$props$data$stor","_storeSelectorStateMa","pushpinOptions","orgUnitStoreInformation","selectedStoreLocationId","mapLocation","entities","clear","pushpins","storeLocationList","store","OrgUnitAvailability","unitStoreInfo","entries","_unitStoreInfo$OrgUni","storeLocation","OrgUnitLocation","Latitude","Longitude","isSelectedLocation","OrgUnitNumber","options","_getPushpinOptions","pushpin","Pushpin","Location","handleClickEvent","unshift","currentLocation","setView","center","bounds","LocationRect","fromShapes","setOptions","orgUnitNumber","setTimeout","showIndex","size","color","selectionColor","_getSvgIcon","_this$props$data$stor2","BingMapsEnabled","when","_this$props$data$stor3","setMapModuleLoaded","_this$props$data$stor4","reaction","_this$props$data$stor5","loadMapApi","_this$props$data$stor6","_this$props$context","lang","locale","market","ChannelCountryRegionISOCode","_this$props$data$stor7","_this$props$data$stor8","_this$props$data$stor9","shouldDisplayMap","listMapViewState","displayMap","ModuleProps","classname","show","Header","headerProps","MapProps","ref","__decorate","observable","observer","MapHeader","MapView","RequestsTableColumnHeader","getUserName","isNullOrEmpty","UserFirstName","UserLastName","b2bRequestsNameDisplay","formatDate","date","year","month","day","getDetails","_requestDetails$Invoi","Details","requestDetails","accountStatementStartDateTime","AccountStatementStartDateTime","accountStatementEndDateTime","AccountStatementEndDateTime","invoiceId","InvoiceId","TypeValue","b2bRequestsAccountStatementDetails","b2bRequestsInvoiceCopyDetails","getDisplayFriendlyTypeValue","typeValue","b2bRequestsTypeCreateProspect","b2bRequestsTypeAddUser","b2bRequestsTypeDeleteUser","b2bRequestsTypeEditUser","b2bRequestsTypeRequestAccountStatement","b2bRequestsTypeRequestInvoiceCopy","b2bRequestsTypeUnknown","getDisplayFriendlyStatusValue","statusValue","b2bRequestsStatusProcessed","b2bRequestsStatusError","b2bRequestsStatusRequested","createTableProps","tableProps","_context$request$quer","tableData","operationRequests","_request$TypeValue","_request$StatusValue","b2bRequestsTypeColumn","TableDataType","Text","b2bRequestsRequestDateColumn","CreatedDateTime","b2bRequestsDescriptionColumn","b2bRequestsUserColumn","b2bRequestsStatusColumn","StatusValue","isSelected","createTableItems","headings","isMobile","mobileExcludedColumns","sortable","columnSortAriaLabel","editLinkText","deleteLinkText","viewLinkText","enableToModify","actionLinkText","showCheckBoxes","isSortable","showPagination","minifyActions","excludedColumns","paginationProperty","skipCount","query","skip","itemPerPage","prevText","b2bRequestsPreviousText","nextText","b2bRequestsNextText","paginationText","url","reqContext","MsDyn365","isBrowser","URL","window","location","requestUrl","isSingleSelectOnly","actions","onView","businessUserSelectCheckBoxAriaLabelText","sortByAscending","sortByDescending","B2bRequestsTable","Table","B2bRequestsStatus","renderHeader","headingData","_this$props$data$oper","_this$props$data$oper2","itemCount","Heading","getItemNumberDisplayString","_retrieveExcludedColumns","renderTable","format","b2bRequestsNumberOfItemsSingular","b2bRequestsNumberOfItems","variant","VariantType","Viewport","isChannelTypeB2B","computed"],"mappings":"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","file":"static/js/16.38e18251d73c61ee6952.chunk.js","sourcesContent":["/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n IAccountPreference, IAccountPreferences, IAccountProfileItem, IAccountProfileViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/account-profile/./account-profile';\r\n\r\nconst AccountPreferencesSection: React.FC = ({\r\n accountPreferences,\r\n heading,\r\n personalization,\r\n extraPreferences\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n \r\n {\r\n extraPreferences && extraPreferences.map((preferenceSecton, index) => {\r\n return ;\r\n })\r\n }\r\n \r\n );\r\n};\r\n\r\nconst AccountPreferenceSection: React.FC = ({\r\n accountPreference,\r\n heading,\r\n description,\r\n buttonWrapper,\r\n buttonYesText,\r\n button,\r\n buttonNoText\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {description}\r\n \r\n {buttonNoText}\r\n {button}\r\n {buttonYesText}\r\n \r\n \r\n );\r\n};\r\n\r\nconst AccountProfileSection: React.FC = ({\r\n AccountProfileItem,\r\n heading,\r\n links,\r\n description\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {description}\r\n {/*{links}*/}\r\n \r\n );\r\n};\r\n\r\nconst AccountProfileView: React.FC = props => {\r\n const { AccountProfile, accountProfileWrapper, heading, emailSection, nameSection, preferenceSection, customerAttributesWrapper, customerAttributesSection } = props;\r\n\r\n return (\r\n \r\n {accountProfileWrapper && (\r\n {heading}\r\n \r\n \r\n \r\n \r\n )}\r\n {customerAttributesWrapper && (\r\n {customerAttributesSection}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default AccountProfileView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IImageListConfig, IImageListProps, IImagesData } from './image-list.props.autogenerated';\n\n/**\n * The interface for IImageListViewProps.\n */\nexport interface IImageListViewProps extends IImageListProps {\n imageList: IModuleProps;\n imageListHeading?: React.ReactNode;\n imageListContainer: INodeProps;\n imageListItem: INodeProps;\n imageListItemAnchorTag: INodeProps;\n imageListItems: IImageListItem[] | undefined;\n}\n\n/**\n * The interface for IImageListItem.\n */\nexport interface IImageListItem {\n image: JSX.Element | undefined;\n text: JSX.Element | undefined;\n link: string | undefined;\n linkAltText: string | undefined;\n linkAriaLabel: string | undefined;\n}\n\n/**\n *\n * ImageList component.\n * @extends {React.PureComponent>}\n */\nclass ImageList extends React.PureComponent> {\n public render(): JSX.Element | null {\n const { heading } = this.props.config;\n const imageListTitle = heading && ;\n const viewProps: IImageListViewProps = {\n ...this.props,\n imageList: {\n moduleProps: this.props,\n className: classnames('ms-image-list', this.props.config.className),\n tag: 'div'\n },\n imageListHeading: imageListTitle,\n imageListContainer: {\n className: 'ms-image-list__list',\n role: 'list',\n tag: 'ul'\n },\n imageListItem: {\n className: 'ms-image-list__list-item',\n role: 'listitem',\n tag: 'li'\n },\n imageListItemAnchorTag: {\n tag: 'a',\n className: 'ms-image-list__link',\n role: 'link'\n },\n imageListItems: this._renderImageListItems()\n };\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle paragraph change.\n * @param index - Index of image item in array of image items.\n * @returns Void.\n */\n public handleParagraphChange = (index: number) => (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.images![index]) {\n this.props.config.images![index].paragraph = event.target.value;\n }\n };\n\n /**\n * Render list of images.\n * @returns List of images with text and redirection link.\n */\n private readonly _renderImageListItems = (): IImageListItem[] | undefined => {\n const imageList: IImagesData[] | undefined = this.props.config.images;\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 },\n lg: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 },\n xl: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 }\n },\n lazyload: false,\n disableLazyLoad: true\n };\n return imageList?.map((item, index) => {\n const { image, link, paragraph } = item;\n\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: (image?.imageSettings ?? defaultImageSettings) as Msdyn365.IImageSettings | undefined\n };\n\n const imageLink: string | undefined = link?.linkUrl.destinationUrl;\n const imageLinkText: string | undefined = link?.linkText ?? link?.ariaLabel;\n const imageLinkAriaLabel: string | undefined = link?.ariaLabel;\n\n // If image is null, we want to render the placeholder SVG - by passing image data with empty src\n const imageImage = (\n \n );\n\n const imageText = paragraph && (\n \n );\n const imageListItem: IImageListItem = {\n image: imageImage,\n text: imageText,\n link: imageLink,\n linkAltText: imageLinkText,\n linkAriaLabel: imageLinkAriaLabel\n };\n return imageListItem;\n });\n };\n}\n\nexport default ImageList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IInteractiveFeatureItemViewProps } from './interactive-feature-item';\n\n/**\n * Enumerator used to make some calculations to set the proper classnames\n * using modular calculations to see if they are in a right or left column or on first or last row.\n */\nenum MagicNumber {\n modularDivisor = 4,\n caseNumberZero = 0,\n caseNumberOne = 1,\n caseNumberTwo = 2\n}\n\n/**\n * Feature Item View.\n * @param thisProps - Feature Item view props.\n * @param indexItem - Feature Item view props.\n * @param itemCounter - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */\nconst renderMosaic = (thisProps: IInteractiveFeatureItemViewProps, indexItem?: number, itemCounter?: number): JSX.Element | null => {\n const {\n title,\n paragraph,\n image,\n links,\n interactiveFeatureCollectionMosaicContainer,\n interactiveFeatureCollectionMosaicImage,\n interactiveFeatureCollectionMosaicDetails\n } = thisProps;\n const indexAux = indexItem ? indexItem + MagicNumber.caseNumberOne : MagicNumber.caseNumberOne;\n const itemCounterAux = itemCounter ? itemCounter : MagicNumber.caseNumberZero;\n const modularAux = indexAux % MagicNumber.modularDivisor;\n const firstRow = indexAux <= MagicNumber.caseNumberTwo ? 'firstRow' : '';\n const lastRow =\n itemCounterAux && (indexAux === itemCounterAux || indexAux === itemCounterAux - MagicNumber.caseNumberOne) ? 'lastRow' : '';\n const onCornerRight = modularAux === MagicNumber.caseNumberZero ? 'item-corner-right' : '';\n const onCornerLeft = modularAux === MagicNumber.caseNumberOne ? 'item-corner-left' : '';\n const containerClasses = classnames('ms-interactive-feature-collection-mosaic', onCornerLeft, onCornerRight, firstRow, lastRow);\n\n return (\n \n {image}\n \n {title}\n {paragraph}\n {links}\n \n \n );\n};\n\n/**\n * Feature Item View.\n * @param thisProps - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */ const renderCarousel = (thisProps: IInteractiveFeatureItemViewProps): JSX.Element | null => {\n const {\n title,\n paragraph,\n image,\n links,\n interactiveFeatureCollectionCarouselContainer,\n interactiveFeatureCollectionCarouselImage,\n interactiveFeatureCollectionCarouselContent\n } = thisProps;\n return (\n \n {image}\n \n {title}\n {paragraph}\n {links}\n \n \n );\n};\n\n/**\n * Feature Item View.\n * @param props - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */\nexport const FeatureItemViewComponent: React.FC = props => {\n const { isMosaic, featureItem, indexItem, itemCounter } = props;\n if (isMosaic) {\n return <>{renderMosaic(props, indexItem, itemCounter)};\n }\n return {renderCarousel(props)};\n};\n\nexport default FeatureItemViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IImageListViewProps } from './image-list';\n\n/**\n * Render the thumbnail item images.\n * @param props - The image list view props.\n * @returns Return HTML having IImageListViewProps props with image List.\n */\nexport const imageListView = (props: IImageListViewProps): JSX.Element => {\n const { imageList, imageListContainer, imageListHeading, imageListItem, imageListItems, imageListItemAnchorTag } = props;\n return (\n \n {imageListHeading}\n \n {imageListItems?.map(item => {\n let indexKey: string;\n\n if (item.image) {\n const image = (item.image as unknown) as Msdyn365.Image;\n indexKey = image.props.src as string;\n } else {\n const text = (item.text as unknown) as Msdyn365.RichTextComponent;\n indexKey = text.props.text as string;\n }\n return (\n \n {item.image && (\n \n {item.image}\n \n )}\n {item.text}\n \n );\n })}\n \n \n );\n};\n\nexport default imageListView;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IImageSettings, Image, RichTextComponent } from '@msdyn365-commerce/core';\r\nimport { IWriteReviewData, IWriteReviewViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IWriteReviewProps } from '../definition-extensions/write-review.ext.props.autogenerated';\r\n\r\n/**\r\n * Render Product Image.\r\n * @param props - WriteReview ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst renderProductImage = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\r\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\r\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\r\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\r\n },\r\n lazyload: true,\r\n cropFocalRegion: true\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Product Description.\r\n * @param props - WriteReview ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst renderProductDescription = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\r\n const product = props.data.product.result;\r\n return (\r\n \r\n
\r\n {renderProductImage(props)}\r\n
\r\n
\r\n
\r\n {product?.Name}\r\n
\r\n
\r\n {product?.Name}\r\n
\r\n
\r\n {product?.ItemId}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Create Write Review Modal.\r\n * @param props - WriteReview ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst createReviewModal = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\r\n const { resources, moduleProps, reviewModal } = props;\r\n\r\n return (\r\n \r\n {reviewModal.modalHeader}\r\n \r\n \r\n \r\n {renderProductDescription(props)}\r\n \r\n
\r\n {resources.selectRatingLabel}\r\n
\r\n {reviewModal.rating}\r\n
\r\n
\r\n \r\n {resources.reviewTitleLabel}\r\n {reviewModal.titleInput}\r\n \r\n \r\n {resources.reviewTextLabel}\r\n {reviewModal.textInput}\r\n \r\n {reviewModal.privacyPolicyUrl}\r\n {reviewModal.error}\r\n
\r\n
\r\n \r\n {reviewModal.submitButton}\r\n {reviewModal.cancelButton}\r\n \r\n
\r\n );\r\n};\r\n\r\n/**\r\n * WriteReview view.\r\n * @param props - WriteReview ViewProps.\r\n * @returns WriteReview view module.\r\n */\r\nconst WriteReviewView: React.FC> = props => {\r\n const { config, heading, signInMessage, signInButton, modalToggle, moduleProps } = props;\r\n const { paragraph } = config;\r\n const isAuthenticated = props.context.request.user.isAuthenticated;\r\n const text = paragraph && ();\r\n\r\n return (\r\n \r\n {heading}\r\n {!isAuthenticated ? <>\r\n {signInMessage}\r\n {signInButton}\r\n : <>\r\n {text}\r\n {modalToggle}\r\n {createReviewModal(props)}\r\n }\r\n \r\n );\r\n};\r\n\r\nexport default WriteReviewView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n ISignUpEmailVerification,\r\n ISignUpGivenNameVerification,\r\n ISignUpItem,\r\n ISignUpLoading,\r\n ISignUpLocalAccount,\r\n ISignUpSurnameVerification,\r\n ISignUpViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-up/./sign-up';\r\n\r\nconst SignUpItem: React.FC = ({\r\n wrapper,\r\n label,\r\n errorMessage,\r\n input\r\n}) => {\r\n\r\n return (\r\n \r\n {label}\r\n {errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst SignUpEmailVerification: React.FC = ({\r\n email,\r\n buttonWrapper,\r\n buttons,\r\n successMessage,\r\n errorMessage\r\n}) => {\r\n\r\n return (\r\n <>\r\n \r\n {successMessage && successMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n \r\n {buttons && buttons.map((button: React.ReactNode) => {\r\n return (\r\n <>\r\n {button}\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Handles validation of sign-up givenName.\r\n * @param event - Content editable event.\r\n * @param event.givenName - Event Given Name.\r\n * @param event.errorMessage - Event Error Message.\r\n * @returns - Error Message for Given Name.\r\n */\r\nconst SignUpGivenNameVerificationComponent: React.FC = ({\r\n givenName,\r\n errorMessage\r\n}) => {\r\n return (\r\n <>\r\n \r\n {errorMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Handles validation of signUp surname.\r\n * @param event - Content editable event.\r\n * @param event.surname - Event surname.\r\n * @param event.errorMessage - Event Error Message.\r\n * @returns - Error Message for surname.\r\n */\r\nconst SignUpSurnameVerificationComponent: React.FC = ({\r\n surname,\r\n errorMessage\r\n}) => {\r\n return (\r\n <>\r\n \r\n {errorMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n emailVerification,\r\n givenNameVerification,\r\n surnameVerification,\r\n buttons,\r\n errorMessage,\r\n disclaimer\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignUpItem) => {\r\n if (item.key === 'email' && emailVerification.isRequired) {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n if (item.key === 'givenName' && givenNameVerification.isRequired) {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n if (item.key === 'surname' && surnameVerification.isRequired) {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n return (\r\n\r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((error: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {error}\r\n \r\n );\r\n })}\r\n {buttons && buttons.map((button: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {button}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n \r\n );\r\n};\r\n\r\nconst SignUpLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignUpView: React.FC = props => {\r\n\r\n const {\r\n signUp,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n heading,\r\n signUpLocalAccount\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n {heading}\r\n {LocalAccount(signUpLocalAccount)}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default SignUpView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IB2bRequestsStatusViewProps } from './b2b-requests-status';\n\nconst B2bRequestsStatusView: React.FC = props => {\n const { b2bRequestsStatus, heading, table } = props;\n return (\n \n {heading}\n {table}\n \n );\n};\n\nexport default B2bRequestsStatusView;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IComponent, IComponentProps, ICoreContext, IImageSettings, Image, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { getFallbackImageUrl, getProductPageUrlSync, ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport React from 'react';\r\n\r\nimport { InvoicePaidStatus, OrderInvoice, SalesInvoice, SalesInvoiceLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { IPayableInvoice } from '@msdyn365-commerce-modules/invoice';\r\n\r\n// import { IInvoiceProductLine, InvoiceDetailsModel } from '../helpers/invoice-data';\r\n\r\nexport interface IInvoicePaymentDetails {\r\n totalDiscount?: number;\r\n subtotal?: number;\r\n totalCharges?: number;\r\n totalTax?: number;\r\n totalAmount?: number;\r\n currencyCode?: string;\r\n}\r\n\r\nexport interface IInvoiceProductLine extends SalesInvoiceLine {\r\n primaryImageUrl?: string;\r\n}\r\n\r\n/**\r\n * Represents invoice details data model.\r\n */\r\nexport class InvoiceDetailsModel implements IPayableInvoice, IInvoicePaymentDetails {\r\n public id: string;\r\n\r\n public invoiceDate?: Date;\r\n\r\n public customerAccountNumber?: string;\r\n\r\n public customerName?: string;\r\n\r\n public dueDate?: Date;\r\n\r\n public amountDue?: number;\r\n\r\n public status?: InvoicePaidStatus;\r\n\r\n public lines: IInvoiceProductLine[];\r\n\r\n public totalDiscount?: number;\r\n\r\n public subtotal?: number;\r\n\r\n public totalCharges?: number;\r\n\r\n public totalTax?: number;\r\n\r\n public totalAmount?: number;\r\n\r\n public currencyCode?: string;\r\n\r\n public constructor(invoice: OrderInvoice, invoiceDetails: SalesInvoice, products: SimpleProduct[]) {\r\n this.id = invoice.Id || '';\r\n this.invoiceDate = invoice.InvoiceDate ? new Date(invoice.InvoiceDate) : undefined;\r\n this.customerName = invoice.CustomerName;\r\n this.dueDate = invoice.InvoiceDueDate ? new Date(invoice.InvoiceDueDate) : undefined;\r\n this.amountDue = invoice.AmountBalance;\r\n this.status = invoice.InvoicePaidStatusValue;\r\n this.lines = (invoiceDetails.SalesInvoiceLine || []).map(line => {\r\n const productLine: IInvoiceProductLine = {\r\n ...line,\r\n primaryImageUrl: products.find(product => product.RecordId === line.RecordId)?.PrimaryImageUrl\r\n };\r\n return productLine;\r\n });\r\n\r\n this.totalDiscount = invoiceDetails.TotalDiscount;\r\n this.subtotal = invoiceDetails.InvoiceSubtotal;\r\n this.totalCharges = invoiceDetails.TotalCharges;\r\n this.totalTax = invoiceDetails.TotalTaxAmount;\r\n this.totalAmount = invoice.TotalAmount;\r\n this.currencyCode = invoice.CurrencyCode;\r\n }\r\n\r\n public get canBePaid(): boolean {\r\n return this.status !== InvoicePaidStatus.Paid;\r\n }\r\n}\r\n\r\n\r\nexport interface IInvoiceDetailsProductsData {\r\n invoiceDetails: InvoiceDetailsModel;\r\n}\r\n\r\nexport interface IInvoiceDetailsProductsResources {\r\n invoiceProductColor: string;\r\n invoiceProductSize: string;\r\n invoiceProductStyle: string;\r\n invoiceQuantity: string;\r\n}\r\n\r\nexport interface IInvoiceDetailsProductsProps extends IComponentProps {\r\n context: ICoreContext;\r\n className: string;\r\n imageSettings?: IImageSettings;\r\n resources: IInvoiceDetailsProductsResources;\r\n}\r\n\r\nexport interface IInvoiceDetailsProductsComponent extends IComponent {\r\n}\r\n\r\nconst _renderProductDimensions = (className: string, resources: IInvoiceDetailsProductsResources, product: SalesInvoiceLine): JSX.Element => {\r\n return (\r\n
\r\n {StringExtensions.isNullOrWhitespace(product.ColorName) ? null :
\r\n {resources.invoiceProductColor.replace('{0}', product.ColorName!)}\r\n
}\r\n {StringExtensions.isNullOrWhitespace(product.SizeName) ? null :
\r\n {resources.invoiceProductSize.replace('{0}', product.SizeName!)}\r\n
}\r\n {StringExtensions.isNullOrWhitespace(product.StyleName) ? null :
\r\n {resources.invoiceProductStyle.replace('{0}', product.StyleName!)}\r\n
}\r\n
\r\n );\r\n};\r\n\r\nconst _renderProductImage = (className: string, context: ICoreContext, product: IInvoiceProductLine, imageSettings?: IImageSettings): JSX.Element | null => {\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=315&h=315&m=6', w: 0, h: 0 },\r\n lg: { q: 'w=315&h=315&m=6', w: 0, h: 0 },\r\n xl: { q: 'w=315&h=315&m=6', w: 0, h: 0 }\r\n },\r\n lazyload: true,\r\n cropFocalRegion: true\r\n };\r\n\r\n if (imageSettings) {\r\n imageSettings.cropFocalRegion = true;\r\n }\r\n\r\n const fallbackImage = getFallbackImageUrl(product.ItemId, context.actionContext.requestContext.apiSettings);\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\r\n if (amount === undefined) {\r\n return '';\r\n }\r\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\r\n};\r\n\r\nconst InvoiceDetailsProducts: React.FC = (props: IInvoiceDetailsProductsProps): JSX.Element => {\r\n const { className, data: { invoiceDetails }, resources } = props;\r\n\r\n const productLineClass = `${className}__product-line`;\r\n const productLineInfoContainerClass = `${productLineClass}__product-info-container`;\r\n const productLineDetailsClass = `${productLineInfoContainerClass}__product-details`;\r\n const productLineSmallDetailsClass = `${productLineDetailsClass}__small-details`;\r\n\r\n return (\r\n
\r\n {\r\n invoiceDetails.lines.map(product => {\r\n const quantity = product.Quantity || 1;\r\n\r\n let productUrl = '';\r\n if (!ObjectExtensions.isNullOrUndefined(product.ProductName) &&\r\n !ObjectExtensions.isNullOrUndefined(product.RecordId)) {\r\n productUrl = getProductPageUrlSync(product.ProductName, product.RecordId, props.context.actionContext);\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {_renderProductImage(`${productLineInfoContainerClass}__product-image`, props.context, product)}\r\n
\r\n \r\n {`${product.ItemId} - ${product.ProductName}`}\r\n \r\n
\r\n {_renderProductDimensions(`${productLineSmallDetailsClass}__dimensions`, resources, product)}\r\n
\r\n {formatAmount(props.context, product.Price, invoiceDetails.currencyCode)}\r\n
\r\n
\r\n {resources.invoiceQuantity.replace('{0}', quantity.toString())}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {formatAmount(props.context, product.NetAmount, invoiceDetails.currencyCode)}\r\n
\r\n
\r\n );\r\n })\r\n }\r\n
\r\n );\r\n};\r\n\r\n// @ts-expect-error\r\nexport const InvoiceDetailsProductsComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n 'InvoiceDetailsProductsComponent',\r\n { component: InvoiceDetailsProducts }\r\n);\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n ISignInItem, ISignInLoading, ISignInLocalAccount,\r\n ISignInViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-in/./sign-in';\r\n\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n forgetPassword,\r\n disclaimer,\r\n error,\r\n signInButton\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInItem) => {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {forgetPassword}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n \r\n );\r\n};\r\n//\r\n// const SocialAccount: React.FC = ({\r\n// socialAccounts,\r\n// items\r\n// }) => {\r\n//\r\n// return (\r\n// \r\n// {items && items.map((item: ISignInSocialItem) => {\r\n// return (\r\n// \r\n// {item.image}\r\n// {item.text}\r\n// \r\n// );\r\n// })}\r\n// \r\n// );\r\n// };\r\n\r\nconst SignInLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC = props => {\r\n\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n {/*{SocialAccount(signInSocialAccount)}*/}\r\n \r\n {/**/}\r\n {/* {signUpSectionHeading}*/}\r\n {/* {signUpDescription}*/}\r\n {/* {signUpLink}*/}\r\n {/**/}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default SignInView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { IInteractiveFeatureCollectionViewProps } from './interactive-feature-collection';\n\n/**\n * Feature Collection View.\n * @param props - Feature Collection view props.\n * @returns Feature Collection View.\n */\nexport const interactiveFeatureCollectionView: React.FC = props => {\n const {\n title,\n interactiveFeatureCollectionHeading,\n interactiveFeatureCollectionContainer,\n interactiveFeatureCollectionDesktopContainer,\n interactiveFeatureCollectionDesktopItems,\n interactiveFeatureCollectionMobileItems,\n interactiveFeatureCollectionMobileContainer,\n singleSlideCarouselComponentProps,\n singleSlideCarouselItemContainer\n } = props;\n return (\n \n {title}\n {interactiveFeatureCollectionDesktopItems}\n \n \n {interactiveFeatureCollectionMobileItems &&\n interactiveFeatureCollectionMobileItems.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `interactive-feature-carousel-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n \n );\n};\n\nexport default interactiveFeatureCollectionView;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n ISignInItem, ISignInLoading, ISignInLocalAccount,\r\n ISignInViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-in/./sign-in';\r\n\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n forgetPassword,\r\n disclaimer,\r\n error,\r\n signInButton\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignInItem) => {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {forgetPassword}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n \r\n );\r\n};\r\n//\r\n// const SocialAccount: React.FC = ({\r\n// socialAccounts,\r\n// items\r\n// }) => {\r\n//\r\n// return (\r\n// \r\n// {items && items.map((item: ISignInSocialItem) => {\r\n// return (\r\n// \r\n// {item.image}\r\n// {item.text}\r\n// \r\n// );\r\n// })}\r\n// \r\n// );\r\n// };\r\n\r\nconst SignInLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC = props => {\r\n\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n signUpDescription,\r\n signUpLink,\r\n signUpSection,\r\n signUpSectionHeading\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n {/*{SocialAccount(signInSocialAccount)}*/}\r\n \r\n \r\n {signUpSectionHeading}\r\n {signUpDescription}\r\n {signUpLink}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SignInView;\r\n","import React from 'react';\r\nimport { RowError, SimpleProductExt } from '../eve-quick-order';\r\nimport { IAdvancedNoteEntity, IManufacturerCodeResponseEntity } from '../../../actions/DataServiceEntities.g';\r\nimport { SupersessionKey } from '../../../themes/gardner-theme/models/SupersessionKey';\r\nimport { Tooltip } from 'reactstrap';\r\n\r\nexport interface IEveQuickOrderRowResources {\r\n defaultManufacturerCodeText: string;\r\n deleteText: string;\r\n productEligibilityText: string;\r\n supersededProductText: string;\r\n}\r\n\r\ninterface IEveQuickOrderRowProps {\r\n id: number;\r\n onDelete: (id: number) => void;\r\n onRowChange: (id: number, value: string, quantity: string, manufacturerCode: string) => void;\r\n onAddRows: () => void;\r\n value: string;\r\n quantity: string;\r\n product: SimpleProductExt | null;\r\n availableProducts: SimpleProductExt[] | null;\r\n currencyFormatter: (price: string | number, currencyCode?: string | undefined) => string;\r\n isLastRow: boolean;\r\n rowError: RowError;\r\n onSelectedProductChange: (id: number, selectedProductId: number) => void;\r\n resources: IEveQuickOrderRowResources;\r\n manufacturerCodes: IManufacturerCodeResponseEntity[];\r\n manufacturerCode: string;\r\n advancedNotes: IAdvancedNoteEntity[];\r\n}\r\n\r\nexport const EveQuickOrderRow: React.FC = props => {\r\n const {\r\n id,\r\n onDelete,\r\n value,\r\n quantity,\r\n onRowChange,\r\n product,\r\n currencyFormatter,\r\n isLastRow,\r\n onAddRows,\r\n manufacturerCodes,\r\n resources: { defaultManufacturerCodeText, productEligibilityText, supersededProductText },\r\n rowError,\r\n manufacturerCode,\r\n advancedNotes\r\n } = props;\r\n\r\n /**\r\n * Emits the row delete function\r\n */\r\n const handleRowDelete = () => onDelete(id);\r\n\r\n /**\r\n * Emits row change when changing value\r\n * @param e\r\n */\r\n const handleValueChange = (e: React.ChangeEvent) => {\r\n onRowChange(id, e.target.value, quantity, manufacturerCode);\r\n };\r\n\r\n /**\r\n * Emits row change when changing quantity\r\n * @param e\r\n */\r\n const handleQuantityChange = (e: React.ChangeEvent) => {\r\n onRowChange(id, value, e.target.value, manufacturerCode);\r\n };\r\n\r\n /**\r\n * Emits add row function\r\n */\r\n const addRows = () => {\r\n onAddRows();\r\n };\r\n\r\n const [isToolTipOpen, setIsToolTipOpen] = React.useState(false);\r\n\r\n /**\r\n * Toggle which updates the tooltip state\r\n * @returns void\r\n */\r\n const toggleTooltip = () => setIsToolTipOpen(!isToolTipOpen);\r\n\r\n const handleManufacturerCodeChange = (e: React.ChangeEvent) => {\r\n onRowChange(id, value, quantity, e.target.value);\r\n };\r\n /**\r\n * Gets the row message to display based on row state\r\n */\r\n const getRowStatusMessage = (product: SimpleProductExt | null): React.ReactElement | null => {\r\n switch (rowError) {\r\n case RowError.None:\r\n if (product) {\r\n const supersessionName = product.ExtensionProperties?.find(ep => ep.Key === SupersessionKey.SupersededName)?.Value\r\n ?.StringValue;\r\n\r\n return (\r\n <>\r\n

\r\n {`${product.Name} \r\n ${supersessionName ? supersededProductText.replace('{0}', supersessionName) : ''}` || ''}\r\n

\r\n {advancedNotes ? mapNotes(advancedNotes) : ''}\r\n \r\n );\r\n }\r\n break;\r\n case RowError.InvalidQuantity:\r\n return

Invalid Quantity

;\r\n case RowError.ProductNotFound:\r\n return

Product Not Found

;\r\n case RowError.MultipleChoicesAvailable:\r\n return

Please select a manufacturer

;\r\n case RowError.NotEligbile:\r\n return

{productEligibilityText}

;\r\n case RowError.Unavailable:\r\n return

Not Available

;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n /**\r\n * Turn array of IAdvancedNoteEntity into JSX element with Tooltip\r\n *\r\n * @param {IAdvancedNoteEntity[]} notes the array of notes to display in the tooltip\r\n * @return {*}\r\n */\r\n function mapNotes(notes: IAdvancedNoteEntity[]) {\r\n if (notes && notes.length) {\r\n return (\r\n <>\r\n \r\n Read Notes\r\n \r\n \r\n
    \r\n {advancedNotes.map(note => (\r\n
  • {note.TextValue}
  • \r\n ))}\r\n
\r\n \r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n const getAvailability = () => product?.ExtensionProperties?.find(ep => ep.Key === SupersessionKey.Inventory)?.Value?.StringValue || '0';\r\n\r\n return (\r\n <>\r\n
\r\n \r\n {!manufacturerCode && }\r\n {manufacturerCodes &&\r\n manufacturerCodes.length > 0 &&\r\n manufacturerCodes.map(code => (\r\n \r\n ))}\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
{getRowStatusMessage(product)}
\r\n
{product &&

{currencyFormatter(product.Price)}

}
\r\n
{product &&

{getAvailability()}

}
\r\n
\r\n \r\n
\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nexport interface IEveQuickOrderButtonRowResources {\r\n addAllToCartText: string;\r\n clearAllText: string;\r\n addMoreRowsText: string;\r\n}\r\n\r\ninterface IEveQuickOrderButtonRowProps {\r\n resources: IEveQuickOrderButtonRowResources;\r\n canAddToCart: number;\r\n handleAddToCart: () => void;\r\n handleClearAll: () => void;\r\n isLoading: boolean;\r\n}\r\n\r\nexport const EveQuickOrderButtonRow: React.FC = props => {\r\n const {\r\n resources: { clearAllText, addAllToCartText },\r\n canAddToCart,\r\n handleClearAll,\r\n handleAddToCart,\r\n isLoading\r\n } = props;\r\n const _className = 'qo-button';\r\n\r\n return (\r\n
\r\n \r\n {isLoading ? 'Loading...' : addAllToCartText}\r\n \r\n \r\n
\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport interface IEveQuickOrderHeaderResources {\r\n addAllToCartText: string;\r\n clearAllText: string;\r\n}\r\n\r\ninterface IEveQuickOrderHeaderProps {\r\n heading: string;\r\n helpText: string;\r\n resources: IEveQuickOrderHeaderResources;\r\n canAddToCart: number;\r\n handleAddToCart: () => void;\r\n handleClearAll: () => void;\r\n}\r\n\r\nexport const EveQuickOrderHeader: React.FC = props => {\r\n const {\r\n heading,\r\n helpText\r\n // resources: { clearAllText, addAllToCartText },\r\n // canAddToCart,\r\n // handleClearAll,\r\n // handleAddToCart\r\n } = props;\r\n const _className = 'q-header';\r\n\r\n return (\r\n
\r\n
\r\n

{heading}

\r\n {helpText &&

{helpText}

}\r\n
\r\n {/*
\r\n \r\n \r\n
*/}\r\n
\r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IEveQuickOrderData } from './eve-quick-order.data';\r\nimport { IEveQuickOrderProps } from './eve-quick-order.props.autogenerated';\r\nimport { EveQuickOrderRow, IEveQuickOrderRowResources } from './components/EveQuickOrderRow';\r\nimport { EveQuickOrderButtonRow, IEveQuickOrderButtonRowResources } from './components/EveQuickOrderButtonRow';\r\nimport { debounce } from 'lodash';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { AsyncResult, CommerceProperty, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { EveQuickOrderHeader, IEveQuickOrderHeaderResources } from './components/EveQuickOrderHeader';\r\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classNames from 'classnames';\r\nimport { IOrderUploadItem } from '../order-upload/order-upload';\r\nimport {\r\n getAdvancedNotesAsync,\r\n getInventoryLevelRangesAsync,\r\n getProductsByManufacturerItemIdAsync\r\n} from '../../actions/DataActionExtension.g';\r\nimport {\r\n IAdvancedNoteEntity,\r\n IManufacturerCodeResponseEntity,\r\n IProfileDataMap,\r\n ISearchTextProductMap\r\n} from '../../actions/DataServiceEntities.g';\r\nimport { CommercePropertyValueEnum } from '../allowable-freight/utils/CommercePropertyValueEnum';\r\nimport GetProductEligibilityAction, { GetProductEligibilityInput } from '../../actions/get-product-eligibility.action';\r\nimport { SupersessionKey } from '../../themes/gardner-theme/models/SupersessionKey';\r\nexport interface IEveQuickOrderViewProps extends IEveQuickOrderProps {\r\n quickOrderTable: React.ReactElement;\r\n quickOrderHeader: React.ReactElement;\r\n quickOrderWrapper: IModuleProps;\r\n handleUploadedItems: (items: IOrderUploadItem[]) => void;\r\n orderUploadWrapper: INodeProps;\r\n guideText: React.ReactElement | undefined;\r\n}\r\n\r\nexport interface IEveQuickOrderRowData {\r\n id: number;\r\n value: string;\r\n quantity: string;\r\n product: SimpleProductExt | null;\r\n availableProducts: SimpleProductExt[];\r\n rowError: RowError;\r\n manufacturerCode: string;\r\n advancedNotes: IAdvancedNoteEntity[];\r\n}\r\n\r\ninterface IEveQuickOrderState {\r\n rows: IEveQuickOrderRowData[];\r\n // @ts-expect-error\r\n debounce: debounce;\r\n loading: boolean;\r\n}\r\n\r\nexport enum RowError {\r\n ProductNotFound,\r\n InvalidQuantity,\r\n MultipleChoicesAvailable,\r\n NotEligbile,\r\n None,\r\n Unavailable\r\n}\r\n\r\nexport interface ISearchTextProductMapExt extends ISearchTextProductMap {\r\n SearchText?: string;\r\n Products?: SimpleProductExt[];\r\n}\r\n\r\nexport interface SimpleProductExt extends SimpleProduct {\r\n IsEligible?: boolean;\r\n IsUnavailable?: boolean;\r\n}\r\n\r\ninterface EligibleItem {\r\n ItemId: string;\r\n IsEligible: boolean;\r\n IsAssorted?: boolean;\r\n}\r\n\r\nexport interface EligibleItems extends Array {}\r\n\r\n/**\r\n * Enables users to quickly order products using item ids\r\n * EveQuickOrder component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass EveQuickOrder extends React.PureComponent, IEveQuickOrderState> {\r\n private _defaultMinQueryLength = 4;\r\n private _manufacturerCodeExtensionPropertyKey = 'ManufacturerCode';\r\n constructor(props: IEveQuickOrderProps) {\r\n super(props);\r\n\r\n this._handleRowDelete = this._handleRowDelete.bind(this);\r\n this._generateRow = this._generateRow.bind(this);\r\n this._renderTable = this._renderTable.bind(this);\r\n this._updateRowValue = this._updateRowValue.bind(this);\r\n this._addTwoRows = this._addTwoRows.bind(this);\r\n this._handleUploadedItems = this._handleUploadedItems.bind(this);\r\n this._tableInit = this._tableInit.bind(this);\r\n this._handleAddToCart = this._handleAddToCart.bind(this);\r\n this._handleSelectedProductChange = this._handleSelectedProductChange.bind(this);\r\n this._reorderRows = this._reorderRows.bind(this);\r\n\r\n this.state = {\r\n rows: [],\r\n debounce: this._initDebounceFn(),\r\n loading: false\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n this._tableInit();\r\n }\r\n\r\n /**\r\n * Initialises the table to the module configuration\r\n * @private\r\n */\r\n private _tableInit() {\r\n const {\r\n config: { defaultRows }\r\n } = this.props;\r\n const rows: IEveQuickOrderRowData[] = [];\r\n for (let i = 0; i < defaultRows; i++) {\r\n rows.push(this._generateEmptyRow(i + 1));\r\n }\r\n this.setState({ rows });\r\n }\r\n\r\n /**\r\n * Initializes the debounce function for all input forms\r\n * @private\r\n */\r\n private _initDebounceFn() {\r\n return debounce(async (data: { searchText: string[]; id: number }) => {\r\n const responseData = await this.getProductSearchResult(data.searchText);\r\n if (ArrayExtensions.hasElements(responseData) && ArrayExtensions.hasElements(responseData[0].Products)) {\r\n const notes = await getAdvancedNotesAsync({ callerContext: this.props.context.actionContext }, [\r\n responseData[0].Products[0]?.ItemId!\r\n ]);\r\n this._updateRowProduct(data.id, responseData[0].Products, notes || [], data.searchText[0]);\r\n } else {\r\n const rows = [...this.state.rows];\r\n const idx = rows.findIndex(r => r.id === data.id);\r\n rows[idx].rowError = this._updateRowErrorState(rows[idx]);\r\n this.setState({ rows });\r\n }\r\n }, 500);\r\n }\r\n\r\n /**\r\n * Adds all valid items to cart\r\n * @private\r\n */\r\n private async _handleAddToCart() {\r\n const products = this.state.rows.filter(row => !!row.product && row.rowError === RowError.None);\r\n // 6321 - Resolve issue when the same item is added to the quick order form more than once\r\n const dummyProducts = [...products];\r\n const combinedProducts = dummyProducts.reduce(\r\n (acc: IEveQuickOrderRowData[], cur: IEveQuickOrderRowData): IEveQuickOrderRowData[] => {\r\n const row = acc.length > 0 && acc.find(({ product }) => product?.ItemId === cur.product?.ItemId);\r\n if (row) {\r\n row.quantity = (parseInt(row.quantity, 10) + parseInt(cur.quantity, 10)).toString();\r\n } else {\r\n acc.push(cur);\r\n }\r\n return acc;\r\n },\r\n []\r\n );\r\n\r\n if (combinedProducts.length) {\r\n const cartState = this.props.data.cart.result;\r\n const input = combinedProducts.map(product => {\r\n return {\r\n product: product.product!,\r\n count: parseInt(product.quantity, 10),\r\n catalogId: 0\r\n };\r\n });\r\n if (cartState) {\r\n this.setState({ loading: true });\r\n await cartState.addProductsToCart(input);\r\n this.setState({ loading: false });\r\n this._tableInit();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Gets product by item id\r\n * @param data item ids\r\n * @private\r\n */\r\n private async getProductSearchResult(data: string[]) {\r\n const itemIds = data.map(d => d.toString());\r\n\r\n const {\r\n context: { actionContext }\r\n } = this.props;\r\n const response: ISearchTextProductMapExt[] = await getProductsByManufacturerItemIdAsync(\r\n { callerContext: actionContext, queryResultSettings: { Paging: { Top: 9999 } } },\r\n itemIds,\r\n ''\r\n );\r\n\r\n // Get products eligbility\r\n const list: EligibleItems = [];\r\n let inventoryRanges: AsyncResult | undefined;\r\n if (itemIds.length) {\r\n const cart = this.props.data.cart;\r\n\r\n const newItemIds: string[] = [];\r\n\r\n // get Superseded products\r\n response.forEach(r => {\r\n r.Products?.forEach(p => {\r\n if (p.ItemId) {\r\n newItemIds.push(p.ItemId);\r\n }\r\n });\r\n });\r\n const input = new GetProductEligibilityInput(newItemIds, false, cart?.result?.cart?.Id || '', null, null, null);\r\n const eligibilityData = GetProductEligibilityAction(input, this.props.context.actionContext);\r\n inventoryRanges = getInventoryLevelRangesAsync({ callerContext: this.props.context.actionContext }, newItemIds);\r\n const products = response[0].Products;\r\n await Promise.all([eligibilityData, inventoryRanges]);\r\n\r\n if (eligibilityData?.result?.length && products) {\r\n eligibilityData?.result?.forEach((i: any) => {\r\n const id = this._getExtensionPropertyValueByKey(i.ExtensionProperties, 'ItemId', CommercePropertyValueEnum.string);\r\n list.push({\r\n ItemId: String(id),\r\n IsEligible: i.IsEligible,\r\n IsAssorted: i.IsAssorted\r\n });\r\n });\r\n }\r\n }\r\n response.forEach(pr =>\r\n pr.Products?.forEach(p => {\r\n const eligibilityRecord = list.find(l => l.ItemId === p.ItemId);\r\n if (eligibilityRecord) {\r\n p.IsEligible = eligibilityRecord.IsEligible;\r\n p.IsUnavailable = !eligibilityRecord.IsAssorted;\r\n } else {\r\n p.IsEligible = false;\r\n }\r\n const currentInvString = this.getProductSupersessionProperty(p, SupersessionKey.Inventory) || '0';\r\n const currentInventory = parseInt(currentInvString, 10);\r\n inventoryRanges?.result?.map(ir => {\r\n const tempInvRange = ir.Profile?.find(invP => invP.ItemId === p.ItemId && invP.Code === 'OOS');\r\n if (tempInvRange) {\r\n const OosUpperBound =\r\n tempInvRange.hasOwnProperty('UpperBoundInclusive') && tempInvRange.UpperBoundInclusive !== undefined\r\n ? tempInvRange.UpperBoundInclusive\r\n : 0;\r\n p.IsUnavailable = currentInventory <= OosUpperBound;\r\n }\r\n });\r\n })\r\n );\r\n // response.forEach((p: any) => {\r\n // p.Products.forEach((pr: SimpleProductExt) => {\r\n // list.forEach(i => {\r\n // if (pr?.ItemId === i.ItemId) {\r\n // pr.IsEligible = i.IsEligible;\r\n // }\r\n // });\r\n // });\r\n // });\r\n\r\n return response;\r\n }\r\n\r\n private getProductSupersessionProperty = (product: SimpleProductExt, extensionKey: SupersessionKey) => {\r\n const properties = product.ExtensionProperties;\r\n if (properties) {\r\n return properties.find(pr => pr.Key === extensionKey)?.Value?.StringValue || null;\r\n }\r\n return null;\r\n };\r\n\r\n /**\r\n * Gets manufacturer codes from data\r\n * @private\r\n */\r\n private _getManufacturerCodeList = (row: IEveQuickOrderRowData): IManufacturerCodeResponseEntity[] => {\r\n const codesResults = this.props.data.manufacturerCodes.result ? this.props.data.manufacturerCodes.result : [];\r\n\r\n //@ts-ignore\r\n const manufacturerCodes: IManufacturerCodeResponseEntity[] = codesResults.manufacturerCodes;\r\n\r\n if (row.availableProducts.length) {\r\n const availableCodes = row.availableProducts.map(p => this._getManufacturerCodeForRow([p]));\r\n return manufacturerCodes.filter(code => availableCodes.includes(code.GDNManufacturerCode || ''));\r\n }\r\n\r\n return manufacturerCodes;\r\n };\r\n\r\n /**\r\n * Renders the header of the page\r\n * @private\r\n */\r\n private _renderHeading() {\r\n const {\r\n resources: { addAllToCartText, clearFormText },\r\n config: { helpText, title }\r\n } = this.props;\r\n const resources: IEveQuickOrderHeaderResources = {\r\n addAllToCartText: addAllToCartText,\r\n clearAllText: clearFormText\r\n };\r\n return (\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the value of an extension property using the given key\r\n * @private\r\n * @param {(CommerceProperty[] | undefined)} properties\r\n * @param {string} key\r\n * @param {CommercePropertyValueEnum} valueType\r\n * @memberof EveQuickOrder\r\n * @return the extension property value associated with the given key\r\n */\r\n private _getExtensionPropertyValueByKey = (\r\n properties: CommerceProperty[] | undefined,\r\n key: string,\r\n valueType: CommercePropertyValueEnum\r\n ) => {\r\n const property = properties?.find(p => p.Key === key)?.Value;\r\n\r\n // eslint-disable-next-line security/detect-object-injection\r\n const val = property ? property[valueType] : null;\r\n return val;\r\n };\r\n\r\n /**\r\n * Renders the add to bag and reset form button row\r\n * @private\r\n */\r\n private _renderButtonRow() {\r\n const {\r\n resources: { addAllToCartText, clearFormText, addMoreRowsText }\r\n } = this.props;\r\n const resources: IEveQuickOrderButtonRowResources = {\r\n addAllToCartText: addAllToCartText,\r\n clearAllText: clearFormText,\r\n addMoreRowsText: addMoreRowsText\r\n };\r\n const { courseInCartText, invoiceInCartText } = this.props.resources;\r\n let courseId: string | number | boolean | null | undefined;\r\n if (this.props.data.cart.result?.hasInvoiceLine) {\r\n return (\r\n
\r\n
{invoiceInCartText}
\r\n
\r\n );\r\n }\r\n const cart = this.props.data.cart.result?.cart;\r\n const cartlines = cart?.CartLines;\r\n if (cartlines && cartlines.length) {\r\n courseId = this._getExtensionPropertyValueByKey(cartlines[0].ExtensionProperties, 'CourseId', CommercePropertyValueEnum.string);\r\n }\r\n\r\n if (courseId) {\r\n return (\r\n
\r\n
{courseInCartText}
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n /**\r\n * gets all products\r\n * @private\r\n */\r\n private _getAllAddedProducts() {\r\n return this.state.rows.map(row => row.product?.RecordId).filter(pr => !!pr);\r\n }\r\n\r\n /**\r\n * Generates a row component using row data\r\n * @param row row data to generate from\r\n * @param isLast whether its the last row in the form\r\n * @private\r\n */\r\n private _generateRow(row: IEveQuickOrderRowData, isLast: boolean) {\r\n const resources: IEveQuickOrderRowResources = {\r\n defaultManufacturerCodeText: this.props.resources.defaultDropdownText,\r\n deleteText: this.props.resources.deleteHeading,\r\n productEligibilityText: this.props.resources.productEligibilityText,\r\n supersededProductText: this.props.resources.supersededProductText\r\n };\r\n return (\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Handles the product in a row changing\r\n *\r\n * @private\r\n * @param {number} id to change\r\n * @param {number} productId product which has been selected\r\n * @memberof EveQuickOrder\r\n */\r\n private _handleSelectedProductChange(id: number, productId: number) {\r\n const rows = [...this.state.rows];\r\n const idx = rows.findIndex(r => r.id === id);\r\n rows[idx].product = rows[idx].availableProducts.find(pr => pr.RecordId === productId) || rows[idx].product;\r\n this.setState({ rows });\r\n }\r\n\r\n /**\r\n * Handles data from the upload module\r\n * @param items items uploaded\r\n * @private\r\n */\r\n private async _handleUploadedItems(items: IOrderUploadItem[]) {\r\n const itemids = items.map(it => `${it.manufacturer}${it.part_number}`);\r\n // 6251 - Resolve an intermittent issue when upload files are extremely large.\r\n const chunkSize = 50;\r\n const chunks = [];\r\n for (let i = 0; i < itemids.length; i += chunkSize) {\r\n const chunk = itemids.slice(i, i + chunkSize);\r\n chunks.push(chunk);\r\n }\r\n const promises = chunks.map(async chunk => {\r\n return this.getProductSearchResult(chunk);\r\n });\r\n const promiseResult = await Promise.all(promises);\r\n const response: ISearchTextProductMapExt[] = [];\r\n promiseResult.map(res => response.push(...res));\r\n // const response = await this.getProductSearchResult(itemids);\r\n const advancedNotes = await getAdvancedNotesAsync({ callerContext: this.props.context.actionContext }, itemids);\r\n let rows = [...this.state.rows];\r\n const idx = rows.findIndex(r => !r.value);\r\n rows = rows.slice(0, idx);\r\n let rowId = rows.length ? rows[rows.length - 1].id : 1;\r\n // response.forEach((it, index) => {\r\n // const uploadItem = items.find(item => {\r\n // const partNum = item.part_number.toString().toLowerCase();\r\n // const partNumWithMfr = `${item.manufacturer?.toString().toLowerCase()}${item.part_number?.toString().toLowerCase()}`;\r\n // const searchText = it.SearchText?.toLowerCase();\r\n // return partNum === searchText || partNumWithMfr === searchText;\r\n // });\r\n // const foundProduct = ArrayExtensions.hasElements(it.Products);\r\n // const products = it.Products || [];\r\n // // const eligibleProducts = products.filter(pr => pr.IsEligible);\r\n // // const filteredProducts = products.length > 0 && eligibleProducts.length > 0 ? eligibleProducts : products;\r\n // const manufacturerCode = this._getManufacturerCodeForRow(products);\r\n // // const manufacturerCode = this._getManufacturerCodeForRow(filteredProducts);\r\n // const searchText = it.SearchText || '';\r\n // const qty = uploadItem?.qty || 1;\r\n // rows.push(\r\n // this._generateRowData(\r\n // products,\r\n // // filteredProducts,\r\n // rowId++,\r\n // manufacturerCode,\r\n // searchText,\r\n // advancedNotes || [],\r\n // foundProduct,\r\n // qty\r\n // // items[idx].qty\r\n // )\r\n // );\r\n // });\r\n\r\n // 6321 - Change to iterate through the item data from the form vs the response data to resolve an issue retrieving the correct qty when the same item is added more than once\r\n items.forEach((it, index) => {\r\n const responseMatch = response.find(r => {\r\n const partNum = it.part_number.toString().toLowerCase();\r\n const partNumWithMfr = `${it.manufacturer?.toString().toLowerCase()}${it.part_number?.toString().toLowerCase()}`;\r\n const searchText = r.SearchText?.toLowerCase();\r\n return partNum === searchText || partNumWithMfr === searchText;\r\n });\r\n const foundProduct = ArrayExtensions.hasElements(responseMatch?.Products);\r\n const products = responseMatch?.Products || [];\r\n const manufacturerCode = this._getManufacturerCodeForRow(products);\r\n const searchText = responseMatch?.SearchText || '';\r\n const qty = it.qty || 1;\r\n rows.push(\r\n this._generateRowData(\r\n products,\r\n rowId++,\r\n manufacturerCode,\r\n searchText,\r\n advancedNotes || [],\r\n foundProduct,\r\n qty\r\n // items[idx].qty\r\n )\r\n );\r\n });\r\n while (rows.length < this.props.config.defaultRows) {\r\n rows.push({\r\n ...this._generateEmptyRow(rowId++)\r\n });\r\n }\r\n\r\n this.setState({ rows });\r\n }\r\n\r\n private _generateRowData(\r\n products: SimpleProductExt[],\r\n rowId: number,\r\n manufacturerCode: string,\r\n searchText: string,\r\n advancedNotes: IAdvancedNoteEntity[],\r\n foundProduct: boolean,\r\n quantity: number\r\n ) {\r\n let rowError = RowError.None;\r\n if (!foundProduct) {\r\n rowError = RowError.ProductNotFound;\r\n } else if (products.length > 1 && manufacturerCode === '') {\r\n rowError = RowError.MultipleChoicesAvailable;\r\n } else if (quantity < 1) {\r\n rowError = RowError.InvalidQuantity;\r\n } else if (!products[0].IsEligible) {\r\n rowError = RowError.NotEligbile;\r\n } else if (products[0].IsUnavailable) {\r\n rowError = RowError.Unavailable;\r\n }\r\n\r\n const row: IEveQuickOrderRowData = {\r\n ...this._generateEmptyRow(rowId),\r\n product: foundProduct ? products[0] : null,\r\n availableProducts: products || [],\r\n value: this._stripManufacturerFromSearchText(manufacturerCode, searchText),\r\n quantity: quantity.toString(),\r\n rowError: rowError,\r\n advancedNotes: advancedNotes || [],\r\n manufacturerCode: manufacturerCode\r\n };\r\n\r\n return row;\r\n }\r\n\r\n private _stripManufacturerFromSearchText(manufacturerCode: string, searchText: string) {\r\n if (manufacturerCode === '') {\r\n return searchText;\r\n }\r\n // eslint-disable-next-line security/detect-non-literal-regexp\r\n return searchText.replace(new RegExp(manufacturerCode, 'i'), '');\r\n }\r\n\r\n private _getManufacturerCodeForRow(products: SimpleProductExt[]): string {\r\n // 6273 - Auto select KOH when products returned are only MTD or KOH manufacturers\r\n const kohConstant = 'KOH';\r\n const mtdConstant = 'MTD';\r\n const prod = products && products[0];\r\n if (prod && products?.length === 1) {\r\n const mfrCodeVal = this._getExtensionPropertyValueByKey(\r\n prod.ExtensionProperties,\r\n this._manufacturerCodeExtensionPropertyKey,\r\n CommercePropertyValueEnum.string\r\n );\r\n return (mfrCodeVal as string) || '';\r\n } else if (products && products.length > 1) {\r\n // 6273 - Auto select KOH when products returned are only MTD or KOH manufacturers\r\n const onlyKohOrMtd = products.every(\r\n p =>\r\n mtdConstant ===\r\n this._getExtensionPropertyValueByKey(\r\n p.ExtensionProperties,\r\n this._manufacturerCodeExtensionPropertyKey,\r\n CommercePropertyValueEnum.string\r\n ) ||\r\n kohConstant ===\r\n this._getExtensionPropertyValueByKey(\r\n p.ExtensionProperties,\r\n this._manufacturerCodeExtensionPropertyKey,\r\n CommercePropertyValueEnum.string\r\n )\r\n );\r\n return onlyKohOrMtd ? kohConstant : '';\r\n }\r\n return '';\r\n }\r\n\r\n /**\r\n * Renders the quick order table\r\n * @private\r\n */\r\n private _renderTable() {\r\n const {\r\n resources: {\r\n manufacturerCodeTableHeading,\r\n partNumberTableHeading,\r\n quantityTableHeading,\r\n itemNameHeading,\r\n priceHeading,\r\n deleteHeading,\r\n availabilityHeading\r\n }\r\n } = this.props;\r\n const rows = [\r\n manufacturerCodeTableHeading,\r\n partNumberTableHeading,\r\n quantityTableHeading,\r\n itemNameHeading,\r\n priceHeading,\r\n availabilityHeading,\r\n deleteHeading\r\n ];\r\n return (\r\n
\r\n
    \r\n
  • \r\n {rows.map((row, i) => (\r\n
    \r\n {row}\r\n
    \r\n ))}\r\n
  • \r\n {this._reorderRows().map((r, i) => (\r\n
  • \r\n {this._generateRow(r, i === this.state.rows.length - 1)}\r\n
  • \r\n ))}\r\n
  • {this._renderButtonRow()}
  • \r\n
\r\n
\r\n );\r\n }\r\n\r\n private _reorderRows() {\r\n const rows = [...this.state.rows];\r\n const errorRows = rows.filter(row => row.rowError !== RowError.None);\r\n const nonErrorRows = rows.filter(row => row.rowError === RowError.None);\r\n return [...errorRows, ...nonErrorRows];\r\n }\r\n\r\n /**\r\n * Handles removing a row\r\n * @param id id to remove\r\n * @private\r\n */\r\n private _handleRowDelete(id: number) {\r\n const rows = [...this.state.rows];\r\n const idx = rows.findIndex(r => r.id === id);\r\n if (idx > -1) {\r\n rows.splice(idx, 1);\r\n const newRowId = rows[rows.length - 1].id + 1;\r\n if (rows.length < this.props.config.defaultRows) {\r\n rows.push(this._generateEmptyRow(newRowId));\r\n }\r\n this.setState({ rows });\r\n }\r\n }\r\n\r\n /**\r\n * Generates an empty row\r\n * @param id id to initialize row with\r\n * @private\r\n */\r\n private _generateEmptyRow(id: number) {\r\n return {\r\n id,\r\n value: '',\r\n quantity: '1',\r\n product: null,\r\n availableProducts: [],\r\n rowError: RowError.None,\r\n manufacturerCode: '',\r\n advancedNotes: []\r\n };\r\n }\r\n\r\n /**\r\n * Updates the product in a row\r\n * @param id id of row to update\r\n * @param products product to add to row\r\n * @private\r\n */\r\n private _updateRowProduct(id: number, products: SimpleProductExt[], notes: IAdvancedNoteEntity[], searchText: string) {\r\n const rows = [...this.state.rows];\r\n const idx = rows.findIndex(row => row.id === id);\r\n const manufacturerCode = this._getManufacturerCodeForRow(products);\r\n rows[idx] = this._generateRowData(products || [], rows[idx].id, manufacturerCode, searchText, notes, true, 1);\r\n\r\n this.setState({ rows });\r\n }\r\n\r\n private _updateRowErrorState(row: IEveQuickOrderRowData): RowError {\r\n const {\r\n config: { maxQuantity }\r\n } = this.props;\r\n const qty = parseInt(row.quantity, 10);\r\n let rowError: RowError = RowError.None;\r\n if (row.value && !row.product) {\r\n rowError = RowError.ProductNotFound;\r\n } else if (qty === 0 || Number.isNaN(qty) || qty < 1 || qty > (maxQuantity || 1000)) {\r\n rowError = RowError.InvalidQuantity;\r\n } else if (row.product?.IsEligible === false) {\r\n rowError = RowError.NotEligbile;\r\n }\r\n return rowError;\r\n }\r\n\r\n /**\r\n * Updates value or quantity of row\r\n * @param id id of row to update\r\n * @param value value to update\r\n * @param quantity quantity to update\r\n * @param manufacturerCode Selected manufacturer code\r\n * @private\r\n */\r\n private _updateRowValue(id: number, value: string, quantity: string, manufacturerCode: string) {\r\n const rows = [...this.state.rows];\r\n const idx = rows.findIndex(row => row.id === id);\r\n if (rows[idx].value !== value) {\r\n this._getProductByRowQuery(id, value, manufacturerCode);\r\n }\r\n if (rows[idx].quantity !== quantity) {\r\n rows[idx].quantity = quantity;\r\n rows[idx].rowError = this._updateRowErrorState(rows[idx]);\r\n }\r\n if (rows[idx].manufacturerCode !== manufacturerCode) {\r\n rows[idx].manufacturerCode = manufacturerCode;\r\n rows[idx].rowError = this._updateRowErrorState(rows[idx]);\r\n if (rows[idx].availableProducts.length > 1) {\r\n const foundProduct = this._getProductManufacturerById(manufacturerCode, rows[idx].availableProducts);\r\n rows[idx].product = foundProduct;\r\n rows[idx].rowError = this._updateRowErrorState(rows[idx]);\r\n } else if (rows[idx].value !== '') {\r\n this._getProductByRowQuery(id, value, manufacturerCode);\r\n }\r\n }\r\n rows[idx].value = value;\r\n rows[idx].quantity = quantity;\r\n rows[idx].manufacturerCode = manufacturerCode;\r\n this.setState({ rows });\r\n }\r\n\r\n private _getProductManufacturerById(mfrCode: string, products: SimpleProductExt[]) {\r\n let _product = products[0];\r\n products.forEach(pr => {\r\n if (pr.ItemId!.includes(mfrCode)) {\r\n _product = pr;\r\n }\r\n });\r\n return _product;\r\n }\r\n\r\n /**\r\n * Calls the api when a value is updated\r\n * @param id id of row to update\r\n * @param searchText text to search for\r\n * @param manufacturerCode\r\n * @private\r\n */\r\n private _getProductByRowQuery(id: number, searchText: string, manufacturerCode: string) {\r\n // 6297 - Made the searchText length check that it is greater than or equal to the minimum query length so that it makes more sense to the user in site builder.\r\n if (searchText.length > (this.props.config.minQueryLength || this._defaultMinQueryLength)) {\r\n let textToSearch = searchText;\r\n if (manufacturerCode) {\r\n textToSearch = manufacturerCode + textToSearch;\r\n }\r\n this.state.debounce({ searchText: [textToSearch], id });\r\n }\r\n }\r\n\r\n /**\r\n * Adds two blank rows\r\n * @private\r\n */\r\n private _addTwoRows() {\r\n const rows = [...this.state.rows];\r\n const newRowId = rows[rows.length - 1].id + 1;\r\n rows.push(this._generateEmptyRow(newRowId));\r\n rows.push(this._generateEmptyRow(newRowId + 1));\r\n this.setState({ rows });\r\n }\r\n\r\n /**\r\n * To handle paragraph change.\r\n * @param event - To handle text change event.\r\n * @name - HandleParagraphChange\r\n * @public\r\n * @returns - The Paragraph value.\r\n */\r\n public handleGuideTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.orderUploadGuideText = event.target.value);\r\n\r\n public render(): JSX.Element | null {\r\n const { orderUploadGuideText } = this.props.config;\r\n const guideText = orderUploadGuideText && (\r\n \r\n );\r\n\r\n const viewProps: IEveQuickOrderViewProps = {\r\n ...this.props,\r\n handleUploadedItems: this._handleUploadedItems,\r\n quickOrderTable: this._renderTable(),\r\n quickOrderHeader: this._renderHeading(),\r\n quickOrderWrapper: {\r\n className: classNames('eve-quick-order'),\r\n tag: 'div',\r\n moduleProps: this.props\r\n },\r\n orderUploadWrapper: {\r\n tag: 'div',\r\n className: 'qo-order-upload-wrapper'\r\n },\r\n guideText: guideText\r\n };\r\n return this.props.renderView(viewProps);\r\n }\r\n}\r\n\r\nexport default EveQuickOrder;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IImageSettings, Image, RichTextComponent } from '@msdyn365-commerce/core';\r\nimport { IWriteReviewData, IWriteReviewViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IWriteReviewProps } from '../definition-extensions/write-review.ext.props.autogenerated';\r\n\r\n/**\r\n * Render Product Image.\r\n * @param props - WriteReview ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst renderProductImage = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\r\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\r\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\r\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\r\n },\r\n lazyload: true,\r\n cropFocalRegion: true\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Product Description.\r\n * @param props - WriteReview ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst renderProductDescription = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\r\n const product = props.data.product.result;\r\n return (\r\n \r\n
\r\n {renderProductImage(props)}\r\n
\r\n
\r\n
\r\n {product?.Name}\r\n
\r\n
\r\n {product?.Name}\r\n
\r\n
\r\n {product?.ItemId}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Create Write Review Modal.\r\n * @param props - WriteReview ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst createReviewModal = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\r\n const { resources, moduleProps, reviewModal } = props;\r\n\r\n return (\r\n \r\n {reviewModal.modalHeader}\r\n \r\n \r\n \r\n {renderProductDescription(props)}\r\n \r\n
\r\n {resources.selectRatingLabel}\r\n
\r\n {reviewModal.rating}\r\n
\r\n
\r\n \r\n {resources.reviewTitleLabel}\r\n {reviewModal.titleInput}\r\n \r\n \r\n {resources.reviewTextLabel}\r\n {reviewModal.textInput}\r\n \r\n {reviewModal.privacyPolicyUrl}\r\n {reviewModal.error}\r\n
\r\n
\r\n \r\n {reviewModal.submitButton}\r\n {reviewModal.cancelButton}\r\n \r\n
\r\n );\r\n};\r\n\r\n/**\r\n * WriteReview view.\r\n * @param props - WriteReview ViewProps.\r\n * @returns WriteReview view module.\r\n */\r\nconst WriteReviewView: React.FC> = props => {\r\n const { config, heading, signInMessage, signInButton, modalToggle, moduleProps } = props;\r\n const { paragraph } = config;\r\n const isAuthenticated = props.context.request.user.isAuthenticated;\r\n const text = paragraph && ();\r\n\r\n return (\r\n \r\n {heading}\r\n {!isAuthenticated ? <>\r\n {signInMessage}\r\n {signInButton}\r\n : <>\r\n {text}\r\n {modalToggle}\r\n {createReviewModal(props)}\r\n }\r\n \r\n );\r\n};\r\n\r\nexport default WriteReviewView;\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 { IEveQuickOrderViewProps } from './eve-quick-order';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nexport default (props: IEveQuickOrderViewProps) => {\r\n const {\r\n quickOrderHeader,\r\n quickOrderTable,\r\n quickOrderWrapper,\r\n orderUploadWrapper,\r\n guideText,\r\n handleUploadedItems: onUploadItems,\r\n slots: { orderUpload }\r\n } = props;\r\n\r\n const _renderGuide = (): JSX.Element | null => {\r\n const {\r\n config: { orderUploadHelpLink, orderUploadHelpLinkDisplayText }\r\n } = props;\r\n const className = 'eve-quick-order-order-upload__guide';\r\n return (\r\n
\r\n
{guideText}
\r\n {orderUploadHelpLink && (\r\n \r\n )}\r\n
\r\n );\r\n };\r\n\r\n return (\r\n \r\n {quickOrderHeader}\r\n {quickOrderTable}\r\n \r\n
\r\n
{_renderGuide()}
\r\n
\r\n {orderUpload && React.cloneElement(orderUpload[0] as React.ReactElement, { onUploadItems })}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../interactive-feature-item.props.autogenerated';\n\n/**\n * Interactive Feature links.\n */\nexport interface IInteractiveFeatureLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * IInteractiveFeatureLinks component.\n * @extends {React.PureComponent}\n */\nexport class InteractiveFeatureCollectionLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && ArrayExtensions.hasElements(editableLinks) ? (\n \n ) : null}\n
\n );\n }\n\n /**\n * IInteractiveFeatureLinks component.\n * @param linkdata - Link data.\n * @returns Editable links.\n */\n private readonly _mapEditableLinks = (linkdata?: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || !ArrayExtensions.hasElements(linkdata)) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n for (const link of linkdata) {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-interactive-feature-collection__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n }\n\n return editableLinks;\n };\n}\nexport default InteractiveFeatureCollectionLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { InteractiveFeatureCollectionLinks } from './components';\nimport { IHeadingData, IInteractiveFeatureItemProps } from './interactive-feature-item.props.autogenerated';\n\n/**\n * Interactive Feature Item view props.\n */\nexport interface IInteractiveFeatureItemViewProps extends IInteractiveFeatureItemProps<{}> {\n title: React.ReactNode;\n paragraph: React.ReactNode;\n image: React.ReactNode;\n links: React.ReactNode;\n featureItem: IModuleProps;\n isMosaic: boolean;\n indexItem?: number;\n itemCounter?: number;\n\n interactiveFeatureCollectionCarouselContainer: INodeProps;\n interactiveFeatureCollectionCarouselImage: INodeProps;\n interactiveFeatureCollectionCarouselContent: INodeProps;\n\n interactiveFeatureCollectionMosaicContainer: INodeProps;\n interactiveFeatureCollectionMosaicImage: INodeProps;\n interactiveFeatureCollectionMosaicDetails: INodeProps;\n}\n\n/**\n * Interactive Feature Item Extented props.\n */\nexport interface IInteractiveFeatureItemExtentedProps extends IInteractiveFeatureItemProps<{}> {\n isMosaic?: boolean;\n indexItem?: number;\n itemCounter?: number;\n}\n\n/**\n *\n * InteractiveFeatureItem component.\n * @extends {React.PureComponent}\n */\nexport class InteractiveFeatureItem extends React.PureComponent {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: IInteractiveFeatureItemProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { indexItem, itemCounter, isMosaic } = this.props;\n const { heading, paragraph, image, links } = this.props.config;\n const featureItemLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n\n const viewProps = {\n ...this.props,\n indexItem,\n itemCounter,\n isMosaic: isMosaic ? isMosaic : false,\n title: this._createHeading(heading),\n paragraph: this._createParagraph(paragraph),\n image: this._renderImage(image),\n links: featureItemLinks,\n featureItem: {\n moduleProps: this.props,\n className: ''\n },\n interactiveFeatureCollectionCarouselContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__container'\n },\n interactiveFeatureCollectionCarouselImage: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__image'\n },\n interactiveFeatureCollectionCarouselContent: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__heading'\n },\n interactiveFeatureCollectionMosaicContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-mosaic',\n 'aria-label': heading?.text,\n tabindex: '0',\n role: 'group'\n },\n interactiveFeatureCollectionMosaicImage: {\n className: 'ms-interactive-feature-collection-mosaic__image'\n },\n interactiveFeatureCollectionMosaicDetails: {\n className: 'ms-interactive-feature-collection-mosaic__details'\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles heading content change event.\n * @param event - Content editable event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param event - Content editable event.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.links?.[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n private _createParagraph(text?: Msdyn365.RichText): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createHeading(heading?: IHeadingData): React.ReactNode | null {\n if (!heading) {\n return null;\n }\n if (StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _renderImage(item?: Msdyn365.IImageData, isAriaHiddenAttribute?: boolean): React.ReactNode | null {\n // Even if image.src is null, we render the Image component to render the fallback SVG\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=328&h=459&m=6', w: 328, h: 459 },\n sm: { q: 'w=348&h=487&m=6', w: 348, h: 487 },\n md: { q: 'w=650&h=366&m=6', w: 650, h: 366 },\n lg: { q: 'w=650&h=366&m=6', w: 650, h: 366 },\n xl: { q: 'w=650&h=366&m=6', w: 650, h: 366 }\n },\n lazyload: true\n };\n const verifiedImageSettings = item?.imageSettings?.viewports ? item.imageSettings : defaultImageSettings;\n return (\n \n );\n }\n}\n\nexport default InteractiveFeatureItem;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n ISignUpEmailVerification,\r\n ISignUpGivenNameVerification,\r\n ISignUpItem,\r\n ISignUpLoading,\r\n ISignUpLocalAccount,\r\n ISignUpSurnameVerification,\r\n ISignUpViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-up/./sign-up';\r\n\r\nconst SignUpItem: React.FC = ({\r\n wrapper,\r\n label,\r\n errorMessage,\r\n input\r\n}) => {\r\n\r\n return (\r\n \r\n {label}\r\n {errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst SignUpEmailVerification: React.FC = ({\r\n email,\r\n buttonWrapper,\r\n buttons,\r\n successMessage,\r\n errorMessage\r\n}) => {\r\n\r\n return (\r\n <>\r\n \r\n {successMessage && successMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n \r\n {buttons && buttons.map((button: React.ReactNode) => {\r\n return (\r\n <>\r\n {button}\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Handles validation of sign-up givenName.\r\n * @param event - Content editable event.\r\n * @param event.givenName - Event Given Name.\r\n * @param event.errorMessage - Event Error Message.\r\n * @returns - Error Message for Given Name.\r\n */\r\nconst SignUpGivenNameVerificationComponent: React.FC = ({\r\n givenName,\r\n errorMessage\r\n}) => {\r\n return (\r\n <>\r\n \r\n {errorMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Handles validation of signUp surname.\r\n * @param event - Content editable event.\r\n * @param event.surname - Event surname.\r\n * @param event.errorMessage - Event Error Message.\r\n * @returns - Error Message for surname.\r\n */\r\nconst SignUpSurnameVerificationComponent: React.FC = ({\r\n surname,\r\n errorMessage\r\n}) => {\r\n return (\r\n <>\r\n \r\n {errorMessage.map((message: React.ReactNode) => {\r\n return (\r\n <>\r\n {message}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst LocalAccount: React.FC = ({\r\n localAccount,\r\n items,\r\n emailVerification,\r\n givenNameVerification,\r\n surnameVerification,\r\n buttons,\r\n errorMessage,\r\n disclaimer\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: ISignUpItem) => {\r\n if (item.key === 'email' && emailVerification.isRequired) {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n if (item.key === 'givenName' && givenNameVerification.isRequired) {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n if (item.key === 'surname' && surnameVerification.isRequired) {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n return (\r\n\r\n \r\n );\r\n })}\r\n {errorMessage && errorMessage.map((error: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {error}\r\n \r\n );\r\n })}\r\n {buttons && buttons.map((button: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {button}\r\n \r\n );\r\n })}\r\n {disclaimer}\r\n \r\n );\r\n};\r\n\r\nconst SignUpLoading: React.FC = ({\r\n modal,\r\n modalBody,\r\n icon,\r\n message\r\n}) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignUpView: React.FC = props => {\r\n\r\n const {\r\n signUp,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n heading,\r\n signUpLocalAccount\r\n } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n {heading}\r\n {LocalAccount(signUpLocalAccount)}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default SignUpView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n getTelemetryObject,\n IComponentNodeProps,\n IModuleProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { IInteractiveFeatureCollectionProps } from './interactive-feature-collection.props.autogenerated';\n\n/**\n * Interactive Feature Collection view props.\n */\nexport interface IInteractiveFeatureCollectionViewProps extends IInteractiveFeatureCollectionProps<{}> {\n title: React.ReactNode;\n interactiveFeatureCollectionHeading: INodeProps;\n interactiveFeatureCollectionContainer: IModuleProps;\n interactiveFeatureCollectionDesktopContainer: INodeProps;\n interactiveFeatureCollectionDesktopItems: React.ReactNode[];\n interactiveFeatureCollectionMobileContainer: INodeProps;\n interactiveFeatureCollectionMobileItems: React.ReactNode[];\n singleSlideCarouselComponentProps: INodeProps;\n singleSlideCarouselItemContainer: INodeProps;\n}\n\n/**\n *\n * InteractiveFeatureCollection component.\n * @extends {React.PureComponent>}\n */\nexport class InteractiveFeatureCollection extends React.PureComponent> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n private static _getFeatureItem(item: React.ReactNode, index: number, itemsCounter: number): React.ReactNode {\n const keyIndex = `interactive-feature-mosaic-item__${index}`;\n return (\n \n {React.cloneElement(item as React.ReactElement, { indexItem: index, itemCounter: itemsCounter, isMosaic: true })}\n \n );\n }\n\n public constructor(props: IInteractiveFeatureCollectionProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const interactiveItems = this.props.slots && this.props.slots.interactiveFeatureItems;\n const itemsFeatureCounter = interactiveItems && interactiveItems.length;\n const singleSlideCarouselComponentProps: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n const initItemsFeatureCounter = 0;\n const createHeading = title && (\n \n );\n const viewProps = {\n ...this.props,\n title: createHeading,\n interactiveFeatureCollectionHeading: {\n className: 'ms-interactive-feature-collection__heading'\n },\n interactiveFeatureCollectionContainer: {\n moduleProps: this.props,\n className: classnames('ms-interactive-feature-collection', className)\n },\n interactiveFeatureCollectionDesktopContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-desktop'\n },\n interactiveFeatureCollectionMobileContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-mobile'\n },\n singleSlideCarouselComponentProps,\n singleSlideCarouselItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel',\n role: 'listitem'\n },\n interactiveFeatureCollectionMobileItems: this.props.slots.interactiveFeatureItems,\n interactiveFeatureCollectionDesktopItems:\n itemsFeatureCounter > initItemsFeatureCounter &&\n interactiveItems.map((item: React.ReactNode, index: number) =>\n InteractiveFeatureCollection._getFeatureItem(item, index, itemsFeatureCounter)\n )\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * To handle text change.\n * @param event - To handle text change event.\n * @name - HandleTextChange\n * @public\n * @returns - The Text value.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.title!.text = event.target.value);\n}\n\nexport default InteractiveFeatureCollection;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport { SalesInvoice, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { getSimpleProductsAction, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport * as React from 'react';\r\n\r\nimport { IInvoiceDetailsViewProps } from '@msdyn365-commerce-modules/invoice-details/src/modules/invoice-details/./invoice-details';\r\nimport { InvoiceDetailsProductsComponent, InvoiceDetailsModel } from './components/invoice-details-products.component';\r\n\r\n\r\n\r\nexport const InvoiceDetailsView: React.FC = props => {\r\n const {\r\n config,\r\n header,\r\n /*products,*/\r\n paymentDetails,\r\n payInvoiceError,\r\n context,\r\n resources,\r\n typeName\r\n } = props;\r\n const baseClassName: string = 'msc-invoice-details';\r\n const [invoiceDetails, setInvoiceDetails] = React.useState();\r\n const [products, setProducts] = React.useState([]);\r\n\r\n const getInvoiceDetails = async (): Promise => {\r\n const invoice = await props.data.invoice;\r\n const invDetails = await props.data.invoiceDetails;\r\n const invoiceDetailsModel = new InvoiceDetailsModel(invoice, invDetails, products);\r\n setInvoiceDetails(invoiceDetailsModel);\r\n return invDetails;\r\n };\r\n\r\n const getProducts = async (channelId?: number): Promise => {\r\n const invDetails = await getInvoiceDetails();\r\n const invoiceLines = invDetails.SalesInvoiceLine || [];\r\n const productInputs = invoiceLines.filter(product => product.RecordId).map(product => new ProductInput(\r\n product.RecordId!, context.request.apiSettings, channelId, undefined, context.actionContext.requestContext));\r\n const simpleProductsRes = await getSimpleProductsAction(productInputs, context.actionContext);\r\n setProducts(simpleProductsRes);\r\n return getSimpleProductsAction(productInputs, context.actionContext);\r\n }\r\n\r\n const renderProducts = (): JSX.Element | null => {\r\n const { imageSettings } = config;\r\n\r\n if (!invoiceDetails) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n React.useEffect(() => {\r\n void getProducts();\r\n }, []);\r\n \r\n return (\r\n \r\n {header}\r\n {/* {products} */}\r\n {renderProducts()}\r\n {paymentDetails}\r\n {payInvoiceError}\r\n \r\n );\r\n};\r\n\r\nexport default InvoiceDetailsView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n IAccountPreference, IAccountPreferences, IAccountProfileItem, IAccountProfileViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/account-profile/./account-profile';\r\n\r\nconst AccountPreferencesSection: React.FC = ({\r\n accountPreferences,\r\n heading,\r\n personalization,\r\n extraPreferences\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n \r\n {\r\n extraPreferences && extraPreferences.map((preferenceSecton, index) => {\r\n return ;\r\n })\r\n }\r\n \r\n );\r\n};\r\n\r\nconst AccountPreferenceSection: React.FC = ({\r\n accountPreference,\r\n heading,\r\n description,\r\n buttonWrapper,\r\n buttonYesText,\r\n button,\r\n buttonNoText\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {description}\r\n \r\n {buttonNoText}\r\n {button}\r\n {buttonYesText}\r\n \r\n \r\n );\r\n};\r\n\r\nconst AccountProfileSection: React.FC = ({\r\n AccountProfileItem,\r\n heading,\r\n links,\r\n description\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {description}\r\n {/*{links}*/}\r\n \r\n );\r\n};\r\n\r\nconst AccountProfileView: React.FC = props => {\r\n const { AccountProfile, accountProfileWrapper, heading, emailSection, nameSection, preferenceSection, customerAttributesWrapper, customerAttributesSection } = props;\r\n\r\n return (\r\n \r\n {accountProfileWrapper && (\r\n {heading}\r\n \r\n \r\n \r\n \r\n )}\r\n {customerAttributesWrapper && (\r\n {customerAttributesSection}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default AccountProfileView;\r\n","export enum SupersessionKey {\r\n SupersededId = 'superseded-from-id',\r\n SupersededName = 'superseded-from-name',\r\n Inventory = 'inventory'\r\n}\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IMapData } from './map.data';\nimport { IMapProps, IPushpinOptionsData } from './map.props.autogenerated';\n\n/**\n * Header Interface.\n */\nexport interface IHeader {\n headerProps: INodeProps;\n heading: React.ReactNode;\n}\n\n/**\n * MapViewProps Interface.\n */\nexport interface IMapViewProps extends IMapProps {\n ModuleProps: IModuleProps;\n Header: IHeader;\n MapProps: INodeProps;\n Map: Microsoft.Maps.Map | undefined;\n}\n\n/**\n *\n * Map component.\n * @extends {React.Component>}\n */\n@observer\nclass Map extends React.PureComponent> {\n @observable public map: Microsoft.Maps.Map | undefined;\n\n private readonly mapRef: React.RefObject = React.createRef();\n\n public constructor(props: IMapProps) {\n super(props);\n }\n\n public componentDidMount(): void {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n }\n } = this.props;\n\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n this._initMap();\n this._updateMap();\n }\n\n when(\n () => !!this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded,\n () => {\n this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded(true);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\n key: channel?.BingMapsApiKey,\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n });\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n () => {\n this._initMap();\n }\n );\n\n reaction(\n () => {\n return [\n this.props.data.storeSelectorStateManager.result?.context?.orgUnitStoreInformation,\n this.props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\n this.map\n ];\n },\n () => {\n this._updateMap();\n }\n );\n }\n\n public render(): JSX.Element | null {\n const {\n config: { heading, className },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const shouldDisplayMap = storeSelectorStateManager?.listMapViewState.displayMap;\n\n const viewProps: IMapViewProps = {\n ...this.props,\n ModuleProps: {\n tag: 'div',\n moduleProps: this.props,\n className: classname('ms-map', { show: shouldDisplayMap }, className)\n },\n Header: {\n headerProps: { className: 'ms-map__header' },\n heading: heading?.text && (\n \n )\n },\n MapProps: {\n tag: 'div',\n className: 'ms-map__body',\n ref: this.mapRef\n },\n Map: this.map\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Method to be called on heading change.\n * @param event -Content Edit Event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Initialize the map.\n */\n private readonly _initMap = () => {\n const {\n context: {\n actionContext: {\n requestContext: { channel }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.map = new Microsoft.Maps.Map(this.mapRef.current as HTMLElement, {\n credentials: channel?.BingMapsApiKey,\n pushpinAccessible: true\n });\n Microsoft.Maps.Events.addHandler(this.map, 'click', async () => {\n await storeSelectorStateManager.setSelectedStoreLocationId(undefined);\n });\n }\n };\n\n /**\n * Update the map.\n */\n private readonly _updateMap = () => {\n const pushpinOptions = this.props.config.pushpinOptions;\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager?.result;\n const orgUnitStoreInformation = storeSelectorStateManager?.context?.orgUnitStoreInformation;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n\n if (this.map && orgUnitStoreInformation) {\n let mapLocation: OrgUnitLocation | undefined;\n this.map.entities.clear();\n const pushpins: Microsoft.Maps.IPrimitive[] = [];\n\n const storeLocationList = orgUnitStoreInformation.filter(store => store.OrgUnitAvailability !== undefined);\n\n for (const [index, unitStoreInfo] of storeLocationList.entries()) {\n const storeLocation = unitStoreInfo.OrgUnitAvailability?.OrgUnitLocation;\n\n if (storeLocation?.Latitude && storeLocation.Longitude) {\n const isSelectedLocation = selectedStoreLocationId === storeLocation.OrgUnitNumber;\n const options = this._getPushpinOptions(isSelectedLocation, index, pushpinOptions);\n const pushpin = new Microsoft.Maps.Pushpin(\n new Microsoft.Maps.Location(storeLocation.Latitude, storeLocation.Longitude),\n options\n );\n\n Microsoft.Maps.Events.addHandler(pushpin, 'click', () => {\n this.handleClickEvent(storeLocation.OrgUnitNumber);\n });\n isSelectedLocation ? pushpins.unshift(pushpin) : pushpins.push(pushpin);\n\n if (isSelectedLocation) {\n mapLocation = storeLocation;\n }\n }\n }\n\n if (mapLocation) {\n const currentLocation = new Microsoft.Maps.Location(mapLocation.Latitude, mapLocation.Longitude);\n this.map.setView({ center: currentLocation });\n } else {\n // Create a LocationRect from array of pushpins and set the map view.\n this.map.setView({\n bounds: Microsoft.Maps.LocationRect.fromShapes(pushpins)\n });\n }\n\n this.map.setOptions({ pushpinAccessible: true });\n this.map.entities.push(pushpins);\n }\n };\n\n /**\n * Handle click event.\n * @param orgUnitNumber - Organization unit number.\n */\n private readonly handleClickEvent = (orgUnitNumber: string | undefined): void => {\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\n storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\n if (orgUnitNumber) {\n setTimeout(() => {\n storeSelectorStateManager?.setSelectedStoreLocationId(orgUnitNumber);\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- Time out.\n }, 500);\n }\n };\n\n /**\n * Get the pushpin option.\n * @param isSelectedLocation - Is selected location.\n * @param index - Index.\n * @param pushpinOptions - PushpinOptions.\n * @returns - The pushpin options.\n */\n private readonly _getPushpinOptions = (isSelectedLocation: boolean, index: number, pushpinOptions?: IPushpinOptionsData) => {\n const text = pushpinOptions?.showIndex ? (index + 1).toString() : undefined;\n\n const size = pushpinOptions?.size || 1;\n const color = isSelectedLocation ? pushpinOptions?.selectionColor || pushpinOptions?.color : pushpinOptions?.color;\n const icon = this._getSvgIcon(size, color, text);\n\n return {\n // Fallback if icon doesn't render properly\n color: isSelectedLocation ? pushpinOptions?.selectionColor : pushpinOptions?.color,\n icon\n };\n };\n\n private readonly _getSvgIcon = (size: number, color?: string, text?: string) => {\n const baseValue: number = 32;\n return `\n \n ${text ? `${text}` : ''}\n `;\n };\n}\n\nexport default Map;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IHeader, IMapViewProps } from './map';\n\n/**\n * Render the heading.\n * @param param0 -- Heading props.\n * @param param0.headerProps -- Heading Props.\n * @param param0.heading -- Heading Node.\n * @returns -- Returns the node.\n */\nconst MapHeader: React.FC = ({ headerProps, heading }) => {heading};\n\n/**\n * Renders the map view props.\n * @param param0 -- Map view props.\n * @param param0.ModuleProps -- Module props.\n * @param param0.Header -- Header props.\n * @param param0.MapProps -- Map props.\n * @returns -- Returns the map module.\n */\nconst MapView: React.FC = ({ ModuleProps, Header, MapProps }) => (\n \n {Header && }\n \n \n);\n\nexport default MapView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { ICoreContext, IDateFormatOptions, IRequestContext } from '@msdyn365-commerce/core';\nimport { BusinessPartnerOperationRequest, BusinessPartnerOperationRequestDetails } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n IDataTableProps,\n IHeadingsProperty,\n ITableItemProps,\n ITableRowProps,\n Table,\n TableDataType\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IB2bRequestsStatusData } from '../b2b-requests-status.data';\nimport { IB2bRequestsStatusProps } from '../b2b-requests-status.props.autogenerated';\n\nexport interface IB2bRequestsTableProps {\n moduleProps: IB2bRequestsStatusProps;\n isMobile: boolean;\n mobileExcludedColumns: string[];\n}\n\nexport interface IB2bRequestsTableResources {\n b2bRequestsTypeCreateProspect: string;\n b2bRequestsTypeAddUser: string;\n b2bRequestsTypeEditUser: string;\n b2bRequestsTypeDeleteUser: string;\n b2bRequestsTypeRequestAccountStatement: string;\n b2bRequestsTypeRequestInvoiceCopy: string;\n b2bRequestsTypeUnknown: string;\n b2bRequestsStatusRequested: string;\n b2bRequestsStatusProcessed: string;\n b2bRequestsStatusError: string;\n b2bRequestsNumberOfItems: string;\n b2bRequestsNumberOfItemsSingular: string;\n b2bRequestsNameDisplay: string;\n b2bRequestsPreviousText: string;\n b2bRequestsNextText: string;\n b2bRequestsUserColumn: string;\n b2bRequestsStatusColumn: string;\n b2bRequestsRequestDateColumn: string;\n b2bRequestsTypeColumn: string;\n b2bRequestsDescriptionColumn: string;\n b2bRequestsAccountStatementDetails: string;\n b2bRequestsInvoiceCopyDetails: string;\n businessUserSelectCheckBoxAriaLabelText?: string;\n sortByAscending?: string;\n sortByDescending?: string;\n}\n\nexport enum RequestsTableColumnHeader {\n Name = 'User',\n Status = 'Status',\n RequestDate = 'Request date',\n Type = 'Request type',\n Description = 'Request detail'\n}\n\nconst getCurrentUrl = (reqContext: IRequestContext): URL => {\n if (MsDyn365.isBrowser) {\n return new URL(window.location.href);\n }\n\n // NOTE: Typing on requestURL is incorrect\n if (reqContext.url.requestUrl.href) {\n return new URL(reqContext.url.requestUrl.href);\n }\n return new URL(reqContext.url.requestUrl.href);\n};\n\nconst getUserName = (request: BusinessPartnerOperationRequest, resources: IB2bRequestsTableResources) => {\n if (StringExtensions.isNullOrEmpty(request.UserFirstName)) {\n if (StringExtensions.isNullOrEmpty(request.UserLastName)) {\n return '';\n }\n\n return request.UserLastName;\n } else if (StringExtensions.isNullOrEmpty(request.UserLastName)) {\n return request.UserFirstName;\n }\n\n return resources.b2bRequestsNameDisplay.replace('{0}', request.UserFirstName!).replace('{1}', request.UserLastName!);\n};\n\nconst formatDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\n/**\n * Gets the value to display for the request details.\n * @param request - The request to parse for the details.\n * @param resources - The resources.\n * @param context - The context.\n * @returns The string to display.\n */\nconst getDetails = (request: BusinessPartnerOperationRequest, resources: IB2bRequestsTableResources, context: ICoreContext) => {\n if (!request.Details) {\n return '';\n }\n\n const requestDetails: BusinessPartnerOperationRequestDetails = request.Details;\n\n const accountStatementStartDateTime = formatDate(context, requestDetails.AccountStatementStartDateTime) || '';\n const accountStatementEndDateTime = formatDate(context, requestDetails.AccountStatementEndDateTime) || '';\n const invoiceId = requestDetails.InvoiceId ?? '';\n\n switch (request.TypeValue) {\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- workaround for not being able to use enum value\n case 5:\n if (\n !StringExtensions.isNullOrEmpty(accountStatementStartDateTime) &&\n !StringExtensions.isNullOrEmpty(accountStatementEndDateTime)\n ) {\n return resources.b2bRequestsAccountStatementDetails\n .replace('{0}', accountStatementStartDateTime)\n .replace('{1}', accountStatementEndDateTime);\n }\n\n return '';\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- workaround for not being able to use enum value\n case 6:\n if (!StringExtensions.isNullOrEmpty(invoiceId)) {\n return resources.b2bRequestsInvoiceCopyDetails.replace('{0}', invoiceId);\n }\n\n return '';\n default:\n return '';\n }\n};\n\nconst createTableItems = (\n operationRequests: BusinessPartnerOperationRequest[] | undefined,\n props: IB2bRequestsStatusProps\n): ITableRowProps[] => {\n if (!ArrayExtensions.hasElements(operationRequests)) {\n return [];\n }\n\n return operationRequests.map(request => {\n return {\n row: [\n {\n id: props.resources.b2bRequestsTypeColumn,\n type: TableDataType.Text,\n value: getDisplayFriendlyTypeValue(request.TypeValue ?? 0, props.resources)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsRequestDateColumn,\n type: TableDataType.Text,\n value: formatDate(props.context, request.CreatedDateTime)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsDescriptionColumn,\n type: TableDataType.Text,\n value: getDetails(request, props.resources, props.context)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsUserColumn,\n type: TableDataType.Text,\n value: getUserName(request, props.resources)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsStatusColumn,\n type: TableDataType.Text,\n value: getDisplayFriendlyStatusValue(request.StatusValue ?? 0, props.resources)\n } as ITableItemProps\n ],\n isSelected: false,\n className: props.config.className\n };\n });\n};\n\nconst getDisplayFriendlyTypeValue = (typeValue: number, resources: IB2bRequestsTableResources): string => {\n switch (typeValue) {\n case 1:\n return resources.b2bRequestsTypeCreateProspect;\n case 2:\n return resources.b2bRequestsTypeAddUser;\n case 3:\n return resources.b2bRequestsTypeDeleteUser;\n case 4:\n return resources.b2bRequestsTypeEditUser;\n case 5:\n return resources.b2bRequestsTypeRequestAccountStatement;\n case 6:\n return resources.b2bRequestsTypeRequestInvoiceCopy;\n default:\n return resources.b2bRequestsTypeUnknown;\n }\n};\n\nconst getDisplayFriendlyStatusValue = (statusValue: number, resources: IB2bRequestsTableResources): string => {\n switch (statusValue) {\n case 1:\n return resources.b2bRequestsStatusProcessed;\n case 2:\n return resources.b2bRequestsStatusError;\n default:\n return resources.b2bRequestsStatusRequested;\n }\n};\n\nconst createTableProps = (tableProps: IB2bRequestsTableProps) => {\n const { context, data, resources } = tableProps.moduleProps;\n\n const tableData = createTableItems(data.operationRequests.result, tableProps.moduleProps);\n const tableHeading =\n (ArrayExtensions.hasElements(tableData) &&\n tableData[0].row\n .filter(item => {\n // Check that this is either not mobile or the column should be displayed when mobile.\n return !tableProps.isMobile || !tableProps.mobileExcludedColumns.includes(item.id);\n })\n .map(item => {\n return {\n name: item.id,\n sortable: true,\n ariaLabel: resources.columnSortAriaLabel\n } as IHeadingsProperty;\n })) ||\n [];\n\n return {\n resources: {},\n headings: tableHeading,\n rows: tableData,\n className: `${tableProps.moduleProps.config.className}__table`,\n editLinkText: '',\n deleteLinkText: '',\n viewLinkText: '',\n enableToModify: false,\n actionLinkText: '',\n showCheckBoxes: false,\n isSortable: true,\n showPagination: true,\n minifyActions: tableProps.isMobile,\n excludedColumns: tableProps.isMobile ? tableProps.mobileExcludedColumns : [],\n paginationProperty: {\n skipCount:\n context.request.query?.skip && !isNaN(Number.parseInt(context.request.query.skip, 10))\n ? Number.parseInt(context.request.query.skip, 10)\n : 0,\n itemPerPage: 10,\n prevText: resources.b2bRequestsPreviousText,\n nextText: resources.b2bRequestsNextText,\n paginationText: '',\n url: (context && getCurrentUrl(context.request).href) || ''\n },\n isSingleSelectOnly: true,\n actions: {\n onDelete: undefined,\n onEdit: undefined,\n onView: undefined\n },\n businessUserSelectCheckBoxAriaLabelText: tableProps.moduleProps.resources.businessUserSelectCheckBoxAriaLabelText,\n sortByAscending: tableProps.moduleProps.resources.sortByAscending,\n sortByDescending: tableProps.moduleProps.resources.sortByDescending\n } as IDataTableProps;\n};\n\nexport const B2bRequestsTable: React.FC = (tableProps: IB2bRequestsTableProps) => {\n return ;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { format, Heading, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport { computed } from 'mobx';\nimport * as React from 'react';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\n\nimport { IB2bRequestsStatusData } from './b2b-requests-status.data';\nimport { IB2bRequestsStatusProps, IHeadingData } from './b2b-requests-status.props.autogenerated';\nimport { B2bRequestsTable } from './components/b2b-requests-table';\n\nexport interface IB2bRequestsStatusViewProps extends IB2bRequestsStatusProps {\n b2bRequestsStatus: IModuleProps;\n heading?: React.ReactNode;\n table: React.ReactNode;\n}\n\n/**\n *\n * B2bRequestsStatus component.\n * @extends {React.PureComponent>}\n */\nclass B2bRequestsStatus extends React.PureComponent> {\n @computed get isMobile(): boolean {\n const size = isMobile({ variant: VariantType.Viewport, context: this.props.context.request });\n return size === 'xs';\n }\n\n public render(): JSX.Element | null {\n const { config } = this.props;\n\n if (!isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n return null;\n }\n\n const className = config.className || '';\n\n const viewProps = {\n ...this.props,\n b2bRequestsStatus: {\n moduleProps: this.props,\n className\n },\n heading: this.renderHeader(className, config.heading),\n table: this.renderTable()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly renderHeader = (className: string, headingData: IHeadingData): React.ReactNode => {\n const itemCount = this.props.data.operationRequests.result?.length ?? 0;\n\n return (\n
\n \n {this.getItemNumberDisplayString(itemCount)}\n
\n );\n };\n\n /**\n * Returns columns that needs to be excluded for mobile view.\n * @returns Array of column names.\n */\n private readonly _retrieveExcludedColumns = (): string[] => {\n const { resources } = this.props;\n return [resources.b2bRequestsRequestDateColumn, resources.b2bRequestsDescriptionColumn, resources.b2bRequestsUserColumn];\n };\n\n private readonly renderTable = (): React.ReactNode => {\n return (\n \n );\n };\n\n private readonly getItemNumberDisplayString = (itemCount: number): string => {\n switch (itemCount) {\n case 0:\n return '';\n case 1:\n return format(this.props.resources.b2bRequestsNumberOfItemsSingular, itemCount);\n default:\n return format(this.props.resources.b2bRequestsNumberOfItems, itemCount);\n }\n };\n}\n\nexport default B2bRequestsStatus;\n"],"sourceRoot":""}