{"version":3,"file":"static/js/90d4fc784db0b40e91b7.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 * 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 (!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 (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\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 (!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 (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\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 (!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 (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 * 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 * as MsDyn365 from '@msdyn365-commerce/core';\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 (!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 (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 */\r\nimport {\r\n ENGLISH_LANG,\r\n MAORI_LANG,\r\n MAORI_LANG_CODE,\r\n ERROR_OR_NOTIFICATION,\r\n ADD_TO_KETE,\r\n COLLECTIONS,\r\n DOWNLOAD_KETE,\r\n SEARCH,\r\n HEADER_FOOTER,\r\n NAVIGATION,\r\n HOME_PAGE,\r\n LANDING_PAGE,\r\n OCH,\r\n TWK,\r\n KWR,\r\n KOH,\r\n NZC,\r\n METADATA,\r\n SOCIAL_SHARE,\r\n MY_PROFILE,\r\n ACTION_BUTTONS,\r\n COLLECTIONS_SITE_LANGUAGE,\r\n ADD_TO_KETE_SITE_LANGUAGE,\r\n DOWNLOAD_KETE_SITE_LANGUAGE,\r\n SEARCH_SITE_LANGUAGE,\r\n ENGLISH_OTHER_LANG_CODE,\r\n CUST_MAORI_LANG_CODE,\r\n VIDEO_PLAYER,\r\n DEVELOPMENT_LANGUAGE_TOGGLE,\r\n DEVELOPMENT_LANGUAGE_PREFERENCE,\r\n DEVELOPMENT_SITE_NAME\r\n} from './constants';\r\nimport { readAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\r\nimport { ICoreContext } from '@msdyn365-commerce/core';\r\n\r\n/*\r\n This variable is used to set development mode without localstorage errors\r\n !!!important Please set to false when pushing the code\r\n Use this only for local development\r\n*/\r\nexport const IS_LOCAL_DEVELOPMENT = false;\r\n\r\nexport const getToggleLang = (context: any) => {\r\n console.log('gettogglecontext', context);\r\n if (IS_LOCAL_DEVELOPMENT) {\r\n return DEVELOPMENT_LANGUAGE_TOGGLE;\r\n }\r\n\r\n const siteNameFromCache = getSiteNameFromCache(KWR, context);\r\n if (siteNameFromCache === OCH || siteNameFromCache === KWR) {\r\n return context.request.locale.toLowerCase() === MAORI_LANG_CODE ? MAORI_LANG : ENGLISH_LANG;\r\n } else {\r\n return context.request.locale.toLowerCase() === ENGLISH_OTHER_LANG_CODE ? ENGLISH_LANG : MAORI_LANG;\r\n }\r\n};\r\n\r\nexport const getUserPrefLang = (customerAccountNumber: number, context: any): any => {\r\n console.log('getprefcontext', context);\r\n if (IS_LOCAL_DEVELOPMENT) {\r\n return DEVELOPMENT_LANGUAGE_PREFERENCE;\r\n }\r\n\r\n if (context.request.user.isAuthenticated) {\r\n if (localStorage !== undefined) {\r\n return localStorage.getItem(`moeUserPrefLang${customerAccountNumber}`);\r\n }\r\n }\r\n\r\n // This piece of code is executed when the user is not logged in\r\n // We will set toggle language as preferred language\r\n const siteNameFromCache = getSiteNameFromCache(KWR, context);\r\n if (siteNameFromCache === OCH || siteNameFromCache === KWR) {\r\n return context.request.locale.toLowerCase() === MAORI_LANG_CODE ? MAORI_LANG : ENGLISH_LANG;\r\n } else {\r\n return context.request.locale.toLowerCase() === ENGLISH_OTHER_LANG_CODE ? ENGLISH_LANG : MAORI_LANG;\r\n }\r\n};\r\n\r\nexport const getUserPreferredLanguage = (\r\n siteName: string,\r\n moduleName: string,\r\n userPrefLang: string,\r\n toggleLang: string,\r\n context: any\r\n): any => {\r\n let siteNameFromCache;\r\n if (IS_LOCAL_DEVELOPMENT) {\r\n siteNameFromCache = DEVELOPMENT_SITE_NAME;\r\n } else {\r\n siteNameFromCache = getSiteNameFromCache(siteName, context);\r\n }\r\n // const siteNameFromCache = siteName;\r\n\r\n // For Online Curriculum Hub site\r\n if (siteNameFromCache === OCH) {\r\n switch (moduleName) {\r\n case ERROR_OR_NOTIFICATION:\r\n return toggleLang;\r\n\r\n case HEADER_FOOTER:\r\n return toggleLang;\r\n\r\n case HOME_PAGE:\r\n return toggleLang;\r\n\r\n case ACTION_BUTTONS:\r\n return toggleLang;\r\n\r\n default:\r\n return ENGLISH_LANG;\r\n }\r\n }\r\n\r\n // For New Zealand Curriculum Online site\r\n if (siteNameFromCache === NZC) {\r\n switch (moduleName) {\r\n case METADATA:\r\n return ENGLISH_LANG;\r\n\r\n case NAVIGATION:\r\n return ENGLISH_LANG;\r\n\r\n case HEADER_FOOTER:\r\n return ENGLISH_LANG;\r\n\r\n case HOME_PAGE:\r\n return ENGLISH_LANG;\r\n\r\n case SOCIAL_SHARE:\r\n return ENGLISH_LANG;\r\n\r\n case ERROR_OR_NOTIFICATION:\r\n return ENGLISH_LANG;\r\n\r\n case MY_PROFILE:\r\n return ENGLISH_LANG;\r\n\r\n case DOWNLOAD_KETE:\r\n return ENGLISH_LANG;\r\n\r\n case DOWNLOAD_KETE_SITE_LANGUAGE:\r\n return ENGLISH_LANG;\r\n\r\n case COLLECTIONS:\r\n return ENGLISH_LANG;\r\n\r\n case ADD_TO_KETE:\r\n return ENGLISH_LANG;\r\n\r\n case ADD_TO_KETE_SITE_LANGUAGE:\r\n return ENGLISH_LANG;\r\n\r\n case SEARCH:\r\n return ENGLISH_LANG;\r\n\r\n case SEARCH_SITE_LANGUAGE:\r\n return ENGLISH_LANG;\r\n\r\n case ACTION_BUTTONS:\r\n return ENGLISH_LANG;\r\n\r\n case COLLECTIONS_SITE_LANGUAGE:\r\n return ENGLISH_LANG;\r\n\r\n case VIDEO_PLAYER:\r\n return ENGLISH_LANG;\r\n\r\n default:\r\n return ENGLISH_LANG;\r\n }\r\n }\r\n\r\n // For Te Whāriki Online site\r\n if (siteNameFromCache === TWK) {\r\n switch (moduleName) {\r\n case METADATA:\r\n return ENGLISH_LANG;\r\n\r\n case NAVIGATION:\r\n return MAORI_LANG;\r\n\r\n case HEADER_FOOTER:\r\n return userPrefLang;\r\n\r\n case HOME_PAGE:\r\n return userPrefLang;\r\n\r\n case LANDING_PAGE:\r\n return userPrefLang;\r\n\r\n case SOCIAL_SHARE:\r\n return userPrefLang;\r\n\r\n case ERROR_OR_NOTIFICATION:\r\n return userPrefLang;\r\n\r\n case MY_PROFILE:\r\n return userPrefLang;\r\n\r\n case DOWNLOAD_KETE:\r\n return MAORI_LANG;\r\n\r\n case DOWNLOAD_KETE_SITE_LANGUAGE:\r\n return userPrefLang;\r\n\r\n case COLLECTIONS:\r\n return MAORI_LANG;\r\n\r\n case COLLECTIONS_SITE_LANGUAGE:\r\n return userPrefLang;\r\n\r\n case ADD_TO_KETE:\r\n return MAORI_LANG;\r\n\r\n case ADD_TO_KETE_SITE_LANGUAGE:\r\n return userPrefLang;\r\n\r\n case SEARCH:\r\n return MAORI_LANG;\r\n\r\n case SEARCH_SITE_LANGUAGE:\r\n return userPrefLang;\r\n\r\n case ACTION_BUTTONS:\r\n return userPrefLang;\r\n\r\n case VIDEO_PLAYER:\r\n return userPrefLang;\r\n\r\n default:\r\n return ENGLISH_LANG;\r\n }\r\n }\r\n\r\n // For Te Kōhanga Reo site\r\n if (siteNameFromCache === KOH) {\r\n switch (moduleName) {\r\n case HOME_PAGE:\r\n return MAORI_LANG;\r\n\r\n case ACTION_BUTTONS:\r\n return MAORI_LANG;\r\n\r\n case VIDEO_PLAYER:\r\n return MAORI_LANG;\r\n\r\n default:\r\n return MAORI_LANG;\r\n }\r\n }\r\n\r\n // For Kauwhata Reo site\r\n if (siteNameFromCache === KWR) {\r\n switch (moduleName) {\r\n case METADATA:\r\n return toggleLang;\r\n\r\n case NAVIGATION:\r\n return toggleLang;\r\n\r\n case HEADER_FOOTER:\r\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\r\n\r\n case HOME_PAGE:\r\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\r\n\r\n case SOCIAL_SHARE:\r\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\r\n\r\n case ERROR_OR_NOTIFICATION:\r\n return toggleLang;\r\n\r\n case MY_PROFILE:\r\n return userPrefLang;\r\n\r\n case DOWNLOAD_KETE:\r\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\r\n\r\n case DOWNLOAD_KETE_SITE_LANGUAGE:\r\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\r\n\r\n case COLLECTIONS:\r\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\r\n\r\n case COLLECTIONS_SITE_LANGUAGE:\r\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\r\n\r\n case ADD_TO_KETE:\r\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\r\n\r\n case ADD_TO_KETE_SITE_LANGUAGE:\r\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\r\n\r\n case SEARCH:\r\n return MAORI_LANG;\r\n\r\n case SEARCH_SITE_LANGUAGE:\r\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\r\n\r\n case ACTION_BUTTONS:\r\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\r\n\r\n case VIDEO_PLAYER:\r\n return userPrefLang === ENGLISH_LANG && toggleLang === ENGLISH_LANG ? ENGLISH_LANG : MAORI_LANG;\r\n\r\n default:\r\n return MAORI_LANG;\r\n }\r\n }\r\n\r\n switch (moduleName) {\r\n case DOWNLOAD_KETE:\r\n return MAORI_LANG;\r\n\r\n case COLLECTIONS:\r\n return MAORI_LANG;\r\n\r\n case ADD_TO_KETE:\r\n return MAORI_LANG;\r\n\r\n case SEARCH:\r\n return MAORI_LANG;\r\n\r\n default:\r\n return toggleLang;\r\n }\r\n};\r\n\r\nexport function setCustomerLangInCache(props: { context: ICoreContext }) {\r\n const { context } = props;\r\n const user = context.request.user;\r\n\r\n if (!localStorage.getItem(`moeUserPrefLang${user.customerAccountNumber}`)) {\r\n void readAsync({ callerContext: context.actionContext, bypassCache: 'get' }, user.customerAccountNumber as any).then(\r\n customerData => {\r\n const customerLang = customerData.Language;\r\n localStorage.setItem(\r\n `moeUserPrefLang${user.customerAccountNumber}`,\r\n customerLang?.toLowerCase() === CUST_MAORI_LANG_CODE ? MAORI_LANG : ENGLISH_LANG\r\n );\r\n window.location.reload();\r\n }\r\n );\r\n }\r\n}\r\n\r\nexport function setTwksiteLangInCache(props: { context: ICoreContext }, siteName: string) {\r\n localStorage.setItem(`moeTwkSiteLang`, siteName);\r\n}\r\n\r\nexport function getTwksiteLangInCache() {\r\n return localStorage.getItem(`moeTwkSiteLang`);\r\n}\r\n\r\nexport function setOnlineChannelInfoInCache(context: ICoreContext, channelInfo: string) {\r\n const hostname = context.request.url?.requestUrl?.hostname;\r\n if (localStorage !== undefined) {\r\n localStorage.setItem(`moeOnlineChannelInfo${hostname}`, channelInfo);\r\n localStorage.setItem('moeOnlineChannelInfoTimer', JSON.stringify(new Date().getTime()));\r\n }\r\n}\r\n\r\nexport function getOnlineChannelInfoTimer(context: ICoreContext): number {\r\n return JSON.parse(localStorage.getItem('moeOnlineChannelInfoTimer') || '0');\r\n}\r\n\r\nexport function getSiteNameFromCache(siteName: string, context: ICoreContext) {\r\n const hostname = context.request.url?.requestUrl?.hostname;\r\n let onlineChannels: any[] = [];\r\n\r\n if (localStorage !== undefined) {\r\n onlineChannels = JSON.parse(localStorage.getItem(`moeOnlineChannelInfo${hostname}`) || '[]');\r\n }\r\n\r\n if (onlineChannels?.length > 0) {\r\n const channelIndex = onlineChannels.findIndex((item: any) => item.Id === context.request.apiSettings.channelId);\r\n if (channelIndex > -1) {\r\n if (onlineChannels[channelIndex]?.Name?.includes('ealand')) {\r\n return NZC;\r\n }\r\n\r\n if (onlineChannels[channelIndex]?.Name?.includes('hanga')) {\r\n return KOH;\r\n }\r\n\r\n if (onlineChannels[channelIndex]?.Name?.includes('hildhood')) {\r\n return TWK;\r\n }\r\n\r\n if (onlineChannels[channelIndex]?.Name?.includes('whata')) {\r\n return KWR;\r\n }\r\n\r\n if (onlineChannels[channelIndex]?.Name?.includes('Hub')) {\r\n return OCH;\r\n }\r\n }\r\n } else {\r\n return siteName;\r\n }\r\n\r\n return siteName;\r\n}\r\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","MsDyn365","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","localStorage","getItem","hours","setupTime","getOnlineChannelInfoTimer","Date","getTime","removeItem","getMOEOnlineStoresAsync","channelResponse","setOnlineChannelInfoInCache","JSON","stringify","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","isBrowser","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":""}