{"version":3,"file":"static/js/26.082fedaa2d22d44af2aa.chunk.js","mappings":"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","sources":["webpack://Citta2.0/./src/modules/citta-product-attribute-companion-product/citta-product-attribute-companion-product.tsx?6020","webpack://Citta2.0/./src/modules/citta-product-attribute-companion-product/citta-product-attribute-companion-product.view.tsx?891b","webpack://Citta2.0/./src/modules/citta-product-collection/components/product-component.tsx?9602","webpack://Citta2.0/./src/modules/citta-product-collection/citta-product-collection.props.autogenerated.ts?6b89","webpack://Citta2.0/./src/modules/citta-product-collection/citta-product-collection.tsx?3cdb","webpack://Citta2.0/./src/modules/citta-product-collection/citta-product-collection.view.tsx?3b99","webpack://Citta2.0/./src/themes/citta-international/views/checkout-shipping-address.view.tsx?b414","webpack://Citta2.0/./src/themes/citta/views/checkout-shipping-address.view.tsx?8954","webpack://Citta2.0/./src/modules/product-page-summary/product-page-summary.tsx?2924"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\n\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\nimport { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { ICittaProductAttributeCompanionProductData } from './citta-product-attribute-companion-product.data';\r\nimport { ICittaProductAttributeCompanionProductProps } from './citta-product-attribute-companion-product.props.autogenerated';\r\n\r\nexport interface ICittaProductAttributeCompanionProductViewProps extends ICittaProductAttributeCompanionProductProps {\r\n linkItem?: INodeProps;\r\n className?: string;\r\n contentBlockContainer: IModuleProps;\r\n}\r\n/**\r\n *\r\n * ContentCard component\r\n * @extends {React.PureComponent}\r\n */\r\n\r\nclass CittaProductAttributeCompanionProduct extends React.PureComponent> {\r\n //const attributeName\r\n public render(): JSX.Element | null {\r\n const {\r\n className\r\n } = this.props.config;\r\n\r\n const content: ICittaProductAttributeCompanionProductData = this.props.data;\r\n\r\n const attributes = content.attributes.result;\r\n const linkAttribute = attributes?.find(attribute => attribute.Name === this.props.config.attributeName);\r\n if (!linkAttribute || !linkAttribute.TextValue) {\r\n return null;\r\n }\r\n\r\n const attribute = linkAttribute.TextValue.split('|');\r\n const attributeName = attribute[0];\r\n const attributeLink = attribute[1];\r\n\r\n const contentBlockviewProps = {\r\n ...this.props,\r\n linkItem: this._renderLink(attributeLink, attributeName),\r\n contentBlockContainer: {\r\n moduleProps: this.props,\r\n className: classnames('product-attribute-companion-product', className),\r\n }\r\n };\r\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\r\n }\r\n\r\n private _renderLink = (linkUrl: String, attributeName: String) => {\r\n return (\r\n this._goToLink(linkUrl)}\r\n >\r\n {attributeName}\r\n \r\n )\r\n };\r\n\r\n private _goToLink = (linkUrl: String) => {\r\n if (MsDyn365.isBrowser && typeof window !== 'undefined') {\r\n const baseUrl = window.location.origin;\r\n if (baseUrl.length) {\r\n window.location.assign(`${baseUrl}/${linkUrl}`);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default CittaProductAttributeCompanionProduct;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { ICittaProductAttributeCompanionProductViewProps } from './citta-product-attribute-companion-product';\r\n\r\nconst ContentBlockView: React.FC = (props) => {\r\n const {\r\n contentBlockContainer,\r\n linkItem\r\n } = props;\r\n\r\n if (linkItem) {\r\n return (\r\n \r\n { /* @ts-ignore */ }\r\n {linkItem}\r\n \r\n );\r\n } else {\r\n return (null);\r\n }\r\n};\r\n\r\nexport default ContentBlockView;\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 {\r\n IComponent, IComponentProps, ICoreContext, IGridSettings,\r\n IImageData, IImageSettings, Image, IRequestContext, msdyn365Commerce\r\n} from '@msdyn365-commerce/core';\r\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\r\nimport { getProductPageUrlSync } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { format, getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nexport interface IProductComponentProps extends IComponentProps<{ product?: ProductSearchResult }> {\r\n className?: string;\r\n imageSettings?: IImageSettings;\r\n savingsText?: string;\r\n freePriceText?: string;\r\n originalPriceText?: string;\r\n currentPriceText?: string;\r\n ratingAriaLabel?: string;\r\n allowBack?: boolean;\r\n telemetryContent?: ITelemetryContent;\r\n quickViewButton?: React.ReactNode;\r\n}\r\n\r\nexport interface IProductComponent extends IComponent { }\r\n\r\nconst PriceComponentActions = {};\r\n\r\nconst ProductCard: React.FC = ({\r\n data,\r\n context,\r\n imageSettings,\r\n ratingAriaLabel,\r\n allowBack,\r\n telemetryContent,\r\n quickViewButton\r\n}) => {\r\n const product = data.product;\r\n if (!product) {\r\n return null;\r\n }\r\n\r\n let productUrl = getProductPageUrlSync(product.Name || '', product.RecordId, context && context.actionContext, undefined);\r\n if (allowBack) {\r\n productUrl = updateProductUrl(productUrl, context);\r\n }\r\n\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', telemetryContent!, '', product.RecordId.toString());\r\n\r\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- -- Do not need type check for appsettings\r\n const isUnitOfMeasureEnabled = context.app.config && context.app.config.unitOfMeasureDisplayType === 'buyboxAndBrowse';\r\n\r\n /**\r\n * Gets the react node for product unit of measure display.\r\n * @param unitOfMeasure - DefaultUnitOfMeasure property from product.\r\n * @returns The node representing markup for unit of measure component.\r\n */\r\n function renderProductUnitOfMeasure(unitOfMeasure?: string): JSX.Element | null {\r\n\r\n if (!unitOfMeasure) {\r\n return null;\r\n }\r\n return (\r\n
\r\n \r\n {unitOfMeasure}\r\n \r\n
\r\n );\r\n\r\n }\r\n\r\n return (\r\n <>\r\n \r\n
\r\n {renderProductPlacementImage(\r\n imageSettings, context.request.gridSettings, product.PrimaryImageUrl, product.Name, context.actionContext.requestContext)}\r\n
\r\n
\r\n

\r\n {product.Name}\r\n

\r\n {isUnitOfMeasureEnabled && renderProductUnitOfMeasure(product.DefaultUnitOfMeasure)}\r\n {renderDescription(product.Description)}\r\n
\r\n \r\n {quickViewButton && renderQuickView(quickViewButton, product.RecordId)}\r\n \r\n );\r\n};\r\n\r\nfunction renderLabel(name?: string, price?: string, rating?: number, ratingAriaLabel?: string): string {\r\n name = name || '';\r\n price = price || '';\r\n return (`${name} ${price} ${getRatingAriaLabel(rating, ratingAriaLabel)}`);\r\n}\r\n\r\nfunction renderDescription(description?: string): JSX.Element | null {\r\n return (

\r\n {description}\r\n

);\r\n}\r\n\r\nfunction renderQuickView(quickview: React.ReactNode, item?: number): JSX.Element | undefined {\r\n if (quickview === null) {\r\n return undefined;\r\n }\r\n return React.cloneElement(quickview as React.ReactElement, { selectedProductId: item });\r\n}\r\n\r\nfunction getRatingAriaLabel(rating?: number, ratingAriaLabel?: string): string {\r\n if (rating && ratingAriaLabel) {\r\n const roundedRating = rating.toFixed(2);\r\n return format(ratingAriaLabel || '', roundedRating, '5');\r\n }\r\n return '';\r\n}\r\n\r\nfunction updateProductUrl(productUrl: string, context: ICoreContext): string {\r\n const srcUrl = new URL(productUrl, context.request.apiSettings.baseUrl);\r\n const queryString = 'back=true';\r\n if (srcUrl.search) {\r\n srcUrl.search += `&${queryString}`;\r\n } else {\r\n srcUrl.search += queryString;\r\n }\r\n\r\n const updatedUrl = new URL(srcUrl.href);\r\n return updatedUrl.pathname + srcUrl.search;\r\n}\r\n\r\nfunction renderProductPlacementImage(\r\n imageSettings?: IImageSettings, gridSettings?: IGridSettings, imageUrl?: string, altText?: string, context?: IRequestContext): JSX.Element | null {\r\n\r\n if (!imageUrl || !gridSettings || !imageSettings) {\r\n return null;\r\n }\r\n const img: IImageData = {\r\n src: imageUrl,\r\n altText: altText ? altText : ''\r\n };\r\n const imageProps = {\r\n gridSettings,\r\n imageSettings\r\n };\r\n imageProps.imageSettings.cropFocalRegion = true;\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport const ProductComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n 'Product',\r\n { component: ProductCard, ...PriceComponentActions }\r\n);\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * ICittaProductCollection containerModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nexport const enum layout {\r\n carousel = 'carousel',\r\n grid = 'grid'\r\n}\r\n\r\nexport interface ICittaProductCollectionConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n layout?: layout;\r\n allowBackNavigation?: boolean;\r\n imageSettings?: Msdyn365.IImageSettings;\r\n clientRender?: boolean;\r\n enableAffiliationBasedPricing?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport interface ICittaProductCollectionResources {\r\n priceFree: string;\r\n ratingAriaLabel: string;\r\n flipperNext: string;\r\n flipperPrevious: string;\r\n originalPriceText: string;\r\n currentPriceText: string;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface ICittaProductCollectionProps extends Msdyn365.IModule {\r\n resources: ICittaProductCollectionResources;\r\n config: ICittaProductCollectionConfig;\r\n slots: {\r\n quickview: React.ReactNode[];\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\n/* eslint-disable no-duplicate-imports */\r\n// import { ProductComponent } from '@msdyn365-commerce/components';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { getCartFromCustomer } from '@msdyn365-commerce/global-state';\r\nimport { ProductPrice, ProductSearchResult, ProjectionDomain } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n getActivePricesAsync\r\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport { getTelemetryObject, IComponentNodeProps, IModuleProps, INodeProps, ISingleSlideCarouselProps, ITelemetryContent, NodeTag, SingleSlideCarousel } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { ICittaProductCollectionData } from './citta-product-collection.data';\r\nimport { ProductComponent } from './components/product-component';\r\n\r\nimport { ICittaProductCollectionProps, layout } from './citta-product-collection.props.autogenerated';\r\n\r\nexport interface IProductCollectionViewProps extends ICittaProductCollectionProps {\r\n heading?: React.ReactNode;\r\n ProductCollectionContainer: IModuleProps;\r\n SingleSlideCarouselComponentProps: INodeProps;\r\n GridComponentProps: INodeProps;\r\n products: IProductComponentViewProps[];\r\n isCarousel: boolean;\r\n productPrices?: ProductPrice[];\r\n}\r\n\r\nexport interface IProductComponentViewProps {\r\n ProductContainer: INodeProps;\r\n productComponent: React.ReactNode;\r\n}\r\nexport interface IProductComponentState {\r\n products: ProductSearchResult[];\r\n}\r\n\r\n/**\r\n * ProductCollection component.\r\n */\r\nclass ProductCollection extends React.PureComponent, IProductComponentState> {\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private productPrices: ProductPrice[];\r\n\r\n constructor(props: ICittaProductCollectionProps) {\r\n super(props);\r\n this.productPrices = [];\r\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry);\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (this.props.config.enableAffiliationBasedPricing &&\r\n this.props.context.actionContext.requestContext?.user?.isAuthenticated) {\r\n this._getActivePrice();\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { heading, className } = this.props.config;\r\n const { \r\n resources,\r\n data: {\r\n catelogfeed\r\n }\r\n } = this.props;\r\n const products = catelogfeed && catelogfeed.result;\r\n\r\n const isCarousel = this.props.config.layout === layout.carousel;\r\n const headingComponent = heading && (\r\n \r\n );\r\n\r\n const productCollectionViewProps = {\r\n ...this.props,\r\n heading: headingComponent,\r\n SingleSlideCarouselComponentProps: {\r\n tag: SingleSlideCarousel,\r\n className: '',\r\n flipperPrevLabel: resources.flipperPrevious,\r\n flipperNextLabel: resources.flipperNext,\r\n parentId: this.props.id,\r\n telemetryContent: this.telemetryContent\r\n } as IComponentNodeProps,\r\n ProductCollectionContainer: {\r\n moduleProps: this.props,\r\n className: classnames('ms-product-collection', className)\r\n },\r\n GridComponentProps: {\r\n tag: 'ul' as NodeTag,\r\n className: 'ms-product-collection__items'\r\n },\r\n isCarousel,\r\n products: products && products.length > 0 && products.map((item: ProductSearchResult, index: number) => this._getProduct(item, index)),\r\n productPrices: this.productPrices\r\n };\r\n return this.props.renderView(productCollectionViewProps) as React.ReactElement;\r\n }\r\n\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading!.text = event.target.value;\r\n\r\n private readonly _getProduct = (product: ProductSearchResult, index: number): IProductComponentViewProps | null => {\r\n if (!product || !product.Name) {\r\n this.props.telemetry.trace('[product-collection] Product or product name is null');\r\n return null;\r\n }\r\n const telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry);\r\n const { imageSettings, allowBackNavigation } = this.props.config;\r\n const resources = this.props.resources;\r\n const breaCrumbType = this.props.context.app.config.breadcrumbType;\r\n const allowBack = allowBackNavigation && (breaCrumbType === 'back' || breaCrumbType === 'categoryAndBack');\r\n const quickviewSlot = this.props.slots && this.props.slots.quickview && this.props.slots.quickview.length > 0 ? this.props.slots.quickview[0] : null;\r\n return {\r\n ProductContainer: {\r\n tag: 'li' as NodeTag,\r\n className: 'ms-product-collection__item',\r\n role: 'listitem',\r\n key: index\r\n },\r\n productComponent: (\r\n \r\n )\r\n };\r\n };\r\n\r\n private readonly _getActivePrice = async (): Promise => {\r\n let products = (this.state.products) || [];\r\n const productRecIds = (products && products.length > 0) ? products.map(prod => prod.RecordId) : [];\r\n const projectDomain: ProjectionDomain = { ChannelId: this.props.context.request.apiSettings.channelId, CatalogId: this.props.context.request.apiSettings.catalogId };\r\n const cart = await getCartFromCustomer(this.props.context.actionContext);\r\n const affliations = cart?.AffiliationLines;\r\n\r\n await getActivePricesAsync(\r\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\r\n projectDomain,\r\n productRecIds,\r\n new Date(),\r\n null,\r\n affliations,\r\n true\r\n ).then((activePricesResponse: ProductPrice[]) => {\r\n this.productPrices = activePricesResponse;\r\n products = products.map(prod => {\r\n const activePrice = activePricesResponse.find(price => price.ProductId === prod.RecordId);\r\n if (activePrice) {\r\n prod.Price = activePrice.CustomerContextualPrice ?? prod.Price;\r\n prod.BasePrice = Math.max(activePrice.BasePrice || 0, activePrice.TradeAgreementPrice || 0, activePrice.AdjustedPrice || 0);\r\n }\r\n return prod;\r\n });\r\n this.setState({\r\n products\r\n });\r\n })\r\n .catch((error: Error) => {\r\n this.props.context.actionContext.trace(error.message);\r\n this.props.context.actionContext.telemetry.exception(error);\r\n this.props.context.actionContext.telemetry.debug('[get Affiliation based price on Product Collection]Error executing action');\r\n throw new Error('[get Affiliation based price on Product Collection]Error executing action');\r\n });\r\n };\r\n}\r\n\r\nexport default ProductCollection;\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 { INodeProps, Module, Node, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IProductCollectionViewProps, IProductComponentViewProps } from './citta-product-collection';\r\n\r\nconst ProductCollectionView: React.FC = props => {\r\n const { heading, ProductCollectionContainer, products, SingleSlideCarouselComponentProps, GridComponentProps, isCarousel } = props;\r\n if (products) {\r\n return (\r\n \r\n {heading}\r\n {\r\n isCarousel ? _renderCarousel(SingleSlideCarouselComponentProps, products, props) : _renderGrid(GridComponentProps, products)\r\n }\r\n \r\n );\r\n }\r\n props.context.telemetry.error('Product collection content is empty, module wont render.');\r\n return null;\r\n};\r\n\r\nconst _renderCarousel = (carouselContainer: INodeProps, items: IProductComponentViewProps[],PropDetails: React.PropsWithChildren): JSX.Element => {\r\n const isMobile = PropDetails.context && PropDetails.context.request && PropDetails.context.request.device.Type === 'Mobile'\r\n let mobileCarouselContainer = {\r\n tag: 'ul' as NodeTag,\r\n className: 'ms-product-collection__custom-carousel'\r\n }\r\n return (\r\n \r\n {items && items.map(_renderProduct)}\r\n \r\n );\r\n};\r\n\r\nconst _renderGrid = (gridContainer: INodeProps, items: IProductComponentViewProps[]): JSX.Element => {\r\n return (\r\n \r\n {items && items.map(_renderProduct)}\r\n \r\n );\r\n};\r\n\r\nconst _renderProduct = (product: IProductComponentViewProps): JSX.Element => {\r\n const { ProductContainer, productComponent } = product;\r\n\r\n return (\r\n \r\n {productComponent}\r\n \r\n );\r\n};\r\n\r\nexport default ProductCollectionView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAddressAddItem, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address/src/modules/checkout-shipping-address/../../common/components/address-add';\r\nimport { IAddressSelectItem, IAddressSelectProps } from '@msdyn365-commerce-modules/address/src/modules/checkout-shipping-address/../../common/components/address-select';\r\nimport { IAddressShowItem, IAddressShowProps } from '@msdyn365-commerce-modules/address/src/modules/checkout-shipping-address/../../common/components/address-show';\r\nimport { ICheckoutShippingAddressViewProps } from '@msdyn365-commerce-modules/address/src/modules/checkout-shipping-address/./checkout-shipping-address';\r\n\r\n/**\r\n * Address show component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressDetail - Address detail.\r\n * @param param0.items - IAddressShowItem[].\r\n * @returns - Address Node.\r\n */\r\nconst AddressShow: React.FC = ({\r\n AddressDetail,\r\n items\r\n}) => {\r\n\r\n return (\r\n \r\n {items.map((item: IAddressShowItem) => {\r\n return (\r\n <>\r\n hi\r\n {item.description}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Select Component.\r\n * @param param0 - Root param.\r\n * @param param0.SelectAddress - Select address.\r\n * @param param0.addButton - Add button.\r\n * @param param0.items - IAddressSelectItem[].\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns - SelectAddress Node.\r\n */\r\nconst AddressSelect: React.FC = ({\r\n SelectAddress,\r\n addButton,\r\n items,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n\r\n return (\r\n \r\n {addButton}\r\n {items.map((item: IAddressSelectItem) => {\r\n const SelectItem = item.SelectItem;\r\n return (\r\n {item.input}\r\n \r\n );\r\n })}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Add Update Component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressForm - Address form.\r\n * @param param0.heading - Address heading.\r\n * @param param0.items - IAddressAddItem[].\r\n * @param param0.hasError - Boolean.\r\n * @param param0.error - Error message.\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns Address add update component node.\r\n */\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n {label}\r\n {alert}\r\n {input}\r\n );\r\n })}\r\n {hasError && \r\n {error.title}\r\n {error.message}\r\n }\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Checkout Shipping Address View Component.\r\n * @param props - Props.\r\n * @returns - CheckoutShippingAddress Module.\r\n */\r\nconst CheckoutShippingAddressView: React.FC = props => {\r\n const { CheckoutShippingAddress, viewState, showAddress, showAddressSelect, showAddOrUpdateAddress, cartLineImages } = props;\r\n\r\n return (\r\n \r\n {cartLineImages}\r\n {viewState.isShowAddress && }\r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutShippingAddressView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAddressAddItem, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address/src/modules/checkout-shipping-address/../../common/components/address-add';\r\nimport { IAddressSelectItem, IAddressSelectProps } from '@msdyn365-commerce-modules/address/src/modules/checkout-shipping-address/../../common/components/address-select';\r\nimport { IAddressShowItem, IAddressShowProps } from '@msdyn365-commerce-modules/address/src/modules/checkout-shipping-address/../../common/components/address-show';\r\nimport { ICheckoutShippingAddressViewProps } from '@msdyn365-commerce-modules/address/src/modules/checkout-shipping-address/./checkout-shipping-address';\r\n\r\nconst AddressShow: React.FC = ({\r\n AddressDetail,\r\n items\r\n}) => {\r\n return (\r\n \r\n {items && items.map((item: IAddressShowItem) => {\r\n return (\r\n <>\r\n {item.description}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressSelect: React.FC = ({\r\n SelectAddress,\r\n addButton,\r\n items,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n\r\n return (\r\n \r\n {addButton}\r\n {items && items.map((item: IAddressSelectItem) => {\r\n const SelectItem = item.SelectItem;\r\n return (\r\n {item.input}\r\n \r\n );\r\n })}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nconst sortArray = (arr1: any[], arr2: any[]) => {\r\n arr2.sort((a, b) => {\r\n const aKey = a.key;\r\n const bKey = b.key;\r\n return arr1.indexOf(aKey) - arr1.indexOf(bKey);\r\n });\r\n };\r\n\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton,\r\n //@ts-ignore\r\n countriesList,\r\n //@ts-ignore\r\n fieldsToHide\r\n}) => {\r\n // re-order the address...\r\n const order = [\"Name\", \"ThreeLetterISORegionName\", \"StreetNumber\", \"Street\", \"DistrictName\", \"City\", \"State\", \"ZipCode\", \"BuildingCompliment\", \"Phone\"]\r\n sortArray(order, items);\r\n //fieldsToHide\r\n let country: any = items.find(item => item.key === 'ThreeLetterISORegionName');\r\n\r\n if (countriesList && countriesList.length && country && country.input && country.input.props.displayData) {\r\n let res = country.input.props.displayData.filter((countryData: any) => countriesList.indexOf(countryData.key) !== -1)\r\n country.input.props.displayData = res;\r\n }\r\n\r\n return (\r\n \r\n {heading}\r\n {items && items.map((item: IAddressAddItem) => {\r\n if (item.key !== \"StreetNumber\") {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n {label}\r\n {alert}\r\n {input}\r\n );\r\n }\r\n return null;\r\n })}\r\n {hasError && \r\n {error.title}\r\n {error.message}\r\n }\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nconst CheckoutShippingAddressView: React.FC = props => {\r\n const { CheckoutShippingAddress, viewState, showAddress, showAddressSelect, showAddOrUpdateAddress, cartLineImages } = props;\r\n /* @ts-ignore */\r\n const { countriesList, fieldsToHide } = props.config;\r\n\r\n return (\r\n \r\n {cartLineImages}\r\n {viewState.isShowAddress && }\r\n {viewState.isShowAddresList && }\r\n {/* @ts-ignore */}\r\n {viewState.isShowAddOrUpdateAddress && }\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutShippingAddressView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { HtmlHeadInclude, IAny, IGeneric } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { IProductPageSummaryData } from './product-page-summary.data';\nimport { IProductPageSummaryProps } from './product-page-summary.props.autogenerated';\n\n/**\n *\n * ProductPageSummary component.\n * @extends {React.PureComponent}\n */\nclass ProductPageSummary extends React.PureComponent> {\n public render(): JSX.Element {\n if (this.props.data.productPageSummary.result === undefined) {\n throw new Error('PageSummaryData input to page-summary is undefined. Unable to generate page-summary');\n }\n let {\n data: {\n productPageSummary: {\n result: { title, description, keywords, sharingImageUrl, faviconUrl }\n }\n }\n } = this.props;\n\n const {\n config,\n context,\n data: {\n productPageSummary: {\n result: { canonicalUrl, productId, productBrand, price }\n }\n }\n } = this.props;\n\n // Product SEO metadata specific information - non-overridable\n const productName = title;\n const productDescription = description;\n const productImageUrl = sharingImageUrl;\n\n // Override values coming from data action if config values are provided\n title = config.title || title;\n description = config.description || description;\n keywords = config.keywords || keywords;\n sharingImageUrl = (config.sharingImage && config.sharingImage.src) || sharingImageUrl;\n faviconUrl = config.faviconUrl || faviconUrl;\n\n // Construct page title with suffix and prefix if provided from app settings\n const pageTitle = this._constructPageTitle(title, context && context.request && context.request.app);\n return (\n <>\n \n {pageTitle && {pageTitle}}\n {description && }\n {keywords && }\n {canonicalUrl && }\n {faviconUrl && }\n \n {this._renderProductMetadata(\n productName,\n productDescription,\n productImageUrl,\n canonicalUrl,\n productId,\n price,\n context.request.channel?.Currency,\n productBrand\n )}\n {!config.disableOgTags && this._renderOgTags(pageTitle, description, sharingImageUrl)}\n {!config.disableTwitterTags && this._renderTwitterTags(pageTitle, description, sharingImageUrl)}\n \n );\n }\n\n /**\n * Renders the facebook and other social media specific metadata tags.\n *\n * @param title Page title.\n * @param description Product description.\n * @param sharingImageUrl Primary product image url.\n */\n private _renderOgTags(title: string | undefined, description: string | undefined, sharingImageUrl: string | undefined): JSX.Element {\n return (\n \n {title && }\n {description && }\n {sharingImageUrl && }\n \n \n );\n }\n\n /**\n * Constructs and renders the JSON-LD tag used to output product specific metadata used by search engine crawlers.\n *\n * @param productName Product name.\n * @param description Product description.\n * @param sharingImageUrl Primary product image url.\n * @param canonicalUrl Product canonical url.\n * @param productId Master product id.\n * @param price Proudct price.\n * @param currencyCode Current channel currency code.\n * @param productBrand Product brand.\n */\n private _renderProductMetadata(\n productName: string | undefined,\n description: string | undefined,\n sharingImageUrl: string | undefined,\n canonicalUrl: string | undefined,\n productId: number | undefined,\n price: number | undefined,\n currencyCode: string | undefined,\n productBrand: string | undefined\n ): JSX.Element {\n // Construct the JSON-LD data that contains the product metadata information used by search enginge crawlers\n const productMetaData = JSON.stringify({\n '@context': 'http://schema.org',\n '@type': 'Product',\n name: productName,\n description,\n image: sharingImageUrl,\n sku: productId,\n brand: {\n '@type': 'Brand',\n name: productBrand\n },\n offers: {\n '@type': 'Offer',\n url: canonicalUrl,\n priceCurrency: currencyCode,\n price\n }\n });\n return (\n \n {/* eslint-disable-next-line react/no-danger -- Implementation is a copy.*/}\n