{"version":3,"sources":["webpack:///src/modules/product-specification/components/product-specification-table-stucture.tsx?4b07","webpack:///src/modules/product-specification/product-specification.tsx?f393","webpack:///src/modules/content-block/components/additional-content.tsx?1a32","webpack:///src/modules/content-block/components/links.tsx?5056","webpack:///src/modules/content-block/content-block.tsx?8675","webpack:///./src/themes/gardner-theme-b2c/views/components/carticon.component.tsx?0bc6","webpack:///./src/themes/gardner-theme/views/components/carticon.component.tsx?6233","webpack:///src/modules/fabrikam/views/cart.view.tsx?8115","webpack:///src/modules/product-specification/product-specification.view.tsx?bfbe","webpack:///src/index.ts?c6ae","webpack:///./src/themes/gardner-theme-b2c/views/components/search.categorysuggest.tsx?f80a","webpack:///./src/themes/gardner-theme-b2c/views/components/search.mobile.empty.tsx?4f12","webpack:///./src/themes/gardner-theme-b2c/views/components/search.form.tsx?fc01","webpack:///./src/themes/gardner-theme-b2c/views/components/search.keywordsuggest.tsx?3620","webpack:///./src/themes/gardner-theme-b2c/views/components/search.productsuggest.tsx?5486","webpack:///./src/themes/gardner-theme-b2c/views/components/search.arisuggest.tsx?5a62","webpack:///./src/themes/gardner-theme-b2c/views/search.view.tsx?3456","webpack:///./src/modules/eve-business-sign-up/eve-business-sign-up.view.tsx?dc32","webpack:///./src/themes/gardner-theme/views/components/search.categorysuggest.tsx?89d3","webpack:///./src/themes/gardner-theme/views/components/search.mobile.empty.tsx?dd58","webpack:///./src/themes/gardner-theme/views/components/search.form.tsx?16e9","webpack:///./src/themes/gardner-theme/views/components/search.keywordsuggest.tsx?455e","webpack:///./src/themes/gardner-theme/views/components/search.productsuggest.tsx?daef","webpack:///./src/themes/gardner-theme/views/components/search.arisuggest.tsx?77c0","webpack:///./src/themes/gardner-theme/views/search.view.tsx?13f6","webpack:///src/modules/organization-users-tile/organization-users-tile.view.tsx?d92a","webpack:///./src/utils/getAriModelDetailUrl.ts?ac81","webpack:///./src/modules/eve-business-sign-up/components/sign-up-button.tsx?e34c","webpack:///./src/modules/eve-business-sign-up/components/sign-up-error.tsx?b1ad","webpack:///./src/modules/eve-business-sign-up/components/sign-up-input.tsx?a0aa","webpack:///./src/modules/eve-business-sign-up/components/sign-up-label.tsx?2e32","webpack:///./src/modules/eve-business-sign-up/eve-business-sign-up.tsx?1300","webpack:///src/modules/content-block/content-block.view.tsx?a86e","webpack:///src/modules/organization-users-tile/components/account-organization-users-tile-description.tsx?8d2f","webpack:///src/modules/organization-users-tile/components/account-organization-users-tile-links.tsx?2a03","webpack:///src/modules/organization-users-tile/organization-users-tile.tsx?9c60","webpack:///src/modules/adventureworks/views/media-gallery.view.tsx?e2f6"],"names":["ProductSpecificationTableRow","_ref","productName","cellData","className","React","scope","dangerouslySetInnerHTML","getRichTextHtml","ProductSpecification","constructor","props","super","handleHeadingChange","event","this","config","heading","text","target","value","_toggle","drawerListId","state","setState","isDrawerOpen","undefined","isAdditionalMediaDrawerOpen","context","data","telemetry","catalogId","Msdyn365","request","validateCatalogId","reaction","product","result","RecordId","actionInput","AttributesForSelectedVariantInput","actionContext","requestContext","apiSettings","channelId","getAttributesForSelectedVariant","catch","error","message","debug","shouldComponentUpdate","nextProps","nextState","render","_heading$tag","productSpecificationData","length","isAccrodion","displayStyle","viewProps","_objectSpread","handleText","moduleProps","classnames","ProductSpecificationTableProps","tag","ProductSpecificationTableBodyProps","title","editProps","onEdit","productSpecificationResult","_createDrawerBody","_createTableBody","renderView","content","_this$props$context$r","_this$props$data$addi","tableRows","map","index","_renderProductCell","key","Name","app","OmniChannelMedia","additionalMediaLocations","push","_createAdditionalMediaDrawer","_this$props$context$r2","_this$props$data$addi2","accordionItemContainer","drawers","_product$Name","Module","Object","assign","Drawer","collapseProps","timeout","isOpen","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","onToggle","resources","additionalDownloadsText","prevState","mediaLocation","Uri","href","download","AltText","DataTypeValue","_renderCurrencyCell","_renderDateTimeCell","_renderDecimalCell","_renderIntegerCell","_renderTextCell","_renderTrueFalseCell","warning","CurrencyValue","CurrencyCode","_product$DateTimeOffs","DateTimeOffsetValue","toUTCString","IntegerValue","FloatValue","TextValue","BooleanValue","trueValueText","falseValueText","__decorate","observer","assembleNode","item","itemIndex","_item$links","renderHeading","additionalContentHeading","handleAdditionalTextChange","subtext","renderParagraph","additionalContentParagraphText","links","ctaLink","renderLinks","linkIndex","editableLink","ariaLabel","linkText","linkUrl","destinationUrl","openInNewTab","role","link","onTextChange","handleAdditionalLinkTextChange","additionalContentItemContainer","additionalContentItemLinks","contentBlockAdditionalContent","additionalContent","reactNodes","additionalContentNode","additionalContentItems","ContentCardLinks","_mapEditableLinks","linkdata","editableLinks","forEach","payLoad","getPayloadObject","telemetryContent","contentAction","etext","attributes","getTelemetryAttributes","btnClass","additionalProperties","onClick","onTelemetryClick","ContentBlock","getTelemetryObject","telemetryPageName","friendlyName","handleTextChange","handleParagraphChange","paragraph","handleLinkTextChange","Number","_this$props$config$im","image","imageAriaLabel","contentBlockTitle","imageProps","gridSettings","imageSettings","contentBlockLinks","ArrayExtensions","hasElements","LinksComponent","msdyn365__moduleLayout","contentBlockText","contentBlockImage","preserveImageSpace","moduleType","typeName","imagePropertyName","moduleId","id","layout","shouldSkipToMainImage","contentBlockviewProps","moduleClass","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","_getImageLink","handleAdditionalParagraphChange","handleAdditionalText","handleAdditionalParagraph","additionalContentObject","actionableRegion","CartIcon","cartLabel","cartQtyLabel","cart","cartItem","hasInvoiceLine","totalItemsInCart","qtyLabel","format","label","style","visibility","CartIconComponent","msdyn365Commerce","createComponentOverride","component","_renderPromotions","promotions","Node","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","_renderCartlines","cartLines","storeSelector","backToShoppingButton","waitingComponent","cartLoadingStatus","cartDataResult","mulitplePickUp","emailDeliveryModeCode","emptyCartText","cartLine","MsDyn365","isBrowser","toString","cartline","_renderBOPISBlock","_renderGroupBOPISBlock","addToOrderTemplate","addToWishlist","remove","onToggleBopisHandler","isBopisSelected","pickUpInStore","callbacks","toggleBopis","onChangeStoreHandler","_cartLine$data","DeliveryMode","shipInsteadDisplayText","shipToAddressDisplayText","pickItUpDisplayText","pickUpAtStoreWithLocationText","changeStoreDisplayText","TelemetryConstant","PickupInStore","puckUpinStoreAttribute","ContainerProps","orgUnitName","Button","_renderErrorBlock","errorData","errors","Wrapper","header","_renderOrderSummarylines","orderSummaryLines","OrderSummaryItems","promoCode","subtotal","shipping","otherCharge","tax","totalDiscounts","orderTotal","_renderInvoiceSummarylines","invoiceSummaryLines","invoices","giftCard","loyalty","_renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action2","_props$context$action3","cartlineId","_renderCartLinesGroupHeader","_countItems","channel","EmailDeliveryModeCode","multiplePickUpEnabled","count","_cartLine$pickUpInSto","pickUpText","shippingText","emailshippingText","payInvoicesDisplayText","groupTitle","IsInvoiceLine","StringExtensions","isNullOrEmpty","toLowerCase","_renderCartLinesGroupTitle","_cartLine$data2","countItem","reduce","_item$data","Quantity","_cartLine$pickUpInSto2","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","itemLabel","itemsLabel","suffix","deliveryOption","CartView","_props$cart","_props$context$action","_props$cart2","renderModuleAttributes","promotionOptions","CartlinesWrapper","orderSummaryHeading","OrderSummaryWrapper","invoiceSummaryLineitems","orderSummaryLineitems","OrderSummaryErrors","checkoutAsSignInUserButton","checkoutAsGuestButton","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","ProductSpecificationView","rowdata","filter","row","ObjectExtensions","isNullOrUndefined","renderCategorySuggestionsTitle","inCategoriesHeading","categoryAutoSuggestionHeading","createElement","CategorySuggestionsComponent","searchText","noResultText","isLoadingAutoSuggest","isLoadingNode","autosuggestCategory","CategorySuggest","replace","UlCategory","MobileAutoSuggestEmptyComponent","noSearchResultImage","src","Image","altText","lazyload","viewports","xs","w","h","q","renderProductNotFoundResultsImage","emptyMobileSearchTextHeading","emptyMobileSearchText","FormComponent","form","searchForm","formWrapper","isMobile","clearSearchButtonText","isSearchText","clearSearch","cancelBtn","input","renderClearButton","submitBtn","renderKeywordSuggestionsTitle","keywordsHeading","KeywordSuggestionsComponent","keywordSuggest","ulKeyword","keywordSuggestions","renderProductSuggestionsTitle","productSuggestionsHeading","productAutoSuggestionHeading","renderProductNotFoundResults","noResultContentHeadingText","noResultContentParagraphText","ProductSuggestionsComponent","productSuggest","ulProduct","productSuggestions","productSuggestionHeading","items","_item$id","LiProduct","AProduct","thumbnail","price","AriSuggestionsComponent","noResultsText","isLoading","searchResults","loadingNode","ariModelResultsHeading","Fragment","r","generateAriModelDetailUrl","Id","BrandCode","renderTitle","searchSuggestionHeading","searchTextString","concat","searchAutoSuggestionHeading","SearchView","Search","AutoSuggestAriaLabel","AutoSuggestAriaLabelText","AutoSuggest","KeywordSuggest","ProductSuggest","UlKeyword","UlProduct","autosuggestKeyword","autosuggestProduct","SearchForm","FormWrapper","topResultsCount","categorySuggestionHeading","setSearchTextString","useState","isMobilePort","setIsMobile","ariSearchResults","setAriSearchResults","ariSearchLoading","setAriSearchLoading","debouncedSearchHandler","useMemo","_debounce","search","getAriSearchResults","useEffect","cancel","propsFormInput","propsFormInputCurrent","ref","current","action","isMobileViewport","useCallback","isMobileView","variant","VariantType","Browser","window","addEventListener","async","queryResultSettings","Paging","Top","SearchModelsInput","SearchModelsAction","Models","cancelBtnAriaLabel","type","isSearchFormExpanded","BusinessSignUpItem","wrapper","errorMessage","isAddressInput","BusinesSignUpView","businessSignUp","ContainerWrapper","businessSignUpForm","buttons","disclaimer","button","_appendQueryParams","route","query","qsp","queryUrl","URL","location","searchParams","set","_generateSeeMoreUrl","searchQueryStringParameter","searchQsp","getUrlSync","OrganizationUsersTileView","OrganizationUsersTile","description","modelId","brandCode","url","indexOf","SignUpButton","disabled","SignUpError","errorClassName","GetMaxLength","maxLength","parsedMaxLength","parseInt","isNaN","SignUpInput","pattern","isRequired","onChange","fieldReference","InputType","TextArea","name","SignUpLabel","forId","htmlFor","InputID","renderInputSection","inputs","needToReset","onInputChange","showErrors","addressForm","updateAddress","fieldRequiredError","fieldInvalidError","element","_label$replace$trim","maxChars","customClass","renderFieldFeedbackMessage","fieldName","fieldPattern","invalidFieldMessage","missingFieldMessage","RegExp","test","trim","baseSignUpItem","Address","updateForm","hasError","resetAddress","splice","BusinessSignUp","_this","BusinessSignUpDefaultInputs","FirstName","Text","firstNameLabel","LastName","lastNameLabel","Email","emailAddressLabel","EmailRegex","defaultRegex","source","CompanyName","companyLabel","Department","departmentLabel","JobTitle","jobTitleLabel","Size","companySizeLabel","companyAddressLabel","Comment","commentLabel","formChildReference","moduleClassName","needsToReset","_onInputChange","newForm","formItems","isReady","_isFormReady","hasSubmitErrors","_onAddressChange","currentAddress","addressItem","find","address","addressHasErrors","showAddressErrors","currentInput","match","_onSubmit","preventDefault","firstName","_getItem","lastName","companyName","companyEmail","companyAddress","jobTitle","department","companySize","comments","newPartner","CompanySize","Comments","createProspectAsync","callerContext","_onCancel","cleanForm","isAddress","arguments","_addedReference","componentDidMount","_this$formChildRefere","focus","_renderForm","slots","signUpButtonArialabel","signUpButtonText","cancelButtonArialabel","cancelButtonText","partialAddressErrorMessage","addressSlot","successPageURL","confirmationLink","RichTextComponent","newFormFields","renderAdditionalContent","_additionalContent$ad","ContentBlockView","AccountOrganizationUsersTileDescription","AccountOrganizationUsersTileLinks","accountOrganizationUsersTileDescriptionForSingleUser","accountOrganizationUsersTileDescriptionForMultipleUsers","numUsers","users","accountOrganizationUsersTileDescription","customerInformation","IsB2bAdmin","renderThumbnailItem","ThumbnailItemContainerProps","Picture","GetEmptyThumbnailItemComponent","_props$context$app$co2","_props$config$thumbna2","fallbackImage","emptyPlaceHolderImage","placeholderImageName","_props$context$reques2","getFallbackImageUrl","ItemId","tabIndex","thumbnailImageSettings","loadFailureBehavior","imageFallbackOptimize","skipImageValidation","fallBackSrc","defaultThumbnailImageSettings","xl","cropFocalRegion","renderThumbnails","thumbnails","ThumbnailsContainerProps","SingleSlideCarouselComponentProps","Thumbnails","mediaGalleryItems","getMediaGalleryItems","lastUpdate","GetThumbnailItemComponent","imageId","modifiedActiveIndex","_props$context$app$co","_props$config$thumbna","_props$context$reques","_props$callbackToggle","_props$callbackThumbn","callbackToggle","call","callbackThumbnailClick","activeIndex","handleKeyDown","keyCode","KeyCodes","Enter","onKeyDown","shouldUseOptimizedImage","bypassHideOnFailure","fullScreenTitleText","mediaGalleryView","CarouselProps","MediaGallery","Modal"],"mappings":"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","file":"static/js/17.86b83668e3b1254fece7.chunk.js","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getRichTextHtml } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\n/**\n * Product specification table row.\n */\nexport interface IProductSpecificationTableRow {\n productName?: string;\n cellData?: React.ReactNode;\n className?: string;\n}\n\n/**\n * Product specification table row component.\n * @param props - For product specification table row.\n * @param props.productName - Product name.\n * @param props.cellData - Cell data.\n * @param props.className - Class name.\n * @returns - Returns JSX element.\n */\nexport const ProductSpecificationTableRow: React.FC = ({ productName, cellData, className }) => (\n \n \n {/* eslint-disable-next-line react/no-danger */}\n \n \n {cellData}\n \n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Drawer, IModuleProps, INodeProps, Module } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { AttributesForSelectedVariantInput, getAttributesForSelectedVariant } from '../..';\nimport { ProductSpecificationTableRow } from './components/product-specification-table-stucture';\nimport { IProductSpecificationData } from './product-specification.data';\nimport { displayStyle, IProductSpecificationProps } from './product-specification.props.autogenerated';\n\n/**\n * Maintain Drawer State.\n */\nexport interface IProductSpecificationState {\n isDrawerOpen: boolean;\n isAdditionalMediaDrawerOpen: boolean;\n drawerListId: number | undefined;\n}\n\n/**\n * Product specification view props.\n */\nexport interface IProductSpecificationViewProps extends IProductSpecificationProps<{}> {\n ProductSpecification: IModuleProps;\n ProductSpecificationTableProps: INodeProps;\n ProductSpecificationTableBodyProps: INodeProps;\n productSpecificationResult?: (JSX.Element | null)[];\n\n title?: React.ReactNode;\n isAccrodion?: boolean;\n handleText?(event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * Check for display style either accordion or table.\n */\nexport interface IProductSpecificationExtentedProps extends IProductSpecificationProps {\n displayStyle?: displayStyle;\n}\n\n/**\n *\n * ProductSpecification component.\n * @extends {React.Component>}\n */\n@observer\nclass ProductSpecification extends React.Component {\n public constructor(props: IProductSpecificationExtentedProps) {\n super(props);\n this.state = {\n isDrawerOpen: false,\n isAdditionalMediaDrawerOpen: false,\n drawerListId: undefined\n };\n }\n\n public async componentDidMount(): Promise {\n const { context, data, telemetry } = this.props;\n const catalogId = Msdyn365.getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n reaction(\n () => (data.product.result ? data.product.result.RecordId : null),\n () => {\n if (context && data.product.result) {\n const actionInput = new AttributesForSelectedVariantInput(\n data.product.result.RecordId,\n\n +context.actionContext.requestContext.apiSettings.channelId,\n data.product.result,\n catalogId\n );\n\n getAttributesForSelectedVariant(actionInput, this.props.context.actionContext).catch((error: Error) => {\n telemetry.error(error.message);\n telemetry.debug('Unable to update attributes for Product');\n telemetry.error(error.message);\n });\n }\n }\n );\n }\n\n public shouldComponentUpdate(nextProps: IProductSpecificationExtentedProps, nextState: IProductSpecificationState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n let data: IProductSpecificationData;\n try {\n data = this.props.data;\n } catch (error) {\n this.props.telemetry.error(`Something went wrong ------${error}`);\n return
{error}
;\n }\n\n if (!data.productSpecificationData.result || data.productSpecificationData.result.length <= 0) {\n this.props.telemetry.error('Product specification content is empty, module wont render.');\n return null;\n }\n\n const { heading, className } = this.props.config;\n const { productSpecificationData } = this.props.data;\n const isAccrodion = this.props.config.displayStyle === displayStyle.accordion;\n const viewProps = {\n ...this.props,\n handleText: this.handleHeadingChange,\n ProductSpecification: {\n moduleProps: this.props,\n className: classnames('ms-product-specification', className)\n },\n ProductSpecificationTableProps: isAccrodion\n ? {\n moduleProps: this.props,\n className: classnames('ms-product-specification__accordion', className)\n }\n : {\n className: classnames('ms-product-specification__table table-striped table-bordered'),\n tag: 'table'\n },\n isAccrodion,\n ProductSpecificationTableBodyProps: isAccrodion\n ? {}\n : {\n className: '',\n tag: 'tbody'\n },\n title: heading?.text && (\n \n ),\n productSpecificationResult:\n productSpecificationData.result && (isAccrodion ? this._createDrawerBody(data) : this._createTableBody(data))\n } as IProductSpecificationViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle Heading Text Change.\n * @param event - Current event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n private _createTableBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n const tableRows = content.productSpecificationData.result!.map((product, index) => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n\n if (!cellData) {\n return null;\n }\n\n return (\n <>\n \n \n );\n });\n\n if (this.props.context.request.app?.config?.OmniChannelMedia && this.props.data.additionalMediaLocations.result?.length) {\n tableRows.push(this._createAdditionalMediaDrawer());\n }\n\n return tableRows;\n }\n\n private _createDrawerBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n\n const drawers = content.productSpecificationData.result!.map(product => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n if (!cellData) {\n return null;\n }\n return (\n \n \n
{cellData}
\n \n
\n );\n });\n\n if (this.props.context.request.app?.config?.OmniChannelMedia && this.props.data.additionalMediaLocations.result?.length) {\n drawers.push(this._createAdditionalMediaDrawer());\n }\n\n return drawers;\n }\n private _createAdditionalMediaDrawer(): JSX.Element {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n\n return (\n \n {\n this.setState(prevState => ({\n ...prevState,\n isAdditionalMediaDrawerOpen: !prevState.isAdditionalMediaDrawerOpen\n }));\n }}\n >\n
\n \n
\n \n
\n );\n }\n\n private readonly _toggle = (drawerListId: number | undefined) => (): void => {\n if (this.state.drawerListId !== drawerListId) {\n this.setState({ drawerListId, isDrawerOpen: true });\n } else {\n this.setState({ drawerListId: undefined, isDrawerOpen: false });\n }\n };\n\n private _renderProductCell(product: AttributeValue): JSX.Element | null {\n switch (product.DataTypeValue) {\n case 0: // None\n // Return span here instead of null so the row still shows\n return ;\n case 1: // Currency\n return this._renderCurrencyCell(product);\n case 2: // DateTime\n return this._renderDateTimeCell(product);\n case 3: // Decimal\n return this._renderDecimalCell(product);\n case 4: // Integer\n return this._renderIntegerCell(product);\n case 5: // Text\n return this._renderTextCell(product);\n case 6: // TrueFalse\n return this._renderTrueFalseCell(product);\n case 40: // Video\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\n return null;\n case 41: // Image\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\n return null;\n default:\n this.props.telemetry.warning(`Got unknown specification type ${product.DataTypeValue} so skipping line`);\n return null;\n }\n }\n\n private _renderCurrencyCell(product: AttributeValue): JSX.Element | null {\n if (product.CurrencyValue !== null && product.CurrencyValue !== undefined) {\n return (\n \n {product.CurrencyCode}\n {product.CurrencyValue}\n \n );\n }\n\n return null;\n }\n\n private _renderDateTimeCell(product: AttributeValue): JSX.Element | null {\n if (product.DateTimeOffsetValue?.toUTCString) {\n return {product.DateTimeOffsetValue.toUTCString()};\n }\n\n return null;\n }\n\n private _renderIntegerCell(product: AttributeValue): JSX.Element | null {\n if (product.IntegerValue !== null && product.IntegerValue !== undefined) {\n return {product.IntegerValue};\n }\n\n return null;\n }\n\n private _renderDecimalCell(product: AttributeValue): JSX.Element | null {\n if (product.FloatValue !== null && product.FloatValue !== undefined) {\n return {product.FloatValue};\n }\n\n return null;\n }\n\n private _renderTextCell(product: AttributeValue): JSX.Element | null {\n if (product.TextValue !== null && product.TextValue !== undefined) {\n // eslint-disable-next-line react/no-danger\n return ;\n }\n\n return null;\n }\n\n private _renderTrueFalseCell(product: AttributeValue): JSX.Element | null {\n // TODO 20369885 setting to default value is needed to work around a platform bug where\n // config string value does not get its default value.\n if (product.BooleanValue) {\n return {this.props.resources.trueValueText ? this.props.resources.trueValueText : 'Yes'};\n }\n return {this.props.resources.falseValueText ? this.props.resources.falseValueText : 'No'};\n }\n}\n\nexport default ProductSpecification;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAdditionalContentData, ILinksData } from '../content-block.props.autogenerated';\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Component props.\n */\nexport interface IContentBlockAdditionalContentProps {\n requestContext: Msdyn365.IRequestContext;\n additionalContent: IAdditionalContentData[] | undefined;\n handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content view props.\n */\nexport interface IContentBlockAdditionalContentViewProps {\n additionalContentNode: INodeProps;\n additionalContentItems?: IContentBlockAdditionalContentItemViewProps[];\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Item view props.\n */\nexport interface IContentBlockAdditionalContentItemViewProps {\n heading: React.ReactNode;\n text: React.ReactNode;\n links: React.ReactNode;\n additionalContentItemContainer: INodeProps;\n additionalContentItemLinks: INodeProps;\n}\n\n/**\n * Renders additional content heading.\n * @param additionalContentHeading - Additional content heading.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Heading Node.\n */\nconst renderHeading = (additionalContentHeading: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param additionalContentParagraphText - Additional content paragraph text.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Paragraph Node.\n */\nconst renderParagraph = (additionalContentParagraphText: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param ctaLink - Additional content link.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @param linkIndex - Additional content link index.\n * @returns Link Node.\n */\nconst renderLinks = (ctaLink: ILinksData, props: IContentBlockAdditionalContentProps, itemIndex: number, linkIndex: number) => {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: ctaLink.ariaLabel,\n className: 'ms-content-block__details__additional-content-cta-links',\n linkText: ctaLink.linkText,\n linkUrl: ctaLink.linkUrl.destinationUrl,\n openInNewTab: ctaLink.openInNewTab,\n role: 'link'\n };\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalLinkTextChange(linkIndex, itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Create node for each additonal content item.\n * @param item - Content block additonal content item props.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns IContentBlockAdditionalContentItemViewProps.\n */\nconst assembleNode = (\n item: IAdditionalContentData,\n props: IContentBlockAdditionalContentProps,\n itemIndex: number\n): IContentBlockAdditionalContentItemViewProps => {\n const headingNode = item.heading && renderHeading(item.heading, props, itemIndex);\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props, itemIndex);\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\n return renderLinks(ctaLink, props, itemIndex, index);\n });\n\n return {\n heading: headingNode,\n text: paragraphNode,\n links: linksNode,\n additionalContentItemContainer: { className: 'ms-content-block__details__additional-content__container' },\n additionalContentItemLinks: { className: 'ms-content-block__details__additional-content-cta' }\n };\n};\n\n/**\n * ContentBlockAdditionalContent component.\n * @param props - Content Block Additional content component props.\n * @returns Content Block Additional content view props.\n */\nexport const contentBlockAdditionalContent = (\n props: IContentBlockAdditionalContentProps\n): IContentBlockAdditionalContentViewProps | undefined => {\n const { additionalContent } = props;\n if (!additionalContent) {\n return undefined;\n }\n\n const reactNodes: IContentBlockAdditionalContentItemViewProps[] = [];\n additionalContent.map((item, index: number) => {\n return reactNodes.push(assembleNode(item, props, index));\n });\n\n return {\n additionalContentNode: { className: 'ms-content-block__details__additional-content' },\n additionalContentItems: reactNodes\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../content-block.props.autogenerated';\n\nexport interface IContentCardLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n role?: string;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class ContentCardLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n }\n\n private readonly _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: btnClass,\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: this.props.role,\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\nexport default ContentCardLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { contentBlockAdditionalContent, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport LinksComponent from './components/links';\nimport { actionableRegion as region, IContentBlockConfig, IContentBlockProps } from './content-block.props.autogenerated';\n\nexport interface IContentBlockViewProps extends IContentBlockProps<{}> {\n title?: React.ReactNode;\n text?: React.ReactNode;\n image?: React.ReactNode;\n links?: React.ReactNode;\n className?: string;\n contentBlockContainer: IModuleProps;\n imageContainer: INodeProps;\n detailsContainer: INodeProps;\n contentBlockAnchorTag?: INodeProps;\n imageLink?: string;\n imageAriaLabel?: string;\n additionalContent?: IContentBlockAdditionalContentViewProps;\n handleAdditionalText?(): void;\n handleAdditionalParagraph?(): void;\n handleAdditionalLinkTextChange?(): void;\n}\n\n/**\n * Site-builder configuration for the module.\n */\nexport interface IContentBlockFullConfig extends IContentBlockConfig {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- This field comes from SDK.\n msdyn365__moduleLayout?: string;\n}\n\n/**\n * ContentCard component.\n * @extends {React.PureComponent}\n */\nexport class ContentBlock extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public render(): JSX.Element | null {\n const { heading, paragraph, image, links, className, imageAriaLabel } = this.props.config;\n const contentBlockTitle = heading && (\n \n );\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings ?? {},\n imageSettings: image?.imageSettings\n };\n const contentBlockLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n const contentBlockText = paragraph && (\n \n );\n const contentBlockImage = (\n \n );\n\n if (!contentBlockTitle && !contentBlockText && !contentBlockLinks) {\n this.props.context.telemetry.error('Content block content is empty, module wont render.');\n return null;\n }\n const contentBlockviewProps = {\n ...this.props,\n title: contentBlockTitle,\n text: contentBlockText,\n image: contentBlockImage,\n links: contentBlockLinks,\n moduleClass: this.props.config.className,\n contentBlockContainer: {\n moduleProps: this.props,\n className: classnames('ms-content-block', className)\n },\n imageContainer: { className: 'ms-content-block__image' },\n detailsContainer: { className: 'ms-content-block__details' },\n contentBlockAnchorTag: {\n tag: 'a',\n className: 'ms-content-block__link',\n role: 'link'\n },\n imageLink: this._getImageLink(),\n imageAriaLabel,\n additionalContent: contentBlockAdditionalContent({\n requestContext: this.props.context.request,\n additionalContent: this.props.config.additionalContent,\n handleAdditionalTextChange: this.handleAdditionalTextChange,\n handleAdditionalParagraphChange: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n }),\n handleAdditionalText: this.handleAdditionalTextChange,\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n };\n\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\n }\n\n /**\n * To handle text change.\n * @param event - To handle text change event.\n * @name - HandleTextChange\n * @public\n * @returns - The Text value.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n /**\n * To handle paragraph change.\n * @param event - To handle text change event.\n * @name - HandleParagraphChange\n * @public\n * @returns - The Paragraph value.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.paragraph = event.target.value);\n\n /**\n * Handle link text change.\n * @param linkIndex - The link index.\n * @returns - Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n public handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].heading = event.target.value;\n }\n }\n\n public handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void {\n const additionalContentObject =\n (this.props.config.additionalContent &&\n ArrayExtensions.hasElements(this.props.config.additionalContent) &&\n this.props.config.additionalContent[Number(index)]) ||\n {};\n if (additionalContentObject.links) {\n additionalContentObject.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n public handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].subtext = event.target.value;\n }\n }\n\n private _getImageLink(): string | null {\n const { imageLink, links, actionableRegion } = this.props.config;\n if (actionableRegion === region.imageAndLinks) {\n if (imageLink?.destinationUrl) {\n return imageLink.destinationUrl;\n } else if (links && ArrayExtensions.hasElements(links) && links[0].linkUrl) {\n return links[0].linkUrl.destinationUrl;\n }\n return null;\n }\n return null;\n }\n}\n\nexport default ContentBlock;\n","/*--------------------------------------------------------------\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, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { format, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * ICartIconData: Interface for Cart Icon Data.\r\n */\r\nexport interface ICartIconData {\r\n cart?: ICartState;\r\n}\r\n\r\n/**\r\n * ICartIconComponentProps: Interface for Cart Icon component props.\r\n */\r\nexport interface ICartIconComponentProps extends IComponentProps {\r\n className?: string;\r\n cartLabel: string;\r\n cartQtyLabel: string;\r\n telemetryContent?: ITelemetryContent;\r\n}\r\n\r\n/**\r\n * ICartIconComponent: Interface for Cart Icon component.\r\n */\r\nexport interface ICartIconComponent extends IComponent {\r\n}\r\n\r\nconst CartIconComponentActions = {};\r\n\r\n/**\r\n *\r\n * CartIcon component.\r\n * @extends {React.FC}\r\n */\r\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\r\n const { cartLabel, cartQtyLabel, data: { cart } } = props;\r\n const defaultCartItemCount: number = 0;\r\n\r\n // If there are invoice lines, don't update mini cart item quantity\r\n let cartItem = defaultCartItemCount;\r\n\r\n if (cart) {\r\n cartItem = cart.hasInvoiceLine ? defaultCartItemCount : cart.totalItemsInCart;\r\n }\r\n\r\n let qtyLabel: string = '';\r\n const cartMaxQuantity: number = 99;\r\n const maxQuantityLabel: string = '99+';\r\n if (cartItem > cartMaxQuantity) {\r\n qtyLabel = maxQuantityLabel;\r\n } else {\r\n qtyLabel = format(cartQtyLabel, cartItem);\r\n }\r\n const label = format(cartLabel, cartItem);\r\n\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', props.telemetryContent!, 'cart-icon', '');\r\n const attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n const style: React.CSSProperties = {\r\n visibility: cart ? 'visible' : 'hidden'\r\n };\r\n return (\r\n \r\n
\r\n {qtyLabel}\r\n
\r\n \r\n );\r\n});\r\n\r\n// @ts-expect-error -- Compatible issue with the component override.\r\nexport const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride(\r\n 'CartIcon',\r\n { component: CartIcon, ...CartIconComponentActions }\r\n);\r\n\r\nexport default CartIconComponent;\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 { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { format, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * ICartIconData: Interface for Cart Icon Data.\r\n */\r\nexport interface ICartIconData {\r\n cart?: ICartState;\r\n}\r\n\r\n/**\r\n * ICartIconComponentProps: Interface for Cart Icon component props.\r\n */\r\nexport interface ICartIconComponentProps extends IComponentProps {\r\n className?: string;\r\n cartLabel: string;\r\n cartQtyLabel: string;\r\n telemetryContent?: ITelemetryContent;\r\n}\r\n\r\n/**\r\n * ICartIconComponent: Interface for Cart Icon component.\r\n */\r\nexport interface ICartIconComponent extends IComponent {\r\n}\r\n\r\nconst CartIconComponentActions = {};\r\n\r\n/**\r\n *\r\n * CartIcon component.\r\n * @extends {React.FC}\r\n */\r\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\r\n const { cartLabel, cartQtyLabel, data: { cart } } = props;\r\n const defaultCartItemCount: number = 0;\r\n const invoiceItemCount: number = 1;\r\n\r\n // If there are invoice lines, don't update mini cart item quantity\r\n let cartItem = defaultCartItemCount;\r\n\r\n if (cart) {\r\n cartItem = cart.hasInvoiceLine ? invoiceItemCount : cart.totalItemsInCart;\r\n }\r\n\r\n let qtyLabel: string = '';\r\n const cartMaxQuantity: number = 99;\r\n const maxQuantityLabel: string = '99+';\r\n if (cartItem > cartMaxQuantity) {\r\n qtyLabel = maxQuantityLabel;\r\n } else {\r\n qtyLabel = format(cartQtyLabel, cartItem);\r\n }\r\n const label = format(cartLabel, cartItem);\r\n\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', props.telemetryContent!, 'cart-icon', '');\r\n const attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n const style: React.CSSProperties = {\r\n visibility: cart ? 'visible' : 'hidden'\r\n };\r\n return (\r\n \r\n
\r\n {qtyLabel}\r\n
\r\n \r\n );\r\n});\r\n\r\n// @ts-expect-error -- Compatible issue with the component override.\r\nexport const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride(\r\n 'CartIcon',\r\n { component: CartIcon, ...CartIconComponentActions }\r\n);\r\n\r\nexport default CartIconComponent;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { ICartlinesViewProps, ICartResources, ICartViewProps, IOrderSummaryErrors } from '@msdyn365-commerce-modules/cart';\nimport { ICartLineItemViewProps } from '@msdyn365-commerce-modules/cart/dist/types/modules/cart/components/cart-line-items-promotion';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst CartView: React.FC = (props: ICartViewProps) => (\n
\n {props.title}\n {props.promotionOptions && _renderPromotions(props.promotionOptions)}\n {props.cart?.hasInvoiceLine || props.multiplePickUpEnabled ? (\n _renderCartLinesGroup(props, props.resources)\n ) : (\n \n {_renderCartlines(\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n \n )}\n {props.orderSummaryHeading && (\n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {_renderErrorBlock(props.OrderSummaryErrors)}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\n {props.expressCheckoutButton}\n ) : null}\n {props.backToShoppingButton}\n {props.createTemplateFromCartButton}\n \n )}\n {props.storeSelector}\n
\n);\n\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\n return (\n <>\n \n {promotions.promotionMessage}\n {promotions.promotionSeeAllLink}\n {promotions.promotionDialog}\n \n \n );\n};\n\nconst _renderCartlines = (\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n backToShoppingButton: React.ReactNode,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n cartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n mulitplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n const { emptyCartText } = resources;\n\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n if (cartLines) {\n return cartLines.map((cartLine, index) => {\n return (\n
\n {cartLine.cartline}\n {mulitplePickUp ? null : _renderBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {mulitplePickUp ? (\n \n {_renderGroupBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n ) : cartLine.addToOrderTemplate ? (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n ) : (\n <>\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n )}\n
\n );\n });\n }\n return cartDataResult ? (\n
\n

{emptyCartText}

\n {backToShoppingButton}\n
\n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * On Toggle function.\n * @param cartLine -Cartline.\n * @param isBopisSelected -Boolean.\n * @returns Set state of button.\n */\nconst onToggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\n cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(!isBopisSelected);\n};\n\n/**\n * On change store function.\n * @param cartLine -CartLine items prop.\n * @returns Set state of button.\n */\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\n cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(true);\n};\n\nconst _renderBOPISBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for BOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const {\n shipInsteadDisplayText,\n shipToAddressDisplayText,\n pickItUpDisplayText,\n pickUpAtStoreWithLocationText,\n changeStoreDisplayText\n } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n
\n {isBopisSelected ? (\n {pickUpAtStoreWithLocationText}\n ) : (\n {shipToAddressDisplayText}\n )}\n
\n {isBopisSelected && (\n
\n {cartLine.pickUpInStore.orgUnitName}\n \n
\n )}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n
\n );\n};\n\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\n if (!errorData || errorData.errors.length === 0) {\n return null;\n }\n return (\n \n {errorData.header}\n {errorData.errors}\n \n );\n};\n\nconst _renderOrderSummarylines = (\n orderSummaryLines: IOrderSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!orderSummaryLines) {\n return null;\n }\n return (\n \n {props.promoCode}\n {orderSummaryLines.subtotal}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.orderTotal}\n \n );\n};\n\nconst _renderInvoiceSummarylines = (\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!invoiceSummaryLines) {\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {invoiceSummaryLines.invoices}\n {invoiceSummaryLines.giftCard}\n {invoiceSummaryLines.loyalty}\n {invoiceSummaryLines.orderTotal}\n \n );\n};\n\nconst _renderCartLinesGroup = (props: ICartViewProps, resources: ICartResources): JSX.Element | undefined => {\n if (props.cartLinesGroup && props.cartLinesGroup.length > 0) {\n return (\n
\n {props.cartLinesGroup.map(cartlines => {\n return (\n
\n {_renderCartLinesGroupHeader(\n cartlines[0],\n props.storeSelector,\n resources,\n _countItems(cartlines),\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n {_renderCartlines(\n cartlines,\n props.resources,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n
\n );\n })}\n
\n );\n }\n return props.cartDataResult ? (\n
\n
\n

{props.resources.emptyCartText}

\n {props.backToShoppingButton}\n
\n
\n ) : (\n <>{props.waitingComponent}\n );\n};\nconst _renderCartLinesGroupHeader = (\n cartLine: ICartlinesViewProps,\n storeSelector: React.ReactNode | undefined,\n resources: ICartResources,\n count: number,\n emailDeliveryModeCode?: string\n) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { pickUpText, shippingText, emailshippingText, payInvoicesDisplayText } = resources;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n if (cartLine.data && cartLine.data.cartline.IsInvoiceLine) {\n groupTitle = payInvoicesDisplayText;\n } else if (!StringExtensions.isNullOrEmpty(emailDeliveryModeCode)) {\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText : groupTitle;\n }\n\n return (\n <>\n
\n

\n

{groupTitle}

\n {_renderCartLinesGroupTitle(cartLine, resources, count)}\n
\n \n );\n};\n\nconst _renderGroupBOPISBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n {isBopisSelected ? (\n \n ) : null}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n \n );\n};\n\nconst _countItems = (cartLine: ICartlinesViewProps[]): number => {\n let countItem = 0;\n countItem = cartLine.reduce((count, item) => {\n return count + (item.data?.cartline.Quantity || 0);\n }, 0);\n return countItem;\n};\n\nconst _renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const suffix = count > 1 ? itemsLabel : itemLabel;\n return (\n <>\n \n {isBopisSelected ? (\n

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

\n ) : null}\n

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

\n
\n \n );\n};\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductSpecificationViewProps } from './product-specification';\n\nconst ProductSpecificationView: React.FC = props => {\n const { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps, productSpecificationResult } = props;\n const rowdata =\n productSpecificationResult &&\n ArrayExtensions.hasElements(productSpecificationResult) &&\n productSpecificationResult.filter(row => !ObjectExtensions.isNullOrUndefined(row));\n\n return rowdata && ArrayExtensions.hasElements(rowdata) ? (\n \n {props.title}\n \n {rowdata}\n \n \n ) : null;\n};\n\nexport default ProductSpecificationView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport getAttributesForSelectedVariant, { AttributesForSelectedVariantInput } from './dataActions/get-attributes-for-selected-variant';\nimport ProductSpecification from './modules/product-specification/product-specification';\nimport ProductSpecificationView from './modules/product-specification/product-specification.view';\n\nexport * from './modules/product-specification/components/product-specification-table-stucture';\nexport * from './modules/product-specification/product-specification';\nexport * from './modules/product-specification/product-specification.data';\nexport * from './modules/product-specification/product-specification.props.autogenerated';\nexport * from './modules/product-specification/product-specification.view';\nexport { AttributesForSelectedVariantInput, getAttributesForSelectedVariant, ProductSpecification, ProductSpecificationView };\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 { ISearchData, ISearchViewProps } from '@msdyn365-commerce-modules/search';\r\nimport { Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\r\n\r\n/**\r\n * Render Categories heading.\r\n * @param inCategoriesHeading - The Keywords result heading.\r\n * @returns The JSX Element.\r\n */\r\nconst renderCategorySuggestionsTitle = (inCategoriesHeading: string): JSX.Element => {\r\n const categoryAutoSuggestionHeading = inCategoriesHeading ? inCategoriesHeading : 'In categories';\r\n\r\n return (\r\n
\r\n {categoryAutoSuggestionHeading}\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Render Categories suggestion result.\r\n * @param searchText search text\r\n * @param inCategoriesHeading - The Categories result heading.\r\n * @param noResultText - The \"No Result\" text.\r\n * @param props - The Categories suggestion result.\r\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\r\n * @param isLoadingNode - The autosuggestion loading node.\r\n * @returns The JSX Element.\r\n */\r\nexport const CategorySuggestionsComponent = (\r\n searchText: string | undefined,\r\n inCategoriesHeading: string,\r\n noResultText: string,\r\n props: ISearchViewProps & ISearchProps,\r\n isLoadingAutoSuggest?: boolean,\r\n isLoadingNode?: React.ReactNode\r\n): JSX.Element => {\r\n return props.autosuggestCategory ? (\r\n \r\n {renderCategorySuggestionsTitle(inCategoriesHeading.replace('{0}', searchText || ''))}\r\n \r\n {isLoadingAutoSuggest && isLoadingNode}\r\n {!isLoadingAutoSuggest && props.autosuggestCategory.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n ) : (\r\n \r\n {renderCategorySuggestionsTitle(inCategoriesHeading.replace('{0}', searchText || ''))}\r\n \r\n
  • \r\n {noResultText}\r\n
  • \r\n
    \r\n
    \r\n );\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 { IImageData, Image } from '@msdyn365-commerce/core';\r\nimport { ISearchData } from '@msdyn365-commerce-modules/search';\r\nimport { Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\r\n\r\n/**\r\n * Render Products Suggestion result heading.\r\n * @param props -The props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderProductNotFoundResultsImage = (props: ISearchProps): JSX.Element | null => {\r\n const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\r\n if (!noSearchResultImage || !noSearchResultImage.src) {\r\n return null;\r\n }\r\n const imageSettings = {\r\n lazyload: true,\r\n viewports: {\r\n xs: { w: 100, h: 100, q: 'w=100&h=100&q=60&m=6' }\r\n }\r\n };\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Product suggestion result.\r\n * @param props -The props.\r\n * @returns The JSX Element.\r\n */\r\nexport const MobileAutoSuggestEmptyComponent = (\r\n props: ISearchProps\r\n): JSX.Element => {\r\n return (\r\n \r\n
    \r\n {renderProductNotFoundResultsImage(props)}\r\n
    \r\n
    \r\n
    \r\n {props.resources.emptyMobileSearchTextHeading}\r\n
    \r\n
    \r\n {props.resources.emptyMobileSearchText}\r\n
    \r\n
    \r\n
    \r\n );\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 { ISearchData, ISearchFormViewProps } from '@msdyn365-commerce-modules/search';\r\nimport { Button, INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\r\nimport { MobileAutoSuggestEmptyComponent } from './search.mobile.empty';\r\n\r\n/**\r\n * Render Clear button for mobile viewport.\r\n * @param clearSearchButtonText -The Clear button text.\r\n * @param clearSearch -Clear Search callback.\r\n * @returns -The JSX Element.\r\n */\r\nconst renderClearButton = (clearSearchButtonText: string, clearSearch: () => void): JSX.Element => {\r\n return (\r\n \r\n {clearSearchButtonText || 'Clear'}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Search form.\r\n * @param form -Form view props.\r\n * @param searchForm -Search Form props.\r\n * @param formWrapper -Form Wrapper props.\r\n * @param isMobile -Is mobile viewport flag.\r\n * @param clearSearchButtonText -The Clear button text.\r\n * @param props -The props for resource.\r\n * @param isSearchText -Is SearchText flag for input text.\r\n * @param clearSearch -Clear Search callback.\r\n * @returns -The JSX Element.\r\n */\r\nexport const FormComponent = (\r\n form: ISearchFormViewProps,\r\n searchForm: INodeProps,\r\n formWrapper: INodeProps,\r\n isMobile: boolean,\r\n clearSearchButtonText: string,\r\n props: ISearchProps,\r\n isSearchText: boolean,\r\n clearSearch: () => void): JSX.Element => {\r\n\r\n // const cancelButtonNode = (\r\n // \r\n // );\r\n\r\n return (\r\n isMobile ? (\r\n \r\n {form.cancelBtn}\r\n \r\n {form.input}\r\n {isSearchText && renderClearButton(clearSearchButtonText, clearSearch)}\r\n {!isSearchText ? MobileAutoSuggestEmptyComponent(props) : null}\r\n \r\n \r\n ) : (\r\n \r\n \r\n {form.input}\r\n {form.submitBtn}\r\n {/*{isSearchText && cancelButtonNode}*/}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { ISearchKeywordViewProps } from '@msdyn365-commerce-modules/search';\r\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\n/**\r\n * Render keywords heading.\r\n * @param keywordsHeading -The Keywords result heading.\r\n * @returns The JSX Element.\r\n */\r\nconst renderKeywordSuggestionsTitle = (keywordsHeading: string): JSX.Element => {\r\n const categoryAutoSuggestionHeading = keywordsHeading ? keywordsHeading : 'Keywords';\r\n\r\n return (\r\n
    \r\n {categoryAutoSuggestionHeading}\r\n
    \r\n );\r\n};\r\n\r\n/**\r\n * Render keywords reults.\r\n * @param keywordSuggest -The Keywords suggest Node props.\r\n * @param ulKeyword -The List Node props.\r\n * @param keywordsHeading -The Keywords result heading.\r\n * @param noResultText -The \"No Result\" text.\r\n * @param keywordSuggestions -The Keywords suggestion result.\r\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\r\n * @param isLoadingNode - The autosuggestion loading node.\r\n * @returns -The JSX Element.\r\n */\r\nexport const KeywordSuggestionsComponent = (\r\n keywordSuggest: INodeProps,\r\n ulKeyword: INodeProps,\r\n keywordsHeading: string,\r\n noResultText: string,\r\n keywordSuggestions?: ISearchKeywordViewProps,\r\n isLoadingAutoSuggest?: boolean,\r\n isLoadingNode?: React.ReactNode\r\n): JSX.Element => {\r\n return (\r\n keywordSuggestions ? (\r\n \r\n {renderKeywordSuggestionsTitle(keywordsHeading)}\r\n \r\n {isLoadingAutoSuggest && isLoadingNode}\r\n {!isLoadingAutoSuggest && keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n ) : (\r\n \r\n {renderKeywordSuggestionsTitle(keywordsHeading)}\r\n \r\n
  • \r\n {noResultText}\r\n
  • \r\n
    \r\n
    \r\n )\r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IImageData, Image } from '@msdyn365-commerce/core';\r\nimport { ISearchData, ISearchProductViewProps } from '@msdyn365-commerce-modules/search';\r\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\r\n\r\n/**\r\n * Render Products Suggestion result heading.\r\n * @param productSuggestionsHeading -The products suggestion result heading.\r\n * @returns The JSX Element.\r\n */\r\nconst renderProductSuggestionsTitle = (productSuggestionsHeading: string): JSX.Element => {\r\n const productAutoSuggestionHeading = productSuggestionsHeading ? productSuggestionsHeading : 'Products';\r\n\r\n return (\r\n
    \r\n {productAutoSuggestionHeading}\r\n
    \r\n );\r\n};\r\n\r\n/**\r\n * Render Products Suggestion result heading.\r\n * @param props -The props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderProductNotFoundResultsImage = (props: ISearchProps): JSX.Element | null => {\r\n const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\r\n if (!noSearchResultImage || !noSearchResultImage.src) {\r\n return null;\r\n }\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Products No result section.\r\n * @param props -The props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderProductNotFoundResults = (props: ISearchProps): JSX.Element => {\r\n return (\r\n \r\n
    \r\n {renderProductNotFoundResultsImage(props)}\r\n
    \r\n
    \r\n {props.resources.noResultContentHeadingText}\r\n
    \r\n
    \r\n {props.resources.noResultContentParagraphText}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\n/**\r\n * Render Product suggestion result.\r\n * @param productSuggest -The product suggest Node props.\r\n * @param ulProduct -The List Node props.\r\n * @param props -The props.\r\n * @param productSuggestions -The Product suggestion result.\r\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\r\n * @param isLoadingNode - The autosuggestion loading node.\r\n * @returns The JSX Element.\r\n */\r\nexport const ProductSuggestionsComponent = (\r\n productSuggest: INodeProps,\r\n ulProduct: INodeProps,\r\n props: ISearchProps,\r\n productSuggestions?: ISearchProductViewProps,\r\n isLoadingAutoSuggest?: boolean,\r\n isLoadingNode?: React.ReactNode\r\n): JSX.Element => {\r\n const liProduct: INodeProps = {\r\n tag: 'li',\r\n className: 'msc-no-result-content'\r\n };\r\n return productSuggestions ? (\r\n \r\n {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\r\n \r\n {isLoadingAutoSuggest && isLoadingNode}\r\n {!isLoadingAutoSuggest && productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n ) : (\r\n \r\n {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\r\n \r\n \r\n {renderProductNotFoundResults(props)}\r\n \r\n \r\n \r\n );\r\n};\r\n","import { ISearchData, ISearchViewProps } from '@msdyn365-commerce-modules/search';\r\nimport { Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\r\nimport { IAriServiceModelExtension } from \"../../../../actions/DataServiceEntities.g\";\r\nimport generateAriModelDetailUrl from \"../../../../utils/getAriModelDetailUrl\";\r\n\r\nconst renderAriSuggestionsTitle = (heading: string): JSX.Element =>\r\n (\r\n
    \r\n {heading}\r\n
    \r\n )\r\n\r\n\r\nexport const AriSuggestionsComponent = (\r\n noResultsText: string,\r\n props: ISearchViewProps & ISearchProps,\r\n isLoading: boolean,\r\n searchResults: IAriServiceModelExtension[],\r\n loadingNode: React.ReactNode\r\n): JSX.Element => {\r\n const { resources: { ariModelResultsHeading }, UlCategory } = props;\r\n return (\r\n
    \r\n {renderAriSuggestionsTitle(ariModelResultsHeading)}\r\n \r\n {isLoading? (\r\n loadingNode\r\n ) : (\r\n searchResults?.length ? (\r\n <>\r\n {searchResults.map(r => (
  • \r\n \r\n {r.Name}\r\n \r\n
  • ))}\r\n \r\n\r\n ) : (
  • \r\n {noResultsText}\r\n
  • )\r\n )}\r\n\r\n
    \r\n
    \r\n )\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { ISearchData, ISearchFormViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search';\r\nimport { Button, format, isMobile, Module, Node, VariantType } from '@msdyn365-commerce-modules/utilities';\r\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\r\n\r\nimport { ISearchProps } from '../definition-extensions/search.ext.props.autogenerated';\r\nimport { CategorySuggestionsComponent } from './components/search.categorysuggest';\r\nimport { FormComponent } from './components/search.form';\r\nimport { KeywordSuggestionsComponent } from './components/search.keywordsuggest';\r\nimport { ProductSuggestionsComponent } from './components/search.productsuggest';\r\nimport SearchModelsAction, { SearchModelsInput } from \"../../../actions/search-models.action\";\r\nimport { QueryResultSettings } from \"@msdyn365-commerce/retail-proxy\";\r\nimport { IAriServiceModelExtension } from \"../../../actions/DataServiceEntities.g\";\r\nimport * as _ from 'lodash';\r\nimport { AriSuggestionsComponent } from \"./components/search.arisuggest\";\r\n// import MsDyn365, { getUrlSync } from \"@msdyn365-commerce/core\";\r\n/**\r\n * Render Title for AutoSuggest.\r\n * @param searchSuggestionHeading -The heading resource string.\r\n * @param searchText -The search string.\r\n * @returns -The JSX Element.\r\n */\r\nconst renderTitle = (searchSuggestionHeading: string, searchText: string): JSX.Element => {\r\n const searchTextString = '\"'.concat(searchText.concat('\"'));\r\n const searchAutoSuggestionHeading = searchSuggestionHeading ? format(searchSuggestionHeading, searchTextString) : `Search for ${searchTextString}`;\r\n\r\n return (\r\n \r\n {searchAutoSuggestionHeading}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Search View.\r\n * @param props - The view props.\r\n * @returns The JSX Element.\r\n */\r\nconst SearchView: React.FC> = (props: ISearchViewProps & ISearchProps): JSX.Element => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n UlKeyword,\r\n UlProduct,\r\n form,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label,\r\n context,\r\n isLoadingAutoSuggest,\r\n isLoadingNode,\r\n context: {\r\n request: {\r\n apiSettings\r\n },\r\n actionContext\r\n },\r\n config: {\r\n topResultsCount\r\n }\r\n } = props;\r\n\r\n const { searchSuggestionHeading, categorySuggestionHeading, keywordsHeading, noResultText, clearSearchButtonText } = props.resources;\r\n\r\n const [searchTextString, setSearchTextString] = useState();\r\n const [isMobilePort, setIsMobile] = useState(false);\r\n const [ ariSearchResults, setAriSearchResults ] = useState< IAriServiceModelExtension[]>([]);\r\n const [ ariSearchLoading , setAriSearchLoading ] = useState(false);\r\n\r\n const debouncedSearchHandler = useMemo(() =>\r\n _.debounce((search: string) => getAriSearchResults(search), 500),\r\n []\r\n )\r\n\r\n useEffect(() => {\r\n setSearchTextString(searchText);\r\n if (searchText.length > 0)\r\n debouncedSearchHandler(searchText);\r\n }, [searchText]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n debouncedSearchHandler.cancel();\r\n }\r\n }, [debouncedSearchHandler])\r\n\r\n /**\r\n * ClearSearch callback method to clear search string.\r\n */\r\n const clearSearch = (): void => {\r\n setSearchTextString('');\r\n\r\n const propsForm = props.form as ISearchFormViewProps;\r\n const propsFormInput = propsForm.input as React.DetailedHTMLProps, HTMLInputElement>;\r\n const propsFormInputCurrent = (propsFormInput.ref as React.RefObject).current;\r\n\r\n if (propsFormInputCurrent) {\r\n propsFormInputCurrent.value = '';\r\n }\r\n\r\n propsFormInput.value = '';\r\n props.searchText = '';\r\n props.FormWrapper.action = '';\r\n };\r\n\r\n const isMobileViewport = useCallback(() => {\r\n const isMobileView = isMobile({ variant: VariantType.Browser, context: context.request }) === 'xs';\r\n setIsMobile(isMobileView);\r\n }, [context]);\r\n\r\n useEffect(() => {\r\n window.addEventListener('resize', isMobileViewport);\r\n isMobileViewport();\r\n }, [isMobileViewport]);\r\n\r\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\r\n\r\n const isMobileView = (viewport === 'xs');\r\n\r\n AutoSuggest.className = !StringExtensions.isNullOrEmpty(searchTextString) ? `${AutoSuggest.className} show` : `${AutoSuggest.className} hide`;\r\n const isSearchText: boolean = !StringExtensions.isNullOrEmpty(searchTextString);\r\n\r\n const getAriSearchResults = async (search: string) => {\r\n setAriSearchLoading(true);\r\n const queryResultSettings: QueryResultSettings = {\r\n Paging: {\r\n Top: topResultsCount || 5\r\n }\r\n }\r\n const input = new SearchModelsInput(search,\r\n queryResultSettings,\r\n 'Search',\r\n apiSettings);\r\n\r\n const data = await SearchModelsAction(input, actionContext);\r\n setAriSearchResults(data.ariSearchResults.Models || []);\r\n setAriSearchLoading(false);\r\n }\r\n\r\n // const _generateSeeMoreUrl = (): string => {\r\n // const {\r\n // context: {\r\n // actionContext,\r\n // app: {\r\n // config: { searchQueryStringParameter }\r\n // }\r\n // }\r\n // } = props;\r\n\r\n // const query = props.searchText;\r\n // const searchQsp = searchQueryStringParameter || 'q';\r\n // const searchURL = _appendQueryParams(getUrlSync('search', actionContext) || '', query, searchQsp);\r\n // return searchURL;\r\n // };\r\n\r\n // const _appendQueryParams = (route: string, query: string, qsp: string): string => {\r\n // if (!MsDyn365.isBrowser) {\r\n // return '';\r\n // }\r\n // const queryUrl = new URL(route, window.location.href);\r\n // if (qsp && query) {\r\n // queryUrl.searchParams.set(qsp, query);\r\n // }\r\n\r\n // return queryUrl.href;\r\n // };\r\n\r\n\r\n\r\n return (\r\n \r\n {label}\r\n {FormComponent(form as ISearchFormViewProps, SearchForm, FormWrapper, isMobilePort, clearSearchButtonText, props, isSearchText, clearSearch)}\r\n { !isMobileView && \r\n {!StringExtensions.isNullOrEmpty(searchTextString) ? \r\n {AutoSuggestAriaLabelText}\r\n : ''}\r\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\r\n <>\r\n \r\n \r\n {renderTitle(searchSuggestionHeading, searchText)}\r\n \r\n \r\n \r\n {ProductSuggestionsComponent(ProductSuggest, UlProduct, props, autosuggestProduct,\r\n isLoadingAutoSuggest, isLoadingNode)}\r\n\r\n {CategorySuggestionsComponent(searchTextString, categorySuggestionHeading, noResultText,\r\n props, isLoadingAutoSuggest, isLoadingNode)}\r\n {AriSuggestionsComponent(noResultText, props, ariSearchLoading, ariSearchResults, isLoadingNode)}\r\n {KeywordSuggestionsComponent(KeywordSuggest, UlKeyword, keywordsHeading, noResultText, autosuggestKeyword,\r\n isLoadingAutoSuggest, isLoadingNode)}\r\n \r\n \r\n {/* See More */}\r\n \r\n ) : null}\r\n }\r\n { isMobileView && props.isSearchFormExpanded && \r\n {!StringExtensions.isNullOrEmpty(searchTextString) ? \r\n {AutoSuggestAriaLabelText}\r\n : ''}\r\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\r\n <>\r\n \r\n {(form as ISearchFormViewProps).cancelBtn}\r\n {renderTitle(searchSuggestionHeading, searchText)}\r\n \r\n \r\n \r\n {CategorySuggestionsComponent(searchTextString, categorySuggestionHeading, noResultText,\r\n props, isLoadingAutoSuggest, isLoadingNode)}\r\n {AriSuggestionsComponent(noResultText, props, ariSearchLoading, ariSearchResults, isLoadingNode)}\r\n {KeywordSuggestionsComponent(KeywordSuggest, UlKeyword, keywordsHeading, noResultText, autosuggestKeyword,\r\n isLoadingAutoSuggest, isLoadingNode)}\r\n \r\n {ProductSuggestionsComponent(ProductSuggest, UlProduct, props, autosuggestProduct,\r\n isLoadingAutoSuggest, isLoadingNode)}\r\n \r\n \r\n ) : null}\r\n }\r\n \r\n );\r\n};\r\nexport default SearchView;","/*--------------------------------------------------------------\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\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IBusinessSignUpItem, IBusinessSignUpViewProps } from './eve-business-sign-up';\r\n\r\nconst BusinessSignUpItem: React.FC = ({ wrapper, label, errorMessage, input, isAddressInput }) => {\r\n // Hide label and error message if rendering address section\r\n return (\r\n \r\n {!isAddressInput && label}\r\n {input}\r\n {!isAddressInput && errorMessage}\r\n \r\n );\r\n};\r\n\r\nconst BusinesSignUpView: React.FC = props => {\r\n const { businessSignUp, ContainerWrapper, heading, businessSignUpForm } = props;\r\n\r\n const { FormWrapper, buttons, items, errorMessage, disclaimer } = businessSignUpForm;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {items &&\r\n items.map((item: IBusinessSignUpItem) => {\r\n return ;\r\n })}\r\n {errorMessage &&\r\n errorMessage.map((error: React.ReactNode, index: number) => {\r\n return {error};\r\n })}\r\n {buttons &&\r\n buttons.map((button: React.ReactNode, index: number) => {\r\n return {button};\r\n })}\r\n {disclaimer}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default BusinesSignUpView;\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 { ISearchData, ISearchViewProps } from '@msdyn365-commerce-modules/search';\r\nimport { Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\r\n\r\n/**\r\n * Render Categories heading.\r\n * @param inCategoriesHeading - The Keywords result heading.\r\n * @returns The JSX Element.\r\n */\r\nconst renderCategorySuggestionsTitle = (inCategoriesHeading: string): JSX.Element => {\r\n const categoryAutoSuggestionHeading = inCategoriesHeading ? inCategoriesHeading : 'In categories';\r\n\r\n return (\r\n
    \r\n {categoryAutoSuggestionHeading}\r\n
    \r\n );\r\n};\r\n\r\n/**\r\n * Render Categories suggestion result.\r\n * @param searchText search text\r\n * @param inCategoriesHeading - The Categories result heading.\r\n * @param noResultText - The \"No Result\" text.\r\n * @param props - The Categories suggestion result.\r\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\r\n * @param isLoadingNode - The autosuggestion loading node.\r\n * @returns The JSX Element.\r\n */\r\nexport const CategorySuggestionsComponent = (\r\n searchText: string | undefined,\r\n inCategoriesHeading: string,\r\n noResultText: string,\r\n props: ISearchViewProps & ISearchProps,\r\n isLoadingAutoSuggest?: boolean,\r\n isLoadingNode?: React.ReactNode\r\n): JSX.Element => {\r\n return props.autosuggestCategory ? (\r\n \r\n {renderCategorySuggestionsTitle(inCategoriesHeading.replace('{0}', searchText || ''))}\r\n \r\n {isLoadingAutoSuggest && isLoadingNode}\r\n {!isLoadingAutoSuggest && props.autosuggestCategory.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n ) : (\r\n \r\n {renderCategorySuggestionsTitle(inCategoriesHeading.replace('{0}', searchText || ''))}\r\n \r\n
  • \r\n {noResultText}\r\n
  • \r\n
    \r\n
    \r\n );\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 { IImageData, Image } from '@msdyn365-commerce/core';\r\nimport { ISearchData } from '@msdyn365-commerce-modules/search';\r\nimport { Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\r\n\r\n/**\r\n * Render Products Suggestion result heading.\r\n * @param props -The props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderProductNotFoundResultsImage = (props: ISearchProps): JSX.Element | null => {\r\n const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\r\n if (!noSearchResultImage || !noSearchResultImage.src) {\r\n return null;\r\n }\r\n const imageSettings = {\r\n lazyload: true,\r\n viewports: {\r\n xs: { w: 100, h: 100, q: 'w=100&h=100&q=60&m=6' }\r\n }\r\n };\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Product suggestion result.\r\n * @param props -The props.\r\n * @returns The JSX Element.\r\n */\r\nexport const MobileAutoSuggestEmptyComponent = (\r\n props: ISearchProps\r\n): JSX.Element => {\r\n return (\r\n \r\n
    \r\n {renderProductNotFoundResultsImage(props)}\r\n
    \r\n
    \r\n
    \r\n {props.resources.emptyMobileSearchTextHeading}\r\n
    \r\n
    \r\n {props.resources.emptyMobileSearchText}\r\n
    \r\n
    \r\n
    \r\n );\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 { ISearchData, ISearchFormViewProps } from '@msdyn365-commerce-modules/search';\r\nimport { Button, INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\r\nimport { MobileAutoSuggestEmptyComponent } from './search.mobile.empty';\r\n\r\n/**\r\n * Render Clear button for mobile viewport.\r\n * @param clearSearchButtonText -The Clear button text.\r\n * @param clearSearch -Clear Search callback.\r\n * @returns -The JSX Element.\r\n */\r\nconst renderClearButton = (clearSearchButtonText: string, clearSearch: () => void): JSX.Element => {\r\n return (\r\n \r\n {clearSearchButtonText || 'Clear'}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Search form.\r\n * @param form -Form view props.\r\n * @param searchForm -Search Form props.\r\n * @param formWrapper -Form Wrapper props.\r\n * @param isMobile -Is mobile viewport flag.\r\n * @param clearSearchButtonText -The Clear button text.\r\n * @param props -The props for resource.\r\n * @param isSearchText -Is SearchText flag for input text.\r\n * @param clearSearch -Clear Search callback.\r\n * @returns -The JSX Element.\r\n */\r\nexport const FormComponent = (\r\n form: ISearchFormViewProps,\r\n searchForm: INodeProps,\r\n formWrapper: INodeProps,\r\n isMobile: boolean,\r\n clearSearchButtonText: string,\r\n props: ISearchProps,\r\n isSearchText: boolean,\r\n clearSearch: () => void): JSX.Element => {\r\n\r\n // const cancelButtonNode = (\r\n // \r\n // );\r\n\r\n return (\r\n isMobile ? (\r\n \r\n {form.cancelBtn}\r\n \r\n {form.input}\r\n {isSearchText && renderClearButton(clearSearchButtonText, clearSearch)}\r\n {!isSearchText ? MobileAutoSuggestEmptyComponent(props) : null}\r\n \r\n \r\n ) : (\r\n \r\n \r\n {form.input}\r\n {form.submitBtn}\r\n {/*{isSearchText && cancelButtonNode}*/}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { ISearchKeywordViewProps } from '@msdyn365-commerce-modules/search';\r\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\n/**\r\n * Render keywords heading.\r\n * @param keywordsHeading -The Keywords result heading.\r\n * @returns The JSX Element.\r\n */\r\nconst renderKeywordSuggestionsTitle = (keywordsHeading: string): JSX.Element => {\r\n const categoryAutoSuggestionHeading = keywordsHeading ? keywordsHeading : 'Keywords';\r\n\r\n return (\r\n
    \r\n {categoryAutoSuggestionHeading}\r\n
    \r\n );\r\n};\r\n\r\n/**\r\n * Render keywords reults.\r\n * @param keywordSuggest -The Keywords suggest Node props.\r\n * @param ulKeyword -The List Node props.\r\n * @param keywordsHeading -The Keywords result heading.\r\n * @param noResultText -The \"No Result\" text.\r\n * @param keywordSuggestions -The Keywords suggestion result.\r\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\r\n * @param isLoadingNode - The autosuggestion loading node.\r\n * @returns -The JSX Element.\r\n */\r\nexport const KeywordSuggestionsComponent = (\r\n keywordSuggest: INodeProps,\r\n ulKeyword: INodeProps,\r\n keywordsHeading: string,\r\n noResultText: string,\r\n keywordSuggestions?: ISearchKeywordViewProps,\r\n isLoadingAutoSuggest?: boolean,\r\n isLoadingNode?: React.ReactNode\r\n): JSX.Element => {\r\n return (\r\n keywordSuggestions ? (\r\n \r\n {renderKeywordSuggestionsTitle(keywordsHeading)}\r\n \r\n {isLoadingAutoSuggest && isLoadingNode}\r\n {!isLoadingAutoSuggest && keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n ) : (\r\n \r\n {renderKeywordSuggestionsTitle(keywordsHeading)}\r\n \r\n
  • \r\n {noResultText}\r\n
  • \r\n
    \r\n
    \r\n )\r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IImageData, Image } from '@msdyn365-commerce/core';\r\nimport { ISearchData, ISearchProductViewProps } from '@msdyn365-commerce-modules/search';\r\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\r\n\r\n/**\r\n * Render Products Suggestion result heading.\r\n * @param productSuggestionsHeading -The products suggestion result heading.\r\n * @returns The JSX Element.\r\n */\r\nconst renderProductSuggestionsTitle = (productSuggestionsHeading: string): JSX.Element => {\r\n const productAutoSuggestionHeading = productSuggestionsHeading ? productSuggestionsHeading : 'Products';\r\n\r\n return (\r\n
    \r\n {productAutoSuggestionHeading}\r\n
    \r\n );\r\n};\r\n\r\n/**\r\n * Render Products Suggestion result heading.\r\n * @param props -The props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderProductNotFoundResultsImage = (props: ISearchProps): JSX.Element | null => {\r\n const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\r\n if (!noSearchResultImage || !noSearchResultImage.src) {\r\n return null;\r\n }\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Products No result section.\r\n * @param props -The props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderProductNotFoundResults = (props: ISearchProps): JSX.Element => {\r\n return (\r\n \r\n
    \r\n {renderProductNotFoundResultsImage(props)}\r\n
    \r\n
    \r\n {props.resources.noResultContentHeadingText}\r\n
    \r\n
    \r\n {props.resources.noResultContentParagraphText}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\n/**\r\n * Render Product suggestion result.\r\n * @param productSuggest -The product suggest Node props.\r\n * @param ulProduct -The List Node props.\r\n * @param props -The props.\r\n * @param productSuggestions -The Product suggestion result.\r\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\r\n * @param isLoadingNode - The autosuggestion loading node.\r\n * @returns The JSX Element.\r\n */\r\nexport const ProductSuggestionsComponent = (\r\n productSuggest: INodeProps,\r\n ulProduct: INodeProps,\r\n props: ISearchProps,\r\n productSuggestions?: ISearchProductViewProps,\r\n isLoadingAutoSuggest?: boolean,\r\n isLoadingNode?: React.ReactNode\r\n): JSX.Element => {\r\n const liProduct: INodeProps = {\r\n tag: 'li',\r\n className: 'msc-no-result-content'\r\n };\r\n return productSuggestions ? (\r\n \r\n {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\r\n \r\n {isLoadingAutoSuggest && isLoadingNode}\r\n {!isLoadingAutoSuggest && productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n ) : (\r\n \r\n {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\r\n \r\n \r\n {renderProductNotFoundResults(props)}\r\n \r\n \r\n \r\n );\r\n};\r\n","import { ISearchData, ISearchViewProps } from '@msdyn365-commerce-modules/search';\r\nimport { Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\r\nimport { IAriServiceModelExtension } from \"../../../../actions/DataServiceEntities.g\";\r\nimport generateAriModelDetailUrl from \"../../../../utils/getAriModelDetailUrl\";\r\n\r\nconst renderAriSuggestionsTitle = (heading: string): JSX.Element =>\r\n (\r\n
    \r\n {heading}\r\n
    \r\n )\r\n\r\n\r\nexport const AriSuggestionsComponent = (\r\n noResultsText: string,\r\n props: ISearchViewProps & ISearchProps,\r\n isLoading: boolean,\r\n searchResults: IAriServiceModelExtension[],\r\n loadingNode: React.ReactNode\r\n): JSX.Element => {\r\n const { resources: { ariModelResultsHeading }, UlCategory } = props;\r\n return (\r\n
    \r\n {renderAriSuggestionsTitle(ariModelResultsHeading)}\r\n \r\n {isLoading? (\r\n loadingNode\r\n ) : (\r\n searchResults?.length ? (\r\n <>\r\n {searchResults.map(r => (
  • \r\n \r\n {r.Name}\r\n \r\n
  • ))}\r\n \r\n\r\n ) : (
  • \r\n {noResultsText}\r\n
  • )\r\n )}\r\n\r\n
    \r\n
    \r\n )\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { ISearchData, ISearchFormViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search';\r\nimport { Button, format, isMobile, Module, Node, VariantType } from '@msdyn365-commerce-modules/utilities';\r\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\r\n\r\nimport { ISearchProps } from '../definition-extensions/search.ext.props.autogenerated';\r\nimport { CategorySuggestionsComponent } from './components/search.categorysuggest';\r\nimport { FormComponent } from './components/search.form';\r\nimport { KeywordSuggestionsComponent } from './components/search.keywordsuggest';\r\nimport { ProductSuggestionsComponent } from './components/search.productsuggest';\r\nimport SearchModelsAction, { SearchModelsInput } from \"../../../actions/search-models.action\";\r\nimport { QueryResultSettings } from \"@msdyn365-commerce/retail-proxy\";\r\nimport { IAriServiceModelExtension } from \"../../../actions/DataServiceEntities.g\";\r\nimport * as _ from 'lodash';\r\nimport { AriSuggestionsComponent } from \"./components/search.arisuggest\";\r\nimport MsDyn365, { getUrlSync } from \"@msdyn365-commerce/core\";\r\n/**\r\n * Render Title for AutoSuggest.\r\n * @param searchSuggestionHeading -The heading resource string.\r\n * @param searchText -The search string.\r\n * @returns -The JSX Element.\r\n */\r\nconst renderTitle = (searchSuggestionHeading: string, searchText: string): JSX.Element => {\r\n const searchTextString = '\"'.concat(searchText.concat('\"'));\r\n const searchAutoSuggestionHeading = searchSuggestionHeading ? format(searchSuggestionHeading, searchTextString) : `Search for ${searchTextString}`;\r\n\r\n return (\r\n \r\n {searchAutoSuggestionHeading}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Search View.\r\n * @param props - The view props.\r\n * @returns The JSX Element.\r\n */\r\nconst SearchView: React.FC> = (props: ISearchViewProps & ISearchProps): JSX.Element => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n UlKeyword,\r\n UlProduct,\r\n form,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label,\r\n context,\r\n isLoadingAutoSuggest,\r\n isLoadingNode,\r\n context: {\r\n request: {\r\n apiSettings\r\n },\r\n actionContext\r\n },\r\n config: {\r\n topResultsCount\r\n }\r\n } = props;\r\n\r\n const { searchSuggestionHeading, categorySuggestionHeading, keywordsHeading, noResultText, clearSearchButtonText } = props.resources;\r\n\r\n const [searchTextString, setSearchTextString] = useState();\r\n const [isMobilePort, setIsMobile] = useState(false);\r\n const [ ariSearchResults, setAriSearchResults ] = useState< IAriServiceModelExtension[]>([]);\r\n const [ ariSearchLoading , setAriSearchLoading ] = useState(false);\r\n\r\n const debouncedSearchHandler = useMemo(() =>\r\n _.debounce((search: string) => getAriSearchResults(search), 500),\r\n []\r\n )\r\n\r\n useEffect(() => {\r\n setSearchTextString(searchText);\r\n if (searchText.length > 0)\r\n debouncedSearchHandler(searchText);\r\n }, [searchText]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n debouncedSearchHandler.cancel();\r\n }\r\n }, [debouncedSearchHandler])\r\n\r\n /**\r\n * ClearSearch callback method to clear search string.\r\n */\r\n const clearSearch = (): void => {\r\n setSearchTextString('');\r\n\r\n const propsForm = props.form as ISearchFormViewProps;\r\n const propsFormInput = propsForm.input as React.DetailedHTMLProps, HTMLInputElement>;\r\n const propsFormInputCurrent = (propsFormInput.ref as React.RefObject).current;\r\n\r\n if (propsFormInputCurrent) {\r\n propsFormInputCurrent.value = '';\r\n }\r\n\r\n propsFormInput.value = '';\r\n props.searchText = '';\r\n props.FormWrapper.action = '';\r\n };\r\n\r\n const isMobileViewport = useCallback(() => {\r\n const isMobileView = isMobile({ variant: VariantType.Browser, context: context.request }) === 'xs';\r\n setIsMobile(isMobileView);\r\n }, [context]);\r\n\r\n useEffect(() => {\r\n window.addEventListener('resize', isMobileViewport);\r\n isMobileViewport();\r\n }, [isMobileViewport]);\r\n\r\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\r\n\r\n const isMobileView = (viewport === 'xs');\r\n\r\n AutoSuggest.className = !StringExtensions.isNullOrEmpty(searchTextString) ? `${AutoSuggest.className} show` : `${AutoSuggest.className} hide`;\r\n const isSearchText: boolean = !StringExtensions.isNullOrEmpty(searchTextString);\r\n\r\n const getAriSearchResults = async (search: string) => {\r\n setAriSearchLoading(true);\r\n const queryResultSettings: QueryResultSettings = {\r\n Paging: {\r\n Top: topResultsCount || 5\r\n }\r\n }\r\n const input = new SearchModelsInput(search,\r\n queryResultSettings,\r\n 'Search',\r\n apiSettings);\r\n\r\n const data = await SearchModelsAction(input, actionContext);\r\n setAriSearchResults(data.ariSearchResults.Models || []);\r\n setAriSearchLoading(false);\r\n }\r\n\r\n const _generateSeeMoreUrl = (): string => {\r\n const {\r\n context: {\r\n actionContext,\r\n app: {\r\n config: { searchQueryStringParameter }\r\n }\r\n }\r\n } = props;\r\n\r\n const query = props.searchText;\r\n const searchQsp = searchQueryStringParameter || 'q';\r\n const searchURL = _appendQueryParams(getUrlSync('search', actionContext) || '', query, searchQsp);\r\n return searchURL;\r\n };\r\n\r\n const _appendQueryParams = (route: string, query: string, qsp: string): string => {\r\n if (!MsDyn365.isBrowser) {\r\n return '';\r\n }\r\n const queryUrl = new URL(route, window.location.href);\r\n if (qsp && query) {\r\n queryUrl.searchParams.set(qsp, query);\r\n }\r\n\r\n return queryUrl.href;\r\n };\r\n\r\n\r\n\r\n return (\r\n \r\n {label}\r\n {FormComponent(form as ISearchFormViewProps, SearchForm, FormWrapper, isMobilePort, clearSearchButtonText, props, isSearchText, clearSearch)}\r\n { !isMobileView && \r\n {!StringExtensions.isNullOrEmpty(searchTextString) ? \r\n {AutoSuggestAriaLabelText}\r\n : ''}\r\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\r\n <>\r\n \r\n \r\n {renderTitle(searchSuggestionHeading, searchText)}\r\n \r\n \r\n \r\n {ProductSuggestionsComponent(ProductSuggest, UlProduct, props, autosuggestProduct,\r\n isLoadingAutoSuggest, isLoadingNode)}\r\n\r\n {CategorySuggestionsComponent(searchTextString, categorySuggestionHeading, noResultText,\r\n props, isLoadingAutoSuggest, isLoadingNode)}\r\n {AriSuggestionsComponent(noResultText, props, ariSearchLoading, ariSearchResults, isLoadingNode)}\r\n {KeywordSuggestionsComponent(KeywordSuggest, UlKeyword, keywordsHeading, noResultText, autosuggestKeyword,\r\n isLoadingAutoSuggest, isLoadingNode)}\r\n \r\n \r\n See More\r\n \r\n ) : null}\r\n }\r\n { isMobileView && props.isSearchFormExpanded && \r\n {!StringExtensions.isNullOrEmpty(searchTextString) ? \r\n {AutoSuggestAriaLabelText}\r\n : ''}\r\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\r\n <>\r\n \r\n {(form as ISearchFormViewProps).cancelBtn}\r\n {renderTitle(searchSuggestionHeading, searchText)}\r\n \r\n \r\n \r\n {CategorySuggestionsComponent(searchTextString, categorySuggestionHeading, noResultText,\r\n props, isLoadingAutoSuggest, isLoadingNode)}\r\n {AriSuggestionsComponent(noResultText, props, ariSearchLoading, ariSearchResults, isLoadingNode)}\r\n {KeywordSuggestionsComponent(KeywordSuggest, UlKeyword, keywordsHeading, noResultText, autosuggestKeyword,\r\n isLoadingAutoSuggest, isLoadingNode)}\r\n \r\n {ProductSuggestionsComponent(ProductSuggest, UlProduct, props, autosuggestProduct,\r\n isLoadingAutoSuggest, isLoadingNode)}\r\n \r\n \r\n ) : null}\r\n }\r\n \r\n );\r\n};\r\nexport default SearchView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrganizationUsersTileViewProps } from './organization-users-tile';\n\nconst OrganizationUsersTileView: React.FC = props => {\n const { OrganizationUsersTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default OrganizationUsersTileView;\n","import { IActionContext } from '@msdyn365-commerce/core-internal';\r\nimport { getUrlSync } from '@msdyn365-commerce/core';\r\n\r\nexport default function generateAriModelDetailUrl(modelId: string, brandCode: string, actionContext: IActionContext): string {\r\n const _modelDetailModelIdQueryParamKey = 'modelId';\r\n const _modelDetailBrandCodeQueryParamKey = 'brandCode';\r\n const _modelDetailSlug = 'model';\r\n let url = getUrlSync(_modelDetailSlug, actionContext);\r\n if (url) {\r\n url += `${\r\n url.indexOf('?') > -1 ? '&' : '?'\r\n }${_modelDetailModelIdQueryParamKey}=${modelId}&${_modelDetailBrandCodeQueryParamKey}=${brandCode}`;\r\n }\r\n\r\n return url || '';\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\n/* eslint-disable no-duplicate-imports */\r\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IBusinessSignUpButtonProps {\r\n id?: string;\r\n className: string;\r\n text: string;\r\n ariaLabel: string;\r\n disabled?: boolean;\r\n link?: string;\r\n telemetryContent: ITelemetryContent;\r\n onClick?(event: React.MouseEvent): void;\r\n}\r\n\r\nexport const SignUpButton: React.FC = ({\r\n id,\r\n className,\r\n text,\r\n ariaLabel,\r\n telemetryContent,\r\n disabled,\r\n link,\r\n onClick\r\n}) => {\r\n const payLoad = getPayloadObject('click', telemetryContent, text);\r\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\r\n return (\r\n \r\n {text}\r\n \r\n );\r\n};\r\n\r\nexport default SignUpButton;\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\n/* eslint-disable no-duplicate-imports */\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nexport interface IBusinessSignUpErrorProps {\r\n id?: string;\r\n className: string;\r\n type?: string;\r\n message?: string;\r\n}\r\n\r\nexport const SignUpError: React.FC = ({ id, className, type = 'page', message }) => {\r\n const errorClassName = `${className}__${type}-error`;\r\n\r\n return (\r\n