{"version":3,"file":"metisMenu.js","sources":["../src/util.js","../src/index.js"],"sourcesContent":["import $ from 'jquery';\n\nconst Util = (($) => { // eslint-disable-line no-shadow\n const TRANSITION_END = 'transitionend';\n\n const Util = { // eslint-disable-line no-shadow\n TRANSITION_END: 'mmTransitionEnd',\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END);\n },\n\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END);\n },\n };\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(event.target).is(this)) {\n return event\n .handleObj\n .handler\n .apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n return undefined;\n },\n };\n }\n\n function transitionEndEmulator(duration) {\n let called = false;\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true;\n });\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this);\n }\n }, duration);\n\n return this;\n }\n\n function setTransitionEndSupport() {\n $.fn.mmEmulateTransitionEnd = transitionEndEmulator; // eslint-disable-line no-param-reassign\n // eslint-disable-next-line no-param-reassign\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n\n setTransitionEndSupport();\n\n return Util;\n})($);\n\nexport default Util;\n","import $ from 'jquery';\nimport Util from './util';\n\nconst NAME = 'metisMenu';\nconst DATA_KEY = 'metisMenu';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst DATA_API_KEY = '.data-api';\nconst JQUERY_NO_CONFLICT = $.fn[NAME];\nconst TRANSITION_DURATION = 350;\n\nconst Default = {\n toggle: true,\n preventDefault: true,\n triggerElement: 'a',\n parentTrigger: 'li',\n subMenu: 'ul',\n};\n\nconst Event = {\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n CLICK_DATA_API: `click${EVENT_KEY}${DATA_API_KEY}`,\n};\n\nconst ClassName = {\n METIS: 'metismenu',\n ACTIVE: 'mm-active',\n SHOW: 'mm-show',\n COLLAPSE: 'mm-collapse',\n COLLAPSING: 'mm-collapsing',\n COLLAPSED: 'mm-collapsed',\n};\n\nclass MetisMenu {\n // eslint-disable-line no-shadow\n constructor(element, config) {\n this.element = element;\n this.config = {\n ...Default,\n ...config,\n };\n this.transitioning = null;\n\n this.init();\n }\n\n init() {\n const self = this;\n const conf = this.config;\n const el = $(this.element);\n\n el.addClass(ClassName.METIS); // add metismenu class to element\n\n el.find(`${conf.parentTrigger}.${ClassName.ACTIVE}`)\n .children(conf.triggerElement)\n .attr('aria-expanded', 'true'); // add attribute aria-expanded=true the trigger element\n\n el.find(`${conf.parentTrigger}.${ClassName.ACTIVE}`)\n .parents(conf.parentTrigger)\n .addClass(ClassName.ACTIVE);\n\n el.find(`${conf.parentTrigger}.${ClassName.ACTIVE}`)\n .parents(conf.parentTrigger)\n .children(conf.triggerElement)\n .attr('aria-expanded', 'true'); // add attribute aria-expanded=true the triggers of all parents\n\n el.find(`${conf.parentTrigger}.${ClassName.ACTIVE}`)\n .has(conf.subMenu)\n .children(conf.subMenu)\n .addClass(`${ClassName.COLLAPSE} ${ClassName.SHOW}`);\n\n el\n .find(conf.parentTrigger)\n .not(`.${ClassName.ACTIVE}`)\n .has(conf.subMenu)\n .children(conf.subMenu)\n .addClass(ClassName.COLLAPSE);\n\n el\n .find(conf.parentTrigger)\n // .has(conf.subMenu)\n .children(conf.triggerElement)\n .on(Event.CLICK_DATA_API, function (e) { // eslint-disable-line func-names\n const eTar = $(this);\n\n if (eTar.attr('aria-disabled') === 'true') {\n return;\n }\n\n if (conf.preventDefault && eTar.attr('href') === '#') {\n e.preventDefault();\n }\n\n const paRent = eTar.parent(conf.parentTrigger);\n const sibLi = paRent.siblings(conf.parentTrigger);\n const sibTrigger = sibLi.children(conf.triggerElement);\n\n if (paRent.hasClass(ClassName.ACTIVE)) {\n eTar.attr('aria-expanded', 'false');\n self.removeActive(paRent);\n } else {\n eTar.attr('aria-expanded', 'true');\n self.setActive(paRent);\n if (conf.toggle) {\n self.removeActive(sibLi);\n sibTrigger.attr('aria-expanded', 'false');\n }\n }\n\n if (conf.onTransitionStart) {\n conf.onTransitionStart(e);\n }\n });\n }\n\n setActive(li) {\n $(li).addClass(ClassName.ACTIVE);\n const ul = $(li).children(this.config.subMenu);\n if (ul.length > 0 && !ul.hasClass(ClassName.SHOW)) {\n this.show(ul);\n }\n }\n\n removeActive(li) {\n $(li).removeClass(ClassName.ACTIVE);\n const ul = $(li).children(`${this.config.subMenu}.${ClassName.SHOW}`);\n if (ul.length > 0) {\n this.hide(ul);\n }\n }\n\n show(element) {\n if (this.transitioning || $(element).hasClass(ClassName.COLLAPSING)) {\n return;\n }\n const elem = $(element);\n\n const startEvent = $.Event(Event.SHOW);\n elem.trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n elem.parent(this.config.parentTrigger).addClass(ClassName.ACTIVE);\n\n if (this.config.toggle) {\n const toggleElem = elem.parent(this.config.parentTrigger).siblings().children(`${this.config.subMenu}.${ClassName.SHOW}`);\n this.hide(toggleElem);\n }\n\n elem\n .removeClass(ClassName.COLLAPSE)\n .addClass(ClassName.COLLAPSING)\n .height(0);\n\n this.setTransitioning(true);\n\n const complete = () => {\n // check if disposed\n if (!this.config || !this.element) {\n return;\n }\n elem\n .removeClass(ClassName.COLLAPSING)\n .addClass(`${ClassName.COLLAPSE} ${ClassName.SHOW}`)\n .height('');\n\n this.setTransitioning(false);\n\n elem.trigger(Event.SHOWN);\n };\n\n elem\n .height(element[0].scrollHeight)\n .one(Util.TRANSITION_END, complete)\n .mmEmulateTransitionEnd(TRANSITION_DURATION);\n }\n\n hide(element) {\n if (\n this.transitioning || !$(element).hasClass(ClassName.SHOW)\n ) {\n return;\n }\n\n const elem = $(element);\n\n const startEvent = $.Event(Event.HIDE);\n elem.trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n elem.parent(this.config.parentTrigger).removeClass(ClassName.ACTIVE);\n // eslint-disable-next-line no-unused-expressions\n elem.height(elem.height())[0].offsetHeight;\n\n elem\n .addClass(ClassName.COLLAPSING)\n .removeClass(ClassName.COLLAPSE)\n .removeClass(ClassName.SHOW);\n\n this.setTransitioning(true);\n\n const complete = () => {\n // check if disposed\n if (!this.config || !this.element) {\n return;\n }\n if (this.transitioning && this.config.onTransitionEnd) {\n this.config.onTransitionEnd();\n }\n\n this.setTransitioning(false);\n elem.trigger(Event.HIDDEN);\n\n elem\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE);\n };\n\n if (elem.height() === 0 || elem.css('display') === 'none') {\n complete();\n } else {\n elem\n .height(0)\n .one(Util.TRANSITION_END, complete)\n .mmEmulateTransitionEnd(TRANSITION_DURATION);\n }\n }\n\n setTransitioning(isTransitioning) {\n this.transitioning = isTransitioning;\n }\n\n dispose() {\n $.removeData(this.element, DATA_KEY);\n\n $(this.element)\n .find(this.config.parentTrigger)\n // .has(this.config.subMenu)\n .children(this.config.triggerElement)\n .off(Event.CLICK_DATA_API);\n\n this.transitioning = null;\n this.config = null;\n this.element = null;\n }\n\n static jQueryInterface(config) {\n // eslint-disable-next-line func-names\n return this.each(function () {\n const $this = $(this);\n let data = $this.data(DATA_KEY);\n const conf = {\n ...Default,\n ...$this.data(),\n ...(typeof config === 'object' && config ? config : {}),\n };\n\n if (!data) {\n data = new MetisMenu(this, conf);\n $this.data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n if (data[config] === undefined) {\n throw new Error(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n}\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = MetisMenu.jQueryInterface; // eslint-disable-line no-param-reassign\n$.fn[NAME].Constructor = MetisMenu; // eslint-disable-line no-param-reassign\n$.fn[NAME].noConflict = () => {\n // eslint-disable-line no-param-reassign\n $.fn[NAME] = JQUERY_NO_CONFLICT; // eslint-disable-line no-param-reassign\n return MetisMenu.jQueryInterface;\n};\n\nexport default MetisMenu;\n"],"names":["Util","$","TRANSITION_END","triggerTransitionEnd","element","trigger","supportsTransitionEnd","Boolean","getSpecialTransitionEndEvent","bindType","delegateType","handle","event","target","is","handleObj","handler","apply","arguments","undefined","transitionEndEmulator","duration","called","one","setTimeout","setTransitionEndSupport","fn","mmEmulateTransitionEnd","special","NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","TRANSITION_DURATION","Default","toggle","preventDefault","triggerElement","parentTrigger","subMenu","Event","SHOW","SHOWN","HIDE","HIDDEN","CLICK_DATA_API","ClassName","METIS","ACTIVE","COLLAPSE","COLLAPSING","COLLAPSED","MetisMenu","config","transitioning","init","self","conf","el","addClass","find","children","attr","parents","has","not","on","e","eTar","paRent","parent","sibLi","siblings","sibTrigger","hasClass","removeActive","setActive","onTransitionStart","li","ul","length","show","removeClass","hide","elem","startEvent","isDefaultPrevented","toggleElem","height","setTransitioning","complete","scrollHeight","offsetHeight","onTransitionEnd","css","isTransitioning","dispose","removeData","off","jQueryInterface","each","$this","data","Error","Constructor","noConflict"],"mappings":"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"}