{"version":3,"file":"./modules/HeaderActions.xxxxxxxx.js","mappings":"2KAIe,MAAMA,EAIjB,WAAAC,CAAmBC,EAAsBC,GAAtB,KAAAD,QAAAA,EACfE,KAAKC,QAAUD,KAAKF,QAAQI,cAC5BF,KAAKG,MAAQ,IAAI,UAAUH,KAAKC,QAAS,CAAEG,qBAAsB,oBAEjEJ,KAAKK,KAAKN,EACd,CAEU,IAAAM,CAAKN,GAKX,OAJAC,KAAKG,MAAMG,cAAcN,KAAKO,SAASR,IAEvCC,KAAKF,QAAQU,iBAAiB,SAASC,GAAKT,KAAKU,eAAeD,KAEzDT,IACX,CAEU,cAAAU,CAAeD,GACrBA,EAAEE,iBACFF,EAAEG,kBAEFZ,KAAKF,QAAQe,UAAUC,OAAO,qBAE1B,QAASd,KAAKF,QAAS,qBACvBiB,SAASP,iBAAiB,SAASC,GAAKT,KAAKgB,YAAYP,KACzDT,KAAKG,MAAMc,QACRjB,KAAKG,MAAMe,OACtB,CAEU,WAAAF,CAAYP,GAClB,MACMU,EADsBV,EAAEW,OACGC,QAAQ,0BAEpCF,GAAqBA,IAAsBnB,KAAKF,SAASE,KAAKsB,YACvE,CAEU,UAAAA,IACN,QAAYtB,KAAKF,QAAS,oBAC1BiB,SAASQ,oBAAoB,SAASd,GAAKT,KAAKgB,YAAYP,KAC5DT,KAAKG,MAAMe,OACf,CAEU,QAAAX,CAASR,GACf,OAAO,QAAwB,mKAIjBA,EAAayB,KAAIC,IAAM,QAAeA,KAAKC,KAAK,2DAIlE,E,+DCzDJ,MAAMC,EAAiB,gCAIR,MAAMC,EACjB,YAAOC,CAAMC,EAAmBH,GAC5BI,MAAMC,KAAKjB,SAASkB,iBAAiBH,IAAWI,QAAQC,IAAuBA,EAAKC,QAAQC,oBAAmBC,SAASxC,IACpH,IAAI8B,EAAc9B,GAClBA,EAAQsC,QAAQC,kBAAoB,MAAM,GAElD,CAEA,WAAAxC,CAAmBC,EAA8ByC,GAA9B,KAAAzC,QAAAA,EAA8B,KAAAyC,aAAAA,EAC7CvC,KAAKK,MACT,CAEQ,IAAAA,GAGJ,GAFAL,KAAKuC,aAAevC,KAAKuC,cAAgBvC,KAAKwC,mBAEzCxC,KAAKuC,aAAc,OAExB,MAAME,EAA6BV,MAAMC,KAAKhC,KAAKF,QAAQmC,iBAAiB,qBAE5EjC,KAAK0C,cAAcD,EAASzC,KAAKuC,cAEjCI,OAAOC,cACP7B,SAAS8B,cAAc,IAAIC,YAAY,gCAC3C,CAEQ,eAAAN,GACJ,MAAMO,EAAahC,SAASiC,cAAc,+BAE1C,OADoCD,GAAcE,KAAKC,MAAMH,EAAWI,YAAc,CAAC,CAE3F,CAEQ,aAAAT,CAAcD,EAA4BF,GAC9C,MAAM,WAAEa,GAAeb,EAEvBE,EAAQH,SAAQe,IACZ,MAAM,SAAEC,GAAaD,EAAEjB,QACnBmB,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,GAAS7D,KAAKgE,WAAWX,EAAGQ,EAAQ,GAEhD,CAEQ,UAAAG,CAAWC,EAA6BJ,GAC5C,IAAI,UAAmBI,EAAYJ,EACvC,EAgBAjC,EAAcC,MAAMF,E,gDCrExB,Q,QAAiC,O","sources":["webpack:///./modules/HeaderIconsSubmenu/HeaderIconsSubmenu.ts","webpack:///./modules/HeaderActions.ts","webpack:///./modules/HeaderIconsSubmenu/index.ts"],"sourcesContent":["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
\r\n `);\r\n }\r\n};\r\n\r\n","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 HeaderIconsSubmenu from './HeaderIconsSubmenu';\r\nexport default HeaderIconsSubmenu;"],"names":["HeaderIconsSubmenu","constructor","element","submenuItems","this","wrapper","parentElement","layer","layerModifierClasses","init","insertContent","getPopUp","addEventListener","e","onElementClick","preventDefault","stopPropagation","classList","toggle","document","onBodyClick","open","close","currentActionItem","target","closest","closeLayer","removeEventListener","map","si","join","moduleSelector","HeaderActions","setup","selector","Array","from","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","navStructure","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"],"sourceRoot":""}