advanced-menus
Advanced tools
Comparing version 1.0.7 to 1.0.8
@@ -1,1 +0,1 @@ | ||
!function(e){function t(n){if(s[n])return s[n].exports;var i=s[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var s={};t.m=e,t.c=s,t.i=function(e){return e},t.d=function(e,s,n){t.o(e,s)||Object.defineProperty(e,s,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var s=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(s,"a",s),s},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=1)}([function(e,t,s){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(){function e(e,t){for(var s=0;s<t.length;s++){var n=t[s];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,s,n){return s&&e(t.prototype,s),n&&e(t,n),t}}(),u=function(){function e(t){n(this,e),this.config(t);var s=this.settings.selectors;if(this.menu=document.getElementById(s.menu_id),!this.menu)return void console.error("unable to find the menu with selector: "+s.menu_id);if(this.menuitems=this.menu.querySelectorAll(s.menuitem+" a"),this.submenus=this.menu.querySelectorAll(s.submenu),this.submenus.length)for(var i=0;i<this.submenus.length;i++)this.submenus[i].parentNode.classList.add("am-has-children");var o;if(this.settings.options.use_handles?(this.initHandles(),o=this.menu.querySelectorAll(s.menuitem+" .handle")):o=this.menu.querySelectorAll(s.menuitem+" a"),this.registerEventAll(o,"click",this.onMenuItemClick),this.submenus.length)for(var i=0;i<this.submenus.length;i++)this.initSubmenu(this.submenus[i]);this.toggleButtons=document.querySelectorAll(s.toggle_button),this.registerEventAll(this.toggleButtons,"click",this.toggle),this.openButtons=document.querySelectorAll(s.open_button),this.registerEventAll(this.openButtons,"click",this.open),this.closeButtons=document.querySelectorAll(s.close_button),this.registerEventAll(this.closeButtons,"click",this.close),document.addEventListener("touchstart",this.onTouchStart.bind(this),!1),document.addEventListener("touchmove",this.onTouchMove.bind(this),!1),this.settings.options.autoclose&&document.addEventListener("mousedown",this.documentClick.bind(this))}return o(e,[{key:"config",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this.settings||{options:{disable_scroll:!1,autoclose:!0,use_handles:!0},events:{swipeLeft:function(){},swipeRight:function(){},swipeUp:function(){},swipeDown:function(){}},selectors:{menu_id:"main-menu",menuitem:"li",submenu:"li > ul",toggle_button:!1,open_button:!1,close_button:!1}};for(var s in t)if("object"==i(t[s])&&e[s])for(var n in t[s])void 0!==e[s][n]&&(t[s][n]=e[s][n]);return this.settings=t,console.log("Config::",this.settings),this}},{key:"onMenuItemClick",value:function(e){for(var t=e.target.parentNode.classList.contains("active"),s=e.target.parentNode.parentNode.querySelectorAll(".am-has-children"),n=0;n<s.length;n++)s[n].classList.remove("active");t||e.target.parentNode.classList.add("active");var i=e.target.parentNode.querySelector(this.settings.selectors.submenu);if(!i)return void this.close();e.preventDefault(),e.target.parentNode.removeAttribute("style"),this.toggleSubmenu(i)}},{key:"toggle",value:function(){if(this.menu.classList.toggle("active"),document.body.classList.toggle("am-menu-active"),document.body.classList.toggle("menu-"+this.settings.selectors.menu_id+"-active"),this.settings.options.disable_scroll&&document.body.classList.toggle("scroll-disabled"),!this.menu.classList.contains("active"))for(var e=0;e<this.submenus.length;e++)this.closeSubmenu(this.submenus[e])}},{key:"open",value:function(){this.menu.classList.add("active"),document.body.classList.add("am-menu-active"),document.body.classList.add("menu-"+this.settings.selectors.menu_id+"-active"),this.settings.options.disable_scroll&&document.body.classList.add("scroll-disabled")}},{key:"close",value:function(){for(var e=this.menu.querySelectorAll(".am-has-children"),t=0;t<e.length;t++)e[t].classList.remove("active");for(var t=0;t<this.submenus.length;t++)this.closeSubmenu(this.submenus[t]);this.menu.classList.contains("active")&&(this.menu.classList.remove("active"),document.body.classList.remove("am-menu-active"),document.body.classList.remove("menu-"+this.settings.selectors.menu_id+"-active"),this.settings.options.disable_scroll&&document.body.classList.remove("scroll-disabled"))}},{key:"toggleSubmenu",value:function(e){e.classList.contains("active")||this.can_open_multiple(this.closest(e,e.className)),e.classList.toggle("active")}},{key:"openSubmenu",value:function(e){this.can_open_multiple(),e.classList.add("active")}},{key:"closeSubmenu",value:function(e){e.classList.remove("active")}},{key:"onTouchStart",value:function(e){this.xDown=e.touches[0].clientX,this.yDown=e.touches[0].clientY}},{key:"onTouchMove",value:function(e){if(this.xDown&&this.yDown){var t=e.touches[0].clientX,s=e.touches[0].clientY,n=this.xDown-t,i=this.yDown-s;Math.abs(n)>Math.abs(i)?n>0?this.settings.events.swipeLeft():this.settings.events.swipeRight():i>0?this.settings.events.swipeUp():this.settings.events.swipeDown(),this.xDown=null,this.yDown=null}}},{key:"can_open_multiple",value:function(e){for(var t=0;t<this.submenus.length;t++)e!=this.submenus[t]&&this.closeSubmenu(this.submenus[t])}},{key:"initSubmenu",value:function(e){e.classList.add("active");for(var t=0;t<this.menuitems.length;t++){if(this.closest(this.menuitems[t],"sub-menu"))var s=this.menuitems[t].offsetHeight;s+=parseInt(window.getComputedStyle(this.menuitems[t]).getPropertyValue("margin-top")),s+=parseInt(window.getComputedStyle(this.menuitems[t]).getPropertyValue("margin-bottom")),this.menuitems[t].parentNode.style.maxHeight=s+"px"}e.classList.remove("active")}},{key:"closest",value:function(e,t){return!(!e.parentNode||!e.parentNode.className)&&(-1!=e.parentNode.className.indexOf(t)?e.parentNode:this.closest(e.parentNode,t))}},{key:"documentClick",value:function(e){for(var t=!0,s=0;s<e.path.length;s++)(e.path[s].id==this.settings.selectors.menu_id||e.path[s].classList&&e.path[s].classList.contains("menu-toggle-button"))&&(t=!1);t&&this.close()}},{key:"registerEventAll",value:function(e,t,s){if(e.length)for(var n=0;n<e.length;n++)e[n].addEventListener(t,s.bind(this))}},{key:"initHandles",value:function(){for(var e=this.menu.querySelectorAll(".am-has-children"),t=0;t<e.length;t++){var s=document.createElement("span");s.classList.add("handle"),e[t].insertBefore(s,e[t].children[1])}}}]),e}();t.default=u},function(e,t,s){"use strict";var n=s(0),i=function(e){return e&&e.__esModule?e:{default:e}}(n);e.exports=i.default}]); | ||
!function(e){function t(n){if(s[n])return s[n].exports;var i=s[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var s={};t.m=e,t.c=s,t.i=function(e){return e},t.d=function(e,s,n){t.o(e,s)||Object.defineProperty(e,s,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var s=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(s,"a",s),s},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=1)}([function(e,t,s){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(){function e(e,t){for(var s=0;s<t.length;s++){var n=t[s];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,s,n){return s&&e(t.prototype,s),n&&e(t,n),t}}(),u=function(){function e(t){n(this,e),this.config(t);var s=this.settings.selectors;if(this.menu=document.getElementById(s.menu_id),!this.menu)return void console.error("unable to find the menu with selector: "+s.menu_id);if(this.menuitems=this.menu.querySelectorAll(s.menuitem+" a"),this.submenus=this.menu.querySelectorAll(s.submenu),this.submenus.length)for(var i=0;i<this.submenus.length;i++)this.submenus[i].parentNode.classList.add("am-has-children");var o;if(this.settings.options.parent_clickable?(this.initHandles(),o=this.menu.querySelectorAll(s.menuitem+" .handle")):o=this.menu.querySelectorAll(s.menuitem+" a"),this.registerEventAll(o,"click",this.onMenuItemClick),this.submenus.length)for(var i=0;i<this.submenus.length;i++)this.initSubmenu(this.submenus[i]);this.toggleButtons=document.querySelectorAll(s.toggle_button),this.registerEventAll(this.toggleButtons,"click",this.toggle),this.openButtons=document.querySelectorAll(s.open_button),this.registerEventAll(this.openButtons,"click",this.open),this.closeButtons=document.querySelectorAll(s.close_button),this.registerEventAll(this.closeButtons,"click",this.close),document.addEventListener("touchstart",this.onTouchStart.bind(this),!1),document.addEventListener("touchmove",this.onTouchMove.bind(this),!1),this.settings.options.autoclose&&document.addEventListener("mousedown",this.documentClick.bind(this))}return o(e,[{key:"config",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this.settings||{options:{disable_page_scroll:!1,autoclose:!0,parent_clickable:!1},events:{swipeLeft:function(){},swipeRight:function(){},swipeUp:function(){},swipeDown:function(){}},selectors:{menu_id:"main-menu",menuitem:"li",submenu:"li > ul",toggle_button:!1,open_button:!1,close_button:!1}};for(var s in t)if("object"==i(t[s])&&e[s])for(var n in t[s])void 0!==e[s][n]&&(t[s][n]=e[s][n]);return this.settings=t,this}},{key:"onMenuItemClick",value:function(e){for(var t=e.target.parentNode.classList.contains("active"),s=e.target.parentNode.parentNode.querySelectorAll(".am-has-children"),n=0;n<s.length;n++)s[n].classList.remove("active");t||e.target.parentNode.classList.add("active");var i=e.target.parentNode.querySelector(this.settings.selectors.submenu);if(!i)return void this.close();e.preventDefault(),e.target.parentNode.removeAttribute("style"),this.toggleSubmenu(i)}},{key:"toggle",value:function(){if(this.menu.classList.toggle("active"),document.body.classList.toggle("am-menu-active"),document.body.classList.toggle("menu-"+this.settings.selectors.menu_id+"-active"),this.settings.options.disable_page_scroll&&document.body.classList.toggle("scroll-disabled"),!this.menu.classList.contains("active"))for(var e=0;e<this.submenus.length;e++)this.closeSubmenu(this.submenus[e])}},{key:"open",value:function(){this.menu.classList.add("active"),document.body.classList.add("am-menu-active"),document.body.classList.add("menu-"+this.settings.selectors.menu_id+"-active"),this.settings.options.disable_page_scroll&&document.body.classList.add("scroll-disabled")}},{key:"close",value:function(){for(var e=this.menu.querySelectorAll(".am-has-children"),t=0;t<e.length;t++)e[t].classList.remove("active");for(var t=0;t<this.submenus.length;t++)this.closeSubmenu(this.submenus[t]);this.menu.classList.contains("active")&&(this.menu.classList.remove("active"),document.body.classList.remove("am-menu-active"),document.body.classList.remove("menu-"+this.settings.selectors.menu_id+"-active"),this.settings.options.disable_page_scroll&&document.body.classList.remove("scroll-disabled"))}},{key:"toggleSubmenu",value:function(e){e.classList.contains("active")||this.can_open_multiple(this.closest(e,e.className)),e.classList.toggle("active")}},{key:"openSubmenu",value:function(e){this.can_open_multiple(),e.classList.add("active")}},{key:"closeSubmenu",value:function(e){e.classList.remove("active")}},{key:"onTouchStart",value:function(e){this.xDown=e.touches[0].clientX,this.yDown=e.touches[0].clientY}},{key:"onTouchMove",value:function(e){if(this.xDown&&this.yDown){var t=e.touches[0].clientX,s=e.touches[0].clientY,n=this.xDown-t,i=this.yDown-s;Math.abs(n)>Math.abs(i)?n>0?this.settings.events.swipeLeft(this,e):this.settings.events.swipeRight(this,e):i>0?this.settings.events.swipeUp(this,e):this.settings.events.swipeDown(this,e),this.xDown=null,this.yDown=null}}},{key:"can_open_multiple",value:function(e){for(var t=0;t<this.submenus.length;t++)e!=this.submenus[t]&&this.closeSubmenu(this.submenus[t])}},{key:"initSubmenu",value:function(e){e.classList.add("active");for(var t=0;t<this.menuitems.length;t++){if(this.closest(this.menuitems[t],"sub-menu"))var s=this.menuitems[t].offsetHeight;s+=parseInt(window.getComputedStyle(this.menuitems[t]).getPropertyValue("margin-top")),s+=parseInt(window.getComputedStyle(this.menuitems[t]).getPropertyValue("margin-bottom")),this.menuitems[t].parentNode.style.maxHeight=s+"px"}e.classList.remove("active")}},{key:"closest",value:function(e,t){return!(!e.parentNode||!e.parentNode.className)&&(-1!=e.parentNode.className.indexOf(t)?e.parentNode:this.closest(e.parentNode,t))}},{key:"documentClick",value:function(e){for(var t=!0,s=0;s<e.path.length;s++)(e.path[s].id==this.settings.selectors.menu_id||e.path[s].classList&&e.path[s].classList.contains("menu-toggle-button"))&&(t=!1);t&&this.close()}},{key:"registerEventAll",value:function(e,t,s){if(e.length)for(var n=0;n<e.length;n++)e[n].addEventListener(t,s.bind(this))}},{key:"initHandles",value:function(){for(var e=this.menu.querySelectorAll(".am-has-children"),t=0;t<e.length;t++){var s=document.createElement("span");s.classList.add("handle"),e[t].insertBefore(s,e[t].children[1])}}}]),e}();t.default=u},function(e,t,s){"use strict";var n=s(0);e.exports=n.default}]); |
@@ -1,2 +0,2 @@ | ||
import Menu from "./module/Menu.js"; | ||
module.exports = Menu; | ||
var Menu = require("./module/menu") | ||
module.exports = Menu.default; |
@@ -24,3 +24,3 @@ export default class Menu { | ||
var handles; | ||
if(this.settings.options.use_handles){ | ||
if(this.settings.options.parent_clickable){ | ||
this.initHandles(); | ||
@@ -63,5 +63,5 @@ handles = this.menu.querySelectorAll(selectors.menuitem + ' .handle'); | ||
options:{ | ||
disable_scroll: false, | ||
disable_page_scroll: false, | ||
autoclose: true, | ||
use_handles: true, | ||
parent_clickable: false, | ||
}, | ||
@@ -94,3 +94,2 @@ events: { | ||
this.settings = defaultConfig; | ||
console.log("Config::", this.settings); | ||
return this; | ||
@@ -122,3 +121,3 @@ } | ||
if(this.settings.options.disable_scroll) | ||
if(this.settings.options.disable_page_scroll) | ||
document.body.classList.toggle('scroll-disabled'); | ||
@@ -138,3 +137,3 @@ | ||
if(this.settings.options.disable_scroll) | ||
if(this.settings.options.disable_page_scroll) | ||
document.body.classList.add('scroll-disabled'); | ||
@@ -158,3 +157,3 @@ } | ||
if(this.settings.options.disable_scroll) | ||
if(this.settings.options.disable_page_scroll) | ||
document.body.classList.remove('scroll-disabled'); | ||
@@ -197,11 +196,11 @@ } | ||
if ( xDiff > 0 ) { | ||
this.settings.events.swipeLeft(); | ||
this.settings.events.swipeLeft(this, evt); | ||
} else { | ||
this.settings.events.swipeRight(); | ||
this.settings.events.swipeRight(this, evt); | ||
} | ||
} else { | ||
if ( yDiff > 0 ) { | ||
this.settings.events.swipeUp(); | ||
this.settings.events.swipeUp(this, evt); | ||
} else { | ||
this.settings.events.swipeDown(); | ||
this.settings.events.swipeDown(this, evt); | ||
} | ||
@@ -208,0 +207,0 @@ } |
{ | ||
"name": "advanced-menus", | ||
"version": "1.0.7", | ||
"version": "1.0.8", | ||
"description": "Easy to use and configurable HTML5 Menus", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
129
README.md
@@ -47,5 +47,5 @@ # Menu Package for Webpack. | ||
options:{ | ||
disable_scroll: false, | ||
disable_page_scroll: false, | ||
autoclose: true, | ||
use_handles: true, | ||
parent_clickable: true | ||
}, | ||
@@ -70,25 +70,25 @@ events: { | ||
const Menu = require('advanced-menus'); | ||
const Menu = require('advanced-menus'); | ||
//menu config; | ||
var config = { | ||
selectors:{ | ||
toggle_button: ".menu-toggle-button", | ||
}, | ||
options:{ | ||
disable_scroll: true, | ||
use_handles:true, | ||
}, | ||
events:{ | ||
swipeLeft: function(){ | ||
menu.close(); | ||
}, | ||
swipeRight: function(){ | ||
menu.open(); | ||
} | ||
} | ||
//menu config; | ||
var config = { | ||
selectors:{ | ||
toggle_button: ".menu-toggle-button", | ||
}, | ||
options:{ | ||
disable_scroll: true, | ||
parent_clickable:true, | ||
}, | ||
events:{ | ||
swipeLeft: function(menu, e){ | ||
menu.close(); | ||
}, | ||
swipeRight: function(menu, e){ | ||
menu.open(); | ||
} | ||
} | ||
} | ||
//config not required | ||
var mainmenu = new Menu(config); | ||
//config not required | ||
var mainmenu = new Menu(config); | ||
@@ -102,7 +102,7 @@ ``` | ||
/* | ||
Available themes: | ||
- aside-left | ||
- aside-right | ||
- plain-horizontal | ||
- dropdown | ||
Available themes: | ||
- aside-left | ||
- aside-right | ||
- plain-horizontal | ||
- dropdown | ||
*/ | ||
@@ -114,2 +114,3 @@ | ||
themes:( | ||
aside-left: ( | ||
@@ -120,2 +121,3 @@ min:0px, | ||
), | ||
aside-right: ( | ||
@@ -125,2 +127,3 @@ min:750px, | ||
), | ||
plain-horizontal: (min:1024px) | ||
@@ -141,7 +144,8 @@ ) | ||
*/ | ||
// experimental | ||
// menu-breakpoint : | ||
// Use this mixin to add styles at the specified menu theme breakpoint | ||
@include menu-breakpoint($menu, $theme){ | ||
//styles | ||
//styles | ||
} | ||
@@ -154,9 +158,10 @@ | ||
*/ | ||
// experimental | ||
// ./themes/_theme-name.scss | ||
@include register_menu_theme($some-theme-name) | ||
// your styles here. | ||
// your styles here. | ||
} | ||
//probably needs some more work.. | ||
// experimental | ||
//hides menu at certain resolution; | ||
@@ -173,32 +178,32 @@ @include menu-autohide($theme-name){ | ||
<nav id="main-menu"> | ||
<ul class='menu'> | ||
<li class="menu-item"> | ||
<a href="#item1">Item 1</a> | ||
<ul class='sub-menu'> | ||
<li class="menu-item"><a href="#item1">Item 1</a></li> | ||
<li class="menu-item"> | ||
<a href="#item2">Item 2</a> | ||
<ul class='sub-menu'> | ||
<li class="menu-item"><a href="#item1">Item 1</a></li> | ||
<li class="menu-item"><a href="#item2">Item 2</a></li> | ||
<li class="menu-item"><a href="#item3">Item 3</a></li> | ||
<li class="menu-item"><a href="#item4">Item 4</a></li> | ||
<li class="menu-item"><a href="#item5">Item 5</a></li> | ||
</ul> | ||
</li> | ||
<li class="menu-item"><a href="#item1">Item 3</a></li> | ||
<li class="menu-item"><a href="#item2">Item 4</a></li> | ||
<li class="menu-item"><a href="#item3">Item 5</a></li> | ||
</ul> | ||
</li> | ||
<li class="menu-item"> | ||
<a href="#item2">Item 2</a> | ||
<ul class='sub-menu'> | ||
<li class="menu-item"><a href="#item1">Item 1</a></li> | ||
<li class="menu-item"><a href="#item2">Item 2</a></li> | ||
</ul> | ||
</li> | ||
<li class="menu-item"><a href="#item3">Item 3</a></li> | ||
<li class="menu-item"><a href="#item4">Item 4</a></li> | ||
</ul> | ||
<ul class='menu'> | ||
<li class="menu-item"> | ||
<a href="#item1">Item 1</a> | ||
<ul class='sub-menu'> | ||
<li class="menu-item"><a href="#item1">Item 1</a></li> | ||
<li class="menu-item"> | ||
<a href="#item2">Item 2</a> | ||
<ul class='sub-menu'> | ||
<li class="menu-item"><a href="#item1">Item 1</a></li> | ||
<li class="menu-item"><a href="#item2">Item 2</a></li> | ||
<li class="menu-item"><a href="#item3">Item 3</a></li> | ||
<li class="menu-item"><a href="#item4">Item 4</a></li> | ||
<li class="menu-item"><a href="#item5">Item 5</a></li> | ||
</ul> | ||
</li> | ||
<li class="menu-item"><a href="#item1">Item 3</a></li> | ||
<li class="menu-item"><a href="#item2">Item 4</a></li> | ||
<li class="menu-item"><a href="#item3">Item 5</a></li> | ||
</ul> | ||
</li> | ||
<li class="menu-item"> | ||
<a href="#item2">Item 2</a> | ||
<ul class='sub-menu'> | ||
<li class="menu-item"><a href="#item1">Item 1</a></li> | ||
<li class="menu-item"><a href="#item2">Item 2</a></li> | ||
</ul> | ||
</li> | ||
<li class="menu-item"><a href="#item3">Item 3</a></li> | ||
<li class="menu-item"><a href="#item4">Item 4</a></li> | ||
</ul> | ||
</nav> | ||
@@ -205,0 +210,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
205
64412
283