{"version":3,"file":"static/js/21.0845faf1772b609dee99.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-header/components/logo.tsx?2f61","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-header/components/nav-icon.tsx?7fc7","webpack://Msdyn365.Commerce.Online/./src/common/components/multi-account.tsx?ede8","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-header/utilities/multi-account.ts?f2dd","webpack://Msdyn365.Commerce.Online/./src/common/components/account-switch-modal.tsx?8d05","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-header/farmlands-header.tsx?cc2b","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-header/farmlands-header.view.tsx?d551"],"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 Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nexport interface ILogoProps {\r\n image: Msdyn365.IImageData;\r\n gridSettings?: Msdyn365.IGridSettings;\r\n link?: ILinkData;\r\n className?: string;\r\n}\r\n\r\nexport interface ILinkData {\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n linkText?: string;\r\n}\r\n\r\n/**\r\n *\r\n * Logo component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class Logo extends React.PureComponent {\r\n public render():JSX.Element {\r\n return(\r\n
\r\n {this._renderLogo(this.props)}\r\n
\r\n );\r\n }\r\n\r\n private _renderLogo(config: ILogoProps):JSX.Element {\r\n if(config.link && config.link.linkUrl.destinationUrl) {\r\n return(\r\n \r\n {this._renderImage(config)}\r\n \r\n );\r\n }\r\n return(\r\n this._renderImage(config)\r\n );\r\n }\r\n\r\n private _renderImage(config: ILogoProps): JSX.Element {\r\n const defaultImageSettings: Msdyn365.IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=132&h=28&m=6`, w: 0, h: 0 },\r\n lg: { q: `w=160&h=48&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Logo;","/*---------------------------------------------------------------------------------------------\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 { observer } from 'mobx-react';\r\nimport { IFarmlandsHeaderResources } from '../farmlands-header.props.autogenerated';\r\n\r\nexport interface INavIconProps {\r\n resources: IFarmlandsHeaderResources;\r\n isExpanded: boolean;\r\n targetId: string;\r\n toggleNavBar(): void;\r\n}\r\n\r\n/**\r\n *\r\n * NavIcon component\r\n * @extends {React.PureComponent}\r\n */\r\n\r\n@observer\r\nexport class NavIcon extends React.Component {\r\n public render(): JSX.Element {\r\n return (\r\n \r\n {this.props.isExpanded ? 'close' : 'menu'}\r\n \r\n );\r\n }\r\n}\r\n","import { Customer } from '@msdyn365-commerce/retail-proxy';\r\nimport React from 'react';\r\nimport { setActiveEcomCustomerByExternalIdAsync } from '../../actions/farmlands-set-active-ecom-customer-by-external-id-calls.action';\r\nimport { ICustomerAccountData } from '../../modules/farmlands-header/farmlands-header.data';\r\nimport { setActiveAccountNumber } from '../../modules/farmlands-header/utilities/multi-account';\r\n\r\nconst charLimit = 30;\r\n\r\nexport const renderActiveAccount = (account: ICustomerAccountData, isOnly: boolean) => {\r\n const overLimit = account?.CustomerName?.length > charLimit;\r\n const displayName = overLimit ? `${account?.CustomerName?.substr(0, charLimit - 3)?.trim()}...` : account?.CustomerName;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {displayName}\r\n \r\n Account number: {account?.AccountNumber}\r\n \r\n
\r\n
\r\n \r\n ACTIVE\r\n \r\n
\r\n );\r\n};\r\n\r\nexport const renderAccount = (\r\n account: ICustomerAccountData,\r\n switchProps: { context: any; externalId: any; accountNo: any },\r\n toggleRefreshModal: () => void\r\n) => {\r\n const overLimit = account?.CustomerName?.length > charLimit;\r\n const displayName = overLimit ? `${account?.CustomerName?.substr(0, charLimit - 3)?.trim()}...` : account?.CustomerName;\r\n\r\n async function updateAccount(accountNumber: string) {\r\n await setActiveEcomCustomerByExternalIdAsync({\r\n context: switchProps.context,\r\n customerAccountNumber: accountNumber\r\n }).then((data) => {\r\n if (data.Code === '200') {\r\n const accountDropdown = document.getElementById('myprofilePopover');\r\n if (accountDropdown) {\r\n accountDropdown.style.display = 'none';\r\n }\r\n const accountSwitchModal = document.getElementById('AccountSwitchModal');\r\n if (accountSwitchModal) {\r\n accountSwitchModal.style.display = 'none';\r\n }\r\n setActiveAccountNumber(accountNumber);\r\n toggleRefreshModal();\r\n if (window) {\r\n setTimeout(() => {\r\n window.location.reload();\r\n }, 5000);\r\n }\r\n }\r\n });\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {displayName}\r\n \r\n Account number: {account?.AccountNumber}\r\n \r\n
\r\n
\r\n {\r\n updateAccount(account?.AccountNumber);\r\n }}\r\n >\r\n Select\r\n
\r\n \r\n );\r\n};\r\n\r\nexport const getAccountList = (\r\n customer: Customer | undefined,\r\n switchProps: any,\r\n toggleRefreshModal: () => void,\r\n customerAccounts?: ICustomerAccountData[],\r\n displayName?: string\r\n): React.ReactNode[] | undefined => {\r\n return customer && displayName && customerAccounts && customerAccounts.length > 0\r\n ? customerAccounts\r\n ?.slice(0, 5)\r\n ?.map((account) =>\r\n account?.IsActive\r\n ? renderActiveAccount(account, customerAccounts.length === 1)\r\n : renderAccount(account, switchProps, toggleRefreshModal)\r\n )\r\n : undefined;\r\n};\r\n","export function setActiveAccountNumber(accountNumber: string): void {\r\n sessionStorage.setItem('ActiveAccountNumber', accountNumber);\r\n}\r\n\r\nexport function getActiveAccountNumber(): string | null {\r\n return sessionStorage.getItem('ActiveAccountNumber');\r\n}\r\n","import { Button, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\nimport { ICustomerAccountData } from '../../modules/farmlands-header/farmlands-header.data';\r\nimport { renderAccount, renderActiveAccount } from './multi-account';\r\n\r\ninterface IAccountSwitchModal {\r\n toggleAccountModal: (e: boolean) => void;\r\n toggleRefreshModal: () => void;\r\n customerAccounts?: ICustomerAccountData[];\r\n isAccountModalOpen: boolean;\r\n switchAccountProps: any;\r\n}\r\n\r\nexport interface IRefreshPageModal {\r\n toggleRefreshModal: () => void;\r\n isModalOpen: boolean;\r\n}\r\n\r\nexport const AccountSwitchModal = (props: IAccountSwitchModal) => {\r\n const _renderAccountModalContent = () => {\r\n return (\r\n
\r\n props.toggleAccountModal(false)}\r\n >\r\n person\r\n

Select your Account

\r\n {props.customerAccounts?.map((account: any) =>\r\n account?.IsActive\r\n ? renderActiveAccount(account, false)\r\n : renderAccount(account, props.switchAccountProps, props.toggleRefreshModal)\r\n )}\r\n
\r\n );\r\n };\r\n\r\n return (\r\n props.toggleAccountModal(false)}>\r\n {_renderAccountModalContent()}\r\n \r\n );\r\n};\r\n\r\nexport const RefreshPageModal = (props: IRefreshPageModal) => {\r\n const _renderModalContent = () => {\r\n return (\r\n
\r\n

Switching your Shareholder Account.

\r\n

Please refresh any open Farmlands pages to view your Shareholder Account.

\r\n
\r\n );\r\n };\r\n\r\n return (\r\n \r\n {_renderModalContent()}\r\n \r\n );\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classnames from 'classnames';\r\nimport { computed } from 'mobx';\r\nimport * as React from 'react';\r\n\r\nimport { Button, IModuleProps, INodeProps, KeyCodes, Modal, ModalBody, Popover } from '@msdyn365-commerce-modules/utilities';\r\nimport { CartIconComponent, WishListIconComponent } from '@msdyn365-commerce/components';\r\nimport { IRequestContextUser } from '@msdyn365-commerce/core';\r\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport { ILinkGroup } from '../../types/links';\r\nimport { NavIcon } from './components';\r\nimport { ICustomerAccountData, IFarmlandsHeaderData, IHeaderData } from './farmlands-header.data';\r\nimport { IFarmlandsHeaderProps, IFarmlandsHeaderResources, IMyAccountLinksData } from './farmlands-header.props.autogenerated';\r\nimport { getUserAccountDetailsAsync } from '../../actions/farmlands-account-details-calls.action';\r\nimport { getContactDetailsAsync } from '../../actions/farmlands-get-contact-details-calls.action';\r\nimport { isShareholderAccountDisabled, isShareholderAccountNotOnHold, hasEcommerceAccess } from '../../common/method/functions';\r\nimport { AccountSwitchModal, RefreshPageModal } from '../../common/components/account-switch-modal';\r\nimport { getAccountList } from '../../common/components/multi-account';\r\n\r\nexport interface IHeaderState {\r\n mobileMenuCollapsed: boolean;\r\n signinPopoverOpen: boolean;\r\n isAccountModalOpen: boolean;\r\n isRefreshModalOpen: boolean;\r\n headerData?: any;\r\n accountData?: any;\r\n customerAccounts?: ICustomerAccountData[];\r\n hasEcomPermission: boolean;\r\n}\r\n\r\nexport interface IHeaderViewProps extends IFarmlandsHeaderProps, IHeaderState {\r\n wishListIconDesktop: React.ReactNode;\r\n wishListIconMobile: React.ReactNode;\r\n cartIcon: React.ReactNode;\r\n isOpen: boolean;\r\n navIcon: React.ReactNode;\r\n className: string;\r\n menuBar: React.ReactNode[];\r\n search: React.ReactNode[];\r\n HeaderTag: IModuleProps;\r\n HeaderContainer: INodeProps;\r\n MobileMenuContainer: INodeProps;\r\n MobileMenuBodyContainer: INodeProps;\r\n MobileMenuLinksContainer: INodeProps;\r\n AccountSwitchModal: JSX.Element;\r\n RefreshPageModal: JSX.Element;\r\n toggleAccountModal: () => void;\r\n togglePopover: () => void;\r\n HeaderTopBarContainer: INodeProps;\r\n HeaderSecondaryNavContainer: INodeProps;\r\n\r\n AccountName?: React.ReactNode;\r\n AccountInfoDropdownParentContainer?: INodeProps;\r\n AccountInfoDropdownPopoverContentContainer?: INodeProps;\r\n accountInfoDropdownButton?: React.ReactNode;\r\n\r\n signOutLink?: React.ReactNode;\r\n signInLink?: React.ReactNode;\r\n accountLinksContainer: INodeProps;\r\n accountLinks?: React.ReactNode[];\r\n totalAccountLength: number;\r\n accountList?: React.ReactNode[];\r\n topBarNavLinks?: React.ReactNode[];\r\n topBarNavMobileLinks?: React.ReactNode[];\r\n contactUsIcon?: React.ReactNode;\r\n homeLinkAnchor?: React.ReactNode;\r\n}\r\n\r\ninterface ICustomerAccount {\r\n AccountNumber?: string;\r\n AccountStatus?: string;\r\n}\r\n/**\r\n *\r\n * Header component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass Header extends React.PureComponent, IHeaderState> {\r\n private popOverRef: React.RefObject;\r\n\r\n @computed public get displayName(): Readonly {\r\n const customer = this.props.data.accountInformation?.result;\r\n return customer ? customer.FirstName || customer.Name : undefined;\r\n }\r\n\r\n @computed get canAccessCheckout(): boolean {\r\n const shareholderData = this.props.data.cart.result?.cart.ExtensionProperties!;\r\n if (this.props.context.request.user.token) {\r\n if (shareholderData) {\r\n return !isShareholderAccountDisabled(shareholderData) && isShareholderAccountNotOnHold(shareholderData);\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n constructor(props: IFarmlandsHeaderProps) {\r\n super(props);\r\n this.popOverRef = React.createRef();\r\n this._toggleNavbar = this._toggleNavbar.bind(this);\r\n this._togglePopover = this._togglePopover.bind(this);\r\n this._keydown = this._keydown.bind(this);\r\n this.state = {\r\n mobileMenuCollapsed: true,\r\n signinPopoverOpen: false,\r\n hasEcomPermission: false,\r\n isAccountModalOpen: false,\r\n isRefreshModalOpen: false\r\n };\r\n }\r\n public async componentDidMount(): Promise {\r\n // this._silentSignOn();\r\n window && window.addEventListener('keydown', this._keydown);\r\n if (this.props.context.request.user.token) {\r\n const accountData = await getUserAccountDetailsAsync(\r\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\r\n JSON.parse(atob(this.props.context.request.user.token.split('.')[1])).oid\r\n );\r\n const userContactDetails = await getContactDetailsAsync(\r\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\r\n JSON.parse(atob(this.props.context.request.user.token.split('.')[1])).oid\r\n );\r\n\r\n const customerAccounts: ICustomerAccountData[] = userContactDetails.CustomerAccounts;\r\n\r\n const sortedAccounts =\r\n customerAccounts && customerAccounts?.length > 0\r\n ? customerAccounts.sort((a, b) => {\r\n if (a?.IsActive) {\r\n return -1;\r\n } else if (b?.IsActive) {\r\n return 1;\r\n } else if (a?.CustomerName < b?.CustomerName) {\r\n return -1;\r\n } else if (a?.CustomerName > b?.CustomerName) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n })\r\n : [];\r\n\r\n this.setState({\r\n customerAccounts: sortedAccounts\r\n });\r\n\r\n this.setState({\r\n accountData\r\n });\r\n\r\n if (hasEcommerceAccess(userContactDetails)) {\r\n this.setState({\r\n hasEcomPermission: true\r\n });\r\n }\r\n\r\n //Get Customer Account and check customer type for analytics\r\n const accountNumber = this.state.accountData.CustomerAccountNumber;\r\n const customerAccount = userContactDetails.CustomerAccounts?.find(\r\n (obj: ICustomerAccount) => obj?.AccountNumber === accountNumber\r\n );\r\n if (customerAccount && customerAccount.Permissions && customerAccount.Permissions.length > 0) {\r\n if (customerAccount.Permissions[0].AuthorityLevel.includes('Casual')) {\r\n (Window as any).digitalData.user.customerType = 'casual';\r\n }\r\n else {\r\n (Window as any).digitalData.user.customerType = 'shareholder';\r\n }\r\n }\r\n } else {\r\n this.setState({ hasEcomPermission: true });\r\n (Window as any).digitalData.user.customerType = 'guest';\r\n }\r\n if (sessionStorage.getItem('findingMethod')) {\r\n (Window as any).digitalData.page.attributes.findingMethod = sessionStorage.getItem('findingMethod');\r\n }\r\n this.props.data.headerAction.then((data) => {\r\n this.setState({\r\n headerData: data.header\r\n });\r\n });\r\n\r\n //ToDo: Change to functional component if data does not get passed correctly consistently. Use react hook with dependency on document.readyState\r\n //https://stackoverflow.com/questions/24947837/javascript-page-is-fully-loaded-boolean-check\r\n window.dispatchEvent(new CustomEvent('PageLoad'));\r\n sessionStorage.removeItem('findingMethod');\r\n await this._logoutInactiveUser();\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n window && window.removeEventListener('keydown', this._keydown, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n id,\r\n slots,\r\n typeName,\r\n data: {\r\n accountInformation,\r\n cart: { result: cart }\r\n },\r\n context: {\r\n request: { user }\r\n },\r\n context,\r\n resources: { cartLabel, cartQtyLabel }\r\n } = this.props;\r\n\r\n const { hasEcomPermission } = this.state;\r\n\r\n const headerClassName = classnames('ms-header', this.props.config.className);\r\n const navbarKey = 'header-nav-mobile';\r\n const homeLink = this.props.config.homeLink;\r\n const truncate = (input: string) => (input.length > 21 ? `${input.substring(0, 21)}​​​​​...` : input);\r\n const customer = accountInformation && accountInformation.result;\r\n const switchAccountProps = {\r\n context: { callerContext: context.actionContext, queryResultSettings: {} }\r\n };\r\n const viewProps: IHeaderViewProps = {\r\n ...(this.props as IFarmlandsHeaderProps),\r\n ...this.state,\r\n homeLinkAnchor: (\r\n \r\n Shop online\r\n \r\n ),\r\n wishListIconDesktop: this.canAccessCheckout && hasEcomPermission && (\r\n \r\n ),\r\n wishListIconMobile: this.canAccessCheckout && hasEcomPermission && (\r\n \r\n ),\r\n cartIcon:\r\n this.canAccessCheckout && hasEcomPermission && slots && slots.cartIcon && slots.cartIcon.length > 0\r\n ? slots.cartIcon[0]\r\n : this.canAccessCheckout &&\r\n hasEcomPermission &&\r\n cart && (\r\n \r\n ),\r\n isOpen: !this.state.mobileMenuCollapsed,\r\n navIcon: (\r\n \r\n ),\r\n menuBar: (slots && slots.menuBar && slots.menuBar.length && slots.menuBar) || [],\r\n search: (slots && slots.search && slots.search.length && slots.search) || [],\r\n className: headerClassName,\r\n HeaderTag: {\r\n moduleProps: this.props,\r\n className: classnames(headerClassName),\r\n tag: 'header'\r\n },\r\n HeaderContainer: {\r\n className: classnames('ms-header__container')\r\n },\r\n HeaderTopBarContainer: {\r\n className: classnames('ms-header__topbar')\r\n },\r\n HeaderSecondaryNavContainer: {\r\n className: classnames('ms-header__secondarynav')\r\n },\r\n MobileMenuContainer: {\r\n tag: Modal,\r\n id: navbarKey,\r\n className: 'ms-header__mobile-hamburger',\r\n isOpen: !this.state.mobileMenuCollapsed,\r\n wrapClassName: 'ms-header__modal'\r\n },\r\n MobileMenuBodyContainer: {\r\n tag: ModalBody,\r\n className: 'ms-header__mobile-hamburger-menu-body'\r\n },\r\n MobileMenuLinksContainer: {\r\n className: 'ms-header__mobile-hamburger-menu-links'\r\n },\r\n AccountSwitchModal: AccountSwitchModal({\r\n customerAccounts: this.state.customerAccounts,\r\n toggleAccountModal: this._toggleAccountModal,\r\n isAccountModalOpen: this.state.isAccountModalOpen,\r\n switchAccountProps,\r\n toggleRefreshModal: this._toggleRefreshPageModal\r\n }),\r\n RefreshPageModal: RefreshPageModal({\r\n isModalOpen: this.state.isRefreshModalOpen,\r\n toggleRefreshModal: this._toggleRefreshPageModal\r\n }),\r\n toggleAccountModal: this._toggleAccountModal,\r\n AccountInfoDropdownParentContainer: { className: 'ms-header__account-info' },\r\n AccountName: (\r\n \r\n {this.state.accountData?.CustomerName && truncate(this.state.accountData.CustomerName)}\r\n \r\n ),\r\n AccountInfoDropdownPopoverContentContainer:\r\n (customer &&\r\n this.displayName && {\r\n tag: Popover,\r\n id: 'myprofilePopover',\r\n className: 'ms-header__account-info-content',\r\n placement: 'bottom',\r\n isOpen: this.state.signinPopoverOpen,\r\n target: this.popOverRef,\r\n toggle: this._togglePopover\r\n }) ||\r\n undefined,\r\n signInLink: this._getSigninButton(customer, user, this.props.resources),\r\n signOutLink: this._getSignOutButton(customer, user, this.props.resources),\r\n accountInfoDropdownButton: this._getAccountInfoDropdownButton(customer),\r\n totalAccountLength: this.state.customerAccounts?.length || 0,\r\n accountLinksContainer: {\r\n className: 'ms-header__account-links-container'\r\n },\r\n accountLinks: this._getAccountLinks(customer),\r\n accountList: getAccountList(\r\n customer,\r\n switchAccountProps,\r\n this._toggleRefreshPageModal,\r\n this.state.customerAccounts,\r\n this.displayName\r\n ),\r\n topBarNavLinks: this._getTopBarNavLinks(this.state.headerData),\r\n topBarNavMobileLinks: this._getTopBarNavLinks(this.state.headerData, true),\r\n contactUsIcon: this._getContactUsIcon(this.state.headerData),\r\n togglePopover: this._togglePopover\r\n };\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _getSigninButton(\r\n customer: Customer | undefined,\r\n user: IRequestContextUser | undefined,\r\n resources: IFarmlandsHeaderResources\r\n ): React.ReactNode | undefined {\r\n return (\r\n !customer && (\r\n \r\n \r\n {resources.signInLinkText}\r\n \r\n \r\n )\r\n );\r\n }\r\n\r\n private _getSignOutButton(\r\n customer: Customer | undefined,\r\n user: IRequestContextUser | undefined,\r\n resources: IFarmlandsHeaderResources\r\n ): React.ReactNode | undefined {\r\n return (\r\n customer &&\r\n this.displayName && (\r\n <>\r\n
\r\n this._handleSignOut()}\r\n className={'ms-header__signout-button'}\r\n title={resources.signOutLinkText}\r\n href={(user && user.signOutUrl) || ''}\r\n aria-label={resources.signOutLinkAriaText}\r\n >\r\n \r\n {resources.signOutLinkText}\r\n \r\n
\r\n login\r\n
\r\n \r\n \r\n )\r\n );\r\n }\r\n\r\n private _handleSignOut(): void {\r\n return window.sessionStorage.removeItem('phone');\r\n }\r\n\r\n private _getAccountLinks(customer: Customer | undefined): React.ReactNode[] | undefined {\r\n const { myAccountLinks } = this.props.config;\r\n\r\n return customer && this.displayName && myAccountLinks && myAccountLinks.length\r\n ? myAccountLinks.map((cta: IMyAccountLinksData, index: number) => (\r\n \r\n {cta.linkText || ''}\r\n \r\n ))\r\n : undefined;\r\n }\r\n\r\n private _getAccountInfoDropdownButton(customer: Customer | undefined): React.ReactNode | undefined {\r\n return (\r\n customer &&\r\n this.displayName && (\r\n \r\n {this.displayName.charAt(0)}\r\n \r\n )\r\n );\r\n }\r\n\r\n private _getTopBarNavLinks(headerData: IHeaderData | undefined, isMobile: boolean = false): React.ReactNode[] | undefined {\r\n const choicesRewardsLabel = 'choices rewards';\r\n // Icon names need to be changed accordingly to represent the nav items\r\n const mobileNavIconList = ['card_giftcard', 'location_on', 'emoji_events', 'grade'];\r\n return headerData?.linkGroupList && headerData?.linkGroupList.length\r\n ? headerData?.linkGroupList.map((linkgroup: ILinkGroup, index: number) =>\r\n isMobile ? (\r\n
\r\n {mobileNavIconList[index]}\r\n \r\n {linkgroup.linkList[0].label || ''}\r\n \r\n
\r\n ) : (\r\n \r\n {linkgroup.linkList[0].label || ''}\r\n \r\n )\r\n )\r\n : undefined;\r\n }\r\n\r\n private _getContactUsIcon(headerData: IHeaderData | undefined): React.ReactNode | undefined {\r\n return headerData?.contactUsLink ? (\r\n
\r\n \r\n \r\n \r\n Contact us\r\n
\r\n ) : undefined;\r\n }\r\n\r\n private _toggleNavbar(): void {\r\n this.setState({\r\n mobileMenuCollapsed: !this.state.mobileMenuCollapsed\r\n });\r\n }\r\n\r\n private bodyTag = typeof document !== 'undefined' && document.getElementsByTagName('BODY')[0];\r\n\r\n private _togglePopover(): void {\r\n if (this.bodyTag) {\r\n const toggled = !this.state.signinPopoverOpen;\r\n if (toggled) {\r\n this.bodyTag.classList.add('disable-scroll');\r\n } else {\r\n this.bodyTag.classList.remove('disable-scroll');\r\n }\r\n this.setState({\r\n signinPopoverOpen: toggled\r\n });\r\n }\r\n }\r\n\r\n private _toggleAccountModal = (): void => {\r\n const updatedModalOpen = !this.state.isAccountModalOpen;\r\n const accountDropdown = document.getElementById('myprofilePopover');\r\n if (updatedModalOpen) {\r\n if (accountDropdown) {\r\n accountDropdown.style.display = 'none';\r\n }\r\n } else {\r\n if (accountDropdown) {\r\n accountDropdown.style.display = 'unset';\r\n }\r\n }\r\n this.setState({\r\n isAccountModalOpen: updatedModalOpen\r\n });\r\n };\r\n\r\n private _toggleRefreshPageModal = (): void => {\r\n this.setState({\r\n isRefreshModalOpen: !this.state.isRefreshModalOpen\r\n });\r\n };\r\n\r\n private _keydown(e: KeyboardEvent): void {\r\n if (e.keyCode === KeyCodes.Escape) {\r\n this.setState({ mobileMenuCollapsed: true });\r\n }\r\n }\r\n private async _logoutInactiveUser(): Promise {\r\n if (this.props.context.request.user.token && this.props.context.request.user.signOutUrl) {\r\n const userContactDetails = await getContactDetailsAsync(\r\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\r\n JSON.parse(atob(this.props.context.request.user.token.split('.')[1])).oid\r\n );\r\n if (userContactDetails.CustomerAccounts?.length === 0) {\r\n window.location.replace(this.props.context.request.user.signOutUrl);\r\n } else {\r\n const accountNumber = this.state.accountData.CustomerAccountNumber;\r\n const customerAccount = userContactDetails.CustomerAccounts?.find(\r\n (obj: ICustomerAccount) => obj?.AccountNumber === accountNumber\r\n );\r\n if (customerAccount?.AccountStatus === 'Inactive' && customerAccount?.OnHoldStatus !== 'No') {\r\n window.location.replace(this.props.context.request.user.signOutUrl);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default Header;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport {\r\n Button,\r\n Node\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IHeaderViewProps } from './farmlands-header';\r\n// @ts-ignore\r\nimport { CommonHeader } from '@farmlands/common-components';\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\n\r\nimport { AEM_URL } from '../../config';\r\n\r\ntype DeviceType = 'Mobile';\r\n\r\nconst headerView: React.FC = (props) => {\r\n const {\r\n AccountSwitchModal,\r\n RefreshPageModal\r\n } = props;\r\n\r\n const AccountSwitch = () => AccountSwitchModal;\r\n const RefreshPage = () => RefreshPageModal;\r\n // @ts-ignore\r\n const secondaryNavData = props?.menuBar[0]?.props.config.cmsNavItems;\r\n const isMobile =\r\n props.context.request &&\r\n props.context.request.device &&\r\n (props.context.request.device.Type as DeviceType) === 'Mobile';\r\n\r\n let searchUrl = '';\r\n if (!MsDyn365.isBrowser) {\r\n // return null;\r\n }\r\n else {\r\n if (window.location.hostname.includes('localhost')) {\r\n searchUrl = `${window.location.protocol}//${window.location.hostname}:${window.location.port}/search?q=`;\r\n }\r\n else {\r\n searchUrl = `${window.location.protocol}//${window.location.hostname}/search?q=`;\r\n }\r\n }\r\n\r\n const {\r\n account,\r\n wishlist,\r\n orderDetails\r\n } = props.context.request.app.routes;\r\n\r\n const signinLinks = [\r\n {\r\n label: 'My account',\r\n path: account.destinationUrl,\r\n target: '_self'\r\n },\r\n {\r\n label: 'Order history',\r\n path: orderDetails.destinationUrl,\r\n target: '_self'\r\n },\r\n {\r\n label: 'Wishlist',\r\n path: wishlist.destinationUrl,\r\n target: '_self'\r\n }\r\n ];\r\n\r\n return (\r\n _renderReactFragment(props.search)}\r\n searchUrl={searchUrl}\r\n SigninButton={() => _renderDesktopAccountBlock(props)}\r\n AccountSwitchModal={() => AccountSwitch()}\r\n RefreshPageModal={() => RefreshPage()}\r\n isMobile={isMobile}\r\n isAuthenticated={props.context.request.user.isAuthenticated}\r\n isAuthenticatedMenu={signinLinks}\r\n />\r\n );\r\n};\r\n\r\nfunction _renderDesktopAccountBlock(props: IHeaderViewProps): JSX.Element | null {\r\n const {\r\n AccountName,\r\n AccountInfoDropdownParentContainer,\r\n AccountInfoDropdownPopoverContentContainer,\r\n accountInfoDropdownButton,\r\n signOutLink,\r\n signInLink,\r\n accountLinksContainer,\r\n accountLinks,\r\n toggleAccountModal,\r\n togglePopover,\r\n totalAccountLength,\r\n accountList\r\n } = props;\r\n\r\n const isSingleAccount = totalAccountLength <= 1;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n if (AccountInfoDropdownPopoverContentContainer) {\r\n return (\r\n <>\r\n {AccountInfoDropdownPopoverContentContainer.isOpen ?
: null}\r\n \r\n {AccountName}\r\n {accountInfoDropdownButton}\r\n \r\n {/*tslint:disable-next-line: react-this-binding-issue jsx-no-lambda*/}\r\n
\r\n \r\n close\r\n \r\n {!isSingleAccount && (\r\n <>\r\n person\r\n

Select your Account

\r\n {accountList ? accountList.map((list) => list) : false}\r\n {accountList && totalAccountLength > 5 ? (\r\n {\r\n togglePopover();\r\n toggleAccountModal();\r\n }}\r\n >\r\n See more Accounts\r\n
\r\n ) : null}\r\n \r\n )}\r\n
\r\n \r\n
{accountLinks ? accountLinks.map((link) => link) : false}
\r\n {signOutLink}\r\n
\r\n \r\n \r\n \r\n );\r\n } else if (signInLink) {\r\n return {signInLink};\r\n }\r\n }\r\n props.context.telemetry.error('Header content is empty, module wont render.');\r\n return null;\r\n}\r\n\r\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\r\n return (\r\n \r\n {items && items.length\r\n ? items.map((slot: React.ReactNode, index: number) => {\r\n return {slot};\r\n })\r\n : null}\r\n \r\n );\r\n}\r\n\r\nexport default headerView;\r\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","React","NavIcon","render","className","onClick","this","props","toggleNavBar","title","resources","mobileHamburgerAriaLabel","isExpanded","targetId","role","__decorate","observer","renderActiveAccount","isOnly","_account$CustomerName","_account$CustomerName2","displayName","CustomerName","substr","charLimit","trim","AccountNumber","renderAccount","switchProps","toggleRefreshModal","_account$CustomerName3","_account$CustomerName4","async","updateAccount","accountNumber","setActiveEcomCustomerByExternalIdAsync","context","customerAccountNumber","then","data","Code","accountDropdown","document","getElementById","style","display","accountSwitchModal","sessionStorage","setItem","setActiveAccountNumber","window","setTimeout","location","reload","getAccountList","customer","customerAccounts","_customerAccounts$sli","slice","map","RefreshPageModal","Modal","isOpen","isModalOpen","ModalBody","Header","constructor","super","bodyTag","getElementsByTagName","_toggleAccountModal","updatedModalOpen","state","isAccountModalOpen","setState","_toggleRefreshPageModal","isRefreshModalOpen","popOverRef","_toggleNavbar","bind","_togglePopover","_keydown","mobileMenuCollapsed","signinPopoverOpen","hasEcomPermission","_this$props$data$acco","accountInformation","result","FirstName","Name","_this$props$data$cart","shareholderData","request","user","token","addEventListener","accountData","getUserAccountDetailsAsync","callerContext","actionContext","queryResultSettings","JSON","parse","atob","split","oid","getContactDetailsAsync","sortedAccounts","sort","a","b","CustomerAccountNumber","customerAccount","obj","AuthorityLevel","Window","digitalData","customerType","getItem","page","attributes","findingMethod","headerAction","headerData","header","dispatchEvent","CustomEvent","removeItem","_logoutInactiveUser","componentWillUnmount","removeEventListener","_this$state$accountDa","_this$state$customerA","id","slots","typeName","cartLabel","cartQtyLabel","headerClassName","classnames","config","navbarKey","homeLink","switchAccountProps","viewProps","_objectSpread","homeLinkAnchor","href","linkUrl","destinationUrl","wishListIconDesktop","canAccessCheckout","WishListIconComponent","showButtonTooltip","wishlistTooltipText","wishListIconMobile","cartIcon","CartIconComponent","navIcon","Object","assign","menuBar","search","HeaderTag","moduleProps","tag","HeaderContainer","HeaderTopBarContainer","HeaderSecondaryNavContainer","MobileMenuContainer","wrapClassName","MobileMenuBodyContainer","MobileMenuLinksContainer","AccountSwitchModal","toggleAccountModal","toggle","Button","_props$customerAccoun","AccountInfoDropdownParentContainer","AccountName","input","substring","AccountInfoDropdownPopoverContentContainer","Popover","placement","target","signInLink","_getSigninButton","signOutLink","_getSignOutButton","accountInfoDropdownButton","_getAccountInfoDropdownButton","totalAccountLength","accountLinksContainer","accountLinks","_getAccountLinks","accountList","topBarNavLinks","_getTopBarNavLinks","topBarNavMobileLinks","contactUsIcon","_getContactUsIcon","togglePopover","renderView","signInLinkText","signInUrl","signInLinkAriaText","_handleSignOut","signOutLinkText","signOutUrl","signOutLinkAriaText","myAccountLinks","cta","index","color","ariaLabel","openInNewTab","linkText","innerRef","charAt","isMobile","choicesRewardsLabel","mobileNavIconList","linkGroupList","linkgroup","linkList","path","linkGroupLabel","toLowerCase","label","contactUsLink","src","alt","toggled","classList","add","remove","e","keyCode","KeyCodes","Escape","_userContactDetails$C2","replace","_userContactDetails$C3","AccountStatus","OnHoldStatus","computed","_props$menuBar$","secondaryNavData","cmsNavItems","device","Type","searchUrl","MsDyn365","isBrowser","hostname","protocol","port","wishlist","orderDetails","app","routes","signinLinks","CommonHeader","items","AEM_URL","secondaryNavSize","secondaryNavSource","SearchForm","_renderReactFragment","slot","SigninButton","isSingleAccount","Node","list","link","telemetry","error","_renderDesktopAccountBlock","isAuthenticated","isAuthenticatedMenu"],"sourceRoot":""}