Comparing version 0.1.0 to 0.1.1
@@ -1,1 +0,1 @@ | ||
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):t.sponDraw=n()}(this,function(){"use strict";var t=Object.assign||function(t){for(var n=1;n<arguments.length;n++){var e=arguments[n];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])}return t};var n=function(t,n,e){var i=!1;return new Promise(function(o){e&&e(),n.addEventListener(t,function e(o,s){if(s.stopPropagation(),n.removeEventListener(t,e),s.target===n&&!i)return i=!0,void o()}.bind(null,o),!1)})};return function e(){var i,o=this,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),this.defaults={openButton:"[data-menu-opener]",overlay:document.getElementById("site-menu"),contents:document.getElementById("menu-inner"),closeButton:"[data-menu-closer]",init:!1,buttonActiveClass:"is-active",overlayVisibleClass:"is-visible",overlayAnimationClass:"is-animating",transition:!0,animationType:"transition",name:"menu",before:null},this.FOCUSABLE_ELEMENTS=["a[href]","button:not([disabled]):not([aria-hidden]):not([data-menu-closer])"],this.isVisible=!1,this.isAnimating=!1,this.isInitialized=!1,this.setOptions=function(n){return o.options=t({},o.options,n),o},this._before=function(t){var n=o.options.before;return"function"==typeof n?new Promise(function(e){n(t,e)}):Promise.resolve()},this.addEvents=function(){var t=o.dom,n=t.openButton,e=t.closeButton,i=t.contents;return n.addEventListener("click",o.onClick),n.addEventListener("touchstart",o.onClick),e&&e.forEach(function(t){t.addEventListener("click",o.onClick),t.addEventListener("touchstart",o.onClick)}),i&&(i.addEventListener("click",o.blockClicks),i.addEventListener("touchstart",o.blockClicks)),document.addEventListener("keydown",o.onKeyDown),o},this.removeEvents=function(){var t=o.dom,n=t.openButton,e=t.closeButton,i=t.contents;return n.removeEventListener("click",o.onClick),n.removeEventListener("touchstart",o.onClick),e&&e.forEach(function(t){t.removeEventListener("click",o.onClick),t.removeEventListener("touchstart",o.onClick)}),i&&(i.removeEventListener("click",o.blockClicks),i.removeEventListener("touchstart",o.blockClicks)),o},this.onClick=function(t){t.preventDefault(),o.isAnimating||(o.isAnimating=!0,o.$focus=document.activeElement,o.isVisible||(o.initialFocus=t.target),o._before({event:t,state:o.isVisible,dom:o.dom}).then(function(){o.isVisible?o.close():o.open()}))},this.$focus=null,this.onKeyDown=function(t){var n=t.keyCode;o.isVisible&&27===n&&o.close(),o.isVisible||32!==n||document.activeElement!==o.dom.openButton||(o.$focus=document.activeElement,o.open())},this.blockClicks=function(t){t.stopPropagation()},this.open=function(){var t=o.options,e=t.buttonActiveClass,i=t.overlayVisibleClass,s=t.overlayAnimationClass,a=t.transition,r=o.dom,c=r.overlay,l=r.openButton,u=r.contents.querySelectorAll(o.FOCUSABLE_ELEMENTS);return u.length&&u[0].focus(),o.emit("open",{dom:o.dom}),l.setAttribute("aria-expanded",!0),l.classList.add(e),c.classList.add(i),c.setAttribute("aria-hidden",!1),a?(c.classList.add(s),n(o.animationEndEvents,c).then(o.onTransitionEnd)):(o.isVisible=!0,o.isAnimating=!1),o},this.close=function(){var t=o.dom.overlay,e=o.options.transition;return o.emit("close",{dom:o.dom}),o.reset(),o.$focus&&o.$focus.focus(),e?n(o.animationEndEvents,t).then(o.onTransitionEnd):(o.isVisible=!1,o.isAnimating=!1),o},this.reset=function(){var t=o.options,n=t.buttonActiveClass,e=t.overlayAnimationClass,i=t.overlayVisibleClass,s=o.dom,a=s.overlay,r=s.openButton;r.setAttribute("aria-expanded",!1),r.classList.remove(n),a.classList.remove(e,i),a.setAttribute("aria-hidden",!0)},this.onTransitionEnd=function(){var t=o.dom.overlay,n=o.options.overlayAnimationClass;o.isVisible=!o.isVisible,o.isAnimating=!1;var e=o.isVisible?"after:open":"after:close";o.emit(e,{dom:o.dom,state:o.isVisible}),t.classList.remove(n)},this.destroy=function(){if(o.isInitialized)return o.isInitialized=!1,o.isVisible=!1,o.isAnimating=!1,o.reset(),o.removeEvents(),o},this.init=function(){if(!o.isInitialized){o.isInitialized=!0;var t=o.options,n=t.contents,e=t.overlay,i=t.openButton,s=t.closeButton,a=t.animationType,r=t.name;o.animationEndEvents=function(){var t="transition"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"transition")?{OTransition:"oTransitionEnd",WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",transition:"transitionend"}:{OAnimation:"oAnimationEnd",WebkitAnimation:"webkitAnimationEnd",MozAnimation:"animationend",animation:"animationend"},n=document.createElement("fake");return Object.keys(t).reduce(function(e,i){return void 0!==n.style[i]?t[i]:e},"")}(a),o.dom={html:document.getElementsByTagName("html")[0],body:document.body,openButton:document.querySelector(i),closeButton:s&&[].concat(function(t){if(Array.isArray(t)){for(var n=0,e=Array(t.length);n<t.length;n++)e[n]=t[n];return e}return Array.from(t)}(document.querySelectorAll(s))),overlay:e,contents:n};var c=o.dom.openButton.getAttribute("id"),l=e.getAttribute("id");return o.dom.openButton.setAttribute("aria-expanded",!1),o.dom.openButton.setAttribute("aria-label",r),o.dom.openButton.setAttribute("aria-controls",l),e.setAttribute("aria-hidden",!0),c?e.setAttribute("aria-labelledby",c):console.warn("sponDraw: menu button should have an id for better accessibility"),o.addEvents(),o}},this.options=t({},this.defaults,s),this.options.init&&this.init(),Object.assign(this,(i=i||Object.create(null),{on:function(t,n){(i[t]||(i[t]=[])).push(n)},off:function(t,n){i[t]&&i[t].splice(i[t].indexOf(n)>>>0,1)},emit:function(t,n){(i[t]||[]).slice().map(function(t){t(n)}),(i["*"]||[]).slice().map(function(e){e(t,n)})}}))}}); | ||
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):t.sponDraw=n()}(this,function(){"use strict";var t=Object.assign||function(t){for(var n=1;n<arguments.length;n++){var e=arguments[n];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])}return t};var n=function(t,n,e){var i=!1;return new Promise(function(o){e&&e(),n.addEventListener(t,function e(o,s){if(s.stopPropagation(),n.removeEventListener(t,e),s.target===n&&!i)return i=!0,void o()}.bind(null,o),!1)})};return function e(){var i,o=this,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),this.defaults={openButton:"[data-menu-opener]",overlay:document.getElementById("site-menu"),contents:document.getElementById("menu-inner"),closeButton:"[data-menu-closer]",init:!1,buttonActiveClass:"is-active",overlayVisibleClass:"is-visible",overlayAnimationClass:"is-animating",transition:!0,animationType:"transition",name:"menu",before:null},this.FOCUSABLE_ELEMENTS=["a[href]","button:not([disabled]):not([aria-hidden]):not([data-menu-closer])"],this.isVisible=!1,this.isAnimating=!1,this.isInitialized=!1,this.setOptions=function(n){return o.options=t({},o.options,n),o},this._before=function(t){var n=o.options.before;return"function"==typeof n?new Promise(function(e){n(t,e)}):Promise.resolve()},this.addEvents=function(){var t=o.dom,n=t.openButton,e=t.closeButton,i=t.contents;return n.addEventListener("click",o.onClick),n.addEventListener("touchstart",o.onClick),e&&e.forEach(function(t){t.addEventListener("click",o.onClick),t.addEventListener("touchstart",o.onClick)}),i&&(i.addEventListener("click",o.blockClicks),i.addEventListener("touchstart",o.blockClicks)),document.addEventListener("keydown",o.onKeyDown),o},this.removeEvents=function(){var t=o.dom,n=t.openButton,e=t.closeButton,i=t.contents;return n.removeEventListener("click",o.onClick),n.removeEventListener("touchstart",o.onClick),e&&e.forEach(function(t){t.removeEventListener("click",o.onClick),t.removeEventListener("touchstart",o.onClick)}),i&&(i.removeEventListener("click",o.blockClicks),i.removeEventListener("touchstart",o.blockClicks)),o},this.onClick=function(t){t.preventDefault(),o.isAnimating||(o.isAnimating=!0,o.$focus=document.activeElement,o.isVisible||(o.initialFocus=t.target),o._before({event:t,state:o.isVisible,dom:o.dom}).then(function(){o.isVisible?o.close():o.open()}))},this.$focus=null,this.onKeyDown=function(t){var n=t.keyCode;o.isVisible&&27===n&&o.close(),o.isVisible||32!==n||document.activeElement!==o.dom.openButton||(o.$focus=document.activeElement,o.open())},this.blockClicks=function(t){t.target.href||t.stopPropagation()},this.open=function(){var t=o.options,e=t.buttonActiveClass,i=t.overlayVisibleClass,s=t.overlayAnimationClass,a=t.transition,r=o.dom,c=r.overlay,l=r.openButton,u=r.contents,d=(u||c).querySelectorAll(o.FOCUSABLE_ELEMENTS);return d.length&&d[0].focus(),o.emit("open",{dom:o.dom}),l.setAttribute("aria-expanded",!0),l.classList.add(e),c.classList.add(i),c.setAttribute("aria-hidden",!1),a?(c.classList.add(s),n(o.animationEndEvents,c).then(o.onTransitionEnd)):(o.isVisible=!0,o.isAnimating=!1),o},this.close=function(){var t=o.dom.overlay,e=o.options.transition;return o.emit("close",{dom:o.dom}),o.reset(),o.$focus&&o.$focus.focus(),e?n(o.animationEndEvents,t).then(o.onTransitionEnd):(o.isVisible=!1,o.isAnimating=!1),o},this.reset=function(){var t=o.options,n=t.buttonActiveClass,e=t.overlayAnimationClass,i=t.overlayVisibleClass,s=o.dom,a=s.overlay,r=s.openButton;r.setAttribute("aria-expanded",!1),r.classList.remove(n),a.classList.remove(e,i),a.setAttribute("aria-hidden",!0)},this.onTransitionEnd=function(){var t=o.dom.overlay,n=o.options.overlayAnimationClass;o.isVisible=!o.isVisible,o.isAnimating=!1;var e=o.isVisible?"after:open":"after:close";o.emit(e,{dom:o.dom,state:o.isVisible}),t.classList.remove(n)},this.destroy=function(){if(o.isInitialized)return o.isInitialized=!1,o.isVisible=!1,o.isAnimating=!1,o.reset(),o.removeEvents(),o},this.init=function(){if(!o.isInitialized){o.isInitialized=!0;var t=o.options,n=t.contents,e=t.overlay,i=t.openButton,s=t.closeButton,a=t.animationType,r=t.name;o.animationEndEvents=function(){var t="transition"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"transition")?{OTransition:"oTransitionEnd",WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",transition:"transitionend"}:{OAnimation:"oAnimationEnd",WebkitAnimation:"webkitAnimationEnd",MozAnimation:"animationend",animation:"animationend"},n=document.createElement("fake");return Object.keys(t).reduce(function(e,i){return void 0!==n.style[i]?t[i]:e},"")}(a),o.dom={html:document.getElementsByTagName("html")[0],body:document.body,openButton:document.querySelector(i),closeButton:s&&[].concat(function(t){if(Array.isArray(t)){for(var n=0,e=Array(t.length);n<t.length;n++)e[n]=t[n];return e}return Array.from(t)}(document.querySelectorAll(s))),overlay:e,contents:n};var c=o.dom.openButton.getAttribute("id"),l=e.getAttribute("id");return o.dom.openButton.setAttribute("aria-expanded",!1),o.dom.openButton.setAttribute("aria-label",r),o.dom.openButton.setAttribute("aria-controls",l),e.setAttribute("aria-hidden",!0),c?e.setAttribute("aria-labelledby",c):console.warn("sponDraw: menu button should have an id for better accessibility"),o.addEvents(),o}},this.options=t({},this.defaults,s),this.options.init&&this.init(),Object.assign(this,(i=i||Object.create(null),{on:function(t,n){(i[t]||(i[t]=[])).push(n)},off:function(t,n){i[t]&&i[t].splice(i[t].indexOf(n)>>>0,1)},emit:function(t,n){(i[t]||[]).slice().map(function(t){t(n)}),(i["*"]||[]).slice().map(function(e){e(t,n)})}}))}}); |
{ | ||
"name": "spon-draw", | ||
"version": "0.1.0", | ||
"version": "0.1.1", | ||
"main": "dist/index.min.js", | ||
@@ -5,0 +5,0 @@ "devDependencies": { |
8998