{"version":3,"file":"static/js/3330beef9569284c5415.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/themes/moekwrsitetheme/views/components/logo.component.tsx?2962","webpack://Msdyn365.Commerce.Online/./src/themes/moekwrsitetheme/views/header.view.tsx?9392","webpack://Msdyn365.Commerce.Online/./src/themes/moenzcsitetheme/views/components/logo.component.tsx?561a","webpack://Msdyn365.Commerce.Online/./src/themes/moenzcsitetheme/views/header.view.tsx?3b97","webpack://Msdyn365.Commerce.Online/./src/themes/moeochsitetheme/views/header.view.tsx?eeef","webpack://Msdyn365.Commerce.Online/./src/themes/moetwksitetheme/views/components/logo.component.tsx?e547","webpack://Msdyn365.Commerce.Online/./src/themes/moetwksitetheme/views/header.view.tsx?f411","webpack://Msdyn365.Commerce.Online/./src/utilities/language-change.ts?a435","webpack://Msdyn365.Commerce.Online/./lib/header/module-registration.js?4d67","webpack://Msdyn365.Commerce.Online/./src/store-selector-state-manager/base-store-selector-state-manager.ts?281e","webpack://Msdyn365.Commerce.Online/./src/store-selector-state-manager/map-store-selector-state-manager.ts?2ae0","webpack://Msdyn365.Commerce.Online/./src/store-selector-state-manager/store-selector-state-manager-data-action.ts?bd3e","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/header.view.tsx?6d84","webpack://Msdyn365.Commerce.Online/./src/modules/header/components/header-preferred-store.tsx?ee9c","webpack://Msdyn365.Commerce.Online/./src/modules/header/components/logo.tsx?f27e","webpack://Msdyn365.Commerce.Online/./src/modules/header/components/nav-icon.tsx?2475","webpack://Msdyn365.Commerce.Online/./src/modules/header/header.tsx?e91a","webpack://Msdyn365.Commerce.Online/./src/modules/header/header.view.tsx?cf0f","webpack://Msdyn365.Commerce.Online/./src/modules/header/utilities/mock-utilities.ts?d017","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/header.view.tsx?9bd3","webpack://Msdyn365.Commerce.Online/external var \"React\"?0d3b","webpack://Msdyn365.Commerce.Online/external var \"ReactDOM\"?853b"],"sourcesContent":["/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\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 telemetryContent?: ITelemetryContent;\r\n requestContext: Msdyn365.IRequestContext;\r\n typeName?: 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 private readonly attributes?: Msdyn365.IDictionary;\r\n\r\n constructor(props: ILogoProps) {\r\n super(props);\r\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.Logo);\r\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n }\r\n\r\n public render(): JSX.Element {\r\n return
{this._renderLogo(this.props)}
;\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 this._renderImage(config);\r\n }\r\n\r\n private _renderImage(config: ILogoProps): JSX.Element {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Logo;\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 { AsyncResult } from '@msdyn365-commerce/core';\r\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\r\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\r\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React, { useEffect, useState } from 'react';\r\nimport Logo from './components/logo.component';\r\nimport { IHeaderProps, IMyAccountLinksInMaoriData } from '../definition-extensions/header.ext.props.autogenerated';\r\n// import SearchView from '../../../modules/moe-search/moe-search.view';\r\n// import MoeButton from '../../../modules/moe-button/moe-button.view';\r\n// import { BsFillArrowRightCircleFill, BsChevronDown } from 'react-icons/bs';\r\nimport { getAsset } from '@msdyn365-commerce/core';\r\nimport { readAsync, updateAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\r\nimport {\r\n ENGLISH_LANG_CODE,\r\n ENGLISH_TOGGLE_PREFIX,\r\n HEADER_FOOTER,\r\n KWR,\r\n MAORI_LANG_CODE,\r\n MAORI_TOGGLE_PREFIX,\r\n AXE_MAORI_LANG_CODE\r\n} from '../../../utilities/constants';\r\nimport {\r\n getToggleLang,\r\n getUserPrefLang,\r\n getUserPreferredLanguage,\r\n setOnlineChannelInfoInCache,\r\n getOnlineChannelInfoTimer,\r\n IS_LOCAL_DEVELOPMENT\r\n} from '../../../utilities/language-change';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n onTelemetryClick,\r\n TelemetryConstant,\r\n getTelemetryObject\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { getMOEOnlineStoresAsync } from '../../../actions/extensions/DataActionExtension.g';\r\n\r\nconst headerView: React.FC> = (props: IHeaderViewProps & IHeaderProps<{}>) => {\r\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, context, resources } = props;\r\n const { logoLink, logoImage, tewharakiRedirectURL, nzcRedirectURL, headerText, supportBtnUrl, headerTextLink } = props.config;\r\n // State variables\r\n // const [switchCurriculumUrl, setSwitchCurriculumUrl] = useState('select');\r\n // const [switchCurriculumName, setSwitchCurriculumName] = useState('Switch curriculum');\r\n // const [toggleCurriculumState, setToggleCurriculumState] = useState(false);\r\n const [preferredLanguage, setPreferredLanguage] = useState('english');\r\n const hostname = context.request.url?.requestUrl?.hostname;\r\n const toggleLang = getToggleLang(context);\r\n const toggleTooltip = toggleLang === 'maori' ? 'Whakaatuhia te paetukutuku i te reo Ingarihi' : 'Display website in Te Reo Māori';\r\n\r\n useEffect(() => {\r\n // Identifying Language\r\n const userPrefLang = getUserPrefLang(context.request.user.customerAccountNumber as any, context);\r\n setPreferredLanguage(getUserPreferredLanguage(KWR, HEADER_FOOTER, userPrefLang, toggleLang, context));\r\n\r\n if (IS_LOCAL_DEVELOPMENT) {\r\n return;\r\n }\r\n\r\n if (MsDyn365.isBrowser && !localStorage.getItem(`moeOnlineChannelInfo${hostname}`)) {\r\n void getMOEOnlineStoresAsync({ callerContext: props.context.actionContext, bypassCache: 'get' }).then(channelResponse => {\r\n setOnlineChannelInfoInCache(context, JSON.stringify(channelResponse));\r\n });\r\n } else {\r\n const hours = 24;\r\n const setupTime = getOnlineChannelInfoTimer(context);\r\n const now = new Date().getTime();\r\n\r\n if (MsDyn365.isBrowser && now - setupTime > hours * 60 * 60 * 1000) {\r\n localStorage.removeItem('moeOnlineChannelInfoTimer');\r\n void getMOEOnlineStoresAsync({ callerContext: props.context.actionContext, bypassCache: 'get' }).then(channelResponse => {\r\n setOnlineChannelInfoInCache(context, JSON.stringify(channelResponse));\r\n });\r\n }\r\n }\r\n }, []);\r\n\r\n // bug 102348: Effect for changing document lang code to Maori\r\n React.useEffect(() => {\r\n const htmlElement: HTMLElement | null = document.querySelector('html');\r\n if (htmlElement) {\r\n htmlElement.lang = AXE_MAORI_LANG_CODE;\r\n htmlElement.translate = false;\r\n }\r\n }, []);\r\n\r\n // const changeSwitchCurriculum = (curriculum: any) => {\r\n // if (curriculum === 'twk') {\r\n // setSwitchCurriculumUrl(tewharakiRedirectURL);\r\n // setSwitchCurriculumName('Te Whariki');\r\n // setToggleCurriculumState(!toggleCurriculumState);\r\n // } else if (curriculum === 'kwr') {\r\n // setSwitchCurriculumUrl(nzcRedirectURL);\r\n // setSwitchCurriculumName('Kauwhata reo');\r\n // setToggleCurriculumState(!toggleCurriculumState);\r\n // }\r\n // };\r\n\r\n // const toggleCurriculum = () => {\r\n // setToggleCurriculumState(!toggleCurriculumState);\r\n // };\r\n\r\n const _getSiteRedirectionUrl = () => {\r\n const { requestUrl } = props.context.request.url;\r\n const langCode = context.request.locale.toLowerCase();\r\n\r\n let pathUrl = requestUrl.pathname;\r\n if (langCode === ENGLISH_LANG_CODE) {\r\n pathUrl = MAORI_TOGGLE_PREFIX + pathUrl;\r\n } else if (langCode === MAORI_LANG_CODE) {\r\n pathUrl = pathUrl.replace(ENGLISH_TOGGLE_PREFIX, '');\r\n }\r\n const redirectUrl = `${requestUrl.origin}/${pathUrl}${requestUrl.search}`;\r\n return redirectUrl;\r\n };\r\n\r\n function _renderCollapseMenu(props: IHeaderViewProps & IHeaderProps<{}>): JSX.Element | null {\r\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\r\n return (\r\n \r\n \r\n {_renderReactFragment(props.menuBar)}\r\n \r\n \r\n {/* Removed below search control as part of KWR lift and shift */}\r\n\r\n {_renderReactFragment(props.search)}\r\n
\r\n
\r\n {_renderMobileAccountBlock(props, true, preferredLanguage)}\r\n \r\n
\r\n\r\n
\r\n Switch Curriculum:\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n {/*
\r\n
\r\n \r\n \r\n Go\r\n \r\n \r\n
\r\n
    \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
\r\n
*/}\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n {headerText?.trim() === 'The Hub' ? (\r\n

\r\n {headerText}\r\n

\r\n ) : (\r\n \r\n {headerText}\r\n \r\n )}\r\n {/* \r\n
\r\n \r\n \r\n Go\r\n \r\n \r\n
\r\n
    \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
\r\n
*/}\r\n
\r\n
\r\n
\r\n
\r\n {_renderReactFragment(props.search)}\r\n
\r\n
\r\n {_renderAccountBlock(props, false, preferredLanguage)}\r\n {props.cartIcon}\r\n \r\n \r\n {preferredLanguage === 'maori' ? resources.supportBtnTextInMaori : resources.supportBtnText}\r\n \r\n \r\n {_renderReactFragment(props.siteOptions)}\r\n {props.navIcon}\r\n
\r\n
\r\n {props.preferredStore}\r\n
\r\n \r\n {_renderReactFragment(props.menuBar)}\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n {headerText}\r\n \r\n
\r\n
\r\n
\r\n {_renderAccountBlock(props, false, preferredLanguage)}\r\n {props.cartIcon}\r\n {props.navIcon}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {_renderCollapseMenu(props)}\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\r\n const customer = accountInformation && accountInformation.result;\r\n return <>{customer ? customer.FirstName || customer.Name : ''};\r\n};\r\n\r\nfunction _renderMobileAccountBlock(\r\n props: IHeaderViewProps & IHeaderProps<{}>,\r\n renderForMobile: boolean,\r\n preferredLanguage: string\r\n): JSX.Element | null {\r\n const { AccountInfoDropdownParentContainer, signInLink, data, accountLinks } = props;\r\n const signInLinkInMaori = _renderSigninLinkInMaori(props);\r\n const signOutLinkInMaori = _renderSignoutLinkInMaori(props);\r\n const signOutLinkInEnglish = _renderSignoutLinkInEnglish(props);\r\n const customer = props.data.accountInformation && props.data.accountInformation.result;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n const accountClassName = classnames(\r\n 'ms-header__drawer',\r\n AccountInfoDropdownParentContainer.className,\r\n renderForMobile ? 'account-mobile' : 'account-desktop'\r\n );\r\n\r\n if (accountLinks) {\r\n _updateUserDetails(props);\r\n const accountLinksInEnglish = accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false;\r\n const myaccountLinksInMaori = _getAccountLinksInMaori(props, customer);\r\n let accountLinksInMaori = myaccountLinksInMaori ? myaccountLinksInMaori.map((link: React.ReactNode) => link) : false;\r\n if (!accountLinksInMaori) {\r\n accountLinksInMaori = accountLinksInEnglish;\r\n }\r\n\r\n return (\r\n \r\n
\r\n {preferredLanguage === 'maori' ? accountLinksInMaori : accountLinksInEnglish}\r\n {preferredLanguage === 'maori' ? signOutLinkInMaori : signOutLinkInEnglish}\r\n
\r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {preferredLanguage === 'maori' ? signInLinkInMaori : signInLink}\r\n \r\n );\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction _renderAccountBlock(\r\n props: IHeaderViewProps & IHeaderProps<{}>,\r\n renderForMobile: boolean,\r\n preferredLanguage: string\r\n): JSX.Element | null {\r\n const {\r\n AccountInfoDropdownParentContainer,\r\n AccountInfoDropdownPopoverConentContainer,\r\n accountInfoDropdownButton,\r\n signInLink,\r\n accountLinks\r\n } = props;\r\n const signInLinkInMaori = _renderSigninLinkInMaori(props);\r\n const signOutLinkInMaori = _renderSignoutLinkInMaori(props);\r\n const signOutLinkInEnglish = _renderSignoutLinkInEnglish(props);\r\n const customer = props.data.accountInformation && props.data.accountInformation.result;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n const accountClassName = classnames(\r\n AccountInfoDropdownParentContainer.className,\r\n renderForMobile ? 'account-mobile' : 'account-desktop'\r\n );\r\n if (AccountInfoDropdownPopoverConentContainer) {\r\n _updateUserDetails(props);\r\n const accountLinksInEnglish = accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false;\r\n const myaccountLinksInMaori = _getAccountLinksInMaori(props, customer);\r\n let accountLinksInMaori = myaccountLinksInMaori ? myaccountLinksInMaori.map((link: React.ReactNode) => link) : false;\r\n if (!accountLinksInMaori) {\r\n accountLinksInMaori = accountLinksInEnglish;\r\n }\r\n\r\n return (\r\n \r\n {accountInfoDropdownButton}\r\n \r\n {preferredLanguage === 'maori' ? accountLinksInMaori : accountLinksInEnglish}\r\n {preferredLanguage === 'maori' ? signOutLinkInMaori : signOutLinkInEnglish}\r\n \r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {preferredLanguage === 'maori' ? signInLinkInMaori : signInLink}\r\n \r\n );\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction _updateUserDetails(props: any) {\r\n const { context } = props;\r\n const [isUpdatedUserDetails, setIsUpdatedUserDetails] = useState(false);\r\n\r\n if (context.request.user?.isAuthenticated) {\r\n if (!isUpdatedUserDetails) {\r\n try {\r\n readAsync({ callerContext: context.actionContext }, context.request.user.customerAccountNumber).then(customerData => {\r\n if (\r\n customerData.FirstName === context.request.user.firstName &&\r\n customerData.LastName === context.request.user.lastName &&\r\n customerData.Email === context.request.user.emailAddress\r\n ) {\r\n setIsUpdatedUserDetails(true);\r\n return;\r\n }\r\n customerData.FirstName = context.request.user.firstName;\r\n customerData.LastName = context.request.user.lastName;\r\n customerData.Name = context.request.user.name;\r\n customerData.Email = context.request.user.emailAddress;\r\n\r\n const entity = { ...customerData, Attributes: customerData.Attributes };\r\n updateAsync({ callerContext: context.actionContext, bypassCache: 'get' }, entity).then(updatedCustomerData => {\r\n if (updatedCustomerData) {\r\n setIsUpdatedUserDetails(true);\r\n }\r\n });\r\n });\r\n } catch (err) {\r\n console.error('Get all the customers data err', err);\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\r\n return (\r\n <>\r\n {items && items.length > 0\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\nfunction _renderSigninLinkInMaori(props: IHeaderViewProps & IHeaderProps<{}>): React.ReactNode | undefined {\r\n const {\r\n data: { accountInformation },\r\n context: {\r\n request: { user }\r\n },\r\n resources\r\n } = props;\r\n const customer = accountInformation && accountInformation.result;\r\n const telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent, TelemetryConstant.SignIn);\r\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\r\n return (\r\n !customer && (\r\n \r\n \r\n {resources.signInTextInMaori}\r\n \r\n \r\n )\r\n );\r\n}\r\n\r\nfunction _renderSignoutLinkInEnglish(props: IHeaderViewProps & IHeaderProps<{}>): React.ReactNode | undefined {\r\n const {\r\n data: { accountInformation },\r\n context: {\r\n request: { user }\r\n },\r\n resources\r\n } = props;\r\n const customer = accountInformation && accountInformation.result;\r\n const telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\r\n const displayName = customer ? customer.FirstName || customer.Name : undefined;\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent, TelemetryConstant.SignOut);\r\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\r\n\r\n const deleteAllCookies = () => {\r\n const cookies = document.cookie.split(';');\r\n\r\n for (let i = 0; i < cookies.length; i++) {\r\n const cookie = cookies[i];\r\n const eqPos = cookie.indexOf('=');\r\n const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;\r\n document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT';\r\n }\r\n\r\n onTelemetryClick(telemetryContent, payLoad, 'Sign out');\r\n location.href = user.signOutUrl as any;\r\n };\r\n\r\n return (\r\n customer &&\r\n displayName && (\r\n \r\n \r\n {resources.signOutLinkText}\r\n \r\n \r\n )\r\n );\r\n}\r\n\r\nfunction _renderSignoutLinkInMaori(props: IHeaderViewProps & IHeaderProps<{}>): React.ReactNode | undefined {\r\n const {\r\n data: { accountInformation },\r\n context: {\r\n request: { user }\r\n },\r\n resources\r\n } = props;\r\n const customer = accountInformation && accountInformation.result;\r\n const telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\r\n const displayName = customer ? customer.FirstName || customer.Name : undefined;\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent, TelemetryConstant.SignOut);\r\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\r\n\r\n const deleteAllCookies = () => {\r\n const cookies = document.cookie.split(';');\r\n\r\n for (let i = 0; i < cookies.length; i++) {\r\n const cookie = cookies[i];\r\n const eqPos = cookie.indexOf('=');\r\n const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;\r\n document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT';\r\n }\r\n\r\n onTelemetryClick(telemetryContent, payLoad, 'Sign out');\r\n location.href = user.signOutUrl as any;\r\n };\r\n\r\n return (\r\n customer &&\r\n displayName && (\r\n \r\n \r\n {resources.signOutTextInMaori}\r\n \r\n \r\n )\r\n );\r\n}\r\n\r\nfunction _getAccountLinksInMaori(props: IHeaderViewProps & IHeaderProps<{}>, customer: any) {\r\n const { myAccountLinksInMaori } = props.config;\r\n const telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\r\n const payLoad = getPayloadObject('click', telemetryContent, '');\r\n const displayName = customer ? customer.FirstName || customer.Name : undefined;\r\n if (!customer || !displayName || !myAccountLinksInMaori || myAccountLinksInMaori.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const handleLinkTextChange = (linkIndex: number): any => (event: Msdyn365.ContentEditableEvent) => {\r\n if (props.config.myAccountLinks && props.config.myAccountLinks[linkIndex]) {\r\n props.config.myAccountLinks[linkIndex].linkText = event.target.value;\r\n }\r\n };\r\n\r\n return myAccountLinksInMaori.map((cta: IMyAccountLinksInMaoriData, index: number) => {\r\n payLoad.contentAction.etext = cta.linkText;\r\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: cta.ariaLabel,\r\n className: 'ms-signin-info__account-link-button',\r\n linkText: cta.linkText,\r\n linkUrl: cta.linkUrl.destinationUrl,\r\n openInNewTab: cta.openInNewTab,\r\n role: 'button',\r\n additionalProperties: attributes\r\n };\r\n\r\n return (\r\n \r\n );\r\n });\r\n}\r\n\r\nexport default headerView;\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 Msdyn365 from '@msdyn365-commerce/core';\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\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 telemetryContent?: ITelemetryContent;\r\n requestContext: Msdyn365.IRequestContext;\r\n typeName?: 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 private readonly attributes?: Msdyn365.IDictionary;\r\n\r\n constructor(props: ILogoProps) {\r\n super(props);\r\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.Logo);\r\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n }\r\n\r\n public render(): JSX.Element {\r\n return
{this._renderLogo(this.props)}
;\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 this._renderImage(config);\r\n }\r\n\r\n private _renderImage(config: ILogoProps): JSX.Element {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Logo;\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 { AsyncResult } from '@msdyn365-commerce/core';\r\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\r\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\r\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React, { useState } from 'react';\r\nimport Logo from './components/logo.component';\r\nimport { IHeaderProps } from '../definition-extensions/header.ext.props.autogenerated';\r\n// import SearchView from '../../../modules/moe-search/moe-search.view';\r\n// import MoeButton from '../../../modules/moe-button/moe-button.view';\r\n// import { BsFillArrowRightCircleFill, BsChevronDown } from 'react-icons/bs';\r\nimport { getAsset } from '@msdyn365-commerce/core';\r\nimport { readAsync, updateAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\r\nimport { IS_LOCAL_DEVELOPMENT, getOnlineChannelInfoTimer, setOnlineChannelInfoInCache } from '../../../utilities/language-change';\r\nimport { getMOEOnlineStoresAsync } from '../../../actions/extensions/DataActionExtension.g';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n onTelemetryClick,\r\n TelemetryConstant,\r\n getTelemetryObject\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport { AXE_MAORI_LANG_CODE } from '../../../utilities/constants';\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\n\r\nconst headerView: React.FC> = (props: IHeaderViewProps & IHeaderProps<{}>) => {\r\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, context } = props;\r\n const { logoLink, logoImage, tewharakiRedirectURL, kauwhatareoRedirectURL, headerText, supportBtnUrl, headerTextLink } = props.config;\r\n\r\n // State variables\r\n // const [switchCurriculumUrl, setSwitchCurriculumUrl] = useState('select');\r\n // const [switchCurriculumName, setSwitchCurriculumName] = useState('Switch curriculum');\r\n // const [toggleCurriculumState, setToggleCurriculumState] = useState(false);\r\n\r\n // const changeSwitchCurriculum = (curriculum: any) => {\r\n // if (curriculum === 'twk') {\r\n // setSwitchCurriculumUrl(tewharakiRedirectURL);\r\n // setSwitchCurriculumName('Te Whariki');\r\n // setToggleCurriculumState(!toggleCurriculumState);\r\n // } else if (curriculum === 'kwr') {\r\n // setSwitchCurriculumUrl(kauwhatareoRedirectURL);\r\n // setSwitchCurriculumName('Kauwhata reo');\r\n // setToggleCurriculumState(!toggleCurriculumState);\r\n // }\r\n // };\r\n\r\n // const toggleCurriculum = () => {\r\n // setToggleCurriculumState(!toggleCurriculumState);\r\n // };\r\n\r\n const hostname = context.request.url?.requestUrl?.hostname;\r\n\r\n React.useEffect(() => {\r\n if (IS_LOCAL_DEVELOPMENT) {\r\n return;\r\n }\r\n\r\n if (MsDyn365.isBrowser && !localStorage.getItem(`moeOnlineChannelInfo${hostname}`)) {\r\n void getMOEOnlineStoresAsync({ callerContext: props.context.actionContext, bypassCache: 'get' }).then(channelResponse => {\r\n setOnlineChannelInfoInCache(context, JSON.stringify(channelResponse));\r\n });\r\n } else {\r\n const hours = 24;\r\n const setupTime = getOnlineChannelInfoTimer(context);\r\n const now = new Date().getTime();\r\n\r\n if (MsDyn365.isBrowser && now - setupTime > hours * 60 * 60 * 1000) {\r\n localStorage.removeItem('moeOnlineChannelInfoTimer');\r\n void getMOEOnlineStoresAsync({ callerContext: props.context.actionContext, bypassCache: 'get' }).then(channelResponse => {\r\n setOnlineChannelInfoInCache(context, JSON.stringify(channelResponse));\r\n });\r\n }\r\n }\r\n }, []);\r\n\r\n // bug 102348: Effect for changing document lang code to Maori\r\n React.useEffect(() => {\r\n const htmlElement: HTMLElement | null = document.querySelector('html');\r\n if (htmlElement) {\r\n htmlElement.lang = AXE_MAORI_LANG_CODE;\r\n htmlElement.translate = false;\r\n }\r\n }, []);\r\n\r\n function _renderCollapseMenu(props: IHeaderViewProps): JSX.Element | null {\r\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\r\n // const deleteLaterVariable = _renderMobileAccountBlock(props, true);\r\n // console.log(deleteLaterVariable);\r\n return (\r\n \r\n {_renderReactFragment(props.menuBar)}\r\n \r\n \r\n {_renderReactFragment(props.search)}\r\n
\r\n
\r\n {_renderMobileAccountBlock(props, true)}\r\n \r\n
\r\n\r\n
\r\n Switch Curriculum:\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n {/*
\r\n
\r\n \r\n \r\n Go\r\n \r\n \r\n
\r\n
    \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
\r\n
*/}\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n {headerText?.trim() === 'The Hub' ? (\r\n

{headerText}

\r\n ) : (\r\n \r\n {headerText}\r\n \r\n )}\r\n {/* \r\n
\r\n \r\n \r\n Go\r\n \r\n \r\n
\r\n
    \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
\r\n
*/}\r\n
\r\n
\r\n
\r\n
{_renderReactFragment(props.search)}
\r\n
\r\n {_renderAccountBlock(props, false)}\r\n {props.cartIcon}\r\n \r\n Support\r\n \r\n {_renderReactFragment(props.siteOptions)}\r\n {props.navIcon}\r\n
\r\n
\r\n {props.preferredStore}\r\n
\r\n \r\n {_renderReactFragment(props.menuBar)}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n {headerText}\r\n \r\n
\r\n
\r\n
\r\n {_renderAccountBlock(props, false)}\r\n {props.cartIcon}\r\n {props.navIcon}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {_renderCollapseMenu(props)}\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\r\n const customer = accountInformation && accountInformation.result;\r\n return <>{customer ? customer.FirstName || customer.Name : ''};\r\n};\r\n// const deleteAllCookies = () => {\r\n// const cookies = document.cookie.split(';');\r\n\r\n// for (let i = 0; i < cookies.length; i++) {\r\n// const cookie = cookies[i];\r\n// const eqPos = cookie.indexOf('=');\r\n// const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;\r\n// document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT';\r\n// }\r\n// };\r\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\r\n const { AccountInfoDropdownParentContainer, signInLink, data, accountLinks } = props;\r\n const signOutLinkInEnglish = _renderSignoutLinkInEnglish(props);\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n const accountClassName = classnames(\r\n 'ms-header__drawer',\r\n AccountInfoDropdownParentContainer.className,\r\n renderForMobile ? 'account-mobile' : 'account-desktop'\r\n );\r\n\r\n if (accountLinks) {\r\n return (\r\n \r\n
\r\n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\r\n {signOutLinkInEnglish}\r\n
\r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\r\n const {\r\n AccountInfoDropdownParentContainer,\r\n AccountInfoDropdownPopoverConentContainer,\r\n accountInfoDropdownButton,\r\n signInLink,\r\n accountLinks\r\n } = props;\r\n\r\n const signOutLinkInEnglish = _renderSignoutLinkInEnglish(props);\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n const accountClassName = classnames(\r\n AccountInfoDropdownParentContainer.className,\r\n renderForMobile ? 'account-mobile' : 'account-desktop'\r\n );\r\n if (AccountInfoDropdownPopoverConentContainer) {\r\n _updateUserDetails(props);\r\n return (\r\n \r\n {accountInfoDropdownButton}\r\n \r\n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\r\n {signOutLinkInEnglish}\r\n \r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction _updateUserDetails(props: any) {\r\n const { context } = props;\r\n const [isUpdatedUserDetails, setIsUpdatedUserDetails] = useState(false);\r\n\r\n if (context.request.user?.isAuthenticated) {\r\n if (!isUpdatedUserDetails) {\r\n try {\r\n readAsync({ callerContext: context.actionContext }, context.request.user.customerAccountNumber).then(customerData => {\r\n if (\r\n customerData.FirstName === context.request.user.firstName &&\r\n customerData.LastName === context.request.user.lastName &&\r\n customerData.Email === context.request.user.emailAddress\r\n ) {\r\n setIsUpdatedUserDetails(true);\r\n return;\r\n }\r\n customerData.FirstName = context.request.user.firstName;\r\n customerData.LastName = context.request.user.lastName;\r\n customerData.Name = context.request.user.name;\r\n customerData.Email = context.request.user.emailAddress;\r\n\r\n const entity = { ...customerData, Attributes: customerData.Attributes };\r\n updateAsync({ callerContext: context.actionContext, bypassCache: 'get' }, entity).then(updatedCustomerData => {\r\n if (updatedCustomerData) {\r\n setIsUpdatedUserDetails(true);\r\n }\r\n });\r\n });\r\n } catch (err) {\r\n console.error('Get all the customers data err', err);\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction _renderSignoutLinkInEnglish(props: IHeaderViewProps & IHeaderProps<{}>): React.ReactNode | undefined {\r\n const {\r\n data: { accountInformation },\r\n context: {\r\n request: { user }\r\n },\r\n resources\r\n } = props;\r\n const customer = accountInformation && accountInformation.result;\r\n const telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\r\n const displayName = customer ? customer.FirstName || customer.Name : undefined;\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent, TelemetryConstant.SignOut);\r\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\r\n\r\n const deleteAllCookies = () => {\r\n const cookies = document.cookie.split(';');\r\n\r\n for (let i = 0; i < cookies.length; i++) {\r\n const cookie = cookies[i];\r\n const eqPos = cookie.indexOf('=');\r\n const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;\r\n document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT';\r\n }\r\n\r\n onTelemetryClick(telemetryContent, payLoad, 'Sign out');\r\n location.href = user.signOutUrl as any;\r\n };\r\n return (\r\n customer &&\r\n displayName && (\r\n \r\n \r\n {resources.signOutLinkText}\r\n \r\n \r\n )\r\n );\r\n}\r\n\r\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\r\n return (\r\n <>\r\n {items && items.length > 0\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","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\r\nimport { IHeaderProps } from '../definition-extensions/header.ext.props.autogenerated';\r\nimport {\r\n IS_LOCAL_DEVELOPMENT,\r\n getOnlineChannelInfoTimer,\r\n getToggleLang,\r\n setOnlineChannelInfoInCache\r\n} from '../../../utilities/language-change';\r\nimport { getMOEOnlineStoresAsync } from '../../../actions/extensions/DataActionExtension.g';\r\nimport {\r\n ENGLISH_LANG_CODE,\r\n ENGLISH_TOGGLE_PREFIX,\r\n MAORI_LANG_CODE,\r\n MAORI_TOGGLE_PREFIX,\r\n AXE_MAORI_LANG_CODE\r\n} from '../../../utilities/constants';\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\n\r\nconst headerView: React.FC> = (props: IHeaderViewProps & IHeaderProps<{}>) => {\r\n const {\r\n HeaderTag,\r\n HeaderContainer,\r\n HeaderTopBarContainer,\r\n config,\r\n MobileMenuContainer,\r\n MobileMenuBodyContainer,\r\n MobileMenuLinksContainer,\r\n Divider,\r\n context\r\n } = props;\r\n const { headerText, headerTextLink } = config;\r\n const toggleLang = getToggleLang(context);\r\n const toggleTooltip = toggleLang === 'maori' ? 'Whakaatuhia te paetukutuku i te reo Ingarihi' : 'Display website in Te Reo Māori';\r\n const hostname = context.request.url?.requestUrl?.hostname;\r\n\r\n // bug 102348: Effect for changing document lang code to Maori\r\n React.useEffect(() => {\r\n const htmlElement: HTMLElement | null = document.querySelector('html');\r\n if (htmlElement) {\r\n htmlElement.lang = AXE_MAORI_LANG_CODE;\r\n htmlElement.translate = false;\r\n }\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (IS_LOCAL_DEVELOPMENT) {\r\n return;\r\n }\r\n if (MsDyn365.isBrowser && !localStorage.getItem(`moeOnlineChannelInfo${hostname}`)) {\r\n void getMOEOnlineStoresAsync({ callerContext: props.context.actionContext, bypassCache: 'get' }).then(channelResponse => {\r\n setOnlineChannelInfoInCache(context, JSON.stringify(channelResponse));\r\n });\r\n } else {\r\n const hours = 24;\r\n const setupTime = getOnlineChannelInfoTimer(context);\r\n const now = new Date().getTime();\r\n\r\n if (MsDyn365.isBrowser && now - setupTime > hours * 60 * 60 * 1000) {\r\n localStorage.removeItem('moeOnlineChannelInfoTimer');\r\n void getMOEOnlineStoresAsync({ callerContext: props.context.actionContext, bypassCache: 'get' }).then(channelResponse => {\r\n setOnlineChannelInfoInCache(context, JSON.stringify(channelResponse));\r\n });\r\n }\r\n }\r\n }, []);\r\n\r\n const _getSiteRedirectionUrl = () => {\r\n const { requestUrl } = props.context.request.url;\r\n const langCode = context.request.locale.toLowerCase();\r\n\r\n let pathUrl = requestUrl.pathname;\r\n if (langCode === ENGLISH_LANG_CODE) {\r\n pathUrl = MAORI_TOGGLE_PREFIX + pathUrl;\r\n } else if (langCode === MAORI_LANG_CODE) {\r\n pathUrl = pathUrl.replace(ENGLISH_TOGGLE_PREFIX, '');\r\n }\r\n const redirectUrl = `${requestUrl.origin}/${pathUrl}${requestUrl.search}`;\r\n return redirectUrl;\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {/*--for Desktop UI--*/}\r\n
\r\n
\r\n
\r\n
\r\n {props.logo}\r\n {/*

{headerText}

*/}\r\n
\r\n \r\n {headerText}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
{props.navIcon}
\r\n
\r\n
\r\n
\r\n\r\n {/*--for Tablet and Mobile Responsive UI--*/}\r\n
\r\n
\r\n
\r\n {props.logo}\r\n \r\n {headerText}\r\n \r\n
\r\n
\r\n
{props.navIcon}
\r\n
\r\n
\r\n
\r\n {_renderReactFragment(props.search)}\r\n {props.preferredStore}\r\n {_renderDesktopAccountBlock(props)}\r\n {props.wishListIconDesktop}\r\n \r\n {props.cartIcon}\r\n {_renderReactFragment(props.siteOptions)}\r\n \r\n \r\n \r\n {props.MobileMenuHeader}\r\n \r\n {_renderReactFragment(props.menuBar)}\r\n \r\n {props.accountLinks ? props.accountLinks.map(link => link) : false}\r\n {props.siteOptions}\r\n {props.wishListIconMobile}\r\n {props.signInLink}\r\n {props.signOutLink}\r\n \r\n \r\n \r\n {_renderReactFragment(props.menuBar)}\r\n {/* Language toggle button\r\n only 1 list item will be visible at a time\r\n active li becomes visible text\r\n inactive li becomes the round dot */}\r\n \r\n {/* future buttons can come here */}\r\n
\r\n
\r\n );\r\n};\r\n\r\nfunction _renderDesktopAccountBlock(props: IHeaderViewProps): JSX.Element | null {\r\n const {\r\n AccountInfoDropdownParentContainer,\r\n AccountInfoDropdownPopoverConentContainer,\r\n accountInfoDropdownButton,\r\n signOutLink,\r\n signInLink,\r\n accountLinks\r\n } = props;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n if (AccountInfoDropdownPopoverConentContainer) {\r\n return (\r\n \r\n {accountInfoDropdownButton}\r\n \r\n {accountLinks ? accountLinks.map(link => link) : false}\r\n {signOutLink}\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 > 0\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","/*--------------------------------------------------------------\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 Msdyn365 from '@msdyn365-commerce/core';\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\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 telemetryContent?: ITelemetryContent;\r\n requestContext: Msdyn365.IRequestContext;\r\n typeName?: 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 private readonly attributes?: Msdyn365.IDictionary;\r\n\r\n constructor(props: ILogoProps) {\r\n super(props);\r\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.Logo);\r\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n }\r\n\r\n public render(): JSX.Element {\r\n return
{this._renderLogo(this.props)}
;\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 this._renderImage(config);\r\n }\r\n\r\n private _renderImage(config: ILogoProps): JSX.Element {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Logo;\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 { AsyncResult } from '@msdyn365-commerce/core';\r\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\r\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\r\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React, { useState, useEffect } from 'react';\r\nimport Logo from './components/logo.component';\r\nimport { IHeaderProps, IMyAccountLinksInMaoriData } from '../definition-extensions/header.ext.props.autogenerated';\r\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\r\n// import { BsFillArrowRightCircleFill, BsChevronDown } from 'react-icons/bs';\r\nimport { getAsset } from '@msdyn365-commerce/core';\r\nimport { readAsync, updateAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\r\nimport { AXE_MAORI_LANG_CODE, HEADER_FOOTER } from '../../../utilities/constants';\r\nimport {\r\n getToggleLang,\r\n getUserPrefLang,\r\n getUserPreferredLanguage,\r\n setOnlineChannelInfoInCache,\r\n getOnlineChannelInfoTimer,\r\n IS_LOCAL_DEVELOPMENT\r\n} from '../../../utilities/language-change';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n onTelemetryClick,\r\n TelemetryConstant,\r\n getTelemetryObject\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport { getMOEOnlineStoresAsync } from '../../../actions/extensions/DataActionExtension.g';\r\n\r\nconst headerView: React.FC> = props => {\r\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, resources, context } = props;\r\n const {\r\n logoLink,\r\n logoImage,\r\n kauwhatareoRedirectURL,\r\n nzcRedirectURL,\r\n headerText,\r\n supportBtnUrl,\r\n headerPatternImage,\r\n headerTextLink,\r\n siteName\r\n } = props.config;\r\n\r\n // State variables\r\n // const [switchCurriculumUrl, setSwitchCurriculumUrl] = useState('select');\r\n // const [switchCurriculumName, setSwitchCurriculumName] = useState('Switch curriculum');\r\n // const [toggleCurriculumState, setToggleCurriculumState] = useState(false);\r\n const [preferredLanguage, setPreferredLanguage] = useState('english');\r\n const hostname = context.request.url?.requestUrl?.hostname;\r\n\r\n useEffect(() => {\r\n // Identifying Language\r\n const toggleLang = getToggleLang(context);\r\n const userPrefLang = getUserPrefLang(context.request.user.customerAccountNumber as any, context);\r\n setPreferredLanguage(getUserPreferredLanguage(siteName as any, HEADER_FOOTER, userPrefLang, toggleLang, context));\r\n\r\n if (IS_LOCAL_DEVELOPMENT) {\r\n return;\r\n }\r\n\r\n if (MsDyn365.isBrowser && !localStorage.getItem(`moeOnlineChannelInfo${hostname}`)) {\r\n void getMOEOnlineStoresAsync({ callerContext: props.context.actionContext, bypassCache: 'get' }).then(channelResponse => {\r\n setOnlineChannelInfoInCache(context, JSON.stringify(channelResponse));\r\n });\r\n } else {\r\n const hours = 24;\r\n const setupTime = getOnlineChannelInfoTimer(context);\r\n const now = new Date().getTime();\r\n\r\n if (MsDyn365.isBrowser && now - setupTime > hours * 60 * 60 * 1000) {\r\n localStorage.removeItem('moeOnlineChannelInfoTimer');\r\n void getMOEOnlineStoresAsync({ callerContext: props.context.actionContext, bypassCache: 'get' }).then(channelResponse => {\r\n setOnlineChannelInfoInCache(context, JSON.stringify(channelResponse));\r\n });\r\n }\r\n }\r\n }, []);\r\n\r\n // bug 102348: Effect for changing document lang code to Maori\r\n React.useEffect(() => {\r\n const htmlElement: HTMLElement | null = document.querySelector('html');\r\n if (htmlElement) {\r\n htmlElement.lang = AXE_MAORI_LANG_CODE;\r\n htmlElement.translate = false;\r\n }\r\n }, []);\r\n\r\n // const changeSwitchCurriculum = (curriculum: any) => {\r\n // if (curriculum === 'nzc') {\r\n // setSwitchCurriculumUrl(nzcRedirectURL);\r\n // setSwitchCurriculumName('NZC');\r\n // setToggleCurriculumState(!toggleCurriculumState);\r\n // } else if (curriculum === 'kwr') {\r\n // setSwitchCurriculumUrl(kauwhatareoRedirectURL);\r\n // setSwitchCurriculumName('Kauwhata reo');\r\n // setToggleCurriculumState(!toggleCurriculumState);\r\n // }\r\n // };\r\n\r\n // const toggleCurriculum = () => {\r\n // setToggleCurriculumState(!toggleCurriculumState);\r\n // };\r\n\r\n function _renderPatternImage(item: Msdyn365.IImageData | undefined, ariaHiddenAttr?: boolean) {\r\n if (!item || !item.src || item.src.length === 0) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n function _renderCollapseMenu(props: IHeaderViewProps & IHeaderProps<{}>): JSX.Element | null {\r\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\r\n return (\r\n \r\n {_renderReactFragment(props.menuBar)}\r\n \r\n \r\n {_renderReactFragment(props.search)}\r\n
\r\n
\r\n {_renderMobileAccountBlock(props, true, preferredLanguage)}\r\n \r\n
\r\n\r\n
\r\n Switch Curriculum:\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n {/*
\r\n
\r\n \r\n \r\n Go\r\n \r\n \r\n
\r\n
    \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
\r\n
*/}\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {headerText}\r\n \r\n\r\n {/* \r\n
\r\n \r\n \r\n Go\r\n \r\n \r\n
\r\n
    \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
\r\n
*/}\r\n
\r\n
\r\n
\r\n
{_renderReactFragment(props.search)}
\r\n
\r\n {_renderAccountBlock(props, false, preferredLanguage)}\r\n {props.cartIcon}\r\n \r\n \r\n {preferredLanguage === 'maori' ? resources.supportBtnTextInMaori : resources.supportBtnText}\r\n \r\n \r\n
\r\n
\r\n {props.preferredStore}\r\n {_renderReactFragment(props.siteOptions)}\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n {headerText}\r\n \r\n
\r\n
\r\n
\r\n {_renderAccountBlock(props, false, preferredLanguage)}\r\n {props.cartIcon}\r\n {props.navIcon}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {_renderCollapseMenu(props)}\r\n
\r\n {/*
*/}\r\n {props.slots.headerPattern && props.slots.headerPattern}\r\n
{_renderPatternImage(headerPatternImage)}
\r\n \r\n {_renderReactFragment(props.menuBar)}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\r\n const customer = accountInformation && accountInformation.result;\r\n return <>{customer ? customer.FirstName || customer.Name : ''};\r\n};\r\n\r\nfunction _renderMobileAccountBlock(\r\n props: IHeaderViewProps & IHeaderProps<{}>,\r\n renderForMobile: boolean,\r\n preferredLanguage: string\r\n): JSX.Element | null {\r\n const { AccountInfoDropdownParentContainer, signInLink, data, accountLinks } = props;\r\n const signInLinkInMaori = _renderSigninLinkInMaori(props);\r\n const signOutLinkInMaori = _renderSignoutLinkInMaori(props);\r\n const signOutLinkInEnglish = _renderSignoutLinkInEnglish(props);\r\n const customer = props.data.accountInformation && props.data.accountInformation.result;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n const accountClassName = classnames(\r\n 'ms-header__drawer',\r\n AccountInfoDropdownParentContainer.className,\r\n renderForMobile ? 'account-mobile' : 'account-desktop'\r\n );\r\n\r\n if (accountLinks) {\r\n _updateUserDetails(props);\r\n const accountLinksInEnglish = accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false;\r\n const myaccountLinksInMaori = _getAccountLinksInMaori(props, customer);\r\n let accountLinksInMaori = myaccountLinksInMaori ? myaccountLinksInMaori.map((link: React.ReactNode) => link) : false;\r\n if (!accountLinksInMaori) {\r\n accountLinksInMaori = accountLinksInEnglish;\r\n }\r\n\r\n return (\r\n \r\n
\r\n {preferredLanguage === 'maori' ? accountLinksInMaori : accountLinksInEnglish}\r\n {preferredLanguage === 'maori' ? signOutLinkInMaori : signOutLinkInEnglish}\r\n
\r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {preferredLanguage === 'maori' ? signInLinkInMaori : signInLink}\r\n \r\n );\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction _renderAccountBlock(\r\n props: IHeaderViewProps & IHeaderProps<{}>,\r\n renderForMobile: boolean,\r\n preferredLanguage: string\r\n): JSX.Element | null {\r\n const {\r\n AccountInfoDropdownParentContainer,\r\n AccountInfoDropdownPopoverConentContainer,\r\n accountInfoDropdownButton,\r\n signInLink,\r\n accountLinks\r\n } = props;\r\n const signInLinkInMaori = _renderSigninLinkInMaori(props);\r\n const signOutLinkInMaori = _renderSignoutLinkInMaori(props);\r\n const signOutLinkInEnglish = _renderSignoutLinkInEnglish(props);\r\n const customer = props.data.accountInformation && props.data.accountInformation.result;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n const accountClassName = classnames(\r\n AccountInfoDropdownParentContainer.className,\r\n renderForMobile ? 'account-mobile' : 'account-desktop'\r\n );\r\n if (AccountInfoDropdownPopoverConentContainer) {\r\n _updateUserDetails(props);\r\n const accountLinksInEnglish = accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false;\r\n const myaccountLinksInMaori = _getAccountLinksInMaori(props, customer);\r\n let accountLinksInMaori = myaccountLinksInMaori ? myaccountLinksInMaori.map((link: React.ReactNode) => link) : false;\r\n if (!accountLinksInMaori) {\r\n accountLinksInMaori = accountLinksInEnglish;\r\n }\r\n\r\n return (\r\n \r\n {accountInfoDropdownButton}\r\n \r\n {preferredLanguage === 'maori' ? accountLinksInMaori : accountLinksInEnglish}\r\n {preferredLanguage === 'maori' ? signOutLinkInMaori : signOutLinkInEnglish}\r\n \r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {preferredLanguage === 'maori' ? signInLinkInMaori : signInLink}\r\n \r\n );\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction _updateUserDetails(props: any) {\r\n const { context } = props;\r\n const [isUpdatedUserDetails, setIsUpdatedUserDetails] = useState(false);\r\n\r\n if (context.request.user?.isAuthenticated) {\r\n if (!isUpdatedUserDetails) {\r\n try {\r\n readAsync({ callerContext: context.actionContext }, context.request.user.customerAccountNumber).then(customerData => {\r\n if (\r\n customerData.FirstName === context.request.user.firstName &&\r\n customerData.LastName === context.request.user.lastName &&\r\n customerData.Email === context.request.user.emailAddress\r\n ) {\r\n setIsUpdatedUserDetails(true);\r\n return;\r\n }\r\n customerData.FirstName = context.request.user.firstName;\r\n customerData.LastName = context.request.user.lastName;\r\n customerData.Name = context.request.user.name;\r\n customerData.Email = context.request.user.emailAddress;\r\n\r\n const entity = { ...customerData, Attributes: customerData.Attributes };\r\n updateAsync({ callerContext: context.actionContext, bypassCache: 'get' }, entity).then(updatedCustomerData => {\r\n if (updatedCustomerData) {\r\n setIsUpdatedUserDetails(true);\r\n }\r\n });\r\n });\r\n } catch (err) {\r\n console.error('Get all the customers data err', err);\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\r\n return (\r\n <>\r\n {items && items.length > 0\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\nfunction _renderSigninLinkInMaori(props: IHeaderViewProps & IHeaderProps<{}>): React.ReactNode | undefined {\r\n const {\r\n data: { accountInformation },\r\n context: {\r\n request: { user }\r\n },\r\n resources\r\n } = props;\r\n const customer = accountInformation && accountInformation.result;\r\n const telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent, TelemetryConstant.SignIn);\r\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\r\n\r\n return (\r\n !customer && (\r\n \r\n \r\n {resources.signInTextInMaori}\r\n \r\n \r\n )\r\n );\r\n}\r\n\r\nfunction _renderSignoutLinkInEnglish(props: IHeaderViewProps & IHeaderProps<{}>): React.ReactNode | undefined {\r\n const {\r\n data: { accountInformation },\r\n context: {\r\n request: { user }\r\n },\r\n resources\r\n } = props;\r\n const customer = accountInformation && accountInformation.result;\r\n const telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\r\n const displayName = customer ? customer.FirstName || customer.Name : undefined;\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent, TelemetryConstant.SignOut);\r\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\r\n\r\n const deleteAllCookies = () => {\r\n const cookies = document.cookie.split(';');\r\n\r\n for (let i = 0; i < cookies.length; i++) {\r\n const cookie = cookies[i];\r\n const eqPos = cookie.indexOf('=');\r\n const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;\r\n document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT';\r\n }\r\n onTelemetryClick(telemetryContent, payLoad, 'Sign out');\r\n //location.href = user.signOutUrl as any;\r\n };\r\n\r\n return (\r\n customer &&\r\n displayName && (\r\n \r\n \r\n {resources.signOutLinkText}\r\n \r\n \r\n )\r\n );\r\n}\r\n\r\nfunction _renderSignoutLinkInMaori(props: IHeaderViewProps & IHeaderProps<{}>): React.ReactNode | undefined {\r\n const {\r\n data: { accountInformation },\r\n context: {\r\n request: { user }\r\n },\r\n resources\r\n } = props;\r\n const customer = accountInformation && accountInformation.result;\r\n const telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\r\n const displayName = customer ? customer.FirstName || customer.Name : undefined;\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent, TelemetryConstant.SignOut);\r\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\r\n\r\n const deleteAllCookies = () => {\r\n const cookies = document.cookie.split(';');\r\n\r\n for (let i = 0; i < cookies.length; i++) {\r\n const cookie = cookies[i];\r\n const eqPos = cookie.indexOf('=');\r\n const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;\r\n document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT';\r\n }\r\n\r\n onTelemetryClick(telemetryContent, payLoad, 'Sign out');\r\n //location.href = user.signOutUrl as any;\r\n };\r\n return (\r\n customer &&\r\n displayName && (\r\n \r\n \r\n {resources.signOutTextInMaori}\r\n \r\n \r\n )\r\n );\r\n}\r\n\r\nfunction _getAccountLinksInMaori(props: IHeaderViewProps & IHeaderProps<{}>, customer: any) {\r\n const { myAccountLinksInMaori } = props.config;\r\n const telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\r\n const payLoad = getPayloadObject('click', telemetryContent, '');\r\n const displayName = customer ? customer.FirstName || customer.Name : undefined;\r\n if (!customer || !displayName || !myAccountLinksInMaori || myAccountLinksInMaori.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const handleLinkTextChange = (linkIndex: number): any => (event: Msdyn365.ContentEditableEvent) => {\r\n if (props.config.myAccountLinks && props.config.myAccountLinks[linkIndex]) {\r\n props.config.myAccountLinks[linkIndex].linkText = event.target.value;\r\n }\r\n };\r\n\r\n return myAccountLinksInMaori.map((cta: IMyAccountLinksInMaoriData, index: number) => {\r\n payLoad.contentAction.etext = cta.linkText;\r\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: cta.ariaLabel,\r\n className: 'ms-signin-info__account-link-button',\r\n linkText: cta.linkText,\r\n linkUrl: cta.linkUrl.destinationUrl,\r\n openInNewTab: cta.openInNewTab,\r\n role: 'button',\r\n additionalProperties: attributes\r\n };\r\n\r\n return (\r\n \r\n );\r\n });\r\n}\r\n\r\nexport default headerView;\r\n","/* eslint-disable security/detect-object-injection */\nimport {\n ENGLISH_LANG,\n MAORI_LANG,\n MAORI_LANG_CODE,\n ERROR_OR_NOTIFICATION,\n ADD_TO_KETE,\n COLLECTIONS,\n DOWNLOAD_KETE,\n SEARCH,\n HEADER_FOOTER,\n NAVIGATION,\n HOME_PAGE,\n LANDING_PAGE,\n OCH,\n TWK,\n KWR,\n KOH,\n NZC,\n METADATA,\n SOCIAL_SHARE,\n MY_PROFILE,\n ACTION_BUTTONS,\n COLLECTIONS_SITE_LANGUAGE,\n ADD_TO_KETE_SITE_LANGUAGE,\n DOWNLOAD_KETE_SITE_LANGUAGE,\n SEARCH_SITE_LANGUAGE,\n ENGLISH_OTHER_LANG_CODE,\n CUST_MAORI_LANG_CODE,\n VIDEO_PLAYER,\n DEVELOPMENT_LANGUAGE_TOGGLE,\n DEVELOPMENT_LANGUAGE_PREFERENCE,\n DEVELOPMENT_SITE_NAME\n} from './constants';\nimport { readAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\nimport MsDyn365, { ICoreContext } from '@msdyn365-commerce/core';\n\n/*\n This variable is used to set development mode without localstorage errors\n !!!important Please set to false when pushing the code\n Use this only for local development\n*/\nexport const IS_LOCAL_DEVELOPMENT = false;\n\nexport const getToggleLang = (context: any) => {\n console.log('gettogglecontext', context);\n if (IS_LOCAL_DEVELOPMENT) {\n return DEVELOPMENT_LANGUAGE_TOGGLE;\n }\n\n const siteNameFromCache = getSiteNameFromCache(KWR, context);\n if (siteNameFromCache === OCH || siteNameFromCache === KWR) {\n return context.request.locale.toLowerCase() === MAORI_LANG_CODE ? MAORI_LANG : ENGLISH_LANG;\n } else {\n return context.request.locale.toLowerCase() === ENGLISH_OTHER_LANG_CODE ? ENGLISH_LANG : MAORI_LANG;\n }\n};\n\nexport const getUserPrefLang = (customerAccountNumber: number, context: any): any => {\n console.log('getprefcontext', context);\n if (IS_LOCAL_DEVELOPMENT) {\n return DEVELOPMENT_LANGUAGE_PREFERENCE;\n }\n\n if (context.request.user.isAuthenticated) {\n if (MsDyn365.isBrowser && localStorage !== undefined) {\n return localStorage.getItem(`moeUserPrefLang${customerAccountNumber}`);\n }\n }\n\n // This piece of code is executed when the user is not logged in\n // We will set toggle language as preferred language\n const siteNameFromCache = getSiteNameFromCache(KWR, context);\n if (siteNameFromCache === OCH || siteNameFromCache === KWR) {\n return context.request.locale.toLowerCase() === MAORI_LANG_CODE ? MAORI_LANG : ENGLISH_LANG;\n } else {\n return context.request.locale.toLowerCase() === ENGLISH_OTHER_LANG_CODE ? ENGLISH_LANG : MAORI_LANG;\n }\n};\n\nexport const getUserPreferredLanguage = (\n siteName: string,\n moduleName: string,\n userPrefLang: string,\n toggleLang: string,\n context: any\n): any => {\n let siteNameFromCache;\n if (IS_LOCAL_DEVELOPMENT) {\n siteNameFromCache = DEVELOPMENT_SITE_NAME;\n } else {\n siteNameFromCache = getSiteNameFromCache(siteName, context);\n }\n // const siteNameFromCache = siteName;\n\n // For Online Curriculum Hub site\n if (siteNameFromCache === OCH) {\n switch (moduleName) {\n case ERROR_OR_NOTIFICATION:\n return toggleLang;\n\n case HEADER_FOOTER:\n return toggleLang;\n\n case HOME_PAGE:\n return toggleLang;\n\n case ACTION_BUTTONS:\n return toggleLang;\n\n default:\n return ENGLISH_LANG;\n }\n }\n\n // For New Zealand Curriculum Online site\n if (siteNameFromCache === NZC) {\n switch (moduleName) {\n case METADATA:\n return ENGLISH_LANG;\n\n case NAVIGATION:\n return ENGLISH_LANG;\n\n case HEADER_FOOTER:\n return ENGLISH_LANG;\n\n case HOME_PAGE:\n return ENGLISH_LANG;\n\n case SOCIAL_SHARE:\n return ENGLISH_LANG;\n\n case ERROR_OR_NOTIFICATION:\n return ENGLISH_LANG;\n\n case MY_PROFILE:\n return ENGLISH_LANG;\n\n case DOWNLOAD_KETE:\n return ENGLISH_LANG;\n\n case DOWNLOAD_KETE_SITE_LANGUAGE:\n return ENGLISH_LANG;\n\n case COLLECTIONS:\n return ENGLISH_LANG;\n\n case ADD_TO_KETE:\n return ENGLISH_LANG;\n\n case ADD_TO_KETE_SITE_LANGUAGE:\n return ENGLISH_LANG;\n\n case SEARCH:\n return ENGLISH_LANG;\n\n case SEARCH_SITE_LANGUAGE:\n return ENGLISH_LANG;\n\n case ACTION_BUTTONS:\n return ENGLISH_LANG;\n\n case COLLECTIONS_SITE_LANGUAGE:\n return ENGLISH_LANG;\n\n case VIDEO_PLAYER:\n return ENGLISH_LANG;\n\n default:\n return ENGLISH_LANG;\n }\n }\n\n // For Te Whāriki Online site\n if (siteNameFromCache === TWK) {\n switch (moduleName) {\n case METADATA:\n return ENGLISH_LANG;\n\n case NAVIGATION:\n return MAORI_LANG;\n\n case HEADER_FOOTER:\n return userPrefLang;\n\n case HOME_PAGE:\n return userPrefLang;\n\n case LANDING_PAGE:\n return userPrefLang;\n\n case SOCIAL_SHARE:\n return userPrefLang;\n\n case ERROR_OR_NOTIFICATION:\n return userPrefLang;\n\n case MY_PROFILE:\n return userPrefLang;\n\n case DOWNLOAD_KETE:\n return MAORI_LANG;\n\n case DOWNLOAD_KETE_SITE_LANGUAGE:\n return userPrefLang;\n\n case COLLECTIONS:\n return MAORI_LANG;\n\n case COLLECTIONS_SITE_LANGUAGE:\n return userPrefLang;\n\n case ADD_TO_KETE:\n return MAORI_LANG;\n\n case ADD_TO_KETE_SITE_LANGUAGE:\n return userPrefLang;\n\n case SEARCH:\n return MAORI_LANG;\n\n case SEARCH_SITE_LANGUAGE:\n return userPrefLang;\n\n case ACTION_BUTTONS:\n return userPrefLang;\n\n case VIDEO_PLAYER:\n return userPrefLang;\n\n default:\n return ENGLISH_LANG;\n }\n }\n\n // For Te Kōhanga Reo site\n if (siteNameFromCache === KOH) {\n switch (moduleName) {\n case HOME_PAGE:\n return MAORI_LANG;\n\n case ACTION_BUTTONS:\n return MAORI_LANG;\n\n case VIDEO_PLAYER:\n return MAORI_LANG;\n\n default:\n return MAORI_LANG;\n }\n }\n\n // For Kauwhata Reo site\n if (siteNameFromCache === KWR) {\n switch (moduleName) {\n case METADATA:\n return toggleLang;\n\n case NAVIGATION:\n return toggleLang;\n\n case HEADER_FOOTER:\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\n\n case HOME_PAGE:\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\n\n case SOCIAL_SHARE:\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\n\n case ERROR_OR_NOTIFICATION:\n return toggleLang;\n\n case MY_PROFILE:\n return userPrefLang;\n\n case DOWNLOAD_KETE:\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\n\n case DOWNLOAD_KETE_SITE_LANGUAGE:\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\n\n case COLLECTIONS:\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\n\n case COLLECTIONS_SITE_LANGUAGE:\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\n\n case ADD_TO_KETE:\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\n\n case ADD_TO_KETE_SITE_LANGUAGE:\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\n\n case SEARCH:\n return MAORI_LANG;\n\n case SEARCH_SITE_LANGUAGE:\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\n\n case ACTION_BUTTONS:\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\n\n case VIDEO_PLAYER:\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\n\n default:\n return MAORI_LANG;\n }\n }\n\n switch (moduleName) {\n case DOWNLOAD_KETE:\n return MAORI_LANG;\n\n case COLLECTIONS:\n return MAORI_LANG;\n\n case ADD_TO_KETE:\n return MAORI_LANG;\n\n case SEARCH:\n return MAORI_LANG;\n\n default:\n return toggleLang;\n }\n};\n\nexport function setCustomerLangInCache(props: { context: ICoreContext }) {\n const { context } = props;\n const user = context.request.user;\n\n if (MsDyn365.isBrowser && !localStorage.getItem(`moeUserPrefLang${user.customerAccountNumber}`)) {\n void readAsync({ callerContext: context.actionContext, bypassCache: 'get' }, user.customerAccountNumber as any).then(\n customerData => {\n const customerLang = customerData.Language;\n localStorage.setItem(\n `moeUserPrefLang${user.customerAccountNumber}`,\n customerLang?.toLowerCase() === CUST_MAORI_LANG_CODE ? MAORI_LANG : ENGLISH_LANG\n );\n window.location.reload();\n }\n );\n }\n}\n\nexport function setTwksiteLangInCache(props: { context: ICoreContext }, siteName: string) {\n if (MsDyn365.isBrowser) {\n localStorage.setItem(`moeTwkSiteLang`, siteName);\n }\n}\n\nexport function getTwksiteLangInCache() {\n return MsDyn365.isBrowser ? localStorage.getItem(`moeTwkSiteLang`) : null;\n}\n\nexport function setOnlineChannelInfoInCache(context: ICoreContext, channelInfo: string) {\n const hostname = context.request.url?.requestUrl?.hostname;\n if (MsDyn365.isBrowser && localStorage !== undefined) {\n localStorage.setItem(`moeOnlineChannelInfo${hostname}`, channelInfo);\n localStorage.setItem('moeOnlineChannelInfoTimer', JSON.stringify(new Date().getTime()));\n }\n}\n\nexport function getOnlineChannelInfoTimer(context: ICoreContext): number {\n return MsDyn365.isBrowser ? JSON.parse(localStorage.getItem('moeOnlineChannelInfoTimer') || '0') : '0';\n}\n\nexport function getSiteNameFromCache(siteName: string, context: ICoreContext) {\n const hostname = context.request.url?.requestUrl?.hostname;\n let onlineChannels: any[] = [];\n\n if (MsDyn365.isBrowser && localStorage !== undefined) {\n onlineChannels = JSON.parse(localStorage.getItem(`moeOnlineChannelInfo${hostname}`) || '[]');\n }\n\n if (onlineChannels?.length > 0) {\n const channelIndex = onlineChannels.findIndex((item: any) => item.Id === context.request.apiSettings.channelId);\n if (channelIndex > -1) {\n if (onlineChannels[channelIndex]?.Name?.includes('ealand')) {\n return NZC;\n }\n\n if (onlineChannels[channelIndex]?.Name?.includes('hanga')) {\n return KOH;\n }\n\n if (onlineChannels[channelIndex]?.Name?.includes('hildhood')) {\n return TWK;\n }\n\n if (onlineChannels[channelIndex]?.Name?.includes('whata')) {\n return KWR;\n }\n\n if (onlineChannels[channelIndex]?.Name?.includes('Hub')) {\n return OCH;\n }\n }\n } else {\n return siteName;\n }\n\n return siteName;\n}\n","const binding = { modules: {}, dataActions: {} };\n\n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n\n (binding.modules['header'] = {\n c: () => require('@msdyn365-commerce-modules/header/dist/lib/modules/header/header'),\n $type: 'containerModule',\n da: [{name:'accountInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action', runOn: 1},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'header',\n p: 'header',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/header/dist/lib/modules/header'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['__local__|__local__|themes|moekwrsitetheme|views|header'] = {\n c: () => require('partner/themes/moekwrsitetheme/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|moenzcsitetheme|views|header'] = {\n c: () => require('partner/themes/moenzcsitetheme/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|moeochsitetheme|views|header'] = {\n c: () => require('partner/themes/moeochsitetheme/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|moetwksitetheme|views|header'] = {\n c: () => require('partner/themes/moetwksitetheme/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|header'] = {\n c: () => require('@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/header.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-header'\n };\nviewDictionary['@msdyn365-commerce-modules|header|modules|header|header'] = {\n c: () => require('@msdyn365-commerce-modules/header/dist/lib/modules/header/header.view.js'),\n cn: '@msdyn365-commerce-modules-header-header'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|header'] = {\n c: () => require('@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/header.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-header'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IActionContext } from '@msdyn365-commerce/core';\nimport { action, computed, observable } from 'mobx';\n\nimport {\n IListMapViewState,\n ILoadMapApiInput,\n IStoreInfo,\n IStoreSelectionStateContext,\n IStoreSelectorLocation,\n IStoreSelectorStateManager\n} from './i-store-selection-state-manager';\n\n/**\n * Abstract instance of IStoreSelectorStateManager with base implementation\n * of everything except the geoLocate function.\n */\nexport abstract class BaseStoreSelectorStateManager implements IStoreSelectorStateManager {\n @computed public get isDialogOpen(): Readonly {\n return this._context !== undefined;\n }\n\n @computed public get context(): Readonly {\n return this._context;\n }\n\n @observable public isMapApiLoaded?: boolean;\n\n @observable public selectedStoreLocationId?: string;\n\n @observable public preferredStore?: IStoreInfo;\n\n @observable public listMapViewState: IListMapViewState = { displayList: true, displayMap: false };\n\n @observable public isMapModuleLoaded?: boolean;\n\n @observable public lastInlineShownStoreInfo?: IStoreInfo;\n\n @observable protected _context?: IStoreSelectionStateContext;\n\n private readonly preferredStoreLocalStorageKey: string = '_msdyn365__preferredStore_';\n\n constructor() {\n this.isMapModuleLoaded = false;\n const value = this._readFromToCookie(this.preferredStoreLocalStorageKey);\n try {\n const storeInfo: IStoreInfo | undefined = value ? JSON.parse(value) : undefined;\n if (storeInfo) {\n this.preferredStore = storeInfo;\n }\n } catch {\n this.preferredStore = undefined;\n }\n }\n\n public abstract geoLocate(searchTerm: string, actionContext: IActionContext): Promise;\n\n public abstract loadMapApi(input: ILoadMapApiInput): Promise;\n\n @action\n public async toggleListMapViewState(): Promise {\n this.listMapViewState = {\n displayList: !this.listMapViewState.displayList,\n displayMap: !this.listMapViewState.displayMap\n };\n }\n\n @action\n public async setMapModuleLoaded(input: boolean): Promise {\n this.isMapModuleLoaded = input;\n }\n\n @action\n public async setOrgUnitStoreInformation(input: IStoreSelectionStateContext): Promise {\n this._context = input;\n }\n\n @action\n public async setSelectedStoreLocationId(storeId: string | undefined): Promise {\n this.selectedStoreLocationId = storeId;\n }\n\n @action\n public async setPreferredStoreLocation(\n storeId?: string,\n storeName?: string | undefined,\n writeToCookie: boolean = false,\n latitude?: number,\n longitude?: number\n ): Promise {\n const storeInfo: IStoreInfo = { StoreId: storeId, StoreName: storeName, Latitude: latitude, Longitude: longitude };\n this.preferredStore = storeInfo;\n if (writeToCookie) {\n this._writeToCookie(this.preferredStoreLocalStorageKey, JSON.stringify(storeInfo));\n }\n }\n\n @action\n public async setLastInlineStoreInfo(latitude?: number, longitude?: number): Promise {\n const storeInfo: IStoreInfo = { StoreId: '', StoreName: '', Latitude: latitude, Longitude: longitude };\n this.lastInlineShownStoreInfo = storeInfo;\n }\n\n @action\n public async clearPreferredStore(writeToCookie: boolean): Promise {\n this.preferredStore = undefined;\n if (writeToCookie) {\n this._removeCookie(this.preferredStoreLocalStorageKey);\n }\n }\n\n @action\n public async openDialog(input: IStoreSelectionStateContext): Promise {\n if (this._context && this._context.id === input.id) {\n throw new Error('Dialog is already opened');\n }\n\n this._context = input;\n }\n\n @action\n public async closeDialog(): Promise {\n this._context = undefined;\n }\n\n private _removeCookie(key: string): void {\n if (!key) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.removeItem(key);\n }\n }\n\n private _writeToCookie(key: string, value: string | undefined): void {\n if (!key || !value) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.setItem(key, value);\n }\n }\n\n private _readFromToCookie(key: string): string | undefined {\n if (!key) {\n return undefined;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n const cookieValue = storage.getItem(key);\n if (cookieValue) {\n return cookieValue;\n }\n }\n\n return undefined;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { action } from 'mobx';\n\nimport { BaseStoreSelectorStateManager } from './base-store-selector-state-manager';\nimport { ILoadMapApiInput, IStoreSelectorLocation } from './i-store-selection-state-manager';\nimport { IMapWindow, MapLocationsResult } from './models/map-data';\n\ndeclare const window: IMapWindow;\n\n/**\n * Instance of IStoreSelectorStateManager manager that uses Map service\n * for geo location.\n */\nexport class MapStoreSelectorStateManager extends BaseStoreSelectorStateManager {\n private readonly SERVICE_ENDPOINT: string = 'https://dev.virtualearth.net/REST/v1/';\n\n private readonly MAP_API_ENDPOINT: string = 'https://www.bing.com/api/maps/mapcontrol?callback=mapAPIReady';\n\n @action\n public async geoLocate(searchTerm: string, actionContext: IActionContext): Promise {\n if (\n !searchTerm ||\n !actionContext.requestContext.channel ||\n !actionContext.requestContext.channel.BingMapsApiKey ||\n !actionContext.requestContext.channel.BingMapsEnabled\n ) {\n return undefined;\n }\n\n let searchContent: string = searchTerm;\n\n const jsonp = `mapSearchCallback_${crypto.getRandomValues(new Uint32Array(1))[0]}`;\n\n if (actionContext.requestContext.channel.ChannelCountryRegionISOCode) {\n searchContent = `${searchTerm.trim()} ${actionContext.requestContext.channel.ChannelCountryRegionISOCode}`;\n }\n\n const query = encodeURI(searchContent);\n const key = encodeURI(actionContext.requestContext.channel.BingMapsApiKey);\n\n const geolocationApiUrl =\n actionContext.requestContext.app &&\n actionContext.requestContext.app.config &&\n actionContext.requestContext.app.config.geolocationApiUrl;\n const requestUrl = `${\n geolocationApiUrl ? geolocationApiUrl : this.SERVICE_ENDPOINT\n }/Locations?query=${query}&key=${key}&jsonp=${jsonp}`;\n\n return new Promise(resolve => {\n const script = document.createElement('script');\n script.setAttribute('type', 'text/javascript');\n script.setAttribute('src', requestUrl);\n\n window[jsonp] = (data: MapLocationsResult) => {\n delete window[jsonp];\n script.remove();\n\n if (data && data.resourceSets && data.resourceSets.length > 0 && data.resourceSets[0].resources.length > 0) {\n resolve({\n latitude: data.resourceSets[0].resources[0].point.coordinates[0],\n longitude: data.resourceSets[0].resources[0].point.coordinates[1]\n });\n }\n\n resolve(undefined);\n };\n\n document.body.appendChild(script);\n });\n }\n\n @action\n public async loadMapApi(input: ILoadMapApiInput): Promise {\n if (StringExtensions.isNullOrEmpty(input.key)) {\n return Promise.resolve();\n }\n\n const isScriptAlreadyLoaded = !!document?.getElementById('msdyn_map-api-script');\n\n if (isScriptAlreadyLoaded) {\n // Prevents from loading multiple script into the body\n return Promise.resolve();\n }\n\n const url = `${this.MAP_API_ENDPOINT}${input.key ? `&key=${input.key}` : ''}${input.lang ? `&setLang=${input.lang}` : ''}${\n input.market ? `&setMkt=${input.market}` : ''\n }`;\n\n return new Promise((resolve, reject) => {\n const script = document?.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = url;\n script.id = 'msdyn_map-api-script';\n if (window) {\n window.mapAPIReady = () => {\n this.isMapApiLoaded = true;\n resolve();\n };\n }\n script.addEventListener('error', (error: string | Event) => {\n reject(error);\n });\n document?.body?.appendChild(script);\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 { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IStoreSelectorStateManager } from './i-store-selection-state-manager';\nimport { MapStoreSelectorStateManager } from './map-store-selector-state-manager';\n\nexport function createStoreSelectorStateInput(result: IStoreSelectorStateManager): GenericInput {\n return new GenericInput('mapSSSM', result, 'IStoreSelectorStateManager');\n}\n\nconst createStoreSelectorStateInputInternal = (inputData: ICreateActionContext>): IActionInput => {\n return createStoreSelectorStateInput(new MapStoreSelectorStateManager());\n};\n\nexport const getGenericActionDataAction = createObservableDataAction({\n action: >getGenericAction,\n input: createStoreSelectorStateInputInternal\n});\n\nexport default getGenericActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nconst headerView: React.FC = props => {\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, Divider } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {_renderAccountBlock(props, false)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n {_renderCollapseMenu(props)}\n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderCollapseMenu(props: IHeaderViewProps): JSX.Element | null {\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\n return (\n \n \n {_renderReactFragment(props.search)}\n {_renderMobileAccountBlock(props, true)}\n {props.wishListIconMobile}\n {props.siteOptions}\n \n \n {_renderReactFragment(props.menuBar)}\n \n );\n}\n\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\n const customer = accountInformation && accountInformation.result;\n return <>{customer ? customer.FirstName || customer.Name : ''};\n};\n\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n 'ms-header__drawer',\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n\n if (accountLinks) {\n return (\n \n
\n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n
\n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n return null;\n}\n\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0\n ? items.map((slot: React.ReactNode, index: number) => {\n return {slot};\n })\n : null}\n \n );\n}\n\nexport default headerView;\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 { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IHeaderData } from '../header.data';\nimport { IHeaderProps } from '../header.props.autogenerated';\n\n/**\n * The header preferred store component.\n */\n@observer\nexport class HeaderPreferredStore extends React.PureComponent> {\n private readonly modalCloseButtonRef: React.RefObject = React.createRef();\n\n /**\n * Handle click on the store selector.\n * @returns : Promise void.\n */\n public handleClick = () => {\n return this._findPreferredStoreOnClick(this.props);\n };\n\n public render(): JSX.Element | undefined {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n slots,\n resources\n } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- slots can be undefined.\n if (ArrayExtensions.hasElements(slots?.storeSelector)) {\n const storeName =\n storeSelectorStateManager?.preferredStore && storeSelectorStateManager.preferredStore.StoreName\n ? storeSelectorStateManager.preferredStore.StoreName\n : resources.headerPreferredStoreText;\n\n return (\n
\n \n {storeName}\n \n {slots.storeSelector}\n
\n );\n }\n\n return undefined;\n }\n\n private async _findPreferredStoreOnClick(props: IHeaderProps): Promise {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n modules\n } = props;\n if (!storeSelectorStateManager) {\n return;\n }\n let storeSelectorId: string = '';\n if (modules && Object.keys(modules).length > 0 && ArrayExtensions.hasElements(modules.storeSelector)) {\n storeSelectorId = modules.storeSelector[0].id;\n }\n await storeSelectorStateManager\n .openDialog({\n id: storeSelectorId,\n showMapViewLink: true,\n parentElementRef: this.modalCloseButtonRef,\n onLocationSelected: orgUnitLocation => {\n return Promise.resolve();\n }\n })\n .catch((error: Error) => {\n if (props.telemetry) {\n props.telemetry.error(error.message);\n props.telemetry.debug('Unable to set preferred store');\n }\n });\n }\n}\n\nexport default HeaderPreferredStore;\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, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ILogoProps {\n image: Msdyn365.IImageData;\n gridSettings?: Msdyn365.IGridSettings;\n link?: ILinkData;\n className?: string;\n telemetryContent?: ITelemetryContent;\n requestContext: Msdyn365.IRequestContext;\n typeName?: string;\n}\n\nexport interface ILinkData {\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n linkText?: string;\n}\n\n/**\n *\n * Logo component.\n * @extends {React.PureComponent}\n */\nexport class Logo extends React.PureComponent {\n private readonly attributes?: Msdyn365.IDictionary;\n\n constructor(props: ILogoProps) {\n super(props);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.Logo);\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n return
{this._renderLogo(this.props)}
;\n }\n\n private _renderLogo(config: ILogoProps): JSX.Element {\n if (config.link && config.link.linkUrl.destinationUrl) {\n return (\n \n {this._renderImage(config)}\n \n );\n }\n return this._renderImage(config);\n }\n\n private _renderImage(config: ILogoProps): JSX.Element {\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=132&h=28&m=6', w: 0, h: 0 },\n lg: { q: 'w=160&h=48&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n return (\n \n );\n }\n}\n\nexport default Logo;\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 {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IHeaderResources } from '../header.props.autogenerated';\n\nexport interface INavIconProps {\n resources: IHeaderResources;\n isExpanded: boolean;\n targetId: string;\n telemetryContent?: ITelemetryContent;\n toggleNavBar(): void;\n}\n\n/**\n *\n * NavIcon component.\n * @extends {React.PureComponent}\n */\n\n@observer\nexport class NavIcon extends React.PureComponent {\n private readonly attributes?: Msdyn365.IDictionary;\n\n constructor(props: INavIconProps) {\n super(props);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.NavIcon);\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\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 { CartIconComponent, WishListIconComponent } from '@msdyn365-commerce/components';\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { ErrorNotification, NotificationsManager } from '@msdyn365-commerce-modules/notifications-core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n KeyCodes,\n Modal,\n ModalBody,\n ModalHeader,\n onTelemetryClick,\n Popover,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { HeaderPreferredStore, Logo, NavIcon } from './components';\nimport { IHeaderData } from './header.data';\nimport { IHeaderProps, IHeaderResources, IMyAccountLinksData } from './header.props.autogenerated';\n\nexport interface IHeaderState {\n mobileMenuCollapsed: boolean;\n signinPopoverOpen: boolean;\n hasSigninerror?: boolean;\n}\n\nexport interface IHeaderViewProps extends IHeaderProps, IHeaderState {\n logo: React.ReactNode;\n wishListIconDesktop: React.ReactNode;\n wishListIconMobile: React.ReactNode;\n cartIcon: React.ReactNode;\n navIcon: React.ReactNode;\n className: string;\n menuBar: React.ReactNode[];\n search: React.ReactNode[];\n siteOptions: React.ReactNode[];\n HeaderTag: IModuleProps;\n HeaderContainer: INodeProps;\n MobileMenuContainer: INodeProps;\n MobileMenuHeader: React.ReactNode;\n MobileMenuBodyContainer: INodeProps;\n MobileMenuLinksContainer: INodeProps;\n HeaderTopBarContainer: INodeProps;\n Divider: INodeProps;\n\n AccountInfoDropdownParentContainer?: INodeProps;\n AccountInfoDropdownPopoverConentContainer?: INodeProps;\n accountInfoDropdownButton?: React.ReactNode;\n\n signOutLink?: React.ReactNode;\n signInLink?: React.ReactNode;\n switchCustomerLink?: React.ReactNode;\n isOBORequest?: boolean;\n accountLinks?: React.ReactNode[];\n preferredStore?: React.ReactNode;\n}\n\n/**\n *\n * Header component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass Header extends React.PureComponent, IHeaderState> {\n private readonly popOverRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private cart: ICartState | undefined;\n\n /**\n * The signed-in user name displayed in the header bar\n */\n @computed public get displayName(): Readonly {\n const user = this.props.context.request.user;\n return user?.isOBORequest ? this.workerName : this.customerName;\n }\n\n /**\n * OBO scenario. The name of worker who shops on behalf of customer.\n */\n @computed public get workerName(): Readonly {\n const user = this.props.context.request.user;\n return user?.firstName || user?.name;\n }\n\n @computed public get customerName(): Readonly {\n const customer = this.props.data.accountInformation?.result;\n return customer ? customer.FirstName || customer.Name : undefined;\n }\n\n public constructor(props: IHeaderProps) {\n super(props);\n this.popOverRef = React.createRef();\n this._toggleNavbar = this._toggleNavbar.bind(this);\n this._togglePopover = this._togglePopover.bind(this);\n this._keydown = this._keydown.bind(this);\n this.state = {\n mobileMenuCollapsed: true,\n signinPopoverOpen: false,\n hasSigninerror: 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 if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.addEventListener('keydown', this._keydown);\n }\n reaction(\n () => this.props.data.cart.result,\n () => {\n this.cart = this.props.data.cart.result;\n }\n );\n\n const {\n context: {\n request: { user }\n },\n resources: { signUpCustomerNotFoundTitle, signUpMultipleCustomerFoundTitle, closeNotificationLabel }\n } = this.props;\n\n const signinNotificationError = this._getSigninNotification(user, signUpMultipleCustomerFoundTitle, signUpCustomerNotFoundTitle);\n if (signinNotificationError !== undefined && this.state.hasSigninerror === false) {\n // For signup show simple error notification.\n NotificationsManager.instance().addNotification(new ErrorNotification(signinNotificationError, closeNotificationLabel));\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.removeEventListener('keydown', this._keydown, false);\n }\n }\n\n public render(): JSX.Element | null {\n const {\n id,\n typeName,\n data: { accountInformation, wishlists },\n context: {\n request: { user }\n },\n context,\n resources: { cartLabel, cartQtyLabel }\n } = this.props;\n const { logoLink, logoImage, shouldShowWishlistCount } = this.props.config;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- app config is generic\n const disableTooltip = this.props.context.app.config.disableTooltip || false;\n const headerToggleClass = this.state.mobileMenuCollapsed ? '' : 'ms-header-open';\n const headerClassName = classnames('ms-header', this.props.config.className, headerToggleClass);\n const navbarKey = 'header-nav-mobile';\n const customer = accountInformation && accountInformation.result;\n const cartIconSlot = this._getSlot('cartIcon');\n const menuBarSlot = this._getSlot('menuBar');\n const searchSlot = this._getSlot('search');\n let wishlistCount = 0;\n const siteOptionsSlot = this._getSlot('siteOptions');\n const preferredStoreSlot = this._getSlot('storeSelector');\n if (wishlists !== undefined) {\n if (\n !wishlists.result ||\n !ArrayExtensions.hasElements(wishlists.result) ||\n !wishlists.result[0].CommerceListLines ||\n !ArrayExtensions.hasElements(wishlists.result[0].CommerceListLines)\n ) {\n wishlistCount = 0;\n } else {\n wishlistCount = wishlists.result[0].CommerceListLines.length;\n }\n }\n const viewProps: IHeaderViewProps = {\n ...(this.props as IHeaderProps),\n ...this.state,\n logo: (\n \n ),\n wishListIconDesktop: (\n \n ),\n wishListIconMobile: (\n \n ),\n cartIcon: ArrayExtensions.hasElements(cartIconSlot) ? (\n cartIconSlot[0]\n ) : (\n \n ),\n navIcon: (\n \n ),\n menuBar: ArrayExtensions.hasElements(menuBarSlot) ? menuBarSlot : [],\n search: ArrayExtensions.hasElements(searchSlot) ? searchSlot : [],\n siteOptions: ArrayExtensions.hasElements(siteOptionsSlot) ? siteOptionsSlot : [],\n className: headerClassName,\n HeaderTag: {\n moduleProps: this.props,\n className: classnames(headerClassName),\n 'aria-label': this.props.resources.headerAriaLabel,\n tag: 'header'\n },\n HeaderContainer: {\n className: classnames('ms-header__container')\n },\n HeaderTopBarContainer: {\n className: classnames('ms-header__topbar')\n },\n Divider: {\n className: classnames('ms-header__divider')\n },\n MobileMenuContainer: {\n tag: Modal,\n id: navbarKey,\n className: 'ms-header__mobile-hamburger',\n isOpen: !this.state.mobileMenuCollapsed,\n wrapClassName: 'ms-header__modal',\n toggle: this._toggleNavbar\n },\n MobileMenuHeader: ,\n MobileMenuBodyContainer: {\n tag: ModalBody,\n className: 'ms-header__mobile-hamburger-menu-body'\n },\n MobileMenuLinksContainer: {\n className: 'ms-header__mobile-hamburger-menu-links'\n },\n AccountInfoDropdownParentContainer: {\n className: 'ms-header__account-info'\n },\n AccountInfoDropdownPopoverConentContainer: this.displayName\n ? {\n tag: Popover,\n id: 'myprofilePopover',\n className: 'ms-header__account-info-content',\n placement: 'bottom',\n isOpen: this.state.signinPopoverOpen,\n target: this.popOverRef,\n toggle: this._togglePopover\n }\n : undefined,\n signInLink: this._getSigninButton(user, this.props.resources),\n signOutLink: this._getSignOutButton(user, this.props.resources),\n isOBORequest: user?.isOBORequest,\n switchCustomerLink: this._getSwitchCustomerButton(user, this.props.resources),\n accountInfoDropdownButton: this._getAccountInfoDropdownButton(user, this.props.resources),\n accountLinks: this._getAccountLinks(customer),\n preferredStore: ArrayExtensions.hasElements(preferredStoreSlot) && \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle link text change.\n * @param linkIndex - Link Index.\n * @returns : Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.myAccountLinks?.[linkIndex]) {\n this.props.config.myAccountLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Get the slot.\n * @param slotName - Name of the slot.\n * @returns The slot.\n */\n private _getSlot(slotName: string): React.ReactNode[] | null {\n const { slots } = this.props;\n return (slots && slots[slotName] && slots[slotName].length && slots[slotName]) || null;\n }\n\n /**\n * Renders the sign in button.\n * @param user - Request context user.\n * @param resources - Resources.\n * @returns React Node.\n */\n private _getSigninButton(user: MsDyn365.IRequestContextUser | undefined, resources: IHeaderResources): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n return (\n !this.displayName && (\n \n \n {resources.signInLinkText}\n \n \n )\n );\n }\n\n /**\n * Renders the sign out button.\n * @param user - Request context user.\n * @param resources - Resources.\n * @returns React Node.\n */\n private _getSignOutButton(user: MsDyn365.IRequestContextUser | undefined, resources: IHeaderResources): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignOut);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n return (\n this.displayName && (\n \n \n {resources.signOutLinkText}\n \n \n )\n );\n }\n\n /**\n * Renders the sign out button.\n * @param user - Request context user.\n * @param resources - Resources.\n * @returns React Node.\n */\n private _getSwitchCustomerButton(\n user: MsDyn365.IRequestContextUser | undefined,\n resources: IHeaderResources\n ): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SwitchCustomer);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n const isOBOAccountSelected = user?.isOBORequest && this.props.context.request.cookies.getAccountSelectionCookie();\n return (\n this.displayName &&\n isOBOAccountSelected && (\n this.props.context.request.cookies.removeAccountSelectionCookie(),\n additionalProperties: attributes\n }}\n />\n )\n );\n }\n\n private _getSigninNotification(\n user: MsDyn365.IRequestContextUser | undefined,\n signUpMultipleCustomerFoundTitle: string,\n signUpCustomerNotFoundTitle: string\n ): string | undefined {\n const { signUpCustomerNotFound, signUpMultipleCustomerFound } = this.props.config;\n const notFoundError = 'Microsoft_Dynamics_Commerce_Runtime_CustomerNotFound_WhenAutoLinking';\n const multipleAccountError = 'Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountsFoundWithSameEmailAddress';\n\n if (user?.retailServerErrorCode === notFoundError) {\n return signUpCustomerNotFound !== undefined ? signUpCustomerNotFound : signUpCustomerNotFoundTitle;\n } else if (user?.retailServerErrorCode === multipleAccountError) {\n return signUpMultipleCustomerFound !== undefined ? signUpMultipleCustomerFound : signUpMultipleCustomerFoundTitle;\n }\n return undefined;\n }\n\n private _getAccountInfoDropdownButton(\n user: MsDyn365.IRequestContextUser | undefined,\n resources: IHeaderResources\n ): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.MyProfile);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n return (\n this.displayName && (\n \n
\n
{this.displayName}
\n {user?.isOBORequest && this.customerName &&
{format(resources.shoppingAsText, this.customerName)}
}\n
\n \n )\n );\n }\n\n private _getAccountLinks(customer: Customer | undefined): React.ReactNode[] | undefined {\n const { myAccountLinks } = this.props.config;\n const payLoad = getPayloadObject('click', this.telemetryContent, '');\n if (!customer || !this.displayName || !myAccountLinks || !ArrayExtensions.hasElements(myAccountLinks)) {\n return undefined;\n }\n return myAccountLinks.map((cta: IMyAccountLinksData, index: number) => {\n payLoad.contentAction.etext = cta.linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: cta.ariaLabel,\n className: 'ms-signin-info__account-link-button',\n linkText: cta.linkText,\n linkUrl: cta.linkUrl.destinationUrl,\n openInNewTab: cta.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n\n return (\n \n );\n });\n }\n\n private _toggleNavbar(): void {\n this.setState({\n mobileMenuCollapsed: !this.state.mobileMenuCollapsed\n });\n }\n\n private _togglePopover(): void {\n this.setState({\n signinPopoverOpen: !this.state.signinPopoverOpen\n });\n }\n\n private _keydown(event: KeyboardEvent): void {\n if (event.keyCode === KeyCodes.Escape) {\n this.setState({ mobileMenuCollapsed: true });\n }\n }\n}\n\nexport default Header;\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 { IHeaderViewProps } from './header';\n\nconst headerView: React.FC = props => {\n const {\n HeaderTag,\n HeaderContainer,\n HeaderTopBarContainer,\n MobileMenuContainer,\n MobileMenuBodyContainer,\n MobileMenuLinksContainer,\n Divider\n } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {_renderDesktopAccountBlock(props)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n \n \n {props.MobileMenuHeader}\n {_renderReactFragment(props.menuBar)}\n \n {props.accountLinks ? props.accountLinks.map(link => link) : false}\n {props.siteOptions}\n {props.wishListIconMobile}\n {props.signInLink}\n {props.signOutLink}\n \n \n \n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderDesktopAccountBlock(props: IHeaderViewProps): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map(link => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return {signInLink};\n }\n }\n props.context.telemetry.error('Header content is empty, module wont render.');\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0\n ? items.map((slot: React.ReactNode, index: number) => {\n return {slot};\n })\n : null}\n \n );\n}\n\nexport default headerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { buildHydratedMockActionContext, buildMockRequest, ICoreContext, IRequestContext } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { AsyncResult, Customer } from '@msdyn365-commerce/retail-proxy';\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\n\nimport { IHeaderData } from '../header.data';\nimport { IHeaderConfig, IHeaderResources } from '../header.props.autogenerated';\n\nconst mockRequest: IRequestContext = buildMockRequest();\nmockRequest.gridSettings = {\n xs: { w: 767, h: 0 },\n sm: { w: 991, h: 0 },\n md: { w: 1199, h: 0 },\n lg: { w: 1599, h: 0 },\n xl: { w: 1600, h: 0 }\n};\nmockRequest.user.isAuthenticated = true;\nmockRequest.user.signInUrl = '/signin';\nmockRequest.user.signOutUrl = '/signout';\nmockRequest.user.signUpUrl = '/signup';\n\nconst mockAnonRequest = buildMockRequest();\nmockAnonRequest.user.isAuthenticated = false;\nmockAnonRequest.user.signInUrl = '/signin';\nmockAnonRequest.user.signOutUrl = '/signout';\nmockAnonRequest.user.signUpUrl = '/signup';\n\nconst mockSigninErrorRequest = buildMockRequest();\nmockSigninErrorRequest.user.isAuthenticated = false;\nmockSigninErrorRequest.user.retailServerErrorCode = 'Microsoft_Dynamics_Commerce_Runtime_CustomerNotFound_WhenAutoLinking';\nmockSigninErrorRequest.user.signInUrl = '/signin';\nmockSigninErrorRequest.user.signOutUrl = '/signout';\nmockSigninErrorRequest.user.signUpUrl = '/signup';\n\nconst mockActionContext = buildHydratedMockActionContext();\n\n/**\n * Method to mock auth context.\n */\n// @ts-expect-error\nexport const mockAuthContext: ICoreContext = {\n actionContext: mockActionContext,\n request: mockRequest,\n app: {\n config: {\n disableTooltip: true\n },\n routes: {\n wishlist: '/wishlist'\n }\n }\n};\n\n// @ts-expect-error\nexport const mockAnonContext: ICoreContext = {\n actionContext: mockActionContext,\n request: mockAnonRequest,\n app: {\n config: {\n disableTooltip: true\n },\n routes: {\n wishlist: '/wishlist'\n }\n }\n};\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- Due to partial mock.\n// @ts-expect-error\nexport const mockSigninContext: ICoreContext = {\n actionContext: mockActionContext,\n request: mockSigninErrorRequest,\n app: {\n config: {\n disableTooltip: true\n },\n routes: {\n wishlist: '/wishlist'\n }\n }\n};\n\nexport const mockHeaderConfig: IHeaderConfig = {\n logoLink: {\n linkUrl: {\n destinationUrl: 'https://ppe.fabrikam.com/fe'\n },\n ariaLabel: 'fabrikam'\n },\n logoImage: {\n src: 'https://img-prod-cms-mr-microsoft-com.akamaized.net/cms/api/fabrikam/imageFileData/MA1G3L'\n }\n};\n\nexport const mockResources: IHeaderResources = {\n mobileHamburgerAriaLabel: 'Mobile view hamburger aria label',\n wishlistTooltipText: 'My wishlist',\n cartLabel: 'Shopping bag, ({0}) items',\n cartQtyLabel: '({0})',\n signInLinkText: 'Sign In',\n signInLinkAriaText: 'Sign In',\n signOutLinkText: 'Sign Out',\n signOutLinkAriaText: 'Sign Out',\n shoppingAsText: 'Shopping as {0}',\n switchCustomerLinkText: 'Switch customer',\n switchCustomerLinkAriaText: 'Switch customer',\n headerPreferredStoreText: 'Select store',\n headerPreferredStoreAriaLabel: 'select preferred store',\n signUpCustomerNotFoundTitle: 'Error message if cutsomer not found',\n signUpMultipleCustomerFoundTitle: 'Multiple customer found error msg',\n closeNotificationLabel: 'Close',\n wishlistCountLabel: '({0})',\n headerAriaLabel: 'Header'\n};\n\nexport const getMockData = (totalItemsInCart: number = 0, accountNumber: string = '2', firstName: string = ''): IHeaderData => {\n return {\n cart: >{\n status: 'SUCCESS',\n result: {\n totalItemsInCart\n }\n },\n accountInformation: >{\n status: 'SUCCESS',\n result: {\n AccountNumber: accountNumber,\n FirstName: firstName\n }\n },\n storeSelectorStateManager: >{\n status: 'SUCCESS',\n result: {}\n }\n };\n};\n\nexport const getMockErrorData = (): IHeaderData => {\n return {\n cart: >{\n status: 'FAILED',\n result: undefined\n },\n accountInformation: >{\n status: 'FAILED',\n result: undefined\n },\n storeSelectorStateManager: >{\n status: 'FAILED',\n result: undefined\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 MsDyn365 from '@msdyn365-commerce/core';\nimport { IHeaderViewProps, Logo } from '@msdyn365-commerce-modules/header';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IHeaderProps } from '../definition-extensions/header.ext.props.autogenerated';\n\n/**\n * GridSizes.\n */\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n *\n * HeaderView component.\n * @extends {React.PureComponent}\n */\nexport class HeaderView extends React.PureComponent> {\n private readonly menuNode: React.RefObject;\n\n public constructor(props: IHeaderViewProps & IHeaderProps<{}>) {\n super(props);\n this.menuNode = React.createRef();\n }\n\n public componentDidMount(): void {\n if (this.props.config.useStickyHeader) {\n // Set header update methods to trigger on scroll\n if (MsDyn365.isBrowser) {\n window.addEventListener('scroll', () => {\n this._configureStickyHeader();\n });\n }\n this._configureStickyHeader();\n }\n }\n\n public render(): JSX.Element | null {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\n const {\n HeaderTag,\n HeaderContainer,\n HeaderTopBarContainer,\n Divider,\n MobileMenuContainer,\n MobileMenuBodyContainer,\n MobileMenuLinksContainer\n } = this.props;\n\n return (\n \n \n \n
\n {this._renderReactFragment(this.props.menuBar)}\n
\n
{this.props.navIcon}
\n {this.props.logo}\n {this._renderMobileLogo()}\n {this._renderReactFragment(this.props.search)}\n {this.props.preferredStore}\n {this._renderAccountBlock(this.props)}\n \n {this.props.cartIcon}\n {this._renderReactFragment(this.props.siteOptions)}\n \n \n \n {this.props.MobileMenuHeader}\n {this._renderReactFragment(this.props.menuBar)}\n \n {this.props.accountLinks ? this.props.accountLinks.map(link => link) : false}\n {this.props.siteOptions}\n {this.props.wishListIconMobile}\n {this.props.signInLink}\n {this.props.signOutLink}\n \n \n \n
\n
\n );\n }\n\n /**\n * Function to update header.\n */\n private readonly _configureStickyHeader = (): void => {\n // Get heights of cookie and promotion banners\n const defaultValue = 0;\n const headerAlertsContainer: HTMLElement | null = document.querySelector('.ms-promo-banner');\n const bannerHeights = headerAlertsContainer ? headerAlertsContainer.offsetHeight : defaultValue;\n\n // Triggers opacity change of header\n const headerElement = document.querySelector('header .default-container');\n if (headerElement) {\n if (MsDyn365.isBrowser && document.documentElement.scrollTop > defaultValue) {\n headerElement.classList.add('lock-opaque');\n headerElement.classList.add('fixed');\n } else {\n headerElement.classList.remove('lock-opaque');\n headerElement.classList.remove('fixed');\n }\n }\n\n // Update sticky header position and opacity\n const stickyHeader: HTMLElement | null = document.querySelector('.desktop-navicon-container');\n const headerLogo: HTMLElement | null = document.querySelector('.ms-header__logo');\n\n if (stickyHeader && headerLogo) {\n // Fix center sticky header\n const navStickyPos = headerLogo.offsetHeight + bannerHeights;\n if (MsDyn365.isBrowser && document.documentElement.scrollTop > navStickyPos) {\n stickyHeader.classList.add('fixed');\n } else {\n stickyHeader.classList.remove('fixed');\n }\n }\n };\n\n private _renderMobileLogo(): JSX.Element | null {\n const { config, context, typeName } = this.props;\n return (\n \n );\n }\n\n /**\n * Function to render account block.\n * @param props - IHeaderViewProps.\n * @returns Returns JSX.Element | null.\n */\n private readonly _renderAccountBlock = (props: IHeaderViewProps): JSX.Element | null => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signInLink\n } = props;\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(AccountInfoDropdownParentContainer.className, 'account-desktop');\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n {this._renderAccountDropdownLinks(props)}\n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n return null;\n };\n\n private readonly _renderAccountDropdownLinks = (props: IHeaderViewProps): JSX.Element | null => {\n const { isOBORequest, switchCustomerLink, accountLinks, signOutLink } = props;\n if (isOBORequest) {\n return (\n <>\n {switchCustomerLink}\n {signOutLink}\n {accountLinks ? : false}\n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n \n );\n } else {\n return (\n <>\n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n \n );\n }\n };\n\n /**\n * Function to render react fragment.\n * @param items - React nodes.\n * @returns Returns JSX.Element | null.\n */\n private readonly _renderReactFragment = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {ArrayExtensions.hasElements(items)\n ? items.map((slot: React.ReactNode) => {\n return <>{slot};\n })\n : null}\n \n );\n };\n}\n\nexport default HeaderView;\n","module.exports = React;","module.exports = ReactDOM;"],"names":["Logo","React","constructor","props","super","payLoad","getPayloadObject","telemetryContent","TelemetryConstant","this","attributes","getTelemetryAttributes","render","className","_renderLogo","config","link","linkUrl","destinationUrl","Object","assign","href","ariaLabel","target","openInNewTab","undefined","tabIndex","_renderImage","Msdyn365","image","requestContext","gridSettings","imageSettings","loadFailureBehavior","editProps","key","moduleType","typeName","imagePropertyName","shouldSkipToMainImage","renderCustomerName","accountInformation","customer","result","FirstName","Name","_renderAccountBlock","renderForMobile","preferredLanguage","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signInLink","accountLinks","signInLinkInMaori","_renderSigninLinkInMaori","signOutLinkInMaori","_renderSignoutLinkInMaori","signOutLinkInEnglish","_renderSignoutLinkInEnglish","data","accountClassName","classnames","_updateUserDetails","accountLinksInEnglish","map","myaccountLinksInMaori","_getAccountLinksInMaori","accountLinksInMaori","Node","_context$request$user","context","isUpdatedUserDetails","setIsUpdatedUserDetails","useState","request","user","isAuthenticated","readAsync","callerContext","actionContext","customerAccountNumber","then","customerData","firstName","LastName","lastName","Email","emailAddress","name","entity","_objectSpread","Attributes","updateAsync","bypassCache","updatedCustomerData","err","console","error","_renderReactFragment","items","length","slot","index","resources","getTelemetryObject","telemetryPageName","friendlyName","telemetry","SignIn","Button","title","signInTextInMaori","signInUrl","onClick","onTelemetryClick","displayName","SignOut","signOutLinkText","signOutUrl","deleteAllCookies","cookies","document","cookie","split","i","eqPos","indexOf","substr","location","signOutTextInMaori","myAccountLinksInMaori","cta","contentAction","etext","linkText","editableLink","role","additionalProperties","onTextChange","linkIndex","event","myAccountLinks","value","_context$request$url","HeaderTag","HeaderContainer","HeaderTopBarContainer","logoLink","logoImage","tewharakiRedirectURL","nzcRedirectURL","headerText","supportBtnUrl","headerTextLink","setPreferredLanguage","hostname","url","requestUrl","toggleLang","getToggleLang","toggleTooltip","useEffect","userPrefLang","getUserPrefLang","getUserPreferredLanguage","KWR","HEADER_FOOTER","IS_LOCAL_DEVELOPMENT","MsDyn365","isBrowser","localStorage","getItem","getMOEOnlineStoresAsync","channelResponse","setOnlineChannelInfoInCache","JSON","stringify","hours","setupTime","getOnlineChannelInfoTimer","now","Date","getTime","removeItem","htmlElement","querySelector","lang","AXE_MAORI_LANG_CODE","translate","_getSiteRedirectionUrl","langCode","locale","toLowerCase","pathUrl","pathname","ENGLISH_LANG_CODE","MAORI_TOGGLE_PREFIX","MAORI_LANG_CODE","replace","ENGLISH_TOGGLE_PREFIX","origin","search","Module","trim","cartIcon","supportBtnTextInMaori","supportBtnText","siteOptions","navIcon","preferredStore","menuBar","src","getAsset","alt","Divider","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","isOpen","Drawer","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","_renderMobileAccountBlock","_renderCollapseMenu","kauwhatareoRedirectURL","MobileMenuContainer","MobileMenuBodyContainer","logo","signOutLink","_renderDesktopAccountBlock","wishListIconDesktop","MobileMenuHeader","wishListIconMobile","headerPatternImage","siteName","slots","headerPattern","item","ariaHiddenAttr","log","DEVELOPMENT_LANGUAGE_TOGGLE","siteNameFromCache","getSiteNameFromCache","OCH","MAORI_LANG","ENGLISH_LANG","ENGLISH_OTHER_LANG_CODE","DEVELOPMENT_LANGUAGE_PREFERENCE","moduleName","DEVELOPMENT_SITE_NAME","ERROR_OR_NOTIFICATION","HOME_PAGE","ACTION_BUTTONS","NZC","METADATA","NAVIGATION","SOCIAL_SHARE","MY_PROFILE","DOWNLOAD_KETE","DOWNLOAD_KETE_SITE_LANGUAGE","COLLECTIONS","ADD_TO_KETE","ADD_TO_KETE_SITE_LANGUAGE","SEARCH","SEARCH_SITE_LANGUAGE","COLLECTIONS_SITE_LANGUAGE","VIDEO_PLAYER","TWK","LANDING_PAGE","KOH","setCustomerLangInCache","customerLang","Language","setItem","CUST_MAORI_LANG_CODE","window","reload","channelInfo","parse","_context$request$url2","_onlineChannels","onlineChannels","channelIndex","findIndex","Id","apiSettings","channelId","_onlineChannels$chann","_onlineChannels$chann2","_onlineChannels$chann3","_onlineChannels$chann4","_onlineChannels$chann5","includes","binding","modules","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","id","c","require","$type","da","path","runOn","iNM","ns","n","p","pdp","md","__bindings__","viewDictionary","cn","BaseStoreSelectorStateManager","listMapViewState","displayList","displayMap","preferredStoreLocalStorageKey","isMapModuleLoaded","_readFromToCookie","storeInfo","_unused","_context","input","storeId","selectedStoreLocationId","storeName","writeToCookie","arguments","StoreId","StoreName","Latitude","Longitude","_writeToCookie","latitude","longitude","lastInlineShownStoreInfo","_removeCookie","cookieValue","__decorate","computed","observable","action","MapStoreSelectorStateManager","SERVICE_ENDPOINT","MAP_API_ENDPOINT","searchTerm","channel","BingMapsApiKey","BingMapsEnabled","searchContent","jsonp","crypto","getRandomValues","Uint32Array","ChannelCountryRegionISOCode","query","encodeURI","geolocationApiUrl","app","Promise","resolve","script","createElement","setAttribute","remove","resourceSets","point","coordinates","body","appendChild","_document","StringExtensions","isNullOrEmpty","getElementById","market","reject","_document2","_document3","type","async","defer","mapAPIReady","isMapApiLoaded","addEventListener","createStoreSelectorStateInput","GenericInput","getGenericActionDataAction","createObservableDataAction","getGenericAction","inputData","HeaderPreferredStore","modalCloseButtonRef","handleClick","_findPreferredStoreOnClick","storeSelectorStateManager","ArrayExtensions","hasElements","storeSelector","headerPreferredStoreText","color","headerPreferredStoreAriaLabel","ref","storeSelectorId","keys","openDialog","showMapViewLink","parentElementRef","onLocationSelected","orgUnitLocation","catch","message","debug","observer","rel","viewports","xs","q","w","h","lg","lazyload","NavIcon","toggleNavBar","mobileHamburgerAriaLabel","isExpanded","targetId","Header","handleLinkTextChange","_this$props$config$my","popOverRef","_toggleNavbar","bind","_togglePopover","_keydown","state","signinPopoverOpen","hasSigninerror","isOBORequest","workerName","customerName","_this$props$data$acco","componentDidMount","reaction","cart","signUpCustomerNotFoundTitle","signUpMultipleCustomerFoundTitle","closeNotificationLabel","signinNotificationError","_getSigninNotification","NotificationsManager","instance","addNotification","ErrorNotification","componentWillUnmount","removeEventListener","wishlists","cartLabel","cartQtyLabel","shouldShowWishlistCount","disableTooltip","headerToggleClass","headerClassName","navbarKey","cartIconSlot","_getSlot","menuBarSlot","searchSlot","wishlistCount","siteOptionsSlot","preferredStoreSlot","CommerceListLines","viewProps","WishListIconComponent","showButtonTooltip","wishlistTooltipText","wishlistCountLabel","isDispayWishlistCount","CartIconComponent","moduleProps","headerAriaLabel","tag","Modal","wrapClassName","toggle","ModalHeader","ModalBody","Popover","placement","_getSigninButton","_getSignOutButton","switchCustomerLink","_getSwitchCustomerButton","_getAccountInfoDropdownButton","_getAccountLinks","renderView","slotName","signInLinkText","signInLinkAriaText","_user$signOutUrl","signOutLinkAriaText","SwitchCustomer","isOBOAccountSelected","getAccountSelectionCookie","switchCustomerLinkAriaText","switchCustomerLinkText","removeAccountSelectionCookie","signUpCustomerNotFound","signUpMultipleCustomerFound","retailServerErrorCode","MyProfile","innerRef","format","shoppingAsText","setState","keyCode","KeyCodes","Escape","mockRequest","buildMockRequest","sm","xl","signUpUrl","mockAnonRequest","mockSigninErrorRequest","buildHydratedMockActionContext","HeaderView","_configureStickyHeader","headerAlertsContainer","bannerHeights","offsetHeight","headerElement","documentElement","scrollTop","classList","add","stickyHeader","headerLogo","navStickyPos","_renderAccountDropdownLinks","menuNode","useStickyHeader","_renderMobileLogo","_config$mobileLogoIma","mobileLogoImage","module","exports","ReactDOM"],"sourceRoot":""}