{"version":3,"file":"static/js/6.51802453dc26cb2b8c00.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/common/method/functions.ts?3a9c","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-account-address-tile/components/farmlands-account-address-tile-description.tsx?7ca9","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-account-address-tile/components/farmlands-account-address-tile-links.tsx?f2eb","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-account-address-tile/farmlands-account-address-tile.tsx?52ec","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-account-address-tile/farmlands-account-address-tile.view.tsx?9dd2","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-account-generic-tile/components/farmlands-account-generic-tile-links.tsx?aae9","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-account-generic-tile/farmlands-account-generic-tile.tsx?3a57","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-account-generic-tile/farmlands-account-generic-tile.view.tsx?066d","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-breadcrumb/components/link.tsx?0164","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-breadcrumb/components/separator.tsx?2ecb","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-breadcrumb/farmlands-breadcrumb.tsx?10ad","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-breadcrumb/farmlands-breadcrumb.view.tsx?cff5","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-carousel-content-block/components/links.tsx?1ea4","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-carousel-content-block/farmlands-carousel-content-block.props.autogenerated.ts?b1a6","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-carousel-content-block/farmlands-carousel-content-block.tsx?7869","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-carousel-content-block/farmlands-carousel-content-block.view.tsx?1d34","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-cookie-compliance/components/accept-button.tsx?9c50","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-cookie-compliance/components/links.tsx?8bd9","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-cookie-compliance/farmlands-cookie-compliance.tsx?325f","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-cookie-compliance/farmlands-cookie-compliance.view.tsx?3a12","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-delivery-options/components/links.tsx?43d5","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-delivery-options/farmlands-delivery-options.tsx?7322","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-delivery-options/farmlands-delivery-options.view.tsx?0504","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-product-description/farmlands-product-description.tsx?c8ac","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-product-description/farmlands-product-description.view.tsx?e953","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-promotion-block/components/button.tsx?ac58","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-promotion-block/farmlands-promotion-block.props.autogenerated.ts?f4a4","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-promotion-block/farmlands-promotion-block.tsx?e8c6","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-promotion-block/farmlands-promotion-block.view.tsx?ee82","webpack://Msdyn365.Commerce.Online/./src/themes/farmlandstheme/views/product-specification.view.tsx?be63","webpack://Msdyn365.Commerce.Online/./src/themes/farmlandstheme/views/ratings-histogram.view.tsx?9581","webpack://Msdyn365.Commerce.Online/./src/themes/farmlandstheme/views/reviews-list.view.tsx?046a","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/account-profile-edit.tsx?a0b5","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/account-profile-edit.view.tsx?530d","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-button.tsx?e669","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-error.tsx?eadf","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-input.tsx?5c72","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-label.tsx?4793","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-loading-icon.tsx?fba0","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-loading-message.tsx?7cf0","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/components/loyalty-sign-up-small-components.tsx?7106","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/loyalty-sign-up.tsx?fd89","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/loyalty-sign-up.view.tsx?45ec","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/components/sign-up-button.tsx?e1d9","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/components/sign-up-error.tsx?7f8a","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/components/sign-up-input.tsx?5bbe","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/components/sign-up-label.tsx?4988","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/business-sign-up.tsx?13a2","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/business-sign-up.view.tsx?e2f8","webpack://Msdyn365.Commerce.Online/./src/modules/business-partners/components/search-bar.tsx?63c1","webpack://Msdyn365.Commerce.Online/./src/modules/business-partners/components/data-grid.tsx?ddec","webpack://Msdyn365.Commerce.Online/./src/modules/business-partners/components/business-partner-users-table.tsx?c677","webpack://Msdyn365.Commerce.Online/./src/modules/business-partners/components/business-partners-table.tsx?8b1d","webpack://Msdyn365.Commerce.Online/./src/modules/business-partners/business-partners.tsx?57a6","webpack://Msdyn365.Commerce.Online/./src/modules/business-partners/business-partners.view.tsx?b34e","webpack://Msdyn365.Commerce.Online/./src/modules/check-in-for-pickup/check-in-confirmation.tsx?406f","webpack://Msdyn365.Commerce.Online/./src/modules/check-in-for-pickup/check-in-error.tsx?e789","webpack://Msdyn365.Commerce.Online/./src/modules/check-in-for-pickup/check-in-for-pickup.tsx?8686","webpack://Msdyn365.Commerce.Online/./src/modules/check-in-for-pickup/check-in-for-pickup.view.tsx?bd7a","webpack://Msdyn365.Commerce.Online/./src/common/waiting.tsx?8095","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-express-payment-container/checkout-express-payment-container.tsx?1d63","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-express-payment-container/checkout-express-payment-container.view.tsx?4299","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/components/accept-button.tsx?8e73","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/components/links.tsx?97b8","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.tsx?02ac","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.view.tsx?a33f","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/order-details.view.tsx?1ce1","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/ratings-histogram.view.tsx?6e01","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/reviews-list.view.tsx?cd2e","webpack://Msdyn365.Commerce.Online/./src/modules/iframe/iframe.tsx?65fe","webpack://Msdyn365.Commerce.Online/./src/modules/iframe/iframe.view.tsx?a7d6","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.tsx?9384","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.view.tsx?94a7","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list/tile-list.tsx?78cb","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list/tile-list.view.tsx?1b00","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.string.match.js?71ff"],"sourcesContent":["import { Cart, CommerceProperty } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g.d';\r\n\r\nenum ePropsValue {\r\n String = 'STRING',\r\n Integer = 'INTEGER',\r\n Boolean = 'BOOLEAN',\r\n Decimal = 'DECIMAL'\r\n}\r\n\r\ntype ExtensionPropsValue = ePropsValue.Boolean | ePropsValue.Integer | ePropsValue.String | ePropsValue.Decimal | null;\r\n\r\nconst IS_BUSINESS_ACCOUNT_KEY = 'IsBusinessAccount';\r\nconst CUST_HOLD_STATUS_KEY = 'CustHoldStatus';\r\nconst CUST_ACCOUNT_STATUS_KEY = 'CustAccountStatus';\r\n\r\n\r\nconst isShareholder = (cart: Cart): boolean => {\r\n console.log(cart)\r\n const { CustomerId, ExtensionProperties } = cart;\r\n const isBusinessAccountProperty = ExtensionProperties!.find((prop: CommerceProperty) => prop.Key === IS_BUSINESS_ACCOUNT_KEY);\r\n if (CustomerId !==undefined)\r\n {\r\n return CustomerId !== null && CustomerId!.length > 0 && ((isBusinessAccountProperty && isBusinessAccountProperty?.Value?.BooleanValue) || false);\r\n }\r\n else\r\n {\r\n return false;\r\n }\r\n};\r\n\r\nconst isCasual = (cart: Cart): boolean => {\r\n const { CustomerId, ExtensionProperties } = cart;\r\n const isBusinessAccountProperty = ExtensionProperties!.find((prop: CommerceProperty) => prop.Key === IS_BUSINESS_ACCOUNT_KEY);\r\n if (CustomerId !==undefined)\r\n {\r\n return CustomerId !== null && CustomerId!.length > 0 && ((isBusinessAccountProperty && !(isBusinessAccountProperty?.Value?.BooleanValue)) || false);\r\n }\r\n else{\r\n return false;\r\n }\r\n};\r\n\r\nconst isGuest = (cart: Cart): boolean => {\r\n const { CustomerId } = cart;\r\n if (CustomerId !==undefined)\r\n {\r\n return !(CustomerId!.length > 0);\r\n }\r\n else{\r\n return true;\r\n }\r\n\r\n};\r\n\r\nconst findExtensionProperty = (ExtensionProperties: CommerceProperty[], key: string): CommerceProperty | undefined => {\r\n return ExtensionProperties.find((prop: CommerceProperty) => prop.Key === key);\r\n};\r\n\r\n// CustHoldStatus for the customer is not set to \"Tax invoice\" or \"All\"\r\nconst isShareholderAccountNotOnHold = (ExtensionProperties: CommerceProperty[]): boolean => {\r\n const custHoldStatusProp = findExtensionProperty(ExtensionProperties, CUST_HOLD_STATUS_KEY);\r\n const onHoldStatus = custHoldStatusProp ? custHoldStatusProp.Value!.StringValue! : '';\r\n return !['Tax invoice', 'All'].includes(onHoldStatus);\r\n};\r\n\r\n// CustAccountStatus for the customer is set to \"Active\" or \"Monitored\"\r\nconst isShareholderAccountNotInactive = (ExtensionProperties: CommerceProperty[]): boolean => {\r\n const custAccountStatusProp = findExtensionProperty(ExtensionProperties, CUST_ACCOUNT_STATUS_KEY);\r\n const accountStatus = custAccountStatusProp ? custAccountStatusProp.Value!.StringValue! : '';\r\n return ['Active', 'Monitored'].includes(accountStatus);\r\n};\r\n\r\n// CustAccountStatus for the customer is set to \"Off-boarding\" or \"Suspended\"\r\nconst isShareholderAccountDisabled = (ExtensionProperties: CommerceProperty[]): boolean => {\r\n const custAccountStatusProp = findExtensionProperty(ExtensionProperties, CUST_ACCOUNT_STATUS_KEY);\r\n const accountStatus = custAccountStatusProp ? custAccountStatusProp.Value!.StringValue! : '';\r\n return ['Off-boarding', 'Suspended'].includes(accountStatus);\r\n};\r\n\r\n// CustAccountStatus for the customer is set to specifically to \"Inactive\"\r\nconst isShareholderAccountInactive = (ExtensionProperties: CommerceProperty[]): boolean => {\r\n const custAccountStatusProp = findExtensionProperty(ExtensionProperties, CUST_ACCOUNT_STATUS_KEY);\r\n const accountStatus = custAccountStatusProp ? custAccountStatusProp.Value!.StringValue! : '';\r\n return ['Inactive'].includes(accountStatus);\r\n};\r\n\r\nconst hasEcommerceAccess = (userContactDetails: any): boolean => {\r\n return userContactDetails?.CustomerAccounts.find((account: any) => account.IsActive === true).Permissions[0]?.Authorities.find(\r\n (prop: any) => prop.Authority === 'EcommerceAccess'\r\n );\r\n};\r\n\r\n/**\r\n * Get the value of an ExtensionProperty (EP)\r\n * @param extensionProperties The EP used to search for property\r\n * @param keyValue The key value to search\r\n * @param typeValue The type value to return\r\n * @returns The value from EP or EP Object if no typeValue is passed\r\n */\r\nconst getExtensionProperty = (extensionProperties: CommerceProperty[], keyValue: string, typeValue: ExtensionPropsValue = null): any => {\r\n const extensionProperty = extensionProperties.find((prop: CommerceProperty) => prop.Key === keyValue);\r\n\r\n if (typeValue === null || !extensionProperty) {\r\n return extensionProperty;\r\n }\r\n\r\n switch (typeValue) {\r\n case ePropsValue.String:\r\n return extensionProperty.Value!.StringValue;\r\n case ePropsValue.Boolean:\r\n return extensionProperty.Value!.BooleanValue;\r\n case ePropsValue.Integer:\r\n return extensionProperty.Value!.IntegerValue;\r\n case ePropsValue.Decimal:\r\n return extensionProperty.Value!.DecimalValue;\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nconst isValidColour = (str: string | undefined): string | void => {\r\n if (str === undefined || str.match(/^#[a-f0-9]{6}$/i) === null) {\r\n return;\r\n }\r\n return str;\r\n};\r\n\r\nexport {\r\n isShareholder,\r\n isCasual,\r\n isGuest,\r\n isShareholderAccountNotInactive,\r\n isShareholderAccountDisabled,\r\n isShareholderAccountInactive,\r\n isShareholderAccountNotOnHold,\r\n hasEcommerceAccess,\r\n ePropsValue,\r\n getExtensionProperty,\r\n isValidColour\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\ninterface IAccountAddressTileDescription {\r\n description: string;\r\n}\r\n\r\nconst IAccountAddressTileDescription: React.FC = ({ description }) => (\r\n

{description}

\r\n);\r\n\r\nexport default IAccountAddressTileDescription;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { ILinksData } from '../farmlands-account-address-tile.props.autogenerated';\r\n\r\nexport interface IAccountAddressTileLinks {\r\n links: ILinksData[];\r\n}\r\n\r\nconst AccountAddressTileLinks: React.FC = ({ links }) => {\r\n if (links.length === 0) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {links.map((link: ILinksData, index: number) => (\r\n \r\n {link.linkText}\r\n \r\n ))}\r\n
\r\n );\r\n};\r\n\r\nexport default AccountAddressTileLinks;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport { IFarmlandsAccountAddressTileData } from './farmlands-account-address-tile.data';\r\nimport { IFarmlandsAccountAddressTileProps } from './farmlands-account-address-tile.props.autogenerated';\r\nimport DescriptionComponent from './components/farmlands-account-address-tile-description';\r\nimport LinksComponent from './components/farmlands-account-address-tile-links';\r\nimport { isShareholder } from '../../common/method/functions';\r\n\r\nexport interface IAccountAddressTileViewProps\r\n extends IFarmlandsAccountAddressTileProps {\r\n AccountAddressTile: IModuleProps;\r\n className: string;\r\n heading?: React.ReactNode;\r\n links?: React.ReactNode;\r\n description?: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * AccountAddress component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass AccountAddressTile extends React.PureComponent<\r\n IFarmlandsAccountAddressTileProps\r\n> {\r\n public render(): JSX.Element {\r\n const { config, data } = this.props;\r\n const { className, heading, links, shareholderText } = config;\r\n const { address } = data;\r\n const addressCount = (address && address.result && address.result.length) || 0;\r\n const description = this._formatAddressDescription(addressCount);\r\n\r\n const isShareholderAccount: boolean = isShareholder(data.cart.result!.cart);\r\n\r\n const viewProps = {\r\n ...this.props,\r\n className: className,\r\n AccountAddressTile: {\r\n moduleProps: this.props,\r\n className: classnames('ms-account-address-tile', config.className)\r\n },\r\n heading: heading && (\r\n \r\n ),\r\n links: !isShareholderAccount && links && links.length > 0 && ,\r\n description: !isShareholderAccount ? (\r\n \r\n ) : (\r\n \r\n )\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _formatAddressDescription(count: number): string {\r\n const numberWords = ['no', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];\r\n if (count <= 1) {\r\n return `You have ${numberWords[count]} address saved.`;\r\n }\r\n if (count < 10) {\r\n return `You have ${numberWords[count]} addresses saved.`;\r\n }\r\n return `You have ${count} addresses saved.`;\r\n }\r\n}\r\n\r\nexport default AccountAddressTile;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IAccountAddressTileViewProps } from './farmlands-account-address-tile';\r\n\r\nconst AccountAddressTileView: React.FC = props => {\r\n const {\r\n AccountAddressTile,\r\n heading,\r\n description,\r\n links\r\n } = props;\r\n\r\n return (\r\n \r\n {heading}\r\n {description}\r\n {links}\r\n \r\n );\r\n};\r\n\r\nexport default AccountAddressTileView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { ILinksData } from '../farmlands-account-generic-tile.props.autogenerated';\r\n\r\nexport interface IAccountGenericTileLinks {\r\n links: ILinksData[];\r\n}\r\n\r\nconst AccountGenericTileLinks: React.FC = ({ links }) => {\r\n if (links.length === 0) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {links.map((link: ILinksData, index: number) => (\r\n \r\n {link.linkText}\r\n \r\n ))}\r\n
\r\n );\r\n};\r\n\r\nexport default AccountGenericTileLinks;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { IFarmlandsAccountGenericTileData } from './farmlands-account-generic-tile.data';\r\nimport {\r\n IFarmlandsAccountGenericTileConfig, IFarmlandsAccountGenericTileProps\r\n} from './farmlands-account-generic-tile.props.autogenerated';\r\nimport LinksComponent from './components/farmlands-account-generic-tile-links';\r\nimport { isShareholder } from '../../common/method/functions';\r\n\r\nexport interface IAccountGenericTileViewProps extends IFarmlandsAccountGenericTileProps {\r\n AccountGenericTile: IModuleProps;\r\n className: string;\r\n heading?: React.ReactNode;\r\n links?: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * AccountGeneric component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass AccountGenericTile extends React.PureComponent> {\r\n public render(): JSX.Element {\r\n const { config, data } = this.props;\r\n const { className, heading } = config;\r\n\r\n const links = isShareholder(data.cart.result!.cart)\r\n ? this.props.config.shareholderLinks\r\n : this.props.config.links;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n className: className,\r\n AccountGenericTile: {\r\n moduleProps: this.props,\r\n className: classnames('ms-account-generic-tile', config.className)\r\n },\r\n heading: heading && ,\r\n links: links && links.length > 0 && \r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n}\r\n\r\nexport default AccountGenericTile;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IAccountGenericTileViewProps } from './farmlands-account-generic-tile';\r\n\r\nconst AccountGenericTileView: React.FC = props => {\r\n const { AccountGenericTile, heading, links } = props;\r\n\r\n return (\r\n \r\n {heading}\r\n {links}\r\n \r\n );\r\n};\r\n\r\nexport default AccountGenericTileView;\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 { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\ninterface ILink {\r\n className?: string;\r\n text?: string;\r\n href?: string;\r\n ariaLabel?: string;\r\n index: string;\r\n noclick?: boolean;\r\n telemetryContent: ITelemetryContent;\r\n}\r\n\r\nexport const Link: React.FC = ({ text, className, href, ariaLabel, index, noclick, telemetryContent }) => {\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent, '', '');\r\n\r\n const linkText = text !== undefined ? text : '';\r\n payLoad.contentAction.etext = linkText;\r\n\r\n // Construct telemetry attribute to render\r\n const attribute = getTelemetryAttributes(telemetryContent, payLoad);\r\n\r\n return (\r\n \r\n \r\n {linkText}\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\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\ninterface ISeparator {\r\n separator: string;\r\n}\r\n\r\nexport const Separator: React.FC = ({ separator }) => (\r\n {' '}\r\n {separator}\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\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\nimport { ICategoryUrl } from '@msdyn365-commerce/core-internal/dist/types/interfaces/ICategoryPathInterfaces';\r\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IFarmlandsBreadcrumbData } from './farmlands-breadcrumb.data';\r\nimport { IFarmlandsBreadcrumbProps, ILinksData } from './farmlands-breadcrumb.props.autogenerated';\r\nimport { Link } from './components/link';\r\nimport { Separator } from './components/separator';\r\n\r\nexport interface IBreadcrumbViewProps extends IFarmlandsBreadcrumbProps {\r\n root?: React.ReactNode;\r\n links?: React.ReactNode[];\r\n backButton?: React.ReactNode;\r\n separator?: React.ReactNode;\r\n BreadcrumbContainer: IModuleProps;\r\n BreadcrumbList: INodeProps;\r\n BreadcrumbListItem: INodeProps;\r\n}\r\n\r\n/**\r\n *\r\n * Breadcrumb component.\r\n * @extends {React.PureComponent>}\r\n */\r\nclass Breadcrumb extends React.PureComponent> {\r\n private readonly _pageType: string | undefined = this.props.context.request.urlTokens.pageType;\r\n\r\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry);\r\n\r\n public render(): JSX.Element | null {\r\n\r\n const { className } = this.props.config;\r\n let rootLink = null;\r\n let breadcrumbLinks = null;\r\n let backButtonComponent = null;\r\n rootLink = this._getRootLink();\r\n const itemPosition = rootLink ? 1 : 0;\r\n if (this._pageType === 'Category') {\r\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\r\n if (!breadcrumbLinks) {\r\n breadcrumbLinks = this._getCategoryHierarchy(itemPosition);\r\n }\r\n } else if (this._pageType === 'Product') {\r\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\r\n if (!breadcrumbLinks) {\r\n const breaCrumbType = this.props.context.app.config.breadcrumbType;\r\n if (breaCrumbType === 'category') {\r\n breadcrumbLinks = this._getPDPLinks(itemPosition);\r\n }\r\n if (breaCrumbType === 'categoryAndBack') {\r\n backButtonComponent = this._getPDPBackButton();\r\n breadcrumbLinks = this._getPDPLinks(itemPosition);\r\n }\r\n if (breaCrumbType === 'back') {\r\n backButtonComponent = this._getPDPBackButton();\r\n if (backButtonComponent === null) {\r\n breadcrumbLinks = this._getPDPLinks(itemPosition);\r\n }\r\n }\r\n }\r\n\r\n } else {\r\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\r\n }\r\n const linkSeparator = ;\r\n\r\n const breadcrumbViewProps = {\r\n ...this.props,\r\n BreadcrumbContainer: {\r\n moduleProps: this.props,\r\n className: classnames('ms-breadcrumb', className),\r\n tag: 'nav',\r\n role: 'navigation'\r\n },\r\n BreadcrumbList: {\r\n tag: 'ol' as NodeTag,\r\n className: 'ms-breadcrumb_list'\r\n },\r\n BreadcrumbListItem: {\r\n tag: 'li',\r\n className: 'ms-breadcrumb_item'\r\n },\r\n root: rootLink,\r\n links: breadcrumbLinks,\r\n backButton: backButtonComponent,\r\n separator: linkSeparator\r\n };\r\n return this.props.renderView(breadcrumbViewProps) as React.ReactElement;\r\n }\r\n\r\n private readonly _getRootLink = (): JSX.Element | null => {\r\n const { root } = this.props.config;\r\n if (!root || !root.linkUrl || !root.linkUrl.destinationUrl) {\r\n this.props.context.telemetry.error('BreadCrumb link url content is empty, link wont render');\r\n return null;\r\n }\r\n return (\r\n );\r\n\r\n };\r\n\r\n private readonly _getCustomBreadcrumbLinks = (itemPosition: number): JSX.Element[] | null => {\r\n const { links } = this.props.config;\r\n\r\n if (!links || links.length === 0) {\r\n this.props.context.telemetry.error('BreadCrumb links content is empty, links wont render');\r\n return null;\r\n }\r\n return (\r\n links.map((value: ILinksData, index: number) => {\r\n itemPosition++;\r\n return (\r\n \r\n );\r\n }));\r\n };\r\n\r\n private readonly _getCategoryHierarchy = (itemPosition: number): JSX.Element[] | null => {\r\n const { data } = this.props;\r\n const categoryHierarchy = data.categoryHierarchy.result;\r\n if (!categoryHierarchy) {\r\n this.props.context.telemetry.error('Category Hierarchy content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n return (\r\n categoryHierarchy.map((value: CategoryHierarchy, index: number) => {\r\n const friendlyName = this._getFriendlyName(this.props.context.request.locale, value.NameTranslations);\r\n if (MsDyn365.isBrowser) {\r\n if ((Window as any).digitalData.page.attributes.breadcrumb?.length < itemPosition) {\r\n (Window as any).digitalData.page.attributes.breadcrumb.push(friendlyName);\r\n }\r\n else {\r\n (Window as any).digitalData.page.attributes.breadcrumb = [friendlyName];\r\n }\r\n }\r\n itemPosition++;\r\n return (\r\n \r\n );\r\n }));\r\n\r\n };\r\n\r\n /**\r\n * The function to get translation name for the locale.\r\n * @param locale - The locale information.\r\n * @param nameTranslations - The name translations names.\r\n * @returns - The translation name for the locale.\r\n */\r\n private readonly _getFriendlyName = (locale: string, nameTranslations?: TextValueTranslation[]): string | undefined => {\r\n let nameTranslation: TextValueTranslation | undefined;\r\n if (locale && nameTranslations && ArrayExtensions.hasElements(nameTranslations)) {\r\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\r\n }\r\n\r\n return nameTranslation?.Text;\r\n };\r\n\r\n private readonly _getPDPLinks = (itemPosition: number): JSX.Element[] | null => {\r\n const { data, config } = this.props;\r\n const categoryHierarchy = data.categoryPaths.result;\r\n const product = data.product.result;\r\n const url = this.props.context.request.url.requestUrl.href;\r\n if (!categoryHierarchy) {\r\n this.props.context.telemetry.error('Category path content is empty for the product');\r\n return null;\r\n }\r\n const links: JSX.Element[] = [];\r\n\r\n categoryHierarchy.map((value: ICategoryUrl, index: number) => {\r\n itemPosition++;\r\n if (typeof document !== 'undefined' && typeof window !== 'undefined') {\r\n if ((Window as any).digitalData.page.attributes.breadcrumb?.length < itemPosition) {\r\n (Window as any).digitalData.page.attributes.breadcrumb.push(value.Name);\r\n }\r\n else {\r\n (Window as any).digitalData.page.attributes.breadcrumb = [value.Name];\r\n }\r\n links.push(\r\n \r\n );\r\n }\r\n });\r\n if (product && !config.hideProductName) {\r\n itemPosition++;\r\n if (typeof document !== 'undefined' && typeof window !== 'undefined') {\r\n if ((Window as any).digitalData.page.attributes.breadcrumb?.length < itemPosition) {\r\n (Window as any).digitalData.page.attributes.breadcrumb.push(product.Name);\r\n }\r\n else {\r\n (Window as any).digitalData.page.attributes.breadcrumb = [product.Name];\r\n }\r\n links.push(\r\n \r\n );\r\n }\r\n }\r\n return links;\r\n\r\n };\r\n\r\n private readonly _goBack = (): void => {\r\n window.history.back();\r\n };\r\n\r\n private readonly _getPDPBackButton = (): JSX.Element | null => {\r\n const isBackAllowed = this.props.context && this.props.context.request && this.props.context.request.query && this.props.context.request.query.back;\r\n if (!isBackAllowed) {\r\n return null;\r\n }\r\n if (MsDyn365.isBrowser && (document.referrer === '' || window.history.length < 2)) {\r\n return null;\r\n }\r\n return (\r\n \r\n {this.props.resources.backToResultsText}\r\n \r\n );\r\n\r\n };\r\n}\r\n\r\nexport default Breadcrumb;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IBreadcrumbViewProps } from './farmlands-breadcrumb';\r\n\r\nconst BreadCrumbView: React.FC = props => {\r\n const { root, links, backButton, BreadcrumbContainer, BreadcrumbList, BreadcrumbListItem, separator } = props;\r\n if (!root && !links && !backButton) {\r\n props.context.telemetry.error('BreadCrumb content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n \r\n {root &&\r\n \r\n {root}\r\n {links && separator}\r\n }\r\n {backButton &&\r\n \r\n {backButton}\r\n }\r\n {links && links.map((link, index) => (\r\n \r\n \r\n {link}\r\n {links[index + 1] && separator}\r\n \r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default BreadCrumbView;\r\n","/* tslint:disable: no-duplicate-imports */\r\nimport {\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n ITelemetryContent,\r\n onTelemetryClick\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { ILinksData } from '../farmlands-carousel-content-block.props.autogenerated';\r\n\r\nexport interface IContentCardLinks {\r\n links: ILinksData[];\r\n requestContext: Msdyn365.IRequestContext;\r\n telemetryContent: ITelemetryContent;\r\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\r\n}\r\n\r\n/**\r\n *\r\n * ContentCardLinks component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class ContentCardLinks extends React.PureComponent {\r\n public render(): JSX.Element {\r\n const editableLinks = this._mapEditableLinks(this.props.links);\r\n return (\r\n
\r\n {editableLinks && editableLinks.length ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n }\r\n\r\n private _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\r\n if (!linkdata || linkdata.length === 0) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n linkdata.forEach((link, index) => {\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\r\n const linkText = link.linkText ? link.linkText : '';\r\n payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\r\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: btnClass,\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'button',\r\n additionalProperties: attributes,\r\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\r\n };\r\n editableLinks.push(editableLink);\r\n });\r\n\r\n return editableLinks;\r\n };\r\n}\r\nexport default ContentCardLinks;\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 * IFarmlandsCarouselContentBlock contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum actionableRegion {\r\n imageAndLinks = 'imageAndLinks',\r\n linksOnly = 'linksOnly'\r\n}\r\n\r\nexport interface IFarmlandsCarouselContentBlockConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n desktopHeadingColour?: string;\r\n mobileHeadingColour?: string;\r\n paragraph?: Msdyn365.RichText;\r\n desktopParagraphColour?: string;\r\n mobileParagraphColour?: string;\r\n mobileParagraphBackgroundColour?: string;\r\n desktopImage: Msdyn365.IImageData;\r\n mobileImage?: Msdyn365.IImageData;\r\n links?: ILinksData[];\r\n actionableRegion?: actionableRegion;\r\n imageLink?: Msdyn365.ILinkData;\r\n shouldOpenLinkInNewTab?: boolean;\r\n imageAriaLabel?: string;\r\n className?: 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 ILinksData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n}\r\n\r\nexport interface IFarmlandsCarouselContentBlockProps extends Msdyn365.IModule {\r\n config: IFarmlandsCarouselContentBlockConfig;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* tslint:disable: no-duplicate-imports */\r\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { getRichTextHtml } from '@msdyn365-commerce/core';\r\nimport { computed } from 'mobx';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport LinksComponent from './components/links';\r\nimport { isValidColour } from '../../common/method/functions';\r\nimport { actionableRegion as region, IFarmlandsCarouselContentBlockProps } from './farmlands-carousel-content-block.props.autogenerated';\r\n\r\ntype DeviceType = 'Mobile';\r\nexport interface IContentBlockViewProps extends IFarmlandsCarouselContentBlockProps<{}> {\r\n title?: React.ReactNode;\r\n text?: React.ReactNode;\r\n image?: React.ReactNode;\r\n links?: React.ReactNode;\r\n className?: string;\r\n contentBlockContainer: IModuleProps;\r\n imageContainer: INodeProps;\r\n detailsDesktopContainer: INodeProps;\r\n detailsMobileContainer: INodeProps;\r\n contentBlockAnchorTag?: INodeProps;\r\n imageLink?: string;\r\n shouldOpenLinkInNewTab?: boolean;\r\n imageAriaLabel?: string;\r\n}\r\n/**\r\n *\r\n * ContentCard component\r\n * @extends {React.PureComponent}\r\n */\r\n\r\nclass ContentBlock extends React.PureComponent> {\r\n private telemetryContent: ITelemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n\r\n @computed get isMobile(): boolean {\r\n return (\r\n this.props.context.request &&\r\n this.props.context.request.device &&\r\n (this.props.context.request.device.Type as DeviceType) === 'Mobile'\r\n );\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n heading,\r\n mobileHeadingColour,\r\n desktopHeadingColour,\r\n paragraph,\r\n mobileParagraphColour,\r\n desktopParagraphColour,\r\n mobileParagraphBackgroundColour,\r\n desktopImage,\r\n mobileImage,\r\n links,\r\n shouldOpenLinkInNewTab,\r\n className,\r\n imageAriaLabel\r\n } = this.props.config;\r\n\r\n const CustomTag = (`${heading?.tag}` || 'h1') as keyof JSX.IntrinsicElements;\r\n const contentBlockTitle = heading && (\r\n \r\n {heading.text}\r\n \r\n );\r\n const imageProps = (imageType: Msdyn365.IImageData) => {\r\n return {\r\n gridSettings: this.props.context.request.gridSettings || {},\r\n imageSettings: imageType && imageType.imageSettings\r\n };\r\n };\r\n const contentBlockLinks = links && links.length > 0 && (\r\n \r\n );\r\n const contentBlockText = paragraph && (\r\n // tslint:disable-next-line: react-no-dangerous-html\r\n \r\n );\r\n const contentBlockImage = desktopImage && (\r\n <>\r\n \r\n {mobileImage && (\r\n \r\n )}\r\n \r\n );\r\n\r\n if (!contentBlockTitle && !contentBlockText && !contentBlockImage && !contentBlockLinks) {\r\n this.props.context.telemetry.error('Content block content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n const contentBlockviewProps = {\r\n ...this.props,\r\n title: contentBlockTitle,\r\n text: contentBlockText,\r\n image: contentBlockImage,\r\n links: contentBlockLinks,\r\n moduleClass: this.props.config.className,\r\n contentBlockContainer: {\r\n moduleProps: this.props,\r\n className: classnames('farmlands-carousel-content-block', className)\r\n },\r\n imageContainer: { className: 'farmlands-carousel-content-block__image' },\r\n detailsDesktopContainer: {\r\n className: 'farmlands-carousel-content-block__details farmlands-carousel-content-block__details--desktop'\r\n },\r\n detailsMobileContainer: {\r\n style: { 'background-color': isValidColour(mobileParagraphBackgroundColour) || '#000000' },\r\n className: 'farmlands-carousel-content-block__details farmlands-carousel-content-block__details--mobile'\r\n },\r\n contentBlockAnchorTag: {\r\n tag: 'a',\r\n className: 'farmlands-carousel-content-block__link',\r\n role: 'link'\r\n },\r\n imageLink: this._getImageLink(),\r\n imageAriaLabel,\r\n shouldOpenLinkInNewTab: shouldOpenLinkInNewTab\r\n };\r\n\r\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\r\n }\r\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\r\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.paragraph = event.target.value);\r\n /* Handle link text change*/\r\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\r\n if (this.props.config.links && this.props.config.links[linkIndex]) {\r\n this.props.config.links[linkIndex].linkText = event.target.value;\r\n }\r\n };\r\n private _getImageLink(): string | null {\r\n const { imageLink, links, actionableRegion } = this.props.config;\r\n if (actionableRegion === region.imageAndLinks) {\r\n if (imageLink && imageLink.destinationUrl) {\r\n return imageLink.destinationUrl;\r\n } else if (links && links.length && links[0].linkUrl) {\r\n return links[0].linkUrl.destinationUrl;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n\r\nexport default ContentBlock;\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/* tslint:disable: no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IContentBlockViewProps } from './farmlands-carousel-content-block';\r\n\r\nconst ContentBlockView: React.FC = (props) => {\r\n const {\r\n contentBlockContainer,\r\n imageContainer,\r\n detailsDesktopContainer,\r\n detailsMobileContainer,\r\n title,\r\n text,\r\n links,\r\n image,\r\n contentBlockAnchorTag,\r\n imageLink,\r\n imageAriaLabel,\r\n shouldOpenLinkInNewTab\r\n } = props;\r\n\r\n if (imageLink) {\r\n return (\r\n \r\n \r\n \r\n {image}\r\n \r\n {title}\r\n {text}\r\n {links}\r\n \r\n \r\n \r\n {title}\r\n {text}\r\n {links}\r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n {image}\r\n \r\n {title}\r\n {text}\r\n {links}\r\n \r\n \r\n \r\n {title}\r\n {text}\r\n {links}\r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nexport default ContentBlockView;\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/* tslint:disable: no-duplicate-imports */\r\nimport {\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n IPayLoad,\r\n ITelemetryContent\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface ICookieComplianceAcceptButton {\r\n acceptCookiesButtonText?: string;\r\n acceptCookiesButtonAriaLabel?: string;\r\n colour: string;\r\n /** The telemetry content */\r\n telemetryContent?: ITelemetryContent;\r\n onClose(): void;\r\n}\r\n\r\nexport const CookieComplianceAcceptButton: React.FC = ({\r\n acceptCookiesButtonText,\r\n acceptCookiesButtonAriaLabel,\r\n colour,\r\n telemetryContent,\r\n onClose\r\n}) => {\r\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return (\r\n \r\n {acceptCookiesButtonText}\r\n \r\n );\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* tslint:disable: no-duplicate-imports */\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { IActionLinksData } from '../farmlands-cookie-compliance.props.autogenerated';\r\n\r\nexport interface ICookieComplianceLinks {\r\n links: IActionLinksData[];\r\n requestContext: Msdyn365.IRequestContext;\r\n telemetryContent: ITelemetryContent;\r\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\r\n}\r\n\r\n/**\r\n *\r\n * ContentCardLinks component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class CookieComplianceLinks extends React.PureComponent {\r\n public render(): JSX.Element {\r\n const editableLinks = this._mapEditableLinks(this.props.links);\r\n return(\r\n \r\n {editableLinks && editableLinks.length ?\r\n \r\n : null\r\n }\r\n \r\n\r\n );\r\n }\r\n\r\n private _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\r\n if(!linkdata || linkdata.length === 0) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n linkdata.forEach((link,index) => {\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\r\n const linkText = link.linkText ? link.linkText : '';\r\n payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'link',\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'button',\r\n additionalProperties: attributes,\r\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\r\n };\r\n editableLinks.push(editableLink);\r\n });\r\n\r\n return editableLinks;\r\n };\r\n}\r\n\r\nexport default CookieComplianceLinks;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/* tslint:disable: no-duplicate-imports */\r\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as MsDyn365 from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { isValidColour } from '../../common/method/functions';\r\nimport { CookieComplianceAcceptButton, CookieComplianceLinks} from './components';\r\nimport { IFarmlandsCookieComplianceConfig, IFarmlandsCookieComplianceProps } from './farmlands-cookie-compliance.props.autogenerated';\r\n\r\nexport interface IAlertState {\r\n visible: boolean;\r\n}\r\n\r\nexport interface ICookieComplianceViewProps extends IFarmlandsCookieComplianceProps<{}> {\r\n CookieComplianceBanner: IModuleProps;\r\n AlertProps: IAlertProps;\r\n Content: INodeProps;\r\n text?: React.ReactNode;\r\n links?: React.ReactNode;\r\n acceptButton?: React.ReactNode;\r\n className: string;\r\n onDismiss(): void;\r\n}\r\n\r\n/**\r\n *\r\n * CookieCompliance component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CookieCompliance extends React.PureComponent, IAlertState> {\r\n private cookieRef: React.RefObject;\r\n private telemetryContent: ITelemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry);\r\n constructor(props: IFarmlandsCookieComplianceProps) {\r\n super(props);\r\n this.state = {visible:false};\r\n this.cookieRef = React.createRef();\r\n this._onDismiss = this._onDismiss.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n const { context } = this.props;\r\n\r\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\r\n this.setState({visible: true});\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { config, context, resources, telemetry } = this.props;\r\n const { bannerColour, bannerButtonColour } = config;\r\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\r\n const { visible } = this.state;\r\n\r\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\r\n let moduleConfig: IFarmlandsCookieComplianceConfig;\r\n\r\n try {\r\n moduleConfig = config;\r\n } catch(e) {\r\n telemetry.error(`Something went wrong while rendering the alert module ------${e}`);\r\n return
{e}
;\r\n }\r\n\r\n if (isConsentGiven && !visible) {\r\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n const viewProps = {\r\n ...this.props,\r\n onDismiss: this._onDismiss,\r\n CookieComplianceBanner: {\r\n moduleProps: this.props,\r\n className: classnames('ms-cookie-compliance', moduleConfig.className),\r\n ref: this.cookieRef,\r\n style: { 'background-color': isValidColour(bannerColour) || '#00553d' }\r\n },\r\n AlertProps: {\r\n className: 'ms-cookie-compliance__container',\r\n color: 'white',\r\n fade: false\r\n },\r\n Content: {\r\n className: 'ms-cookie-compliance__content'\r\n },\r\n text: moduleConfig.content && (\r\n \r\n ),\r\n links: moduleConfig.actionLinks && moduleConfig.actionLinks.length > 0 && (\r\n \r\n ),\r\n acceptButton: (\r\n )\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /* Handle link text change*/\r\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent) => {\r\n if(this.props.config.actionLinks && this.props.config.actionLinks[linkIndex]) {\r\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\r\n }\r\n };\r\n\r\n /* Handle text content change*/\r\n public handleContentChange = (event: MsDyn365.ContentEditableEvent) => this.props.config.content = event.target.value;\r\n\r\n private _onDismiss(): void {\r\n const { context } = this.props;\r\n\r\n if (context && context.request && context.request.cookies) {\r\n context.request.cookies.setConsentCookie();\r\n location.reload();\r\n }\r\n this.setState({visible: false});\r\n }\r\n}\r\n\r\nexport default CookieCompliance;","/*---------------------------------------------------------------------------------------------\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/* tslint:disable: no-duplicate-imports */\r\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { ICookieComplianceViewProps } from './farmlands-cookie-compliance';\r\n\r\nconst CookieComplianceView: React.FC = props => {\r\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n {text}\r\n {links}\r\n \r\n {acceptButton}\r\n \r\n \r\n );\r\n};\r\nexport default CookieComplianceView;","import * as React from 'react';\r\nimport { ILinksData } from '../farmlands-delivery-options.props.autogenerated';\r\n\r\nexport interface IContentCardLinks {\r\n links: ILinksData[];\r\n}\r\n\r\nconst ContentCardLinks: React.FC = ({ links }) => (\r\n
\r\n {links.map((cta: ILinksData, index: number) => {\r\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\r\n return (\r\n \r\n {cta.linkText}\r\n \r\n );\r\n })}\r\n
\r\n);\r\n\r\nexport default ContentCardLinks;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Heading, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { reaction } from 'mobx';\r\nimport { getDeliveryOptionsAsync } from '../../actions/farmlands-get-delivery-options-calls.action';\r\nimport LinksComponent from './components/links';\r\nimport { IFarmlandsDeliveryOptionsData } from './farmlands-delivery-options.data';\r\nimport { IFarmlandsDeliveryOptionsProps } from './farmlands-delivery-options.props.autogenerated';\r\nimport { getActivePricesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport { getCustomer, GetCustomerInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n ProjectionDomain,\r\n AffiliationLoyaltyTier,\r\n CustomerAffiliation,\r\n ProductPrice,\r\n CommerceProperty\r\n} from '@msdyn365-commerce/retail-proxy';\r\n\r\nexport interface IContentBlockViewProps extends IFarmlandsDeliveryOptionsProps {\r\n title?: React.ReactNode;\r\n text?: React.ReactNode;\r\n image?: React.ReactNode;\r\n links?: React.ReactNode;\r\n className?: string;\r\n contentBlockContainer: IModuleProps;\r\n imageContainer: INodeProps;\r\n detailsContainer: INodeProps;\r\n deliveryData?: any;\r\n}\r\nexport interface IDeliveryOptionsComponentState {\r\n products: any[];\r\n deliveryData: any;\r\n}\r\n\r\nlet deliveryData: any;\r\n\r\n/**\r\n *\r\n * ContentCard component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass ContentBlock extends React.PureComponent<\r\n IFarmlandsDeliveryOptionsProps,\r\n IDeliveryOptionsComponentState\r\n> {\r\n constructor(props: IFarmlandsDeliveryOptionsProps) {\r\n super(props);\r\n this.state = {\r\n products: [this.props.data.product],\r\n deliveryData: null,\r\n };\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n const { data, context } = this.props;\r\n const { product } = this.props.data;\r\n // set deliveryData on load of the module\r\n const recordId = await product?.result?.RecordId;\r\n await this._getActivePrice();\r\n const salesPriceInclGST = this.state.products[0].result.ExtensionProperties?.find(\r\n (prop: CommerceProperty) => prop.Key === 'ItemPriceWithGST'\r\n )?.Value?.DecimalValue;\r\n const response = await getDeliveryOptionsAsync({\r\n context: { callerContext: this.props.context.actionContext, queryResultSettings: {} },\r\n recordId,\r\n salesPriceInclGST\r\n });\r\n deliveryData = await Promise.all(response.DeliveryOptions);\r\n this.setState({ deliveryData: deliveryData });\r\n // run below logic when the product variant is selected\r\n // @ts-ignore: Compiler not reconizing condition check for function params\r\n reaction(\r\n () => (data.product.result ? data.product.result.RecordId : null),\r\n async () => {\r\n if (context && data.product.result) {\r\n const variantProduct = data.product;\r\n const variantRecordId = await variantProduct?.result?.RecordId;\r\n const variantSalesPriceInclGST = await variantProduct.result.AdjustedPrice;\r\n const variantResponse = await getDeliveryOptionsAsync({\r\n context: { callerContext: this.props.context.actionContext, queryResultSettings: {} },\r\n recordId: variantRecordId,\r\n salesPriceInclGST: variantSalesPriceInclGST\r\n });\r\n deliveryData = await Promise.all(variantResponse.DeliveryOptions);\r\n this.setState({ deliveryData: deliveryData });\r\n }\r\n }\r\n );\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { heading, paragraph, image, links, className } = this.props.config;\r\n const contentBlockTitle = heading && heading.text && (\r\n \r\n );\r\n const imageProps = {\r\n gridSettings: this.props.context.request.gridSettings || {},\r\n imageSettings: image && image.imageSettings\r\n };\r\n const contentBlockLinks = links && links.length > 0 && ;\r\n const contentBlockText = paragraph && (\r\n \r\n );\r\n const contentBlockImage = image && ;\r\n\r\n if (!contentBlockTitle && !contentBlockText && !contentBlockImage && !contentBlockLinks) {\r\n this.props.context.telemetry.error('Content block content is empty, module wont render.');\r\n return null;\r\n }\r\n const contentBlockviewProps = {\r\n ...this.props,\r\n title: contentBlockTitle,\r\n text: contentBlockText,\r\n image: contentBlockImage,\r\n links: contentBlockLinks,\r\n moduleClass: this.props.config.className,\r\n contentBlockContainer: {\r\n moduleProps: this.props,\r\n className: classnames('farmlands-delivery-options__content-block', className)\r\n },\r\n imageContainer: { className: 'farmlands-delivery-options__content-block__image' },\r\n detailsContainer: { className: 'farmlands-delivery-options__content-block__details' },\r\n deliveryData: this._createDeliveryTable(this.state.deliveryData)\r\n };\r\n\r\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\r\n }\r\n\r\n private _createDeliveryTable(deliveryData: IFarmlandsDeliveryOptionsData | undefined): React.ReactNode | undefined {\r\n const { pickUpTableHeader, deliveryTableHeader } = this.props.config;\r\n const deliveryOption = this.removePickUpFromDeliveryArray(deliveryData);\r\n return deliveryData ? (\r\n \r\n \r\n \r\n \r\n \r\n {deliveryOption.length > 0 ? (\r\n // Add delivery options to the table\r\n deliveryOption.map((option: any, index: number) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n })\r\n ) : (\r\n // If no delivery options are available\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n {pickUpTableHeader}{deliveryTableHeader}
\r\n {option.DeliveryModes[0].ChargeDescription}\r\n {this.isPickUpAvailable(deliveryData) ? 'FREE' : 'UNAVAILABLE'}${option.DeliveryModes[0].ChargeAmount?.toFixed(2)}
Standard ItemFREEUNAVAILABLE
\r\n ) : undefined;\r\n }\r\n\r\n private removePickUpFromDeliveryArray = (response: any) => {\r\n return response?.filter((deliveryMethod: any) => deliveryMethod.DeliveryType === 'Delivery');\r\n };\r\n\r\n private isPickUpAvailable = (response: any): boolean => {\r\n const isPickUpAvailable = response?.filter((deliveryMethod: any) => deliveryMethod.DeliveryType === 'Pickup');\r\n return isPickUpAvailable.length > 0;\r\n };\r\n\r\n private _getActivePrice = async (): Promise => {\r\n let products = this.state.products || [];\r\n const productRecIds = products && products.length > 0 ? products.map((prod) => prod.result.RecordId) : [];\r\n const projectDomain: ProjectionDomain = {\r\n ChannelId: this.props.context.request.apiSettings.channelId,\r\n CatalogId: this.props.context.request.apiSettings.catalogId\r\n };\r\n const affliations: AffiliationLoyaltyTier[] = [];\r\n const customerInput = new GetCustomerInput(this.props.context.actionContext.requestContext.apiSettings);\r\n const customer = await getCustomer(customerInput, this.props.context.actionContext);\r\n\r\n if (customer && customer.CustomerAffiliations) {\r\n customer.CustomerAffiliations.forEach((affliation: CustomerAffiliation) => {\r\n const aff: AffiliationLoyaltyTier = {\r\n AffiliationId: affliation.RetailAffiliationId,\r\n CustomerId: customer.AccountNumber\r\n };\r\n affliations.push(aff);\r\n });\r\n }\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 )\r\n .then((activePricesResponse: ProductPrice[]) => {\r\n products = products.map((prod) => {\r\n const activePrice = activePricesResponse.find(\r\n (product) => product.ProductId === prod.result.RecordId\r\n );\r\n if (activePrice) {\r\n const priceIncGST = activePrice.ExtensionProperties?.find(\r\n (prop: CommerceProperty) => prop.Key === 'BasePriceWithGST'\r\n );\r\n const specialPriceIncGST = activePrice.ExtensionProperties?.find(\r\n (prop: CommerceProperty) => prop.Key === 'ItemPriceWithGST'\r\n );\r\n prod.result.ExtensionProperties.push(priceIncGST);\r\n prod.result.ExtensionProperties.push(specialPriceIncGST);\r\n }\r\n return prod;\r\n });\r\n this.setState({\r\n products: 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(\r\n `[get Affiliation based price on Product Collection]Error executing action`\r\n );\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 ContentBlock;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IContentBlockViewProps } from './farmlands-delivery-options';\r\n\r\nconst ContentBlockView: React.FC = (props) => {\r\n const { contentBlockContainer, imageContainer, detailsContainer, title, text, links, image, deliveryData } = props;\r\n\r\n return (\r\n \r\n {image}\r\n \r\n {title}\r\n {text}\r\n {links}\r\n {deliveryData}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ContentBlockView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { IFarmlandsProductDescriptionData } from './farmlands-product-description.data';\r\nimport { IFarmlandsProductDescriptionProps } from './farmlands-product-description.props.autogenerated';\r\nimport { getExtensionProperty, ePropsValue } from '../../common/method/functions';\r\n\r\nexport interface IProductDescriptionViewProps extends IFarmlandsProductDescriptionProps<{}> {\r\n ProductDescription: IModuleProps;\r\n ProductDescriptionNode: React.ReactNode;\r\n}\r\n\r\nexport interface IFarmlandsProductDescriptionState {\r\n onlineLongDescription: string;\r\n onlineShortDescription: string;\r\n}\r\n\r\n/**\r\n *\r\n * ProductSpecification component\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass ProductDescription extends React.Component, IFarmlandsProductDescriptionState> {\r\n constructor(props: IFarmlandsProductDescriptionProps) {\r\n super(props);\r\n this.state = {\r\n onlineLongDescription: '',\r\n onlineShortDescription: '',\r\n };\r\n }\r\n\r\n public componentDidUpdate(): void {\r\n const {\r\n ExtensionProperties: eProps\r\n } = this.props.data.product.result!;\r\n\r\n // Only update description values if the new values are not empty and are different from the existing strings.\r\n const longDesc = getExtensionProperty(eProps!, 'OnlineLongDescription', ePropsValue.String);\r\n const shortDesc = getExtensionProperty(eProps!, 'OnlineShortDescription', ePropsValue.String);\r\n\r\n if (this.state.onlineLongDescription !== longDesc && longDesc !== '') {\r\n this.setState({\r\n onlineLongDescription: longDesc\r\n });\r\n }\r\n\r\n if (this.state.onlineShortDescription !== shortDesc && shortDesc !== '') {\r\n this.setState({\r\n onlineShortDescription: shortDesc\r\n });\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const viewProps = {\r\n ...this.props,\r\n ProductDescription: {\r\n moduleProps: this.props,\r\n className: classnames('ms-product-specification', this.props.config.className)\r\n },\r\n ProductDescriptionNode: (\r\n \r\n )\r\n } as IProductDescriptionViewProps;\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n}\r\n\r\nexport default ProductDescription;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IProductDescriptionViewProps } from './farmlands-product-description';\r\n\r\nconst ProductDescriptionView: React.FC = props => {\r\n const {\r\n ProductDescription,\r\n ProductDescriptionNode\r\n } = props;\r\n\r\n return (\r\n \r\n {ProductDescriptionNode}\r\n \r\n );\r\n};\r\n\r\nexport default ProductDescriptionView;","import * as React from 'react';\r\nimport { ILinksData } from '../farmlands-promotion-block.props.autogenerated';\r\n\r\nexport interface IFarmlandsPromotionBlockButton {\r\n buttons: ILinksData[];\r\n}\r\n\r\nconst FarmlandsPromotionBlockButton: React.FC = ({ buttons }) => (\r\n <>\r\n {buttons.map((button: ILinksData, index: number) => {\r\n return (\r\n \r\n \r\n {button.linkText}\r\n \r\n \r\n );\r\n })}\r\n \r\n);\r\n\r\nexport default FarmlandsPromotionBlockButton;\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 * IFarmlandsPromotionBlock contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum displayOnlyTo {\r\n all = 'all',\r\n loggedInOnly = 'loggedInOnly',\r\n loggedOutOnly = 'loggedOutOnly'\r\n}\r\n\r\nexport interface IFarmlandsPromotionBlockConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n paragraph?: Msdyn365.RichText;\r\n image?: Msdyn365.IImageData;\r\n links?: ILinksData[];\r\n displayOnlyTo: displayOnlyTo;\r\n className?: 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 ILinksData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n}\r\n\r\nexport interface IFarmlandsPromotionBlockProps extends Msdyn365.IModule {\r\n config: IFarmlandsPromotionBlockConfig;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Heading, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport FarmlandsPromotionBlockButton from './components/button';\r\nimport { IFarmlandsPromotionBlockProps, displayOnlyTo } from './farmlands-promotion-block.props.autogenerated';\r\n\r\nexport interface IContentBlockViewProps extends IFarmlandsPromotionBlockProps<{}> {\r\n title?: React.ReactNode;\r\n text?: React.ReactNode;\r\n image?: React.ReactNode;\r\n buttons?: React.ReactNode;\r\n className?: string;\r\n contentBlockContainer: IModuleProps;\r\n imageContainer: INodeProps;\r\n detailsContainer: INodeProps;\r\n buttonsContainer: INodeProps;\r\n shouldShowModule: boolean;\r\n}\r\n/**\r\n *\r\n * ContentCard component\r\n * @extends {React.PureComponent}\r\n */\r\n\r\nclass ContentBlock extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n const { heading, paragraph, image, links, displayOnlyTo, className } = this.props.config;\r\n const contentBlockTitle = heading && heading.text && (\r\n \r\n );\r\n const contentBlockText = paragraph && (\r\n \r\n );\r\n const contentBlockImage = image && (\r\n {image.altText}\r\n );\r\n const contentBlockButtons = links && ;\r\n const imageContainer = { className: 'farmlands-promotion-block__image-container' };\r\n const detailsContainer = { className: 'farmlands-promotion-block__details' };\r\n const buttonsContainer = { className: 'farmlands-promotion-block__buttons' };\r\n const isLoggedIn = this.props.context.request.user.isAuthenticated;\r\n const shouldShowModule = this._shouldShowTo(isLoggedIn, displayOnlyTo);\r\n if (!contentBlockTitle && !contentBlockText) {\r\n this.props.context.telemetry.error('Content block content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n const contentBlockviewProps = {\r\n ...this.props,\r\n title: contentBlockTitle,\r\n text: contentBlockText,\r\n image: contentBlockImage,\r\n buttons: contentBlockButtons,\r\n moduleClass: this.props.config.className,\r\n contentBlockContainer: {\r\n moduleProps: this.props,\r\n className: classnames('farmlands-promotion-block', className)\r\n },\r\n imageContainer: imageContainer,\r\n detailsContainer: detailsContainer,\r\n buttonsContainer: buttonsContainer,\r\n shouldShowModule: shouldShowModule\r\n };\r\n\r\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\r\n }\r\n\r\n private _shouldShowTo = (isLoggedIn: boolean, displayTo: displayOnlyTo): boolean => {\r\n if (isLoggedIn && displayTo === displayOnlyTo.loggedOutOnly) {\r\n return false;\r\n } else if (!isLoggedIn && displayTo === displayOnlyTo.loggedInOnly) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n}\r\n\r\nexport default ContentBlock;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IContentBlockViewProps } from './farmlands-promotion-block';\r\n\r\nconst ContentBlockView: React.FC = (props) => {\r\n const {\r\n contentBlockContainer,\r\n imageContainer,\r\n detailsContainer,\r\n buttonsContainer,\r\n title,\r\n text,\r\n buttons,\r\n image,\r\n shouldShowModule\r\n } = props;\r\n\r\n return shouldShowModule ? (\r\n \r\n <>\r\n
\r\n {image}\r\n \r\n {title}\r\n {text}\r\n \r\n
\r\n {buttons}\r\n \r\n
\r\n ) : null;\r\n};\r\n\r\nexport default ContentBlockView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IProductSpecificationViewProps } from '@msdyn365-commerce-modules/product-specification/src/modules/product-specification/./product-specification';\r\n\r\nconst ProductSpecificationView: React.FC = (props) => {\r\n const {\r\n ProductSpecification,\r\n ProductSpecificationTableProps,\r\n ProductSpecificationTableBodyProps,\r\n productSpecificationResult\r\n } = props;\r\n return (\r\n \r\n {props.title}\r\n \r\n \r\n {productSpecificationResult &&\r\n productSpecificationResult.map((row) => {\r\n return removeUndefinedAttributes(row);\r\n })}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nfunction removeUndefinedAttributes(row: JSX.Element | null): JSX.Element | null {\r\n if (\r\n (row?.props.cellData.props && !('dangerouslySetInnerHTML' in row?.props.cellData.props)) ||\r\n (row?.props.cellData.props.dangerouslySetInnerHTML?.__html !== undefined &&\r\n row?.props.cellData.props.dangerouslySetInnerHTML?.__html !== 'Not defined')\r\n ) {\r\n return row && row;\r\n }\r\n return null;\r\n}\r\n\r\nexport default ProductSpecificationView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IHistogramItemViewProps, IRatingsHistogramViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst RatingsHistogramView: React.FC = props => {\r\n const { heading, histogramItems, histogramProps, moduleProps } = props;\r\n return (\r\n \r\n {heading}\r\n \r\n {histogramItems.map(item => {\r\n return histogramItem(item);\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nconst histogramItem = (props: IHistogramItemViewProps) => {\r\n return (\r\n \r\n {props.starLabel}\r\n {props.bar}\r\n {props.percentage}\r\n \r\n );\r\n};\r\n\r\nexport default RatingsHistogramView;","import { IReviewModalViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport { IReportReviewModalViewProps, IReviewCardViewProps, IReviewsListState, IReviewsListViewProps } from '@msdyn365-commerce-modules/ratings-reviews/src/modules/reviews-list';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst ReviewsListview: React.FC = props => {\r\n const {\r\n averageRating,\r\n filterByDropdown,\r\n moduleProps,\r\n noReviewsMessage,\r\n noReviewsWithFilterMessage,\r\n pageControls,\r\n refineReviewsProps,\r\n reportReviewModal,\r\n reviewsListProps,\r\n reviewCards,\r\n reviewCount,\r\n reviewModal,\r\n sortByDropdown,\r\n state,\r\n userReview\r\n } = props;\r\n\r\n if (!userReview && reviewCards.length === 0 && !state.isFilterApplied) {\r\n return {noReviewsMessage};\r\n }\r\n\r\n return (\r\n \r\n {averageRating}\r\n {reviewCount}\r\n \r\n {sortByDropdown}\r\n {filterByDropdown}\r\n \r\n \r\n {userReview && buildReviewCard(userReview)}\r\n {reviewCards.map(review => {\r\n return buildReviewCard(review);\r\n })}\r\n \r\n { reviewCards.length === 0 && state.isFilterApplied && noReviewsWithFilterMessage}\r\n {pageControls}\r\n {createReviewModal(reviewModal)}\r\n {createReportModal(reportReviewModal, state)}\r\n \r\n );\r\n};\r\n\r\nconst buildReviewCard = (props: IReviewCardViewProps) => {\r\n return (\r\n \r\n \r\n {props.rating}\r\n {props.name}\r\n {props.date}\r\n \r\n \r\n \r\n {props.reviewTitle}\r\n {props.reviewText}\r\n \r\n \r\n {props.responseName}\r\n {props.responseDate}\r\n {props.responseText}\r\n \r\n \r\n {props.ratingHelpfulLabel}\r\n {props.like}\r\n {props.dislike}\r\n {props.edit}\r\n {props.report}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst createReviewModal = (props: IReviewModalViewProps): JSX.Element => {\r\n return (\r\n \r\n {props.modalHeader}\r\n \r\n \r\n \r\n {props.rating}\r\n {props.ratingLabel}\r\n \r\n \r\n {props.titleLabel}\r\n {props.titleInput}\r\n \r\n \r\n {props.textLabel}\r\n {props.textInput}\r\n \r\n {props.privacyPolicyUrl}\r\n {props.error}\r\n \r\n \r\n \r\n {props.submitButton}\r\n {props.cancelButton}\r\n \r\n \r\n );\r\n};\r\n\r\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\r\n return (\r\n \r\n \r\n {state.reported ? props.headerSubmitted : props.header}\r\n \r\n \r\n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\r\n \r\n \r\n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ReviewsListview;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileEditConfig, IAccountProfileEditProps } from './account-profile-edit.props.autogenerated';\nimport AccountProfileEditButtonComponent from './components/account-profile-edit-button';\nimport AccountProfileEditErrorComponent from './components/account-profile-edit-error';\nimport AccountProfileEditInputComponent from './components/account-profile-edit-input';\nimport AccountProfileEditLabelComponent from './components/account-profile-edit-label';\nimport AccountProfileEditLoadingIconComponent from './components/account-profile-edit-loading-icon';\nimport AccountProfileEditLoadingMessageComponent from './components/account-profile-edit-loading-message';\n\nexport interface IAccountProfileEditViewState {\n isShowLoading: boolean;\n}\n\nexport interface IAccountProfileEditItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAccountProfileEditLocalAccount {\n localAccount: INodeProps;\n items: IAccountProfileEditItem[];\n errorMessage: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IAccountProfileEditLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAccountProfileEditViewProps {\n className: string;\n viewState: IAccountProfileEditViewState;\n loading: IAccountProfileEditLoading;\n accountProfileEdit: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n accountProfileEditLocalAccount: IAccountProfileEditLocalAccount;\n}\n\n/**\n *\n * AccountProfileEdit component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component>}\n */\n@observer\nclass AccountProfileEdit extends React.Component> {\n private readonly moduleClassName: string = 'ms-account-profile-edit';\n\n private readonly telemetryContent: ITelemetryContent;\n\n @observable private givenName: string;\n\n @observable private surname: string;\n\n @observable private email: string;\n\n @observable private emailRegex: string;\n\n @observable private isInitialized: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: IAccountProfileEditProps) {\n super(props);\n this.givenName = '';\n this.surname = '';\n this.email = '';\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountProfileEditProps,\n nextState: IAccountProfileEditViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n accountProfileEdit: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading && config.heading.text && (\n \n ),\n accountProfileEditLocalAccount: this._renderLocalAccount()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public onTextBoxChange = (event: React.ChangeEvent) => {\n const id = event.target.id;\n const value = event.target.value;\n\n switch (id.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.emailRegex = value;\n break;\n }\n default:\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n const { resources } = this.props;\n const invalidEmailAddressError = resources.invalidEmailAddressError || 'Please enter a valid email address.';\n\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map(\n (obj: { ID: string; PRE: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string }) => {\n const value = obj.PRE ? this._htmlDecode(obj.PRE) : '';\n switch (obj.ID.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.email = value;\n this.emailRegex = obj.PAT;\n obj.PAT_DESC = invalidEmailAddressError;\n break;\n }\n default:\n }\n }\n );\n }\n };\n\n private _htmlDecode(str: string): string {\n const e = document.createElement('div');\n\n e.innerHTML = str;\n return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue || '';\n }\n\n private readonly _updateErrorMessage = () => {\n const { resources } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n required_field: resources.requiredFieldMissingError,\n verifying_blurb: resources.loadingMessage\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], message);\n }\n };\n\n private _renderLocalAccount(): IAccountProfileEditLocalAccount {\n const { config, resources } = this.props;\n const localAccount = {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('givenName', 'text', this.givenName, resources.firstNameLabelText, resources.firstNameMaxLength),\n this._renderInput('surname', 'text', this.surname, resources.lastNameLabelText, resources.lastNameMaxLength)\n ],\n errorMessage: [\n ,\n ,\n \n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`\n },\n buttons: [\n ,\n \n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n\n if (config.showEmail && this.email !== '') {\n localAccount.items.push(\n this._renderInput('email', 'email', this.email, resources.emailAddressLabelText, undefined, this.emailRegex)\n );\n }\n\n return localAccount;\n }\n\n private _renderInput(\n id: string,\n type: string,\n value: string,\n labelText: string,\n maxLength?: string,\n pattern?: string\n ): IAccountProfileEditItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n}\n\nexport default AccountProfileEdit;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IAccountProfileEditItem,\n IAccountProfileEditLoading,\n IAccountProfileEditLocalAccount,\n IAccountProfileEditViewProps\n} from './account-profile-edit';\n\nconst AccountProfileEditItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n {items &&\n items.map((item: IAccountProfileEditItem) => {\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n \n \n \n );\n};\n\nconst AccountProfileEditLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst AccountProfileEditView: React.FC = props => {\n const { accountProfileEdit, viewState, loading, defaultAADConainer, aadConainer, heading, accountProfileEditLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(accountProfileEditLocalAccount)}\n \n \n );\n};\n\nexport default AccountProfileEditView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst AccountProfileEditButton: React.FC = ({\n id,\n className,\n text,\n ariaLabel,\n disabled,\n telemetryContent,\n onClick\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n );\n};\n\nexport default AccountProfileEditButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst AccountProfileEditError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default AccountProfileEditError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IAccountProfileEditInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst AccountProfileEditInput: React.FC = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n \n);\n\nexport default AccountProfileEditInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst AccountProfileEditLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default AccountProfileEditLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingIcon {\n className: string;\n}\n\nconst AccountProfileEditLoadingIcon: React.FC = ({ className }) => (\n
\n);\n\nexport default AccountProfileEditLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingMessage {\n className: string;\n message: string;\n}\n\nconst AccountProfileEditLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default AccountProfileEditLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\n\nexport const SignUpText: React.FC<{ text: string }> = (props: { text: string }) => {\n return

{props.text}

;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { SignUpText } from './components/loyalty-sign-up-small-components';\nimport { ILoyaltySignUpData } from './loyalty-sign-up.data';\nimport { ILoyaltySignUpProps } from './loyalty-sign-up.props.autogenerated';\n\nexport interface IAccountLoyaltyJoinState {\n clicked: boolean;\n}\nexport interface ILoyaltySignUpViewProps extends ILoyaltySignUpProps {\n LoyaltySignUp: IModuleProps;\n heading: React.ReactNode;\n memberHeading: React.ReactNode;\n signInLink: React.ReactElement;\n signUpText: React.ReactElement;\n signUpButton: React.ReactElement;\n detailsLink: React.ReactElement;\n termsLink: React.ReactElement;\n loading: boolean;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * LoyaltySignUp component.\n * @extends {React.Component>}\n */\n@observer\nclass LoyaltySignUp extends React.Component, IAccountLoyaltyJoinState> {\n private readonly telemetryContent?: ITelemetryContent;\n private readonly loyaltySignInAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltySignUpAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyDetailsLinkAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyTermsLinkAttributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: ILoyaltySignUpProps) {\n super(props);\n this.state = { clicked: false };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n this.loyaltySignInAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.SignUp;\n this.loyaltySignUpAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyDetailLink;\n this.loyaltyDetailsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsLink;\n this.loyaltyTermsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltySignUpProps, nextState: IAccountLoyaltyJoinState): 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 const {\n config: { className, heading, memberHeading },\n resources,\n context: {\n actionContext,\n request: {\n user: { signInUrl, isAuthenticated }\n }\n },\n data\n } = this.props;\n\n const termsUrl = Msdyn365.getUrlSync('loyaltyTerms', actionContext);\n let loyaltyJoinUrl = `${Msdyn365.getUrlSync('loyaltyJoin', actionContext)}?joiningLoyalty=true`;\n if (MsDyn365.isBrowser) {\n loyaltyJoinUrl = `${window.location.origin}${loyaltyJoinUrl}`;\n }\n const signInurl = `${signInUrl}?ru=${loyaltyJoinUrl}`;\n const completeClass = classname('ms-loyalty-signup', className);\n const loyaltyCard = data.loyaltyCard;\n const hasLoyaltyAccount = loyaltyCard.result && loyaltyCard.result.CardTenderTypeValue !== undefined;\n const customerInformation = data.customerInformation?.result;\n\n const invalidAsyncCustomerState: boolean =\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false);\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltySignUp: {\n moduleProps: this.props,\n className: completeClass\n },\n infoMessageBar: invalidAsyncCustomerState && (\n \n ),\n loading: loyaltyCard.status === 'LOADING',\n heading: !hasLoyaltyAccount && heading && heading.text && (\n \n ),\n memberHeading: hasLoyaltyAccount && memberHeading && memberHeading.text && (\n \n ),\n signInLink: !isAuthenticated && (\n \n ),\n signUpText: !hasLoyaltyAccount && ,\n signUpButton: !hasLoyaltyAccount && isAuthenticated && (\n \n {this.props.resources.joinLoyaltyButtonText}\n \n ),\n detailsLink: hasLoyaltyAccount && (\n \n {this.props.resources.viewLoyaltyPageText}\n \n ),\n termsLink: !hasLoyaltyAccount && (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public handleMemberHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.memberHeading!.text = event.target.value);\n\n private readonly _issueLoyalty = () => {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(() => {\n if (MsDyn365.isBrowser) {\n window.location.assign(Msdyn365.getUrlSync('loyalty', this.props.context.actionContext) || '');\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n };\n}\n\nexport default LoyaltySignUp;\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 { ILoyaltySignUpViewProps } from './loyalty-sign-up';\n\nconst LoyaltySignUpView: React.FC = props => {\n const {\n LoyaltySignUp,\n heading,\n memberHeading,\n signInLink,\n signUpText,\n signUpButton,\n detailsLink,\n termsLink,\n loading,\n infoMessageBar\n } = props;\n\n if (loading) {\n props.context.telemetry.error('LoyaltySignUp data is empty, module wont render');\n return null;\n }\n\n return (\n \n {infoMessageBar}\n {memberHeading}\n {heading}\n {detailsLink}\n {signUpText}\n {termsLink}\n {signUpButton}\n {signInLink}\n \n );\n};\n\nexport default LoyaltySignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IBusinessSignUpButtonProps {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n link?: string;\n telemetryContent: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nexport const SignUpButton: React.FC = ({\n id,\n className,\n text,\n ariaLabel,\n telemetryContent,\n disabled,\n link,\n onClick\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent, text);\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\n return (\n \n {text}\n \n );\n};\n\nexport default SignUpButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IBusinessSignUpErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nexport const SignUpError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n

{message}

\n
\n );\n};\n\nexport default SignUpError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { InputType } from '../business-sign-up';\n\nexport interface IBusinessSignUpInputProps {\n id?: string;\n type: InputType;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n isRequired: boolean;\n fieldReference?: React.RefObject;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IBusinessSignUpInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nexport const SignUpInput: React.FC = ({\n id,\n type,\n value,\n pattern,\n className,\n maxLength,\n isRequired,\n onChange,\n fieldReference\n}) => {\n if (type === InputType.TextArea) {\n return (\n \n );\n }\n\n return (\n \n );\n};\n\nexport default SignUpInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IBusinessSignUpLabelProps {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nexport const SignUpLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default SignUpLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ContentEditableEvent, getUrlSync, RichTextComponent, Text } from '@msdyn365-commerce/core';\nimport { Address, BusinessPartnerProspect } from '@msdyn365-commerce/retail-proxy';\nimport { createProspectAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { EmailRegex } 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 { IBusinessSignUpConfig, IBusinessSignUpProps } from './business-sign-up.props.autogenerated';\nimport { SignUpButton, SignUpError, SignUpInput, SignUpLabel } from './components';\n\nexport interface IBusinessSignUpExtendedProps extends IBusinessSignUpProps {\n formItems?: IFormItem[];\n}\n\nexport interface IBusinessSignUpItem {\n wrapper: INodeProps;\n isAddressInput?: boolean;\n id: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input?: React.ReactNode;\n}\n\nexport interface IBusinessState {\n isReady: boolean;\n formItems: IFormItem[];\n addressHasErrors: boolean;\n showAddressErrors: boolean;\n hasSubmitErrors: boolean;\n}\n\nexport interface IBusinessSignUpLocalAccount {\n FormWrapper: INodeProps;\n items: IBusinessSignUpItem[];\n buttons: React.ReactNode[];\n errorMessage: React.ReactNode[];\n disclaimer: React.ReactNode;\n}\n\nexport interface IBusinessSignUpViewProps {\n className: string;\n businessSignUp: IModuleProps;\n ContainerWrapper: INodeProps;\n heading: React.ReactNode;\n businessSignUpForm: IBusinessSignUpLocalAccount;\n formItems: IFormItem[];\n}\n\nexport interface IFormItem {\n id: string;\n type: InputType;\n label: string;\n value: string;\n maxChars?: string;\n isRequired: boolean;\n pattern?: string;\n address?: Address;\n customClass?: string;\n fieldReference?: React.RefObject;\n}\n\nexport enum InputType {\n // eslint-disable-next-line @typescript-eslint/no-shadow -- Text enum doesn't override the imported Text\n Text = 'text',\n Address = 'address',\n Email = 'email',\n TextArea = 'textarea'\n}\n\nexport enum InputID {\n FirstName = 'FirstName',\n LastName = 'LastName',\n Email = 'CompanyEmail',\n CompanyName = 'CompanyName',\n Address = 'CompanyAddress',\n JobTitle = 'JobTitle',\n Size = 'CompanySize',\n Department = 'Department',\n Comment = 'Comment'\n}\n\nexport const renderInputSection = (\n inputs: IFormItem[],\n className: string,\n needToReset: boolean,\n onInputChange: (event: React.ChangeEvent) => void,\n showErrors: boolean,\n addressForm?: React.ReactNode,\n updateAddress?: (errors: boolean, currAddress?: Address) => void\n): IBusinessSignUpItem[] => {\n return inputs.map((element, index) => {\n const { id, type, label, maxChars, isRequired, pattern, customClass, value, fieldReference } = element;\n\n const baseSignUpItem: IBusinessSignUpItem = {\n wrapper: {\n className: classnames(className, `${className}-${id}`, customClass)\n },\n id,\n label: ,\n errorMessage: \n };\n\n if (type === InputType.Address) {\n if (addressForm) {\n baseSignUpItem.isAddressInput = true;\n baseSignUpItem.input = (\n <>\n {React.cloneElement(addressForm as React.ReactElement, {\n updateForm: updateAddress,\n hasError: showErrors,\n isRequired: isRequired === undefined ? false : isRequired,\n resetAddress: needToReset\n })}\n \n );\n } else {\n // If the address slot is not filled, remove this input from the form\n inputs.splice(index, 1);\n }\n } else {\n baseSignUpItem.input = (\n \n );\n }\n\n return baseSignUpItem;\n });\n};\n\n/**\n *\n * Business Request Form Modules\n * Form that a business can use to submit a request to become a partner with Microsoft.\n * @extends {React.Component>}\n */\nclass BusinessSignUp extends React.Component {\n // Used as default data\n public BusinessSignUpDefaultInputs: IFormItem[] = [\n {\n id: InputID.FirstName,\n type: InputType.Text,\n label: this.props.resources.firstNameLabel,\n value: '',\n isRequired: true,\n customClass: 'width-25'\n },\n {\n id: InputID.LastName,\n type: InputType.Text,\n label: this.props.resources.lastNameLabel,\n value: '',\n isRequired: true,\n customClass: 'width-25'\n },\n {\n id: InputID.Email,\n type: InputType.Email,\n label: this.props.resources.emailAddressLabel,\n value: '',\n isRequired: true,\n pattern: EmailRegex.defaultRegex.source,\n customClass: 'width-50'\n },\n {\n id: InputID.CompanyName,\n type: InputType.Text,\n label: this.props.resources.companyLabel,\n value: '',\n isRequired: true,\n customClass: 'width-50'\n },\n {\n id: InputID.Department,\n type: InputType.Text,\n label: this.props.resources.departmentLabel,\n value: '',\n isRequired: false,\n customClass: 'width-50'\n },\n {\n id: InputID.JobTitle,\n type: InputType.Text,\n label: this.props.resources.jobTitleLabel,\n value: '',\n isRequired: false,\n customClass: 'width-50'\n },\n {\n id: InputID.Size,\n type: InputType.Text,\n label: this.props.resources.companySizeLabel,\n value: '',\n isRequired: false,\n customClass: 'width-50'\n },\n {\n id: InputID.Address,\n type: InputType.Address,\n label: this.props.resources.companyAddressLabel,\n value: '',\n isRequired: false,\n customClass: 'width-100'\n },\n {\n id: InputID.Comment,\n type: InputType.TextArea,\n label: this.props.resources.commentLabel,\n value: '',\n isRequired: false,\n customClass: 'width-100'\n }\n ];\n\n private readonly formChildReference: React.RefObject = React.createRef();\n\n private readonly moduleClassName: string = 'ms-business-sign-up';\n\n private needsToReset: boolean = false;\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IBusinessSignUpExtendedProps) {\n super(props);\n\n this.state = {\n isReady: false,\n formItems: this.props.formItems || this._addedReference(),\n addressHasErrors: false,\n showAddressErrors: false,\n hasSubmitErrors: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this.formChildReference.current?.focus();\n }\n\n public shouldComponentUpdate(nextProps: IBusinessSignUpExtendedProps, nextState: IBusinessState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config } = this.props;\n const { formItems } = this.state;\n const { className, heading } = config;\n\n const viewProps = {\n ...this.props,\n businessSignUp: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n ContainerWrapper: {\n className: `${this.moduleClassName}__container`\n },\n heading: (\n \n ),\n businessSignUpForm: this._renderForm(),\n formItems\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle the heading change event.\n * @param event - Content Editable Event.\n */\n public handleHeadingChange = (event: ContentEditableEvent): void => {\n this.props.config.heading.text = event.target.value;\n };\n\n private _renderForm(): IBusinessSignUpLocalAccount {\n const { config, resources, slots } = this.props;\n const { showAddressErrors, hasSubmitErrors, isReady, formItems } = this.state;\n const {\n signUpButtonArialabel,\n signUpButtonText,\n cancelButtonArialabel,\n cancelButtonText,\n errorMessage,\n partialAddressErrorMessage\n } = resources;\n const addressForm = (slots && slots.addressSlot && slots.addressSlot.length > 0 && slots.addressSlot[0]) || undefined;\n const successPageURL =\n (config.confirmationLink && config.confirmationLink.linkUrl && config.confirmationLink.linkUrl.destinationUrl) ||\n getUrlSync('home', this.props.context.actionContext);\n\n const form = {\n FormWrapper: {\n className: `${this.moduleClassName}__form `\n },\n items: renderInputSection(\n formItems,\n `${this.moduleClassName}__form-item`,\n this.needsToReset,\n this._onInputChange,\n showAddressErrors,\n addressForm,\n this._onAddressChange\n ),\n buttons: [\n ,\n \n ],\n errorMessage: [\n hasSubmitErrors && ,\n showAddressErrors && (\n \n )\n ],\n disclaimer: config.disclaimer && (\n \n )\n };\n\n if (this.needsToReset) {\n this.needsToReset = false;\n }\n\n return form;\n }\n\n private readonly _onInputChange = (event: React.ChangeEvent): void => {\n const newForm = this.state.formItems;\n newForm.forEach(item => {\n if (item.id === event.target.id) {\n item.value = event.target.value;\n }\n });\n\n // Check if form is ready, update state object with latest values, values have changed so reset hasSubmitErrros\n this.setState({\n isReady: this._isFormReady(),\n formItems: newForm,\n hasSubmitErrors: false\n });\n };\n\n private _addedReference(): IFormItem[] {\n const newFormFields = this.BusinessSignUpDefaultInputs;\n newFormFields[0].fieldReference = this.formChildReference;\n return newFormFields;\n }\n\n private readonly _onAddressChange = (errors: boolean, currentAddress?: Address): void => {\n // Find address item\n const newForm = this.state.formItems;\n const addressItem = newForm.find(item => {\n return item.type === InputType.Address;\n });\n\n // If found --> set to currentAddress\n if (addressItem) {\n addressItem.address = currentAddress;\n\n // Update state with new values and set errors to false if address is not required field\n this.setState(\n {\n formItems: newForm,\n addressHasErrors: errors,\n showAddressErrors: false\n },\n () => {\n this.setState({ isReady: this._isFormReady() });\n }\n );\n }\n };\n\n private readonly _isFormReady = (): boolean => {\n const { formItems } = this.state;\n\n for (const currentInput of formItems) {\n // Will return FALSE if:\n // - input field is required\n // IF is address AND addressHasErrors === true\n // ELSE value is undefined OR empty\n // OR\n // - pattern provided and value does not match pattern\n\n if (currentInput.isRequired) {\n if (currentInput.type === InputType.Address) {\n if (this.state.addressHasErrors) {\n return false;\n }\n } else if (currentInput.value === undefined || currentInput.value === '') {\n return false;\n }\n }\n if (currentInput.pattern !== undefined && currentInput.value.match(currentInput.pattern) === null) {\n return false;\n }\n }\n\n return true;\n };\n\n private readonly _onSubmit = (event: React.MouseEvent) => {\n if (this.state.addressHasErrors) {\n this.setState({\n showAddressErrors: true\n });\n\n event.preventDefault();\n return;\n }\n\n const { context } = this.props;\n\n // Check for matching id and if not empty\n const firstName = this._getItem(InputID.FirstName);\n const lastName = this._getItem(InputID.LastName);\n const companyName = this._getItem(InputID.CompanyName);\n const companyEmail = this._getItem(InputID.Email);\n const companyAddress = this._getItem(InputID.Address, true);\n const jobTitle = this._getItem(InputID.JobTitle);\n const department = this._getItem(InputID.Department);\n const companySize = this._getItem(InputID.Size);\n const comments = this._getItem(InputID.Comment);\n\n // API gets email as part of the address object, but I do not use the email input from the address component, thus we need to copy it over\n if (companyEmail && companyEmail.value && companyAddress && companyAddress.address) {\n companyAddress.address.Email = companyEmail.value;\n }\n\n const newPartner: BusinessPartnerProspect = {\n FirstName: firstName && firstName.value,\n LastName: lastName && lastName.value,\n CompanyName: companyName && companyName.value,\n Address: companyAddress && companyAddress.address && companyAddress.address,\n JobTitle: jobTitle && jobTitle.value,\n Department: department && department.value,\n CompanySize: (companySize && Number.parseInt(companySize.value, 10)) || 0,\n Comments: comments && comments.value\n };\n\n // Create business partner request\n createProspectAsync({ callerContext: context.actionContext }, newPartner).catch(() => {\n this.setState({\n hasSubmitErrors: true,\n isReady: false\n });\n });\n };\n\n private readonly _onCancel = () => {\n // Reset values of the form\n const cleanForm = this.state.formItems;\n cleanForm.forEach(input => {\n input.value = '';\n });\n\n // Set reset flag so address input will get reset on next renderInputSection() call\n this.needsToReset = true;\n\n this.setState({\n isReady: false,\n formItems: cleanForm,\n addressHasErrors: true,\n showAddressErrors: false,\n hasSubmitErrors: false\n });\n };\n\n private readonly _getItem = (id: string, isAddress: boolean = false) => {\n if (isAddress) {\n return this.state.formItems.find(item => {\n return item.id === id && item.address;\n });\n }\n return this.state.formItems.find(item => {\n return item.id === id && item.value !== '';\n });\n };\n}\n\nexport default BusinessSignUp;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBusinessSignUpItem, IBusinessSignUpViewProps } from './business-sign-up';\n\nconst BusinessSignUpItem: React.FC = ({ wrapper, label, errorMessage, input, isAddressInput }) => {\n // Hide label and error message if rendering address section\n return (\n \n {!isAddressInput && label}\n {!isAddressInput && errorMessage}\n {input}\n \n );\n};\n\nconst BusinesSignUpView: React.FC = props => {\n const { businessSignUp, ContainerWrapper, heading, businessSignUpForm } = props;\n\n const { FormWrapper, buttons, items, errorMessage, disclaimer } = businessSignUpForm;\n\n return (\n \n \n {heading}\n \n {items &&\n items.map((item: IBusinessSignUpItem) => {\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n {disclaimer}\n \n \n \n );\n};\n\nexport default BusinesSignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\nimport { KeyCodes } from '@msdyn365-commerce-modules/utilities';\n\nexport interface ISearchBarProps {\n className: string;\n searchPlaceholderLabel: string;\n onSearch(searchText: string): void;\n}\n\nexport interface ISearchBarState {\n searchText: string;\n}\n\nexport class SearchBar extends React.Component {\n constructor(props: ISearchBarProps) {\n super(props);\n this.state = {\n searchText: ''\n };\n }\n\n public render(): JSX.Element {\n const { className, searchPlaceholderLabel } = this.props;\n return (\n
\n \n
\n );\n }\n\n private readonly onSearchTextChange = (ev: React.ChangeEvent): void => {\n this.setState({\n searchText: ev.target.value\n });\n };\n\n private readonly onSearch = (): void => {\n this.props.onSearch(this.state.searchText);\n };\n\n private readonly handleKeyUp = (event: React.KeyboardEvent): void => {\n if (event.keyCode === KeyCodes.Enter) {\n this.onSearch();\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\nimport { moduleClassName } from '../business-partners';\nimport { IBusinessPartnersResources } from '../business-partners.props.autogenerated';\nimport { SearchBar } from './search-bar';\n\n/**\n * Props of DataGrid component.\n */\nexport interface IDataGridProps extends IComponentProps {\n className: string;\n pageSize?: number;\n searchPlaceholderLabel: string;\n defaultSorting?: ISortingInfo;\n resources: IBusinessPartnersResources;\n columns: IDataGridColumn[];\n loadData(): Promise;\n}\n\n/**\n * State of DataGrid component.\n */\nexport interface IDataGridState {\n data: Tdata[];\n paging: IPagingInfo;\n filter: IFilterInfo;\n sorting?: ISortingInfo;\n isLoading: boolean;\n hasError: boolean;\n}\n\nexport interface IPagingInfo {\n index: number;\n}\n\nexport interface IFilterInfo {\n searchText: string;\n}\n\nexport interface ISortingInfo {\n fieldName: string;\n ascending: boolean;\n}\n\n/**\n * Column definition of DataGrid component.\n */\nexport interface IDataGridColumn {\n /**\n * A unique key for identifying the column.\n */\n reactKey: string;\n\n /**\n * Name to render on the column header.\n */\n name: string;\n\n /**\n * Class name added to table cell.\n */\n className?: string;\n\n /**\n * The field to pull the text value from for the column.Can be unset if a custom `onRender` method is provided.\n */\n fieldName?: string;\n\n /**\n * Whether the user can search this column by text.\n */\n isSearchable?: boolean;\n\n /**\n * Custom renderer for cell content, instead of the default text rendering.\n */\n onRender?(item: Tdata): JSX.Element;\n}\n\nconst defaultPageSize = 10;\n\n/**\n * DataGrid component encapsulates common table functionalities.\n */\nexport class DataGrid extends React.Component, IDataGridState> {\n constructor(props: IDataGridProps) {\n super(props);\n this.state = {\n data: [],\n sorting: props.defaultSorting,\n paging: { index: 0 },\n filter: { searchText: '' },\n isLoading: true,\n hasError: false\n };\n }\n\n public componentDidMount(): void {\n this.loadDataInternal();\n }\n\n public shouldComponentUpdate(nextProps: Readonly>, nextState: Readonly>): boolean {\n return (\n this.props.id !== nextProps.id ||\n this.props.columns !== nextProps.columns ||\n this.state.data !== nextState.data ||\n this.state.paging !== nextState.paging ||\n this.state.filter !== nextState.filter ||\n this.state.isLoading !== nextState.isLoading ||\n this.state.hasError !== nextState.hasError\n );\n }\n\n public render(): JSX.Element | null {\n const data = this.getDataToDisplay();\n const hasMore = this.hasMore();\n if (this.state.hasError) {\n return {this.props.resources.genericErrorMessage};\n }\n if (this.state.isLoading) {\n return {this.props.resources.loadingLabel};\n }\n if (!ArrayExtensions.hasElements(data)) {\n return (\n <>\n \n

{this.props.resources.noDataMessage}

\n \n );\n }\n return (\n <>\n \n \n {this.renderGridHeader()}\n {data.map((item, index) => this.renderGridRow(item, index))}\n
\n {hasMore && (\n \n )}\n \n );\n }\n\n /**\n * Renders the TH header in the table.\n * @returns - Header react node.\n */\n private readonly renderGridHeader = () => {\n const className = `${this.props.className}__header`;\n const rowClassName = `${className}__row`;\n return (\n \n \n {this.props.columns.map(column => (\n \n {column.name}\n \n ))}\n \n \n );\n };\n\n /**\n * Renders table row.\n * @param item - Data item for this row.\n * @param index - Index of the row.\n * @returns - Row react node.\n */\n private readonly renderGridRow = (item: Tdata, index: number) => {\n const rowClassName = `${this.props.className}__row`;\n return (\n \n {this.props.columns.map(column => {\n if (column.fieldName) {\n return (\n \n {((item as unknown) as { [key: string]: string })[column.fieldName]}\n \n );\n }\n return {column.onRender?.(item)};\n })}\n \n );\n };\n\n /**\n * Load data for the table.\n * @returns Promise.\n */\n private readonly loadDataInternal = async () => {\n if (!this.props.context.actionContext.requestContext.user.isAuthenticated) {\n this.setState({\n isLoading: false\n });\n return;\n }\n try {\n const result = await this.props.loadData();\n this.setState({\n isLoading: false,\n data: result\n });\n } catch {\n this.setState({\n isLoading: false,\n hasError: true\n });\n }\n };\n\n private readonly onSearch = (searchText: string): void => {\n this.setState({\n paging: { index: 0 },\n filter: { searchText }\n });\n };\n\n private readonly loadMore = (): void => {\n this.setState({\n paging: { index: this.state.paging.index + 1 }\n });\n };\n\n private readonly sortData = (): Tdata[] => {\n const sorting = this.state.sorting;\n if (!sorting) {\n return this.state.data;\n }\n const { fieldName, ascending } = sorting;\n return this.state.data.sort((item1: Tdata, item2: Tdata) => {\n let value1 = ((item1 as unknown) as { [key: string]: string })[fieldName];\n let value2 = ((item2 as unknown) as { [key: string]: string })[fieldName];\n if (typeof value1 === 'string' && typeof value2 === 'string') {\n value1 = value1.toLowerCase();\n value2 = value2.toLowerCase();\n }\n const compareResult = value1 > value2 ? 1 : value1 < value2 ? -1 : 0;\n return ascending ? compareResult : compareResult * -1;\n });\n };\n\n private readonly filterData = (): Tdata[] => {\n const column = this.props.columns.find(c => c.isSearchable);\n const searchText = this.state.filter.searchText;\n return this.sortData().filter(item => {\n if (!column?.fieldName || !searchText) {\n return true;\n }\n const columnValue = ((item as unknown) as { [key: string]: string })[column.fieldName];\n return columnValue && columnValue.toLowerCase().indexOf(searchText.trim().toLowerCase()) >= 0;\n });\n };\n\n private readonly getDataToDisplay = (): Tdata[] => {\n const itemsCount = (this.props.pageSize || defaultPageSize) * (this.state.paging.index + 1);\n const filteredItems = this.filterData();\n return filteredItems.slice(0, itemsCount);\n };\n\n private readonly hasMore = (): boolean => {\n const itemsCount = (this.props.pageSize || defaultPageSize) * (this.state.paging.index + 1);\n const filteredItems = this.filterData();\n return filteredItems.length > itemsCount;\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { BusinessPartner, BusinessPartnerUser, BusinessPartnersDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { IBusinessPartnersResources } from '../business-partners.props.autogenerated';\nimport { DataGrid, IDataGridColumn } from './data-grid';\n\n/**\n * View model of business partner user, used to display.\n */\nexport interface IBusinessPartnerUserViewModel extends BusinessPartnerUser {\n name: string;\n spendingLimitStr: string;\n}\n\n/**\n * Props of BusinessPartnerUsersTable.\n */\nexport interface IBusinessPartnerUsersTableProps extends IComponentProps {\n className: string;\n pageSize?: number;\n businessPartner: BusinessPartner;\n resources: IBusinessPartnersResources;\n onSelect(businessPartnerUser: BusinessPartnerUser): void;\n}\n\n/**\n * BusinessPartnerUsersTable component.\n */\nexport class BusinessPartnerUsersTable extends React.Component {\n public shouldComponentUpdate(nextProps: Readonly): boolean {\n return this.props.id !== nextProps.id;\n }\n\n public render(): JSX.Element {\n return (\n \n );\n }\n\n /**\n * Get column definition of the table.\n * @returns - Columns.\n */\n private readonly getColumns = (): IDataGridColumn[] => {\n return [\n {\n reactKey: 'name',\n name: this.props.resources.businessUserTableNameHeadingText,\n fieldName: 'name',\n isSearchable: true\n },\n {\n reactKey: 'email',\n name: this.props.resources.businessUserTableEmailHeadingText,\n fieldName: 'Email'\n },\n {\n reactKey: 'spendingLimit',\n name: this.props.resources.businessUserTableSpendingLimitHeadingText,\n className: `${this.props.className}__row__column-with-number`,\n fieldName: 'spendingLimitStr'\n },\n {\n reactKey: 'select-button',\n name: '',\n onRender: this.renderSelectButton,\n className: `${this.props.className}__row__column-select-button`\n }\n ];\n };\n\n /**\n * Renders the button to select a business partner user.\n * @param businessPartnerUser - The business partner user to select.\n * @returns - Button component.\n */\n private readonly renderSelectButton = (businessPartnerUser: IBusinessPartnerUserViewModel) => {\n return (\n {\n this.props.onSelect(businessPartnerUser);\n }}\n title={this.props.resources.select}\n aria-label={this.props.resources.select}\n />\n );\n };\n\n /**\n * Call retail proxy to get business partner users.\n * @returns - Business partner users view model.\n */\n private readonly getBusinessPartnerUsers = async (): Promise => {\n const businessPartners = await BusinessPartnersDataActions.getUsersAsync(\n {\n callerContext: this.props.context.actionContext,\n bypassCache: 'get',\n queryResultSettings: {}\n },\n this.props.businessPartner.BusinessPartnerId\n );\n return businessPartners\n .filter(user => user.StatusValue === 1)\n .map(user => ({\n ...user,\n name: `${user.FirstName} ${user.LastName}`,\n spendingLimitStr: !ObjectExtensions.isNullOrUndefined(user.SpendingLimit)\n ? this.props.context.cultureFormatter.formatCurrency(user.SpendingLimit.toString())\n : ''\n }));\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { BusinessPartner, BusinessPartnersDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { IBusinessPartnersResources } from '../business-partners.props.autogenerated';\nimport { DataGrid, IDataGridColumn } from './data-grid';\n\n/**\n * Props of IBusinessPartnersTable.\n */\nexport interface IBusinessPartnersTableProps extends IComponentProps {\n className: string;\n pageSize?: number;\n resources: IBusinessPartnersResources;\n onSelect(businessPartner: BusinessPartner): void;\n}\n\n/**\n * BusinessPartnersTable component.\n */\nexport class BusinessPartnersTable extends React.Component {\n public shouldComponentUpdate(nextProps: Readonly): boolean {\n return this.props.id !== nextProps.id;\n }\n\n public render(): JSX.Element {\n return (\n \n );\n }\n\n /**\n * Get column definition of the table.\n * @returns - Columns.\n */\n private readonly getColumns = (): IDataGridColumn[] => {\n return [\n {\n reactKey: 'name',\n name: this.props.resources.businessPartnerName,\n fieldName: 'Name',\n isSearchable: true\n },\n {\n reactKey: 'select-button',\n name: '',\n onRender: this.renderSelectButton,\n className: `${this.props.className}__row__column-select-button`\n }\n ];\n };\n\n /**\n * Renders the button to select a business partner.\n * @param businessPartner - The business partner to select.\n * @returns - Button component.\n */\n private readonly renderSelectButton = (businessPartner: BusinessPartner) => {\n return (\n {\n this.props.onSelect(businessPartner);\n }}\n title={this.props.resources.select}\n aria-label={this.props.resources.select}\n />\n );\n };\n\n /**\n * Call retail proxy to get business partners.\n * @returns - Business partners.\n */\n private readonly getBusinessPartners = async () => {\n const businessPartners = await BusinessPartnersDataActions.getManagedBusinessPartnersAsync({\n callerContext: this.props.context.actionContext,\n bypassCache: 'get',\n queryResultSettings: {}\n });\n return businessPartners;\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 { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { BusinessPartner, BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { IBusinessPartnersData } from './business-partners.data';\nimport { IBusinessPartnersProps } from './business-partners.props.autogenerated';\nimport { BusinessPartnerUsersTable } from './components/business-partner-users-table';\nimport { BusinessPartnersTable } from './components/business-partners-table';\n\n/**\n * Props for the module view.\n */\nexport interface IBusinessPartnersViewProps extends IBusinessPartnersProps {\n businessPartnersProps: IModuleProps;\n businessPartnersHeading?: React.ReactNode;\n businessPartnersTable?: React.ReactNode;\n businessPartnerUsersTable?: React.ReactNode;\n backToBusinessPartnersLink?: React.ReactNode;\n}\n\n/**\n * State of BusinessPartners component.\n */\nexport interface IBusinessPartnersState {\n selectedBusinessPartner?: BusinessPartner;\n}\n\n/**\n * The class name root for the module.\n */\nexport const moduleClassName: string = 'ms-business-partners';\n\n/**\n * BusinessPartners component.\n */\nclass BusinessPartners extends React.Component, IBusinessPartnersState> {\n constructor(props: IBusinessPartnersProps) {\n super(props);\n this.state = {};\n }\n\n public componentDidMount() {\n this.props.context.request.cookies.removeAccountSelectionCookie();\n }\n\n public shouldComponentUpdate(nextProps: IBusinessPartnersProps, nextState: IBusinessPartnersState): 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 const {\n config: { className, pageSize, businessPartnersHeading }\n } = this.props;\n const viewProps: IBusinessPartnersViewProps = {\n ...this.props,\n businessPartnersProps: {\n moduleProps: this.props,\n className: classname(moduleClassName, className)\n },\n businessPartnersHeading: businessPartnersHeading && businessPartnersHeading.text && (\n \n ),\n businessPartnersTable: !this.state.selectedBusinessPartner ? (\n \n ) : (\n undefined\n ),\n businessPartnerUsersTable: this.state.selectedBusinessPartner ? (\n \n ) : (\n undefined\n ),\n backToBusinessPartnersLink: this.state.selectedBusinessPartner ? (\n {\n this.onSelectBusinessPartner();\n }}\n >\n {this.props.resources.backToBusinessPartnersLink}\n \n ) : (\n undefined\n )\n };\n return this.props.renderView(viewProps);\n }\n\n /**\n * Event handler of business partner selection.\n * @param businessPartner - Selected business partner.\n */\n private readonly onSelectBusinessPartner = (businessPartner?: BusinessPartner) => {\n this.setState({\n selectedBusinessPartner: businessPartner\n });\n };\n\n /**\n * Event handler of business partner user selection.\n * @param businessPartnerUser - Selected business partner user.\n */\n private readonly onSelectBusinessPartnerUser = (businessPartnerUser: BusinessPartnerUser) => {\n if (businessPartnerUser.AccountNumber) {\n this.props.context.request.cookies.setAccountSelectionCookie(true, businessPartnerUser.AccountNumber);\n const homeUrl = Msdyn365.getUrlSync('home', this.props.context.actionContext);\n if (homeUrl && Msdyn365.msdyn365Commerce.isBrowser) {\n window.location.href = homeUrl;\n }\n }\n };\n}\n\nexport default BusinessPartners;\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 { IBusinessPartnersViewProps } from './business-partners';\n\n/**\n * View layout of business partner module.\n * @param props - React props of the component.\n * @returns Functional component.\n */\nconst businessPartnersView: React.FC = props => {\n return (\n \n {props.backToBusinessPartnersLink}\n {props.businessPartnersHeading}\n {props.businessPartnersTable}\n {props.businessPartnerUsersTable}\n \n );\n};\n\nexport default businessPartnersView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport QRCode from 'qrcode.react';\nimport * as React from 'react';\n\n/**\n * CheckInConfirmation component Properties.\n */\nexport interface ICheckInConfirmationProps {\n /**\n * The confirmation text to show.\n */\n confirmationText: string;\n\n /**\n * Should the order confirmation number shown as QR code or not.\n * If false, the order confirmation number (channel reference ID) will be shown as text.\n */\n shouldShowQrCode: boolean;\n\n /**\n * The label shows for channel reference ID.\n */\n channelReferenceIdLabel: string;\n\n /**\n * The channel reference ID to show. When shouldShowQrCode is true, the ID is shown as QR code, otherwise it is shown as text.\n */\n channelReferenceId?: string;\n}\n\n/**\n * CheckInConfirmation component for showing confirmation information after check-in succeed.\n * @param confirmationProps - The confirmation properties.\n * @param confirmationProps.confirmationText - The confirmation text.\n * @param confirmationProps.shouldShowQrCode - Should the order confirmation number shown as QR code or not.\n * If false, the order confirmation number (channel reference ID) will be shown as text.\n * @param confirmationProps.channelReferenceIdLabel - The label shows for channel reference ID.\n * @param confirmationProps.channelReferenceId - The channel reference ID to show.\n * When shouldShowQrCode is true, the ID is shown as QR code, otherwise it is shown as text.\n * @returns The check-in confirmation component.\n */\nexport const CheckInConfirmationComponent: React.FC = ({\n confirmationText,\n shouldShowQrCode,\n channelReferenceIdLabel,\n channelReferenceId\n}) => {\n return (\n
\n

{confirmationText}

\n {channelReferenceId && (\n

\n {`${channelReferenceIdLabel} ${channelReferenceId}`}\n

\n )}\n {channelReferenceId && shouldShowQrCode && (\n \n \n \n )}\n
\n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\n/**\n * Check-in error properties.\n */\nexport interface ICheckInErrorProps {\n errorMessage?: string;\n}\n\n/**\n * Check-in error.\n * @param errorProps - The error properties.\n * @param errorProps.errorMessage - The error message to show.\n * @returns The alert element showing check-in errors.\n */\nexport const CheckInErrorComponent: React.FC = ({ errorMessage }) => {\n if (!errorMessage) {\n return null;\n }\n\n return (\n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IDictionary } from '@msdyn365-commerce/core';\nimport { CommerceProperty, SalesOrdersDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { CheckInConfirmationComponent } from './check-in-confirmation';\nimport { CheckInErrorComponent } from './check-in-error';\nimport { IAdditionalInformationKeysData, ICheckInForPickupConfig, ICheckInForPickupProps } from './check-in-for-pickup.props.autogenerated';\n\n/**\n * The interface representing a piece of additional information data.\n */\ninterface IAdditionalInformation {\n formKey: IAdditionalInformationKeysData;\n value: string;\n}\n\n/**\n * The state for check-in view.\n */\nexport interface ICheckInViewState {\n /**\n * If the module has header error to show.\n */\n isHeaderError: boolean;\n\n /**\n * If the customer has checked in.\n */\n isCheckedIn: boolean;\n\n /**\n * Additional information to capture.\n */\n additionalInformation: IDictionary[];\n}\n\n/**\n * The properties for check-in view.\n */\nexport interface ICheckInViewProps extends ICheckInForPickupProps {\n headerError: React.ReactNode;\n confirmationComponent: React.ReactNode;\n viewState: ICheckInViewState;\n additionalInformationValues: string[];\n checkInForOrderPickup(additionalInformation?: IAdditionalInformation[]): Promise;\n}\n\n/**\n * The state of the CheckInForPickup module.\n */\nexport interface ICheckInForPickupState {\n /**\n * The header error message.\n */\n headerErrorMessage: string;\n\n /**\n * If the customer has checked in successfully.\n */\n isCheckedIn: boolean;\n}\n\n/**\n *\n * CheckIn component.\n * @extends {React.Component, ICheckInForPickupState>}\n */\nclass CheckInForPickup extends React.Component, ICheckInForPickupState> {\n public constructor(props: ICheckInForPickupProps) {\n super(props);\n this.state = {\n headerErrorMessage: '',\n isCheckedIn: false\n };\n }\n\n public render(): JSX.Element | null {\n const isHeaderError: boolean = this.state.headerErrorMessage !== '';\n\n const viewProps = {\n ...this.props,\n headerError: ,\n confirmationComponent: (\n \n ),\n checkInForOrderPickup: this.checkInForOrderPickup,\n additionalInformationValues: this.props.config.additionalInformationKeys\n ? this.props.config.additionalInformationKeys.map(() => {\n return {};\n })\n : undefined,\n viewState: {\n isHeaderError,\n isCheckedIn: this.state.isCheckedIn\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public shouldComponentUpdate(nextProps: ICheckInForPickupProps, nextState: ICheckInForPickupState): boolean {\n if (\n this.props.config.additionalInformationHeading !== nextProps.config.additionalInformationHeading ||\n this.props.config.confirmationText !== nextProps.config.confirmationText\n ) {\n return true;\n }\n if (this.state.headerErrorMessage !== nextState.headerErrorMessage || this.state.isCheckedIn !== nextState.isCheckedIn) {\n return true;\n }\n return false;\n }\n\n public async componentDidMount(): Promise {\n await this._onInit();\n }\n\n /**\n * The async callback for submitting check-in.\n * @param additionalInformationList - The optional additional information captured.\n * @returns The async result.\n */\n public checkInForOrderPickup = async (additionalInformationList?: IAdditionalInformation[]): Promise => {\n const channelId: number = Number.parseInt(this.props.context.request.query!.channelId, 10);\n const channelReferenceId: string = this.props.context.request.query!.channelReferenceId;\n const packingSlipId: string = this.props.context.request.query!.packingSlipId;\n\n const additionalInformationToSubmit: { formKey: string; value: string }[] | undefined = additionalInformationList?.map(\n additionalInformationKeyValuePair => {\n return {\n formKey: additionalInformationKeyValuePair.formKey.resourceId ?? '',\n value: additionalInformationKeyValuePair.value\n };\n }\n );\n const extensionPropertyList: CommerceProperty[] = [];\n if (!ObjectExtensions.isNullOrUndefined(additionalInformationToSubmit)) {\n for (const additionalInformation of additionalInformationToSubmit) {\n extensionPropertyList.push({\n Key: additionalInformation.formKey,\n Value: {\n StringValue: additionalInformation.value\n }\n });\n }\n }\n try {\n await SalesOrdersDataActions.checkInForOrderPickupAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\n channelId,\n packingSlipId,\n channelReferenceId,\n extensionPropertyList\n );\n } catch (error) {\n this.state = { headerErrorMessage: this.props.resources.genericErrorMessage, isCheckedIn: false };\n this.props.telemetry.error(error);\n return Promise.resolve();\n }\n this.setState({ headerErrorMessage: '', isCheckedIn: true });\n return Promise.resolve();\n };\n\n /**\n * The action performed on module initialization.\n * @returns The async result.\n */\n private readonly _onInit = async (): Promise => {\n const channelId: number = Number.parseInt(this.props.context.request.query?.channelId ?? '', 10);\n const channelReferenceId: string | undefined = this.props.context.request.query?.channelReferenceId;\n const packingSlipId: string | undefined = this.props.context.request.query?.packingSlipId;\n if (Number.isNaN(channelId) || !channelReferenceId || !packingSlipId) {\n // No error message shown in editor mode.\n if (this.props.context.request.params.isEditor) {\n return Promise.resolve();\n } else if (this.props.context.request.params.isPreview) {\n this.setState({ headerErrorMessage: this.props.resources.requiredParameterMissingErrorMessage });\n } else {\n this.setState({ headerErrorMessage: this.props.resources.genericErrorMessage });\n }\n this.props.context.telemetry.error(\n 'One or more required URL parameters are missing. ' +\n 'Please make sure you have pass in channelId, channelReferenceId and packingSlipId through URL parameter.'\n );\n return Promise.resolve();\n }\n\n const { additionalInformationKeys } = this.props.config;\n\n const hasAdditionalInformation: boolean = ArrayExtensions.hasElements(additionalInformationKeys);\n\n // Call check-in-for-pickup directly if no additional information to capture.\n if (!hasAdditionalInformation) {\n try {\n await SalesOrdersDataActions.checkInForOrderPickupAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\n channelId,\n packingSlipId,\n channelReferenceId\n );\n } catch (error) {\n this.setState({ headerErrorMessage: this.props.resources.genericErrorMessage, isCheckedIn: false });\n this.props.telemetry.error(error);\n return Promise.resolve();\n }\n this.setState({ headerErrorMessage: '', isCheckedIn: true });\n }\n return Promise.resolve();\n };\n}\n\nexport default CheckInForPickup;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { FormBuilder } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckInViewProps } from './check-in-for-pickup';\n\n/**\n * The check-in view for submitting check-in, capturing additional information, and showing check-in confirmation.\n * @param props - The check-in view properties.\n * @returns The check-in view as a react component.\n */\nconst CheckInViewComponent: React.FC = (props: ICheckInViewProps) => {\n const { headerError, checkInForOrderPickup, confirmationComponent, viewState } = props;\n return (\n <>\n {viewState.isHeaderError && headerError}\n {!viewState.isHeaderError && ArrayExtensions.hasElements(props.config.additionalInformationKeys) && (\n \n )}\n {!viewState.isHeaderError &&\n !ArrayExtensions.hasElements(props.config.additionalInformationKeys) &&\n viewState.isCheckedIn &&\n confirmationComponent}\n \n );\n};\n\nexport default CheckInViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Waiting } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * Payment waiting props.\n */\nexport interface IPaymentWaitingProps {\n message: string;\n className?: string;\n}\n\n/**\n * Payment waiting.\n * @param param0 - First in param.\n * @param param0.message - Message.\n * @param param0.className - ClassName.\n * @returns React node.\n */\nexport const WaitingComponent: React.FC = ({ message, className = 'ms-checkout-payment-instrument' }) => (\n
\n \n {message}\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 { IModuleStateProps } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport classname from 'classnames';\n\nimport { reaction } from 'mobx';\nimport { ICheckoutExpressPaymentContainerData } from './checkout-express-payment-container.data';\nimport {\n ICheckoutExpressPaymentContainerProps,\n ICheckoutExpressPaymentContainerHeadingData\n} from './checkout-express-payment-container.props.autogenerated';\nimport { WaitingComponent } from '../../common/waiting';\n\n/**\n * ICheckoutExpressPaymentContainerModuleProps interface.\n */\nexport interface ICheckoutExpressPaymentContainerModuleProps\n extends ICheckoutExpressPaymentContainerProps,\n IModuleStateProps {}\n\nexport interface ICheckoutExpressPaymentContainerViewProps\n extends ICheckoutExpressPaymentContainerProps<{}>,\n ICheckoutExpressPaymentContainerState {\n checkoutPlainContainerProps: IModuleProps;\n items: React.ReactNode[];\n isReady?: boolean;\n waiting?: React.ReactNode;\n title?: React.ReactNode;\n headerProps: INodeProps;\n}\n\n/**\n * Checkout Express Payment Container State.\n */\nexport interface ICheckoutExpressPaymentContainerState {\n isReady?: boolean;\n shouldHideExpressPaymentContainer?: boolean;\n}\n\n/**\n *\n * CheckoutExpressPaymentContainer component\n * @extends {React.PureComponent>}\n */\n@observer\nexport class CheckoutExpressPaymentContainer extends React.PureComponent<\n ICheckoutExpressPaymentContainerProps,\n ICheckoutExpressPaymentContainerState\n> {\n private readonly moduleClassName: string = 'ms-checkout-express-section-container';\n\n public constructor(props: ICheckoutExpressPaymentContainerModuleProps) {\n super(props);\n this.state = {\n isReady: false,\n shouldHideExpressPaymentContainer: this.props.data.checkout.result?.shippingAddressFromExpressCheckout ? true : false\n };\n }\n\n public componentDidMount(): void {\n reaction(\n () => this.props.data.checkout.result?.isExpressPaymentModulesReady,\n () => {\n const items = this._getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout express payment container content is empty, module wont render');\n }\n let isReady = true;\n\n for (const item of items) {\n // @ts-ignore\n if (item.key.includes('checkout-express')) {\n // @ts-ignore\n const extensionPropertyKey = `is${item.props.config.paymentTenderType}ExpressModuleReady`;\n\n const isModuleReady =\n this.props.data.checkout.result?.isExpressPaymentModulesReady?.find(\n property => property.Key === extensionPropertyKey\n )?.Value?.BooleanValue ?? false;\n isReady = isReady && isModuleReady;\n }\n }\n this.setState({ isReady });\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\n isExpressCheckoutApplied => {\n this.setState({ shouldHideExpressPaymentContainer: isExpressCheckoutApplied });\n }\n );\n }\n\n public render(): JSX.Element | null {\n const {\n config: { checkoutExpressPaymentContainerHeading },\n resources: { checkoutExpressPaymentSectionLoadingMessage }\n } = this.props;\n\n const items = this._getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout express payment container content is empty, module wont render');\n return null;\n }\n\n const shouldHideExpressPaymentContainerClassName: string = this.state.shouldHideExpressPaymentContainer ? 'hide' : '';\n\n const moduleClassName = classname(\n 'ms-checkout-express-payment-container',\n this.props.config.className,\n shouldHideExpressPaymentContainerClassName\n );\n\n const viewProps: ICheckoutExpressPaymentContainerViewProps = {\n ...this.props,\n\n checkoutPlainContainerProps: {\n moduleProps: this.props,\n className: moduleClassName\n },\n items: items,\n isReady: this.state.isReady,\n waiting: ,\n title: checkoutExpressPaymentContainerHeading && this._renderMsdyn365Text(checkoutExpressPaymentContainerHeading),\n headerProps: { className: 'ms-checkout-express-payment-container__head' }\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly _getItems = (): React.ReactNode[] => {\n const { slots } = this.props;\n return (slots && slots.primary && slots.primary.length && slots.primary) || [];\n };\n\n /**\n * Renders heading.\n * @param checkoutExpressPaymentContainerHeading - The checkout express container heading.\n * @returns React node.\n */\n private _renderMsdyn365Text(checkoutExpressPaymentContainerHeading: ICheckoutExpressPaymentContainerHeadingData): React.ReactNode {\n return (\n \n );\n }\n\n /**\n * Event handler for heading change event.\n * @param event - The content change event in heading element.\n * @returns The new heading value.\n */\n private _handleCheckoutExpressContainerHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.checkoutExpressPaymentContainerHeading!.text = event.target.value);\n}\n\nexport default CheckoutExpressPaymentContainer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutExpressPaymentContainerViewProps } from './checkout-express-payment-container';\n\ninterface IContainerItemsComponent {\n isLoadingClassName: string;\n items: React.ReactNode[];\n}\n\nconst ContainerItemsComponent: React.FC = ({ isLoadingClassName, items }) => (\n
{items}
\n);\n\nconst CheckoutExpressPaymentContainerView: React.FC = ({\n checkoutPlainContainerProps,\n items,\n isReady,\n waiting,\n title,\n headerProps\n}) => {\n const isLoadingClassName: string = isReady ? 'showContainer' : 'notShowContainer';\n return (\n \n {title}\n {!isReady && waiting}\n \n \n );\n};\n\nexport default CheckoutExpressPaymentContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICookieComplianceAcceptButton {\n acceptCookiesButtonText?: string;\n acceptCookiesButtonAriaLabel?: string;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n}\n\nexport const CookieComplianceAcceptButton: React.FC = ({\n acceptCookiesButtonText,\n acceptCookiesButtonAriaLabel,\n telemetryContent,\n onClose\n}) => {\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {acceptCookiesButtonText}\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IActionLinksData } from '../cookie-compliance.props.autogenerated';\n\nexport interface ICookieComplianceLinks {\n links: IActionLinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class CookieComplianceLinks 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: IActionLinksData[]): 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 editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\n\nexport default CookieComplianceLinks;\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, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { CookieComplianceAcceptButton, CookieComplianceLinks } from './components';\nimport { ICookieComplianceConfig, ICookieComplianceProps } from './cookie-compliance.props.autogenerated';\n\n/**\n * Alert state interface.\n */\nexport interface IAlertState {\n visible: boolean;\n}\n\n/**\n * Cookie compliance view props interface.\n */\nexport interface ICookieComplianceViewProps extends ICookieComplianceProps<{}> {\n CookieComplianceBanner: IModuleProps;\n AlertProps: IAlertProps;\n Content: INodeProps;\n text?: React.ReactNode;\n links?: React.ReactNode;\n acceptButton?: React.ReactNode;\n className: string;\n onDismiss(): void;\n}\n\n/**\n *\n * CookieCompliance component.\n * @extends {React.PureComponent>}\n */\nclass CookieCompliance extends React.PureComponent, IAlertState> {\n private readonly cookieRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: ICookieComplianceProps) {\n super(props);\n this.state = { visible: false };\n this.cookieRef = React.createRef();\n this._onDismiss = this._onDismiss.bind(this);\n }\n\n public componentDidMount(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\n this.setState({ visible: true });\n }\n }\n\n public render(): JSX.Element | null {\n const { config, context, resources, telemetry } = this.props;\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\n const { visible } = this.state;\n\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\n let moduleConfig: ICookieComplianceConfig;\n\n try {\n moduleConfig = config;\n } catch (error) {\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\n return
{error}
;\n }\n\n if (isConsentGiven && !visible) {\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\n return null;\n }\n\n if (!MsDyn365.msdyn365Commerce.isBrowser) {\n return <>;\n }\n\n const viewProps = {\n ...this.props,\n onDismiss: this._onDismiss,\n CookieComplianceBanner: {\n moduleProps: this.props,\n className: classnames('ms-cookie-compliance', moduleConfig.className),\n ref: this.cookieRef\n },\n AlertProps: {\n className: 'ms-cookie-compliance__container',\n color: 'white',\n fade: false\n },\n Content: {\n className: 'ms-cookie-compliance__content'\n },\n text: moduleConfig.content && (\n \n ),\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\n \n ),\n acceptButton: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles Link content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.actionLinks?.[linkIndex]) {\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Handles content change event.\n * @param event - Event.\n */\n public handleContentChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.content = event.target.value;\n };\n\n private _onDismiss(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies) {\n context.request.cookies.setConsentCookie();\n location.reload();\n }\n this.setState({ visible: false });\n }\n}\n\nexport default CookieCompliance;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICookieComplianceViewProps } from './cookie-compliance';\n\nconst CookieComplianceView: React.FC = props => {\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\n\n return (\n \n \n \n {text}\n {links}\n \n {acceptButton}\n \n \n );\n};\nexport default CookieComplianceView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IHistogramItemViewProps, IRatingsHistogramViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst RatingsHistogramView: React.FC = props => {\n const { heading, histogramItems, histogramProps, moduleProps } = props;\n return (\n \n {heading}\n \n {histogramItems.map(item => {\n return histogramItem(item);\n })}\n \n \n );\n};\n\nconst histogramItem = (props: IHistogramItemViewProps) => {\n return (\n \n {props.starLabel}\n {props.bar}\n {props.percentage}\n \n );\n};\n\nexport default RatingsHistogramView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IReviewModalViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport {\n IReportReviewModalViewProps,\n IReviewCardViewProps,\n IReviewsListState,\n IReviewsListViewProps\n} from '@msdyn365-commerce-modules/ratings-reviews/src/modules/reviews-list';\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst ReviewsListview: React.FC = props => {\n const {\n averageRating,\n filterByDropdown,\n moduleProps,\n noReviewsMessage,\n noReviewsWithFilterMessage,\n pageControls,\n refineReviewsProps,\n reportReviewModal,\n reviewsListProps,\n reviewCards,\n reviewCount,\n reviewModal,\n sortByDropdown,\n state,\n userReview\n } = props;\n\n if (!userReview && reviewCards.length === 0 && !state.isFilterApplied) {\n return {noReviewsMessage};\n }\n\n return (\n \n {averageRating}\n {reviewCount}\n \n {sortByDropdown}\n {filterByDropdown}\n \n \n {userReview && buildReviewCard(userReview)}\n {reviewCards.map(review => {\n return buildReviewCard(review);\n })}\n \n {reviewCards.length === 0 && state.isFilterApplied && noReviewsWithFilterMessage}\n {pageControls}\n {createReviewModal(reviewModal, moduleProps)}\n {createReportModal(reportReviewModal, state)}\n \n );\n};\n\nconst buildReviewCard = (props: IReviewCardViewProps) => {\n return (\n \n \n {props.rating}\n {props.name}\n {props.date}\n \n \n \n {props.reviewTitle}\n {props.reviewText}\n \n \n {props.responseName}\n {props.responseDate}\n {props.responseText}\n \n \n {props.ratingHelpfulLabel}\n {props.like}\n {props.dislike}\n {props.edit}\n {props.report}\n \n \n \n );\n};\n\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\n return (\n \n {props.modalHeader}\n \n \n \n {props.rating}\n {props.ratingLabel}\n \n \n {props.titleLabel}\n {props.titleInput}\n \n \n {props.textLabel}\n {props.textInput}\n \n {props.privacyPolicyUrl}\n {props.error}\n \n \n \n {props.submitButton}\n {props.cancelButton}\n \n \n );\n};\n\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\n return (\n \n {state.reported ? props.headerSubmitted : props.header}\n \n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\n \n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\n \n );\n};\n\nexport default ReviewsListview;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IHeadingData, IIframeConfig, IIframeProps } from './iframe.props.autogenerated';\n\nexport interface IIframeViewProps extends IIframeProps {\n Heading: React.ReactNode;\n IframeContainer: IModuleProps;\n IFrame: React.ReactNode;\n alert?: React.ReactNode;\n cookieConsentAccepted?: boolean;\n}\n\n/**\n *\n * Iframe component.\n * @extends {React.PureComponent}\n */\nclass Iframe extends React.PureComponent> {\n private readonly iframeRef: React.RefObject;\n\n constructor(props: IIframeProps) {\n super(props);\n this.iframeRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const { config, resources } = this.props;\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!(config && config.target && config.target.destinationUrl)) {\n return null;\n }\n\n let srcURL;\n try {\n srcURL = new URL(config.target.destinationUrl);\n } catch (error) {\n this.props.telemetry.exception(error);\n return null;\n }\n\n if (srcURL && srcURL.protocol && srcURL.protocol.toLocaleLowerCase() !== 'https:') {\n return null;\n }\n const iframeClassName = classnames('ms-iframe', config.className);\n\n let viewProps: IIframeViewProps = {\n ...(this.props as IIframeProps),\n Heading: this._createHeading(config.heading!),\n IframeContainer: {\n moduleProps: this.props,\n className: iframeClassName\n },\n IFrame: this._createIframe()\n };\n\n if (!isConsentGiven) {\n viewProps = {\n ...viewProps,\n alert: this._renderAlert(resources.cookieConsentRequiredMessage)\n };\n } else {\n viewProps = {\n ...viewProps,\n cookieConsentAccepted: true\n };\n }\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return ;\n }\n\n private _renderAlert(message: string): React.ReactNode | null {\n return (\n

\n {message}\n

\n );\n }\n\n private _createIframe(): React.ReactNode | null {\n const { config } = this.props;\n const targetURL = config.target.destinationUrl;\n\n return (\n \n );\n }\n}\n\nexport default Iframe;\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 { IIframeViewProps } from './iframe';\n\n/**\n *\n * IFrameView component.\n * @extends {React.PureComponent}\n */\nexport class IFrameView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { Heading, IframeContainer, IFrame, alert, cookieConsentAccepted } = this.props;\n\n return (\n \n {alert}\n {cookieConsentAccepted && cookieConsentAccepted ? (\n <>\n {Heading}\n {IFrame}\n \n ) : null}\n \n );\n }\n}\nexport default IFrameView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { getCatalogId } from '@msdyn365-commerce/core';\nimport { ProductComparisonItem, ProductComparisonState } from '../product-comparison-state';\nimport { IProductComparisonButtonProps } from './product-comparison-button.props.autogenerated';\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonButtonViewProps extends IProductComparisonButtonProps<{}> {\n moduleProps: IModuleProps;\n productComparisonButton?: React.ReactNode;\n productComparisonPreview?: React.ReactNode;\n}\n\n/**\n * Represents the data which is required for the product comparison button to be rendered.\n */\nexport interface IProductComparisonButtonData {}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonFullProps extends IProductComparisonButtonProps {\n product: ProductSearchResult | SimpleProduct;\n catalogId: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonState {\n canProductBeAddedToProductComparison: boolean;\n currentProductsCount: number;\n comparisonItemId: string;\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonButton extends React.PureComponent {\n private static _productComparisonPreview?: React.ReactNode;\n\n private readonly _className: string;\n\n private readonly _instanceId: string;\n\n private readonly _shouldUsePreview: boolean;\n\n private static _renderProductComparisonPreview(props: IProductComparisonButtonFullProps): React.ReactNode {\n if (!ProductComparisonButton._productComparisonPreview && ArrayExtensions.hasElements(props.slots.productComparisonPreview)) {\n ProductComparisonButton._productComparisonPreview = props.slots.productComparisonPreview[0];\n }\n\n return ProductComparisonButton._productComparisonPreview;\n }\n\n private static _renderProductComparisonButton(\n className: string,\n buttonText: string | undefined,\n title: string,\n onClickHandler?: () => void\n ): React.ReactNode {\n const isDisabled = ObjectExtensions.isNullOrUndefined(onClickHandler);\n let content: React.ReactNode;\n if (buttonText) {\n content = (\n <>\n
\n
{buttonText}
\n \n );\n }\n return (\n \n );\n }\n\n public constructor(props: IProductComparisonButtonFullProps) {\n super(props);\n\n this._className = 'ms-product-comparison-button';\n this._instanceId = `${this._className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n\n this.state = this._getNewState();\n\n this._shouldUsePreview = !ProductComparisonButton._productComparisonPreview;\n ProductComparisonButton._renderProductComparisonPreview(this.props);\n }\n\n public componentDidMount(): void {\n ProductComparisonState.instance(this.props.context.request).listModifiedEvent.subscribe({\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this.setState(this._getNewState());\n }\n });\n }\n\n public getSnapshotBeforeUpdate(previousProps: Readonly): void {\n if (previousProps.product.RecordId !== this.props.product.RecordId || previousProps.catalogId !== this.props.catalogId) {\n this.setState(this._getNewState());\n }\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(this.props.context.request).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode | null {\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n if (!isConsentGiven) {\n return null;\n }\n\n const viewProps: IProductComparisonButtonViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: this._className\n }\n };\n\n if (this._shouldUsePreview) {\n viewProps.productComparisonPreview = ProductComparisonButton._productComparisonPreview;\n }\n\n const buttonClassName = this.props.config.shouldDisplayText ? `${this._className}__button` : `${this._className}__icon`;\n\n if (!this.state.canProductBeAddedToProductComparison) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.removeFromComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n classnames(`${buttonClassName}__removing`, buttonClassName),\n buttonText,\n this.props.resources.removeFromComparisonButtonText,\n this._removeFromProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit) && productsLimit <= this.state.currentProductsCount) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonLimitReachedButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonLimitReachedButtonText\n );\n return this.props.renderView(viewProps);\n }\n\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonButtonText,\n this._addToProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n private _getProductsLimit(): number | undefined | null {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Adds current product to a product comparison list.\n */\n private readonly _addToProductComparison: () => void = () => {\n const item = new ProductComparisonItem(this.props.product.RecordId, this.props.catalogId);\n ProductComparisonState.instance(this.props.context.request).addItem(item);\n };\n\n /**\n * Removes current product from the product comparison list where it was added earlier.\n */\n private readonly _removeFromProductComparison: () => void = () => {\n ProductComparisonState.instance(this.props.context.request).removeItemById(this.state.comparisonItemId);\n };\n\n private _getProdutComparisonDataByCatalogId(): ProductComparisonItem[] {\n const items = ProductComparisonState.instance(this.props.context.request).items;\n const catalogId = getCatalogId(this.props.context.request);\n const productByCatalogId = items?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n\n /**\n * Retrieves the state of the component based on the comparison data.\n * @returns State object for the component.\n */\n private readonly _getNewState: () => IProductComparisonButtonState = () => {\n const comparisonItemId = ProductComparisonItem.getItemId(this.props.product.RecordId, this.props.catalogId);\n const products = this._getProdutComparisonDataByCatalogId();\n return {\n comparisonItemId,\n canProductBeAddedToProductComparison: !ProductComparisonState.instance(this.props.context.request).hasItemById(\n comparisonItemId\n ),\n currentProductsCount: products.length\n };\n };\n}\n\nexport default ProductComparisonButton;\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 { IProductComparisonButtonViewProps } from './product-comparison-button';\n\n/**\n * Represents product comparison button view.\n * @param props - View props for product comparison button.\n * @returns Functional component of product comparison button.\n */\nexport const ProductComparisonButtonViewFunctionalComponent: React.FC = props => {\n const { productComparisonButton, productComparisonPreview } = props;\n\n return (\n \n {productComparisonButton}\n {productComparisonPreview}\n \n );\n};\n\nexport default ProductComparisonButtonViewFunctionalComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n Heading,\n IComponentNodeProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ITileListProps, ITitleData } from './tile-list.props.autogenerated';\n\n/**\n * Tile-list view props.\n */\nexport interface ITileListViewProps extends ITileListProps<{}> {\n title?: React.ReactNode;\n tiles: React.ReactNode[];\n tileItemContainer: INodeProps;\n tileListContainer: INodeProps;\n tileListHeading: INodeProps;\n singleSlideCarouselComponentProps: INodeProps;\n}\n\n/**\n *\n * TileList component.\n * @extends {React.PureComponent>}\n */\nexport class TileList 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 private static _createHeading(heading?: ITitleData): React.ReactNode | null {\n if (!heading || !heading.text || StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n return ;\n }\n public constructor(props: ITileListProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const propsCarousel: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n\n const viewProps = {\n ...this.props,\n title: TileList._createHeading(title),\n singleSlideCarouselComponentProps: propsCarousel,\n tileItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-tile__item',\n role: 'listitem'\n },\n tileListContainer: { className: classnames('ms-tile-list', className) },\n tileListHeading: { className: 'ms-tile-list__heading' },\n tiles: this.props.slots.content\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n}\n\nexport default TileList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ITileListViewProps } from './tile-list';\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns Returns props.\n */\nexport const tileListView: React.FC = props => {\n const { title, tiles, tileListContainer, tileListHeading, tileItemContainer, singleSlideCarouselComponentProps } = props;\n return (\n \n {title}\n \n {tiles.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `tile-list-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n );\n};\n\nexport default tileListView;\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH);\n return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeMatch, rx, S);\n\n if (res.done) return res.value;\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = toString(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n"],"names":["ePropsValue","IS_BUSINESS_ACCOUNT_KEY","CUST_ACCOUNT_STATUS_KEY","isShareholder","cart","console","log","CustomerId","ExtensionProperties","isBusinessAccountProperty","find","prop","Key","_isBusinessAccountPro","undefined","length","Value","BooleanValue","isCasual","_isBusinessAccountPro2","isGuest","findExtensionProperty","key","isShareholderAccountNotOnHold","custHoldStatusProp","onHoldStatus","StringValue","includes","isShareholderAccountNotInactive","custAccountStatusProp","accountStatus","isShareholderAccountDisabled","isShareholderAccountInactive","hasEcommerceAccess","userContactDetails","_userContactDetails$C","CustomerAccounts","account","IsActive","Permissions","Authorities","Authority","getExtensionProperty","extensionProperties","keyValue","typeValue","arguments","extensionProperty","String","Boolean","Integer","IntegerValue","Decimal","DecimalValue","isValidColour","str","match","_ref","description","React","className","links","map","link","index","title","linkText","href","linkUrl","destinationUrl","ariaLabel","target","openInNewTab","AccountAddressTile","render","config","data","this","props","heading","shareholderText","address","addressCount","result","_formatAddressDescription","isShareholderAccount","viewProps","_objectSpread","moduleProps","classnames","Heading","headingTag","tag","text","LinksComponent","Object","assign","DescriptionComponent","renderView","count","numberWords","Module","AccountGenericTile","shareholderLinks","Link","noclick","telemetryContent","payLoad","getPayloadObject","contentAction","etext","attribute","getTelemetryAttributes","onClick","onTelemetryClick","itemProp","content","Separator","separator","Breadcrumb","constructor","_pageType","context","request","urlTokens","pageType","getTelemetryObject","telemetryPageName","friendlyName","telemetry","_getRootLink","root","error","_getCustomBreadcrumbLinks","itemPosition","value","toString","_getCategoryHierarchy","categoryHierarchy","_getFriendlyName","locale","NameTranslations","_Window$digitalData$p","MsDyn365","isBrowser","Window","digitalData","page","attributes","breadcrumb","push","Url","nameTranslations","_nameTranslation","nameTranslation","ArrayExtensions","hasElements","item","Language","toLowerCase","Text","_getPDPLinks","categoryPaths","product","url","requestUrl","_Window$digitalData$p3","_Window$digitalData$p2","document","window","Name","hideProductName","_goBack","history","back","_getPDPBackButton","query","referrer","role","resources","backToResultsText","rootLink","breadcrumbLinks","backButtonComponent","breaCrumbType","app","breadcrumbType","linkSeparator","breadcrumbViewProps","BreadcrumbContainer","BreadcrumbList","BreadcrumbListItem","backButton","Node","ContentCardLinks","_mapEditableLinks","linkdata","editableLinks","forEach","btnClass","editableLink","additionalProperties","Msdyn365","editProps","onTextChange","requestContext","actionableRegion","HeadingTag","ContentBlock","handleTextChange","event","handleParagraphChange","paragraph","handleLinkTextChange","linkIndex","device","Type","mobileHeadingColour","desktopHeadingColour","mobileParagraphColour","desktopParagraphColour","mobileParagraphBackgroundColour","desktopImage","mobileImage","shouldOpenLinkInNewTab","imageAriaLabel","CustomTag","contentBlockTitle","style","isMobile","color","imageProps","imageType","gridSettings","imageSettings","contentBlockLinks","contentBlockText","dangerouslySetInnerHTML","getRichTextHtml","contentBlockImage","contentBlockviewProps","image","moduleClass","contentBlockContainer","imageContainer","detailsDesktopContainer","detailsMobileContainer","contentBlockAnchorTag","imageLink","_getImageLink","region","imageAndLinks","__decorate","computed","rel","CookieComplianceAcceptButton","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","colour","onClose","type","backgroundColor","CookieComplianceLinks","CookieCompliance","super","actionLinks","handleContentChange","state","visible","cookieRef","_onDismiss","bind","componentDidMount","cookies","isConsentGiven","setState","bannerColour","bannerButtonColour","acceptCookiesAriaLabel","moduleConfig","e","onDismiss","CookieComplianceBanner","ref","AlertProps","fade","Content","onEdit","acceptButton","setConsentCookie","location","reload","Alert","cta","deliveryData","removePickUpFromDeliveryArray","response","filter","deliveryMethod","DeliveryType","isPickUpAvailable","_getActivePrice","async","products","productRecIds","prod","RecordId","projectDomain","ChannelId","apiSettings","channelId","CatalogId","catalogId","affliations","customerInput","GetCustomerInput","actionContext","customer","getCustomer","CustomerAffiliations","affliation","aff","AffiliationId","RetailAffiliationId","AccountNumber","getActivePricesAsync","callerContext","queryResultSettings","Date","then","activePricesResponse","activePrice","ProductId","_activePrice$Extensio","_activePrice$Extensio2","priceIncGST","specialPriceIncGST","catch","trace","message","exception","debug","Error","_product$result","_this$state$products$","recordId","salesPriceInclGST","getDeliveryOptionsAsync","Promise","all","DeliveryOptions","reaction","_variantProduct$resul","variantProduct","variantRecordId","variantSalesPriceInclGST","AdjustedPrice","variantResponse","detailsContainer","_createDeliveryTable","pickUpTableHeader","deliveryTableHeader","deliveryOption","option","_option$DeliveryModes","DeliveryModes","ChargeDescription","ChargeAmount","toFixed","ProductDescription","onlineLongDescription","onlineShortDescription","componentDidUpdate","eProps","longDesc","shortDesc","ProductDescriptionNode","RichTextComponent","observer","buttons","button","displayOnlyTo","_shouldShowTo","isLoggedIn","displayTo","loggedOutOnly","loggedInOnly","src","alt","altText","contentBlockButtons","FarmlandsPromotionBlockButton","user","isAuthenticated","shouldShowModule","buttonsContainer","ProductSpecification","ProductSpecificationTableProps","ProductSpecificationTableBodyProps","productSpecificationResult","row","_row$props$cellData$p","_row$props$cellData$p2","cellData","__html","removeUndefinedAttributes","histogramItem","buttonProps","starLabel","bar","percentage","histogramItems","histogramProps","buildReviewCard","cardProps","headerProps","rating","name","date","cardBodyProps","reviewProps","reviewTitle","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","ratingHelpfulLabel","like","dislike","edit","report","createReviewModal","modal","modalHeader","modalBody","form","inputRow","ratingLabel","titleLabel","titleInput","textLabel","textInput","privacyPolicyUrl","modalFooter","submitButton","cancelButton","createReportModal","reported","headerSubmitted","header","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton","averageRating","filterByDropdown","noReviewsMessage","noReviewsWithFilterMessage","pageControls","refineReviewsProps","reportReviewModal","reviewsListProps","reviewCards","reviewCount","reviewModal","sortByDropdown","userReview","isFilterApplied","review","AccountProfileEdit","moduleClassName","handleHeadingChange","onTextBoxChange","id","givenName","surname","emailRegex","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","setTimeout","clearInterval","isInitialized","invalidEmailAddressError","obj","PRE","_htmlDecode","ID","email","PAT","PAT_DESC","required_field","requiredFieldMissingError","verifying_blurb","loadingMessage","EmailRegex","defaultRegex","source","shouldComponentUpdate","nextProps","nextState","viewState","isShowLoading","accountProfileEdit","loading","Modal","isOpen","ModalBody","icon","AccountProfileEditLoadingIconComponent","AccountProfileEditLoadingMessageComponent","defaultAADConainer","display","aadConainer","accountProfileEditLocalAccount","_renderLocalAccount","createElement","innerHTML","childNodes","nodeValue","localAccount","items","_renderInput","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","errorMessage","AccountProfileEditErrorComponent","requiredFieldMissingSummaryError","fieldIncorrectError","buttonsWrapper","AccountProfileEditButtonComponent","saveButtonAriaLabel","saveButtonText","cancelButtonText","verificationSuccessModal","verificationSuccessModalMessage","showEmail","emailAddressLabelText","labelText","maxLength","pattern","wrapper","label","AccountProfileEditLabelComponent","forId","input","AccountProfileEditInputComponent","onChange","observable","AccountProfileEditItem","AccountProfileEditLoading","_ref3","_ref2","LocalAccount","disabled","Button","errorClassName","GetMaxLength","parsedMaxLength","Number","parseInt","isNaN","htmlFor","SignUpText","LoyaltySignUp","handleMemberHeadingChange","memberHeading","_issueLoyalty","clicked","IssueLoyaltyInput","issueLoyalty","TelemetryConstant","SignIn","loyaltySignInAttributes","SignUp","loyaltySignUpAttributes","LoyaltyDetailLink","loyaltyDetailsLinkAttributes","LoyaltyTermsLink","loyaltyTermsLinkAttributes","_data$customerInforma","_this$props$context$a","signInUrl","termsUrl","loyaltyJoinUrl","origin","signInurl","completeClass","classname","loyaltyCard","hasLoyaltyAccount","CardTenderTypeValue","customerInformation","invalidAsyncCustomerState","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","infoMessageBar","accountProcessingPendingInfoMessage","status","signInLink","joinLoyaltyButtonText","signUpText","loyaltyProgramText","signUpButton","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","SignUpButton","SignUpError","SignUpInput","isRequired","fieldReference","InputType","TextArea","SignUpLabel","InputID","renderInputSection","inputs","needToReset","onInputChange","showErrors","addressForm","updateAddress","element","maxChars","customClass","baseSignUpItem","Address","isAddressInput","updateForm","hasError","resetAddress","splice","BusinessSignUp","_this","BusinessSignUpDefaultInputs","FirstName","firstNameLabel","LastName","lastNameLabel","Email","emailAddressLabel","CompanyName","companyLabel","Department","departmentLabel","JobTitle","jobTitleLabel","Size","companySizeLabel","companyAddressLabel","Comment","commentLabel","formChildReference","needsToReset","_onInputChange","newForm","formItems","isReady","_isFormReady","hasSubmitErrors","_onAddressChange","errors","currentAddress","addressItem","addressHasErrors","showAddressErrors","currentInput","_onSubmit","preventDefault","firstName","_getItem","lastName","companyName","companyEmail","companyAddress","jobTitle","department","companySize","comments","newPartner","CompanySize","Comments","createProspectAsync","_onCancel","cleanForm","isAddress","_addedReference","_this$formChildRefere","current","focus","businessSignUp","ContainerWrapper","businessSignUpForm","_renderForm","slots","signUpButtonArialabel","signUpButtonText","cancelButtonArialabel","partialAddressErrorMessage","addressSlot","successPageURL","confirmationLink","getUrlSync","FormWrapper","disclaimer","newFormFields","BusinessSignUpItem","SearchBar","onSearchTextChange","ev","searchText","onSearch","handleKeyUp","keyCode","KeyCodes","Enter","searchPlaceholderLabel","placeholder","onKeyUp","DataGrid","renderGridHeader","rowClassName","columns","column","reactKey","renderGridRow","_column$onRender","fieldName","onRender","call","loadDataInternal","loadData","isLoading","_unused","paging","loadMore","sortData","sorting","ascending","sort","item1","item2","value1","value2","compareResult","filterData","c","isSearchable","columnValue","indexOf","trim","getDataToDisplay","itemsCount","pageSize","slice","hasMore","defaultSorting","genericErrorMessage","loadingLabel","businessPartnerLoadMore","noDataMessage","BusinessPartnerUsersTable","getColumns","businessUserTableNameHeadingText","businessUserTableEmailHeadingText","businessUserTableSpendingLimitHeadingText","renderSelectButton","businessPartnerUser","onSelect","select","getBusinessPartnerUsers","BusinessPartnersDataActions","bypassCache","businessPartner","BusinessPartnerId","StatusValue","spendingLimitStr","ObjectExtensions","isNullOrUndefined","SpendingLimit","cultureFormatter","formatCurrency","businessPartnerSearchCustomer","BusinessPartnersTable","businessPartnerName","getBusinessPartners","businessPartnerSearchCompany","BusinessPartners","onSelectBusinessPartner","selectedBusinessPartner","onSelectBusinessPartnerUser","setAccountSelectionCookie","homeUrl","removeAccountSelectionCookie","businessPartnersHeading","businessPartnersProps","businessPartnersTable","businessPartnerUsersTable","backToBusinessPartnersLink","CheckInConfirmationComponent","confirmationText","shouldShowQrCode","channelReferenceIdLabel","channelReferenceId","QRCode","size","CheckInErrorComponent","CheckInForPickup","checkInForOrderPickup","packingSlipId","additionalInformationToSubmit","additionalInformationList","additionalInformationKeyValuePair","_additionalInformatio","formKey","resourceId","extensionPropertyList","additionalInformation","SalesOrdersDataActions","headerErrorMessage","isCheckedIn","resolve","_this$props$context$r","_this$props$context$r2","_this$props$context$r3","_this$props$context$r4","params","isEditor","isPreview","requiredParameterMissingErrorMessage","additionalInformationKeys","_this$props$context$r5","isHeaderError","headerError","confirmationComponent","defaultConfirmationText","confirmationIdLabel","additionalInformationValues","additionalInformationHeading","_props$config$additio","FormBuilder","additionalInformationDefaultHeading","submitButtonText","additionalInformationSubmitButtonText","keys","requiredValueMissingErrorMessage","onSubmit","WaitingComponent","Waiting","CheckoutExpressPaymentContainer","_this$props$data$chec","_getItems","primary","_handleCheckoutExpressContainerHeadingChange","checkoutExpressPaymentContainerHeading","shouldHideExpressPaymentContainer","checkout","shippingAddressFromExpressCheckout","_this$props$data$chec2","isExpressPaymentModulesReady","_this$props$data$chec3","_this$props$data$chec4","extensionPropertyKey","paymentTenderType","isModuleReady","property","_this$props$data$chec5","isExpressCheckoutApplied","checkoutExpressPaymentSectionLoadingMessage","shouldHideExpressPaymentContainerClassName","checkoutPlainContainerProps","waiting","_renderMsdyn365Text","ContainerItemsComponent","isLoadingClassName","_this$props$config$ac","OrderInfomation","orderInformationProps","salesId","receiptId","createdDate","amount","channelName","channelAddress","SalesLine","salesLineProps","salesLine","buyAgainButton","GroupDelivery","deliveryProps","Group","_ref4","groupProps","delivery","salesLinesProps","salesLines","isCashAndCarryTransaction","LineId","deliveryType","shipment","trackingInfo","salesStatus","showTimeslot","pickupProps","pickupDateTimeslot","Groups","_ref5","groupsProps","groups","group","OrderSummary","_ref6","orderSummaryProps","subtotal","shipping","tax","totalAmount","earnedPoints","Payment","_ref7","paymentMethodsProps","methods","Help","_ref8","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","_ref9","viewModes","tableViewActions","table","alert","orderInfomation","orderSummary","payment","help","Iframe","iframeRef","srcURL","URL","protocol","toLocaleLowerCase","iframeClassName","_createHeading","IframeContainer","IFrame","_createIframe","cookieConsentAccepted","_renderAlert","cookieConsentRequiredMessage","targetURL","height","iframeAriaLabel","IFrameView","ProductComparisonButton","_addToProductComparison","ProductComparisonItem","ProductComparisonState","instance","addItem","_removeFromProductComparison","removeItemById","comparisonItemId","_getNewState","getItemId","_getProdutComparisonDataByCatalogId","canProductBeAddedToProductComparison","hasItemById","currentProductsCount","_className","_instanceId","Random","Guid","generateGuid","_shouldUsePreview","_productComparisonPreview","_renderProductComparisonPreview","productComparisonPreview","buttonText","onClickHandler","isDisabled","listModifiedEvent","subscribe","instanceId","handler","getSnapshotBeforeUpdate","previousProps","componentWillUnmount","unsubscribe","buttonClassName","shouldDisplayText","removeFromComparisonButtonText","productComparisonButton","_renderProductComparisonButton","productsLimit","_getProductsLimit","addToComparisonLimitReachedButtonText","addToComparisonButtonText","viewport","variant","VariantType","Browser","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","_items$filter","getCatalogId","ProductComparisonButtonViewFunctionalComponent","TileList","_telemetryContent","StringExtensions","isNullOrWhitespace","_this$props$config$cl","propsCarousel","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","vertical","singleSlideCarouselComponentProps","tileItemContainer","tileListContainer","tileListHeading","tiles","tileListView","tileItem","keyIndex","fixRegExpWellKnownSymbolLogic","anObject","toLength","requireObjectCoercible","getMethod","advanceStringIndex","regExpExec","MATCH","nativeMatch","maybeCallNative","regexp","O","matcher","RegExp","string","rx","S","res","done","global","fullUnicode","unicode","lastIndex","A","n","matchStr"],"sourceRoot":""}