js-dropdown-menu
Version:
Simple drop-down menu.
1 lines • 2.29 kB
JavaScript
!function(e,t){if("function"==typeof define&&define.amd)define(["exports"],t);else if("undefined"!=typeof exports)t(exports);else{var n={};t(n),e.jsDropdownMenu=n}}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,function(e){"use strict";function c(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,o)}return n}function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=function(){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),this.options=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};if(t%2)for(var o=c(Object(n),!0),s=0;s<o.length;s++)a=o[s],u(e,a,n[a]);else if(Object.getOwnPropertyDescriptors)Object.defineProperties(e,Object.getOwnPropertyDescriptors(n));else for(var r=c(Object(n)),i=0;i<r.length;i++)l=r[i],Object.defineProperty(e,l,Object.getOwnPropertyDescriptor(n,l))}var l,a;return e}({},{class:"dropdown-menu",openClass:"dropdown-menu-show",closeClick:!0},{},e),this.init()}var e,n,o;return e=t,(n=[{key:"init",value:function(){var t=this;document.addEventListener("click",function(e){t.handleClick(e)})}},{key:"handleClick",value:function(e){e.target.classList.contains(this.options.class+"-button")||e.target.closest("."+this.options.class+"-button")?(e.preventDefault(),this.handleDropdown(e.target)):this.options.closeClick&&this.handleClose(e.target)}},{key:"handleDropdown",value:function(e){var t=e.closest("."+this.options.class);t.classList.toggle(this.options.openClass),this.handleClose(t)}},{key:"handleClose",value:function(e){for(var t,n=this,o=document.getElementsByClassName(this.options.class),s=0;s<o.length;s++)(t=o[s])!==e&&n.removeClass(t)}},{key:"removeClass",value:function(e){e.classList.remove(this.options.openClass)}}])&&s(e.prototype,n),o&&s(e,o),t}();e.default=t});