@servicensw/drop-menu
Advanced tools
Comparing version 2.0.0-dev.6 to 2.0.0-dev.7
@@ -1,1 +0,1 @@ | ||
"use strict";var classCallCheck=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},createClass=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),DropMenu=function(){function t(e,n){if(classCallCheck(this,t),this.index=n,this.element=e,!this.element||!this.element.nodeType)throw new Error("The DOM element was not found when creating the menu button.");this.buttonClickHandler=this.buttonClickHandler.bind(this),this.buttonKeyDownHandler=this.buttonKeyDownHandler.bind(this),this.menuItemClickHandler=this.menuItemClickHandler.bind(this),this.menuItemKeyDownHandler=this.menuItemKeyDownHandler.bind(this),this.closeMenu=this.closeMenu.bind(this),this.setActiveMenuItem=this.setActiveMenuItem.bind(this),this.init()}return createClass(t,[{key:"openMenu",value:function(t){t=void 0!==t?t:0,this.button.setAttribute("aria-expanded","true"),this.menu.setAttribute("aria-hidden","false"),this.menuItems[0].setAttribute("tabIndex","0"),this.menuItems[t].focus(),Servicensw&&(Servicensw.attachOverlay(this,this.closeMenu),Servicensw.attachMenu(this,this.menuItems))}},{key:"closeMenu",value:function(){this.button.setAttribute("aria-expanded","false"),this.menu.setAttribute("aria-hidden","true"),this.menuItems[0].setAttribute("tabIndex","-1"),this.button.focus(),Servicensw&&(Servicensw.detachOverlay(),Servicensw.detachMenu())}},{key:"setActiveMenuItem",value:function(t){var e=this;this.menuItems.forEach(function(n,i){n!==t?(n.setAttribute("aria-current",""),e.listItems[i].classList.remove("is-active")):(n.setAttribute("aria-current","true"),e.listItems[i].classList.add("is-active"))})}},{key:"buttonClickHandler",value:function(t){t.stopPropagation(),"false"!==this.button.getAttribute("aria-expanded")?this.closeMenu():this.openMenu()}},{key:"buttonKeyDownHandler",value:function(t){switch(t.key){case"Enter":case" ":case"ArrowDown":t.preventDefault(),t.stopPropagation(),this.openMenu();break;case"ArrowUp":t.preventDefault(),t.stopPropagation(),this.openMenu(this.menuItems.length-1)}}},{key:"menuItemClickHandler",value:function(t){t.stopPropagation(),this.setActiveMenuItem(t.target),this.closeMenu()}},{key:"menuItemKeyDownHandler",value:function(t){switch(t.key){case"Enter":case" ":t.preventDefault(),t.target.click(),this.button.focus()}}},{key:"init",value:function(){var t=this;this.menu=this.element.querySelector("ul"),this.menu.setAttribute("id","menuButton"+this.index),this.menu.setAttribute("role","menu"),this.menu.setAttribute("aria-hidden","true"),this.listItems=this.element.querySelectorAll("li"),this.listItems.forEach(function(t){t.setAttribute("role","none")}),this.menuItems=this.element.querySelectorAll("a"),this.menuItems.forEach(function(e,n){e.setAttribute("role","menuitem"),e.setAttribute("tabIndex","-1"),0===n&&(e.setAttribute("aria-current","true"),t.listItems[n].classList.add("is-active")),e.addEventListener("click",t.menuItemClickHandler),e.addEventListener("keydown",t.menuItemKeyDownHandler)}),this.button=document.createElement("button"),this.button.setAttribute("aria-haspopup","true"),this.button.setAttribute("aria-controls",this.menu.getAttribute("id")),this.button.setAttribute("aria-expanded","false"),this.button.setAttribute("aria-label","Open "+this.menu.getAttribute("aria-label")),this.button.classList.add("reset--button"),this.element.insertBefore(this.button,this.menu),this.button.addEventListener("click",this.buttonClickHandler),this.button.addEventListener("keydown",this.buttonKeyDownHandler),document.querySelector("body").addEventListener("click",this.bodyClickHandler)}}]),t}();module.exports=DropMenu; | ||
"use strict";var classCallCheck=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},createClass=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),DropMenu=function(){function t(e,n){if(classCallCheck(this,t),this.index=n,this.element=e,!this.element||!this.element.nodeType)throw new Error("The DOM element was not found when creating the menu button.");this.buttonClickHandler=this.buttonClickHandler.bind(this),this.buttonKeyDownHandler=this.buttonKeyDownHandler.bind(this),this.menuItemClickHandler=this.menuItemClickHandler.bind(this),this.menuItemKeyDownHandler=this.menuItemKeyDownHandler.bind(this),this.closeMenu=this.closeMenu.bind(this),this.setActiveMenuItem=this.setActiveMenuItem.bind(this),this.init()}return createClass(t,[{key:"openMenu",value:function(t){t=void 0!==t?t:0,this.button.setAttribute("aria-expanded","true"),this.menu.setAttribute("aria-hidden","false"),this.menuItems[0].setAttribute("tabIndex","0"),this.menuItems[t].focus(),Servicensw&&(Servicensw.attachOverlay(this,this.closeMenu),Servicensw.attachMenu(this,this.menuItems))}},{key:"closeMenu",value:function(){this.button.setAttribute("aria-expanded","false"),this.menu.setAttribute("aria-hidden","true"),this.menuItems[0].setAttribute("tabIndex","-1"),this.button.focus(),Servicensw&&(Servicensw.detachOverlay(),Servicensw.detachMenu())}},{key:"setActiveMenuItem",value:function(t){var e=this;this.menuItems.forEach(function(n,i){n!==t?(n.setAttribute("aria-current",""),e.listItems[i].classList.remove("is-active")):(n.setAttribute("aria-current","true"),e.listItems[i].classList.add("is-active"))})}},{key:"buttonClickHandler",value:function(t){t.stopPropagation(),"false"!==this.button.getAttribute("aria-expanded")?this.closeMenu():this.openMenu()}},{key:"buttonKeyDownHandler",value:function(t){switch(t.key){case"Enter":case" ":case"ArrowDown":t.preventDefault(),t.stopPropagation(),this.openMenu();break;case"ArrowUp":t.preventDefault(),t.stopPropagation(),this.openMenu(this.menuItems.length-1)}}},{key:"menuItemClickHandler",value:function(t){t.stopPropagation(),this.setActiveMenuItem(t.currentTarget),this.closeMenu()}},{key:"menuItemKeyDownHandler",value:function(t){switch(t.key){case"Enter":case" ":t.preventDefault(),t.currentTarget.click(),this.button.focus()}}},{key:"init",value:function(){var t=this;this.menu=this.element.querySelector("ul"),this.menu.setAttribute("id","menuButton"+this.index),this.menu.setAttribute("role","menu"),this.menu.setAttribute("aria-hidden","true"),this.listItems=this.element.querySelectorAll("li"),this.listItems.forEach(function(t){t.setAttribute("role","none")}),this.menuItems=this.element.querySelectorAll("a"),this.menuItems.forEach(function(e,n){e.setAttribute("role","menuitem"),e.setAttribute("tabIndex","-1"),0===n&&(e.setAttribute("aria-current","true"),t.listItems[n].classList.add("is-active")),e.addEventListener("click",t.menuItemClickHandler),e.addEventListener("keydown",t.menuItemKeyDownHandler)}),this.button=document.createElement("button"),this.button.setAttribute("aria-haspopup","true"),this.button.setAttribute("aria-controls",this.menu.getAttribute("id")),this.button.setAttribute("aria-expanded","false"),this.button.setAttribute("aria-label","Open "+this.menu.getAttribute("aria-label")),this.button.classList.add("reset--button"),this.element.insertBefore(this.button,this.menu),this.button.addEventListener("click",this.buttonClickHandler),this.button.addEventListener("keydown",this.buttonKeyDownHandler),document.querySelector("body").addEventListener("click",this.bodyClickHandler)}}]),t}();module.exports=DropMenu; |
{ | ||
"name": "@servicensw/drop-menu", | ||
"version": "2.0.0-dev.6", | ||
"version": "2.0.0-dev.7", | ||
"description": "Drop menu component", | ||
@@ -5,0 +5,0 @@ "repository": { |
@@ -92,3 +92,3 @@ /** | ||
event.stopPropagation(); | ||
this.setActiveMenuItem(event.target); | ||
this.setActiveMenuItem(event.currentTarget); | ||
this.closeMenu(); | ||
@@ -102,3 +102,3 @@ } | ||
event.preventDefault(); | ||
event.target.click(); | ||
event.currentTarget.click(); | ||
this.button.focus(); | ||
@@ -105,0 +105,0 @@ break; |
33224