{"version":3,"file":"static/js/e2a3a9fae09678685046.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 useEffect(() => {\r\n const htmlElement: HTMLElement | null = document.querySelector('html');\r\n if (htmlElement) {\r\n htmlElement.lang = AXE_MAORI_LANG_CODE;\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 }\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 AXE_MAORI_LANG_CODE,\r\n ENGLISH_LANG_CODE,\r\n ENGLISH_TOGGLE_PREFIX,\r\n MAORI_LANG_CODE,\r\n MAORI_TOGGLE_PREFIX\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 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 // 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 }\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 useEffect(() => {\r\n const htmlElement: HTMLElement | null = document.querySelector('html');\r\n if (htmlElement) {\r\n htmlElement.lang = AXE_MAORI_LANG_CODE;\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) {\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 toggleLang;\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 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 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 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) {\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) {\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","Button","title","signInTextInMaori","signInUrl","onClick","onTelemetryClick","displayName","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","_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","_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","_context$request$url3","_onlineChannels","onlineChannels","channelIndex","findIndex","Id","apiSettings","channelId","_onlineChannels$chann","_onlineChannels$chann2","_onlineChannels$chann3","_onlineChannels$chann4","_onlineChannels$chann5","_onlineChannels$chann6","_onlineChannels$chann7","_onlineChannels$chann8","_onlineChannels$chann9","_onlineChannels$chann10","includes","binding","modules","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","id","c","require","$type","da","path","runOn","iNM","ns","n","p","pdp","md","__bindings__","viewDictionary","cn","BaseStoreSelectorStateManager","listMapViewState","displayList","displayMap","preferredStoreLocalStorageKey","isMapModuleLoaded","_readFromToCookie","storeInfo","_unused","_context","input","storeId","selectedStoreLocationId","storeName","writeToCookie","arguments","StoreId","StoreName","Latitude","Longitude","_writeToCookie","latitude","longitude","lastInlineShownStoreInfo","_removeCookie","cookieValue","__decorate","computed","observable","action","MapStoreSelectorStateManager","SERVICE_ENDPOINT","MAP_API_ENDPOINT","searchTerm","channel","BingMapsApiKey","BingMapsEnabled","searchContent","jsonp","crypto","getRandomValues","Uint32Array","ChannelCountryRegionISOCode","query","encodeURI","geolocationApiUrl","app","Promise","resolve","script","createElement","setAttribute","remove","resourceSets","point","coordinates","body","appendChild","_document","StringExtensions","getElementById","market","reject","_document2","_document3","_document3$body","type","async","defer","mapAPIReady","isMapApiLoaded","addEventListener","createStoreSelectorStateInput","GenericInput","getGenericActionDataAction","createObservableDataAction","getGenericAction","inputData","HeaderPreferredStore","modalCloseButtonRef","handleClick","_findPreferredStoreOnClick","storeSelectorStateManager","ArrayExtensions","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","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","isOBOAccountSelected","getAccountSelectionCookie","switchCustomerLinkAriaText","switchCustomerLinkText","removeAccountSelectionCookie","signUpCustomerNotFound","signUpMultipleCustomerFound","retailServerErrorCode","innerRef","format","shoppingAsText","setState","keyCode","KeyCodes","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":""}