{"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 = { ...Default, ...config };\n this.transitioning = null;\n\n this.init();\n }\n\n init() {\n const self = this;\n const conf = this.config;\n\n $(this.element).addClass(ClassName.METIS); // add metismenu class to element\n\n $(this.element)\n .find(`${conf.parentTrigger}.${ClassName.ACTIVE}`)\n .children(conf.triggerElement)\n .attr('aria-expanded', 'true'); // add attribute aria-expanded=true the trigger element\n\n $(this.element)\n .find(`${conf.parentTrigger}.${ClassName.ACTIVE}`)\n .parents(conf.parentTrigger)\n .addClass(ClassName.ACTIVE);\n\n $(this.element)\n .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 $(this.element)\n .find(`${conf.parentTrigger}.${ClassName.ACTIVE}`)\n .has(conf.subMenu)\n .children(conf.subMenu)\n .addClass(`${ClassName.COLLAPSE} ${ClassName.SHOW}`);\n\n $(this.element)\n .find(conf.parentTrigger)\n .not(`.${ClassName.ACTIVE}`)\n .has(conf.subMenu)\n .children(conf.subMenu)\n .addClass(ClassName.COLLAPSE);\n\n $(this.element)\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 const paRent = eTar.parent(conf.parentTrigger);\n const sibLings = paRent\n .siblings(conf.parentTrigger)\n .children(conf.triggerElement);\n const List = paRent.children(conf.subMenu);\n if (conf.preventDefault) {\n e.preventDefault();\n }\n if (eTar.attr('aria-disabled') === 'true') {\n return;\n }\n if (paRent.hasClass(ClassName.ACTIVE)) {\n eTar.attr('aria-expanded', 'false');\n self.hide(List);\n } else {\n self.show(List);\n eTar.attr('aria-expanded', 'true');\n if (conf.toggle) {\n sibLings.attr('aria-expanded', 'false');\n }\n }\n\n if (conf.onTransitionStart) {\n conf.onTransitionStart(e);\n }\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('click');\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","addClass","find","children","attr","parents","has","not","on","e","eTar","paRent","parent","sibLings","siblings","List","hasClass","hide","show","onTransitionStart","elem","startEvent","isDefaultPrevented","toggleElem","removeClass","height","setTransitioning","complete","scrollHeight","offsetHeight","onTransitionEnd","css","isTransitioning","dispose","removeData","off","jQueryInterface","each","$this","data","Error","Constructor","noConflict"],"mappings":"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"}