diff --git a/Gruntfile.js b/Gruntfile.js index a7ef49f..e1e1e83 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -19,6 +19,16 @@ module.exports = function(grunt) { } } }, + concat: { + options: { + banner: "var nanoModal;\n", + footer: grunt.file.read("buildFooter.js") + }, + dist: { + src: ["<%= pkg.name %>.js"], + dest: "<%= pkg.name %>.js" + } + }, uglify: { options: { mangle: true @@ -34,12 +44,13 @@ module.exports = function(grunt) { } }); + grunt.loadNpmTasks("grunt-contrib-concat"); grunt.loadNpmTasks("grunt-contrib-uglify"); grunt.loadNpmTasks("grunt-contrib-cssmin"); grunt.loadNpmTasks("grunt-browserify"); grunt.loadNpmTasks("grunt-contrib-qunit"); grunt.registerTask("test", ["qunit"]); - grunt.registerTask("dev", ["cssmin", "browserify"]); + grunt.registerTask("dev", ["cssmin", "browserify", "concat"]); grunt.registerTask("default", ["dev", "uglify", "test"]); }; diff --git a/buildFooter.js b/buildFooter.js new file mode 100644 index 0000000..129a979 --- /dev/null +++ b/buildFooter.js @@ -0,0 +1,12 @@ + +if (typeof window !== "undefined") { + if (typeof window.define === "function" && window.define.amd) { + window.define(function() { + return nanoModal; + }); + } + window.nanoModal = nanoModal; +} +if (typeof module !== "undefined") { + module.exports = nanoModal; +} diff --git a/nanomodal.js b/nanomodal.js index 25e979c..8f95ca3 100644 --- a/nanomodal.js +++ b/nanomodal.js @@ -1,3 +1,4 @@ +var nanoModal; (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o0;)if(c=f[d],c.event===a&&c.handler===b){f.splice(d,1);break}},k=function(a){"ontouchend"in document.documentElement?i("touchstart",a):i("click",a)},l=function(a){e&&(e.style.display="block",g.fire(a))},m=function(a){e&&(e.style.display="none",h.fire(a))},n=function(){return e.style&&"block"===e.style.display},o=function(a){e&&(e.innerHTML=a)},p=function(a){e&&(o(""),e.appendChild(c.createTextNode(a)))},q=function(){if(e.parentNode){for(var a,b=f.length;b-->0;)a=f[b],j(a.event,a.handler);e.parentNode.removeChild(e),g.removeAllListeners(),h.removeAllListeners()}},r=function(a){var b=a.el||a;e.appendChild(b)};return{el:e,addListener:i,addClickListener:k,onShowEvent:g,onHideEvent:h,show:l,hide:m,isShowing:n,html:o,text:p,remove:q,add:r}}var d=a("./ModalEvent");b.exports=c},{"./ModalEvent":3}],2:[function(a,b){function c(a,b,e,f,g){if(void 0!==a){b=b||{};var h,i=d("div","nanoModal nanoModalOverride "+(b.classes||"")),j=d("div","nanoModalContent"),k=d("div","nanoModalButtons");i.add(j),i.add(k),i.el.style.display="none";var l,m=[];b.buttons=b.buttons||[{text:"Close",handler:"hide",primary:!0}];var n=function(){for(var a=m.length;a-->0;){var b=m[a];b.remove()}m=[]},o=function(){i.el.style.marginLeft=-i.el.clientWidth/2+"px"},p=function(){for(var a=document.querySelectorAll(".nanoModal"),b=a.length;b-->0;)if("none"!==a[b].style.display)return!0;return!1},q=function(){i.isShowing()||(c.resizeOverlay(),e.show(e),i.show(l),o())},r=function(){i.isShowing()&&(i.hide(l),p()||e.hide(e),b.autoRemove&&l.remove())};return l={modal:i,overlay:e,show:function(){return f?f(q,l):q(),l},hide:function(){return g?g(r,l):r(),l},onShow:function(a){return i.onShowEvent.addListener(function(){a(l)}),l},onHide:function(a){return i.onHideEvent.addListener(function(){a(l)}),l},remove:function(){e.onRequestHide.removeListener(h),h=null,n(),i.remove()},setButtons:function(a){var b,c,e,f=a.length,g=function(a,b){a.addClickListener(function(){b.handler(l)})};if(n(),0===f)k.hide();else for(k.show();f-->0;)b=a[f],e="nanoModalBtn",b.primary&&(e+=" nanoModalBtnPrimary"),e+=b.classes?" "+b.classes:"",c=d("button",e),"hide"===b.handler?c.addClickListener(l.hide):b.handler&&g(c,b),c.text(b.text),k.add(c),m.push(c);return o(),l},setContent:function(b){return b.nodeType?(j.html(""),j.add(b)):j.html(b),o(),a=b,l},getContent:function(){return a}},h=e.onRequestHide.addListener(function(){b.overlayClose!==!1&&i.isShowing()&&l.hide()}),l.setContent(a).setButtons(b.buttons),document.body.appendChild(i.el),l}}var d=a("./El"),e=document,f=function(a){var b=e.documentElement,c="scroll"+a,d="offset"+a;return Math.max(e.body[c],b[c],e.body[d],b[d],b["client"+a])};c.resizeOverlay=function(){var a=e.getElementById("nanoModalOverlay");a.style.width=f("Width")+"px",a.style.height=f("Height")+"px"},b.exports=c},{"./El":1}],3:[function(a,b){function c(){var a={},b=0,c=function(c){return a[b]=c,b++},d=function(b){b&&delete a[b]},e=function(){a={}},f=function(){for(var c=0,d=b;d>c;++c)a[c]&&a[c].apply(null,arguments)};return{addListener:c,removeListener:d,removeAllListeners:e,fire:f}}b.exports=c},{}],4:[function(a,b){var c=a("./ModalEvent"),d=function(){function b(){if(!g.querySelector("#nanoModalOverlay")){var a=e("style"),b=a.el,h=g.querySelectorAll("head")[0].childNodes[0];h.parentNode.insertBefore(b,h);var i=".nanoModal{position:absolute;top:100px;left:50%;display:none;z-index:9999;min-width:300px;padding:15px 20px 10px;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;background:#fff;background:-moz-linear-gradient(top,#fff 0,#ddd 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#fff),color-stop(100%,#ddd));background:-webkit-linear-gradient(top,#fff 0,#ddd 100%);background:-o-linear-gradient(top,#fff 0,#ddd 100%);background:-ms-linear-gradient(top,#fff 0,#ddd 100%);background:linear-gradient(to bottom,#fff 0,#ddd 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#dddddd', GradientType=0)}.nanoModalOverlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:9998;background:#000;display:none;-ms-filter:\"alpha(Opacity=50)\";-moz-opacity:.5;-khtml-opacity:.5;opacity:.5}.nanoModalButtons{border-top:1px solid #ddd;margin-top:15px;text-align:right}.nanoModalBtn{color:#333;background-color:#fff;display:inline-block;padding:6px 12px;margin:8px 4px 0;font-size:14px;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nanoModalBtn:active,.nanoModalBtn:focus,.nanoModalBtn:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.nanoModalBtn.nanoModalBtnPrimary{color:#fff;background-color:#428bca;border-color:#357ebd}.nanoModalBtn.nanoModalBtnPrimary:active,.nanoModalBtn.nanoModalBtnPrimary:focus,.nanoModalBtn.nanoModalBtnPrimary:hover{color:#fff;background-color:#3071a9;border-color:#285e8e}";b.styleSheet?b.styleSheet.cssText=i:a.text(i),d=e("div","nanoModalOverlay nanoModalOverride"),d.el.id="nanoModalOverlay",g.body.appendChild(d.el),d.onRequestHide=c();var j=function(){d.onRequestHide.fire()};d.addClickListener(j),e(g).addListener("keydown",function(a){var b=a.which||a.keyCode;27===b&&j()});var k,l=e(window);l.addListener("resize",function(){k&&clearTimeout(k),k=setTimeout(f.resizeOverlay,100)}),l.addListener("orientationchange",function(){for(var a=0;3>a;++a)setTimeout(f.resizeOverlay,1e3*a+200)})}}var d,e=a("./El"),f=a("./Modal"),g=document;document.body&&b();var h=function(a,c){return b(),f(a,c,d,h.customShow,h.customHide)};return h.resizeOverlay=f.resizeOverlay,h}();"undefined"!=typeof window&&("function"==typeof window.define&&window.define.amd&&window.define(function(){return d}),window.nanoModal=d),"undefined"!=typeof b&&(b.exports=d)},{"./El":1,"./Modal":2,"./ModalEvent":3}]},{},[1,2,3,4]); \ No newline at end of file +var nanoModal;!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g0;)if(c=f[d],c.event===a&&c.handler===b){f.splice(d,1);break}},k=function(a){"ontouchend"in document.documentElement?i("touchstart",a):i("click",a)},l=function(a){e&&(e.style.display="block",g.fire(a))},m=function(a){e&&(e.style.display="none",h.fire(a))},n=function(){return e.style&&"block"===e.style.display},o=function(a){e&&(e.innerHTML=a)},p=function(a){e&&(o(""),e.appendChild(c.createTextNode(a)))},q=function(){if(e.parentNode){for(var a,b=f.length;b-->0;)a=f[b],j(a.event,a.handler);e.parentNode.removeChild(e),g.removeAllListeners(),h.removeAllListeners()}},r=function(a){var b=a.el||a;e.appendChild(b)};return{el:e,addListener:i,addClickListener:k,onShowEvent:g,onHideEvent:h,show:l,hide:m,isShowing:n,html:o,text:p,remove:q,add:r}}var d=a("./ModalEvent");b.exports=c},{"./ModalEvent":3}],2:[function(a,b){function c(a,b,e,f,g){if(void 0!==a){b=b||{};var h,i=d("div","nanoModal nanoModalOverride "+(b.classes||"")),j=d("div","nanoModalContent"),k=d("div","nanoModalButtons");i.add(j),i.add(k),i.el.style.display="none";var l,m=[];b.buttons=b.buttons||[{text:"Close",handler:"hide",primary:!0}];var n=function(){for(var a=m.length;a-->0;){var b=m[a];b.remove()}m=[]},o=function(){i.el.style.marginLeft=-i.el.clientWidth/2+"px"},p=function(){for(var a=document.querySelectorAll(".nanoModal"),b=a.length;b-->0;)if("none"!==a[b].style.display)return!0;return!1},q=function(){i.isShowing()||(c.resizeOverlay(),e.show(e),i.show(l),o())},r=function(){i.isShowing()&&(i.hide(l),p()||e.hide(e),b.autoRemove&&l.remove())};return l={modal:i,overlay:e,show:function(){return f?f(q,l):q(),l},hide:function(){return g?g(r,l):r(),l},onShow:function(a){return i.onShowEvent.addListener(function(){a(l)}),l},onHide:function(a){return i.onHideEvent.addListener(function(){a(l)}),l},remove:function(){e.onRequestHide.removeListener(h),h=null,n(),i.remove()},setButtons:function(a){var b,c,e,f=a.length,g=function(a,b){a.addClickListener(function(){b.handler(l)})};if(n(),0===f)k.hide();else for(k.show();f-->0;)b=a[f],e="nanoModalBtn",b.primary&&(e+=" nanoModalBtnPrimary"),e+=b.classes?" "+b.classes:"",c=d("button",e),"hide"===b.handler?c.addClickListener(l.hide):b.handler&&g(c,b),c.text(b.text),k.add(c),m.push(c);return o(),l},setContent:function(b){return b.nodeType?(j.html(""),j.add(b)):j.html(b),o(),a=b,l},getContent:function(){return a}},h=e.onRequestHide.addListener(function(){b.overlayClose!==!1&&i.isShowing()&&l.hide()}),l.setContent(a).setButtons(b.buttons),document.body.appendChild(i.el),l}}var d=a("./El"),e=document,f=function(a){var b=e.documentElement,c="scroll"+a,d="offset"+a;return Math.max(e.body[c],b[c],e.body[d],b[d],b["client"+a])};c.resizeOverlay=function(){var a=e.getElementById("nanoModalOverlay");a.style.width=f("Width")+"px",a.style.height=f("Height")+"px"},b.exports=c},{"./El":1}],3:[function(a,b){function c(){var a={},b=0,c=function(c){return a[b]=c,b++},d=function(b){b&&delete a[b]},e=function(){a={}},f=function(){for(var c=0,d=b;d>c;++c)a[c]&&a[c].apply(null,arguments)};return{addListener:c,removeListener:d,removeAllListeners:e,fire:f}}b.exports=c},{}],4:[function(a){var b=a("./ModalEvent"),c=function(){function c(){if(!g.querySelector("#nanoModalOverlay")){var a=e("style"),c=a.el,h=g.querySelectorAll("head")[0].childNodes[0];h.parentNode.insertBefore(c,h);var i=".nanoModal{position:absolute;top:100px;left:50%;display:none;z-index:9999;min-width:300px;padding:15px 20px 10px;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;background:#fff;background:-moz-linear-gradient(top,#fff 0,#ddd 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#fff),color-stop(100%,#ddd));background:-webkit-linear-gradient(top,#fff 0,#ddd 100%);background:-o-linear-gradient(top,#fff 0,#ddd 100%);background:-ms-linear-gradient(top,#fff 0,#ddd 100%);background:linear-gradient(to bottom,#fff 0,#ddd 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#dddddd', GradientType=0)}.nanoModalOverlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:9998;background:#000;display:none;-ms-filter:\"alpha(Opacity=50)\";-moz-opacity:.5;-khtml-opacity:.5;opacity:.5}.nanoModalButtons{border-top:1px solid #ddd;margin-top:15px;text-align:right}.nanoModalBtn{color:#333;background-color:#fff;display:inline-block;padding:6px 12px;margin:8px 4px 0;font-size:14px;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nanoModalBtn:active,.nanoModalBtn:focus,.nanoModalBtn:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.nanoModalBtn.nanoModalBtnPrimary{color:#fff;background-color:#428bca;border-color:#357ebd}.nanoModalBtn.nanoModalBtnPrimary:active,.nanoModalBtn.nanoModalBtnPrimary:focus,.nanoModalBtn.nanoModalBtnPrimary:hover{color:#fff;background-color:#3071a9;border-color:#285e8e}";c.styleSheet?c.styleSheet.cssText=i:a.text(i),d=e("div","nanoModalOverlay nanoModalOverride"),d.el.id="nanoModalOverlay",g.body.appendChild(d.el),d.onRequestHide=b();var j=function(){d.onRequestHide.fire()};d.addClickListener(j),e(g).addListener("keydown",function(a){var b=a.which||a.keyCode;27===b&&j()});var k,l=e(window);l.addListener("resize",function(){k&&clearTimeout(k),k=setTimeout(f.resizeOverlay,100)}),l.addListener("orientationchange",function(){for(var a=0;3>a;++a)setTimeout(f.resizeOverlay,1e3*a+200)})}}var d,e=a("./El"),f=a("./Modal"),g=document;document.body&&c();var h=function(a,b){return c(),f(a,b,d,h.customShow,h.customHide)};return h.resizeOverlay=f.resizeOverlay,h}();nanoModal=c},{"./El":1,"./Modal":2,"./ModalEvent":3}]},{},[1,2,3,4]),"undefined"!=typeof window&&("function"==typeof window.define&&window.define.amd&&window.define(function(){return nanoModal}),window.nanoModal=nanoModal),"undefined"!=typeof module&&(module.exports=nanoModal); \ No newline at end of file diff --git a/package.json b/package.json index 01c1bf4..fabb7ea 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nanomodal", - "version": "5.0.1", + "version": "5.0.3", "description": "A small, self-contained JavaScript modal library with some extra features", "homepage": "https://github.com/kylepaulsen/NanoModal", "author": { @@ -23,13 +23,14 @@ "url": "https://github.com/kylepaulsen/NanoModal/issues" }, "license": "MIT", - "main": "nanomodal.js", + "main": "nanomodal.min.js", "devDependencies": { "grunt": "^0.4.5", "grunt-contrib-qunit": "^0.5.2", "brfs": "^1.1.2", "grunt-browserify": "^2.1.3", "grunt-contrib-cssmin": "^0.10.0", - "grunt-contrib-uglify": "^0.5.0" + "grunt-contrib-uglify": "^0.5.0", + "grunt-contrib-concat": "^0.5.0" } } diff --git a/src/main.js b/src/main.js index b4d18cd..51ed4e0 100644 --- a/src/main.js +++ b/src/main.js @@ -1,6 +1,6 @@ var ModalEvent = require("./ModalEvent"); -var nanoModal = (function() { +var nanoModalAPI = (function() { var fs = require("fs"); @@ -77,14 +77,5 @@ var nanoModal = (function() { return api; })(); -if (typeof window !== "undefined") { - if (typeof window.define === "function" && window.define.amd) { - window.define(function() { - return nanoModal; - }); - } - window.nanoModal = nanoModal; -} -if (typeof module !== "undefined") { - module.exports = nanoModal; -} +// expose api to var outside browserify so that we can export a module correctly. +nanoModal = nanoModalAPI;