{"version":3,"file":"./modules/HeaderActions.xxxxxxxx.js","mappings":"wJAAA,MAAMA,EAAiB,gCAIR,MAAMC,EACjB,YAAOC,CAAMC,EAAmBH,GAC5BI,MAAMC,KAAKC,SAASC,iBAAiBJ,IAAWK,QAAQC,IAAuBA,EAAKC,QAAQC,oBAAmBC,SAASC,IACpH,IAAIZ,EAAcY,GAClBA,EAAQH,QAAQC,kBAAoB,MAAM,GAElD,CAEA,WAAAG,CAAmBD,EAA8BE,GAA9B,KAAAF,QAAAA,EAA8B,KAAAE,aAAAA,EAC7CC,KAAKC,MACT,CAEQ,IAAAA,GAGJ,GAFAD,KAAKD,aAAeC,KAAKD,cAAgBC,KAAKE,mBAEzCF,KAAKD,aAAc,OAExB,MAAMI,EAA6Bf,MAAMC,KAAKW,KAAKH,QAAQN,iBAAiB,qBAE5ES,KAAKI,cAAcD,EAASH,KAAKD,cAEjCM,OAAOC,cACPhB,SAASiB,cAAc,IAAIC,YAAY,gCAC3C,CAEQ,eAAAN,GACJ,MAAMO,EAAanB,SAASoB,cAAc,+BAE1C,OADoCD,GAAcE,KAAKC,MAAMH,EAAWI,YAAc,CAAC,CAE3F,CAEQ,aAAAT,CAAcD,EAA4BJ,GAC9C,MAAM,WAAEe,GAAef,EAEvBI,EAAQP,SAAQmB,IACZ,MAAM,SAAEC,GAAaD,EAAErB,QACnBuB,EAAaH,EAAWI,MAAKC,GAAMA,EAAGC,KAAOJ,IAEjD,IAAKC,EAAY,OAEjB,MAAM,KAAEI,EAAI,OAAEC,EAAM,QAAEC,GAAYN,EAE9BI,IAAMN,EAAES,KAAOH,GACfC,GAAQP,EAAEU,aAAa,cAAeH,GACtCC,GAASvB,KAAK0B,WAAWX,EAAGQ,EAAQ,GAEhD,CAEQ,UAAAG,CAAWC,EAA6BJ,GAC5C,IAAI,UAAmBI,EAAYJ,EACvC,EAgBAtC,EAAcC,MAAMF,E,oFClET,MAAM4C,EAIjB,WAAA9B,CAAmBD,EAAsBgC,GAAtB,KAAAhC,QAAAA,EACfG,KAAK8B,QAAU9B,KAAKH,QAAQkC,cAC5B/B,KAAKgC,MAAQ,IAAI,UAAUhC,KAAK8B,QAAS,CAAEG,qBAAsB,oBAEjEjC,KAAKC,KAAK4B,EACd,CAEU,IAAA5B,CAAK4B,GAKX,OAJA7B,KAAKgC,MAAME,cAAclC,KAAKmC,SAASN,IAEvC7B,KAAKH,QAAQuC,iBAAiB,SAASC,GAAKrC,KAAKsC,eAAeD,KAEzDrC,IACX,CAEU,cAAAsC,CAAeD,GACrBA,EAAEE,iBACFF,EAAEG,kBAEFxC,KAAKH,QAAQ4C,UAAUC,OAAO,qBAE1B,QAAS1C,KAAKH,QAAS,qBACvBP,SAAS8C,iBAAiB,SAASC,GAAKrC,KAAK2C,YAAYN,KACzDrC,KAAKgC,MAAMY,QACR5C,KAAKgC,MAAMa,OACtB,CAEU,WAAAF,CAAYN,GAClB,MACMS,EADsBT,EAAEU,OACGC,QAAQ,0BAEpCF,GAAqBA,IAAsB9C,KAAKH,SAASG,KAAKiD,YACvE,CAEU,UAAAA,IACN,QAAYjD,KAAKH,QAAS,oBAC1BP,SAAS4D,oBAAoB,SAASb,GAAKrC,KAAK2C,YAAYN,KAC5DrC,KAAKgC,MAAMa,OACf,CAEU,QAAAV,CAASN,GACf,OAAO,QAAwB,mKAIjBA,EAAasB,KAAIC,IAAM,QAAeA,KAAKC,KAAK,2DAIlE,E,gDCxDJ,Q,SAAiC,O","sources":["webpack:///./modules/HeaderActions.ts","webpack:///./modules/HeaderIconsSubmenu/HeaderIconsSubmenu.ts","webpack:///./modules/HeaderIconsSubmenu/index.ts"],"sourcesContent":["const moduleSelector = '[data-module=\"HeaderActions\"]';\r\n\r\nimport HeaderIconsSubmenu from './HeaderIconsSubmenu';\r\n\r\nexport default class HeaderActions {\r\n static setup(selector: string = moduleSelector): void {\r\n Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n new HeaderActions(element);\r\n element.dataset.moduleInitialized = 'true';\r\n });\r\n }\r\n\r\n constructor(public element: HTMLElement, private navStructure?: INavStructure) {\r\n this.init();\r\n }\r\n\r\n private init(): void {\r\n this.navStructure = this.navStructure || this.getNavStructure();\r\n\r\n if (!this.navStructure) return;\r\n\r\n const actions = Array.from(this.element.querySelectorAll('[data-action-id]'));\r\n\r\n this.adjustActions(actions, this.navStructure);\r\n\r\n NiveaX.initModules();\r\n document.dispatchEvent(new CustomEvent('niveax:desktopActionIconInit'));\r\n }\r\n\r\n private getNavStructure(): INavStructure {\r\n const configNode = document.querySelector('[data-navigation-structure]');\r\n const navStructure: INavStructure = configNode && JSON.parse(configNode.innerHTML) || {};\r\n return navStructure;\r\n }\r\n\r\n private adjustActions(actions: HTMLLinkElement[], navStructure: INavStructure): void {\r\n const { ActionMenu } = navStructure;\r\n\r\n actions.forEach(a => {\r\n const { actionId } = a.dataset,\r\n actionData = ActionMenu.find(am => am.Id === actionId);\r\n\r\n if (!actionData) return;\r\n\r\n const { Link, Module, Submenu } = actionData;\r\n\r\n if (Link) a.href = Link;\r\n if (Module) a.setAttribute('data-module', Module);\r\n if (Submenu) this.addSubmenu(a, Submenu);\r\n });\r\n }\r\n\r\n private addSubmenu(actionItem: HTMLLinkElement, Submenu: NavSubmenuItem[]): void {\r\n new HeaderIconsSubmenu(actionItem, Submenu);\r\n }\r\n}\r\n\r\n// Hot Module Replacement\r\nif (module.hot) {\r\n let nodesCache: HMRNodes[] = Array.from(document.querySelectorAll(moduleSelector)).map((element: Node) => ({ nodeToReplace: element, nodeOrigin: element.cloneNode(true) }));\r\n\r\n HeaderActions.setup(moduleSelector);\r\n\r\n module.hot.accept(() => {\r\n HeaderActions.setup(moduleSelector);\r\n });\r\n module.hot.dispose(() => {\r\n nodesCache.forEach(({ nodeToReplace, nodeOrigin }) => { nodeToReplace = nodeToReplace.parentElement.replaceChild(nodeOrigin.cloneNode(true), nodeToReplace) });\r\n });\r\n} else {\r\n HeaderActions.setup(moduleSelector);\r\n}","import LayerTiny from '../LayerTiny';\r\nimport { hasClass, removeClass, createElementFromString } from '../../helpers/DOMHelpers';\r\nimport { getSubmenuItem } from '../../libs/markUpCreator';\r\n\r\nexport default class HeaderIconsSubmenu {\r\n private wrapper: HTMLElement;\r\n private layer: LayerTiny;\r\n\r\n constructor(public element: HTMLElement, submenuItems: NavSubmenuItem[]) {\r\n this.wrapper = this.element.parentElement;\r\n this.layer = new LayerTiny(this.wrapper, { layerModifierClasses: 'nx-layer--popup' });\r\n\r\n this.init(submenuItems);\r\n }\r\n\r\n protected init(submenuItems: NavSubmenuItem[]): HeaderIconsSubmenu {\r\n this.layer.insertContent(this.getPopUp(submenuItems));\r\n\r\n this.element.addEventListener('click', e => this.onElementClick(e));\r\n\r\n return this;\r\n }\r\n\r\n protected onElementClick(e: Event): void {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n this.element.classList.toggle('nx-submenu--open');\r\n\r\n if (hasClass(this.element, 'nx-submenu--open')) {\r\n document.addEventListener('click', e => this.onBodyClick(e));\r\n this.layer.open();\r\n } else this.layer.close();\r\n }\r\n\r\n protected onBodyClick(e: Event): void {\r\n const target = e.target;\r\n const currentActionItem = target.closest('.nx-header-icons__link');\r\n\r\n if (!currentActionItem || currentActionItem === this.element) this.closeLayer();\r\n };\r\n\r\n protected closeLayer(): void {\r\n removeClass(this.element, 'nx-submenu--open')\r\n document.removeEventListener('click', e => this.onBodyClick(e));\r\n this.layer.close();\r\n }\r\n\r\n protected getPopUp(submenuItems: NavSubmenuItem[]): HTMLElement {\r\n return createElementFromString(`\r\n
\r\n

\r\n
    \r\n ${submenuItems.map(si => getSubmenuItem(si)).join('')}\r\n
\r\n
\r\n `);\r\n }\r\n};\r\n\r\n","import HeaderIconsSubmenu from './HeaderIconsSubmenu';\r\nexport default HeaderIconsSubmenu;"],"names":["moduleSelector","HeaderActions","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","element","constructor","navStructure","this","init","getNavStructure","actions","adjustActions","NiveaX","initModules","dispatchEvent","CustomEvent","configNode","querySelector","JSON","parse","innerHTML","ActionMenu","a","actionId","actionData","find","am","Id","Link","Module","Submenu","href","setAttribute","addSubmenu","actionItem","HeaderIconsSubmenu","submenuItems","wrapper","parentElement","layer","layerModifierClasses","insertContent","getPopUp","addEventListener","e","onElementClick","preventDefault","stopPropagation","classList","toggle","onBodyClick","open","close","currentActionItem","target","closest","closeLayer","removeEventListener","map","si","join"],"sourceRoot":""}