{"version":3,"file":"metismenujs.js","sources":["modules/constant.js","modules/index.js"],"sourcesContent":["export const Default = {\n parentTrigger: \"li\",\n subMenu: \"ul\",\n toggle: true,\n triggerElement: \"a\"\n};\nexport const ClassNames = {\n activeClass: \"active\",\n collapseClass: \"collapse\",\n collapseInClass: \"in\",\n collapsingClass: \"collapsing\"\n};\n","import { ClassNames, Default } from \"./constant\";\nclass MetisMenu {\n constructor(element, options) {\n this.element =\n typeof element === \"string\" ? document.querySelector(element) : element;\n this.cacheEl = this.element;\n this.config = { ...Default, ...options };\n this.cacheConfig = this.config;\n this.disposed = false;\n this.ulArr = [];\n this.listenerOb = [];\n this.init();\n }\n update() {\n this.disposed = false;\n this.element = this.cacheEl;\n this.config = this.cacheConfig;\n this.init();\n }\n dispose() {\n for (const lo of this.listenerOb) {\n for (const key in lo) {\n if (lo.hasOwnProperty(key)) {\n const el = lo[key];\n el[1].removeEventListener(el[0], el[2]);\n }\n }\n }\n this.ulArr = [];\n this.listenerOb = [];\n this.config = null;\n this.element = null;\n this.disposed = true;\n }\n on(event, fn) {\n this.element.addEventListener(event, fn, false);\n return this;\n }\n off(event, fn) {\n this.element.removeEventListener(event, fn);\n return this;\n }\n emit(event, eventDetail, shouldBubble = false) {\n let evt;\n if (typeof CustomEvent === \"function\") {\n evt = new CustomEvent(event, {\n bubbles: shouldBubble,\n detail: eventDetail\n });\n }\n else {\n evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(event, shouldBubble, false, eventDetail);\n }\n this.element.dispatchEvent(evt);\n return this;\n }\n init() {\n this.ulArr = [].slice.call(this.element.querySelectorAll(this.config.subMenu));\n for (const ul of this.ulArr) {\n const li = ul.parentNode;\n ul.classList.add(ClassNames.collapseClass);\n if (li.classList.contains(ClassNames.activeClass)) {\n this.show(ul);\n }\n else {\n this.hide(ul);\n }\n const a = li.querySelector(this.config.triggerElement);\n if (a.getAttribute(\"aria-disabled\") === \"true\") {\n return;\n }\n a.setAttribute(\"aria-expanded\", \"false\");\n const listenerOb = {\n aClick: [\"click\", a, this.clickEvent.bind(this)]\n };\n for (const key in listenerOb) {\n if (listenerOb.hasOwnProperty(key)) {\n const listener = listenerOb[key];\n listener[1].addEventListener(listener[0], listener[2]);\n }\n }\n this.listenerOb.push(listenerOb);\n }\n }\n clickEvent(ev) {\n if (!this.disposed) {\n if (ev.currentTarget.tagName === \"A\") {\n ev.preventDefault();\n }\n const li = ev.currentTarget.parentNode;\n const ul = li.querySelector(this.config.subMenu);\n this.toggle(ul);\n }\n }\n toggle(ul) {\n if (ul.parentNode.classList.contains(ClassNames.activeClass)) {\n this.hide(ul);\n }\n else {\n this.show(ul);\n }\n }\n show(ul) {\n if (this.isTransitioning ||\n ul.classList.contains(ClassNames.collapseInClass)) {\n return;\n }\n const complete = () => {\n ul.classList.remove(ClassNames.collapsingClass);\n ul.style.height = \"\";\n ul.removeEventListener(\"transitionend\", complete);\n this.setTransitioning(false);\n this.emit(\"shown.metisMenu\", {\n shownElement: ul\n });\n };\n const li = ul.parentNode;\n li.classList.add(ClassNames.activeClass);\n const a = li.querySelector(this.config.triggerElement);\n a.setAttribute(\"aria-expanded\", \"true\");\n ul.style.height = \"0px\";\n ul.classList.remove(ClassNames.collapseClass);\n ul.classList.remove(ClassNames.collapseInClass);\n ul.classList.add(ClassNames.collapsingClass);\n const eleParentSiblins = [].slice\n .call(li.parentNode.children)\n .filter(c => c !== li);\n if (this.config.toggle && eleParentSiblins.length > 0) {\n for (const sibli of eleParentSiblins) {\n const sibUl = sibli.querySelector(this.config.subMenu);\n if (sibUl !== null) {\n this.hide(sibUl);\n }\n }\n }\n this.setTransitioning(true);\n ul.classList.add(ClassNames.collapseClass);\n ul.classList.add(ClassNames.collapseInClass);\n ul.style.height = ul.scrollHeight + \"px\";\n this.emit(\"show.metisMenu\", {\n showElement: ul\n });\n ul.addEventListener(\"transitionend\", complete);\n }\n hide(ul) {\n if (this.isTransitioning ||\n !ul.classList.contains(ClassNames.collapseInClass)) {\n return;\n }\n this.emit(\"hide.metisMenu\", {\n hideElement: ul\n });\n const li = ul.parentNode;\n li.classList.remove(ClassNames.activeClass);\n const complete = () => {\n ul.classList.remove(ClassNames.collapsingClass);\n ul.classList.add(ClassNames.collapseClass);\n ul.removeEventListener(\"transitionend\", complete);\n this.setTransitioning(false);\n this.emit(\"hidden.metisMenu\", {\n hiddenElement: ul\n });\n };\n ul.style.height = ul.getBoundingClientRect().height + \"px\";\n ul.style.height = ul.offsetHeight + \"px\";\n ul.classList.add(ClassNames.collapsingClass);\n ul.classList.remove(ClassNames.collapseClass);\n ul.classList.remove(ClassNames.collapseInClass);\n this.setTransitioning(true);\n ul.addEventListener(\"transitionend\", complete);\n ul.style.height = \"0px\";\n const a = li.querySelector(this.config.triggerElement);\n a.setAttribute(\"aria-expanded\", \"false\");\n }\n setTransitioning(isTransitioning) {\n this.isTransitioning = isTransitioning;\n }\n}\nexport default MetisMenu;\n"],"names":["Default","parentTrigger","subMenu","toggle","triggerElement","ClassNames","activeClass","collapseClass","collapseInClass","collapsingClass","MetisMenu","element","options","document","querySelector","cacheEl","config","cacheConfig","disposed","ulArr","listenerOb","init","update","dispose","lo","key","hasOwnProperty","el","removeEventListener","on","event","fn","addEventListener","off","emit","eventDetail","shouldBubble","evt","CustomEvent","bubbles","detail","createEvent","initCustomEvent","dispatchEvent","slice","call","querySelectorAll","ul","li","parentNode","classList","add","contains","show","hide","a","getAttribute","setAttribute","aClick","clickEvent","bind","listener","push","ev","currentTarget","tagName","preventDefault","isTransitioning","complete","remove","style","height","setTransitioning","shownElement","eleParentSiblins","children","filter","c","length","sibli","sibUl","scrollHeight","showElement","hideElement","hiddenElement","getBoundingClientRect","offsetHeight"],"mappings":"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"}