From 136bca1b884afb74b5f3cc1468ab1c3ccf671069 Mon Sep 17 00:00:00 2001 From: Ade Attwood Date: Thu, 12 Oct 2017 07:13:37 +0100 Subject: [PATCH] First Commit --- .gitignore | 2 + Gruntfile.js | 32 ++++++++++++++ dist/a-alert.js | 98 ++++++++++++++++++++++++++++++++++++++++++ dist/a-alert.js.map | 1 + dist/a-alert.min.js | 1 + index.js | 101 ++++++++++++++++++++++++++++++++++++++++++++ package.json | 23 ++++++++++ 7 files changed, 258 insertions(+) create mode 100644 .gitignore create mode 100644 Gruntfile.js create mode 100644 dist/a-alert.js create mode 100644 dist/a-alert.js.map create mode 100644 dist/a-alert.min.js create mode 100644 index.js create mode 100644 package.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fe064f4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +index.html \ No newline at end of file diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..fad5d81 --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,32 @@ +module.exports = function (grunt) { + require('load-grunt-tasks')(grunt); + + grunt.initConfig({ + babel: { + options: { + sourceMap: true, + presets: ['env'] + }, + dist: { + files: { + 'dist/a-alert.js': './index.js' + } + } + }, + uglify: { + dist: { + options: { + mangle: true, + output: { + comments: false + } + }, + files: { + 'dist/a-alert.min.js': ['dist/a-alert.js'] + } + } + } + }); + + grunt.registerTask('default', ['babel', 'uglify']); +}; \ No newline at end of file diff --git a/dist/a-alert.js b/dist/a-alert.js new file mode 100644 index 0000000..c3fc4f8 --- /dev/null +++ b/dist/a-alert.js @@ -0,0 +1,98 @@ +'use strict'; + +(function ($) { + + $.fn.aalert = function (method) { + if (methods[method]) { + return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); + } else { + $.error('Method ' + method + ' does not exist'); + return false; + } + }; + + var methods = { + changeTo: function changeTo(valiant) { + var $this = $(this); + + $this.removeClass(function (index, css) { + return (css.match(/(^|\s)alert-\S+/g) || []).join(' '); + }); + + $this.addClass('alert-' + valiant); + + return this; + }, + changeContentTo: function changeContentTo(content) { + var open = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + + var $this = $(this); + + $this.find('.alert-content').html(content); + + if (open === true) { + methods.open.apply(this); + } + + return this; + }, + toggle: function toggle() { + var $this = $(this); + if ($this.hasClass('fade')) { + $this.fadeToggle(); + } else if ($this.hasClass('slide')) { + $this.slideToggle(); + } else { + $this.toggle(); + } + + return this; + }, + close: function close() { + var $this = $(this); + if ($this.hasClass('fade')) { + $this.fadeOut(); + } else if ($this.hasClass('slide')) { + $this.slideUp(); + } else { + $this.hide(); + } + + if ($this.hasClass('remove')) { + $this.remove(); + } + + return this; + }, + open: function open() { + var $this = $(this); + if ($this.hasClass('fade')) { + $this.fadeIn(); + } else if ($this.hasClass('slide')) { + $this.slideDown(); + } else { + $this.show(); + } + + return this; + }, + closeAfter: function closeAfter(timeOut) { + var that = this; + setTimeout(function () { + methods.close.apply(that); + }, timeOut); + + return this; + } + }; + + $('.alert [data-dismiss="aalert"]').click(function (e) { + $element = $(e.target).closest('.alert'); + methods.close.apply($element); + }); + + $('.alert[data-timeout]').each(function (index, element) { + methods.closeAfter.apply(element, [$(element).data('timeout')]); + }); +})(jQuery); +//# sourceMappingURL=a-alert.js.map diff --git a/dist/a-alert.js.map b/dist/a-alert.js.map new file mode 100644 index 0000000..70a3c00 --- /dev/null +++ b/dist/a-alert.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../index.js"],"names":["$","fn","aalert","method","methods","apply","Array","prototype","slice","call","arguments","error","changeTo","valiant","$this","removeClass","index","css","match","join","addClass","changeContentTo","content","open","find","html","toggle","hasClass","fadeToggle","slideToggle","close","fadeOut","slideUp","hide","remove","fadeIn","slideDown","show","closeAfter","timeOut","that","setTimeout","click","$element","e","target","closest","each","element","data","jQuery"],"mappings":"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","file":"a-alert.js","sourcesContent":["(function ($) {\n \n $.fn.aalert = function (method) {\n if (methods[method]) {\n return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));\n } else {\n $.error('Method ' + method + ' does not exist');\n return false;\n }\n };\n\n var methods = {\n \n changeTo(valiant) {\n var $this = $(this);\n\n $this.removeClass((index, css) => {\n return (css.match (/(^|\\s)alert-\\S+/g) || []).join(' ');\n });\n\n $this.addClass('alert-' + valiant);\n\n return this;\n },\n\n changeContentTo(content, open = true) {\n var $this = $(this);\n\n $this.find('.alert-content').html(content);\n\n if (open === true) {\n methods.open.apply(this);\n }\n\n return this;\n },\n\n toggle() {\n var $this = $(this);\n if ($this.hasClass('fade')) {\n $this.fadeToggle();\n } else if ($this.hasClass('slide')) {\n $this.slideToggle();\n } else {\n $this.toggle();\n }\n\n return this;\n },\n\n close() {\n var $this = $(this);\n if ($this.hasClass('fade')) {\n $this.fadeOut();\n } else if ($this.hasClass('slide')) {\n $this.slideUp();\n } else {\n $this.hide();\n }\n\n if ( $this.hasClass('remove')) {\n $this.remove();\n } \n\n return this;\n },\n\n open() {\n var $this = $(this);\n if ($this.hasClass('fade')) {\n $this.fadeIn();\n } else if ( $this.hasClass('slide')) {\n $this.slideDown();\n } else {\n $this.show();\n }\n\n return this;\n },\n\n closeAfter(timeOut) {\n var that = this;\n setTimeout(() => {\n methods.close.apply(that);\n }, timeOut);\n\n return this;\n }\n\n };\n\n $('.alert [data-dismiss=\"aalert\"]').click(e => {\n $element = $(e.target).closest('.alert');\n methods.close.apply($element);\n });\n\n $('.alert[data-timeout]').each((index, element) => {\n methods.closeAfter.apply(element, [$(element).data('timeout')]);\n });\n\n})(jQuery);"]} \ No newline at end of file diff --git a/dist/a-alert.min.js b/dist/a-alert.min.js new file mode 100644 index 0000000..5c6b3df --- /dev/null +++ b/dist/a-alert.min.js @@ -0,0 +1 @@ +"use strict";!function(t){t.fn.aalert=function(s){return e[s]?e[s].apply(this,Array.prototype.slice.call(arguments,1)):(t.error("Method "+s+" does not exist"),!1)};var e={changeTo:function(e){var s=t(this);return s.removeClass(function(t,e){return(e.match(/(^|\s)alert-\S+/g)||[]).join(" ")}),s.addClass("alert-"+e),this},changeContentTo:function(s){var a=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return t(this).find(".alert-content").html(s),!0===a&&e.open.apply(this),this},toggle:function(){var e=t(this);return e.hasClass("fade")?e.fadeToggle():e.hasClass("slide")?e.slideToggle():e.toggle(),this},close:function(){var e=t(this);return e.hasClass("fade")?e.fadeOut():e.hasClass("slide")?e.slideUp():e.hide(),e.hasClass("remove")&&e.remove(),this},open:function(){var e=t(this);return e.hasClass("fade")?e.fadeIn():e.hasClass("slide")?e.slideDown():e.show(),this},closeAfter:function(t){var s=this;return setTimeout(function(){e.close.apply(s)},t),this}};t('.alert [data-dismiss="aalert"]').click(function(s){$element=t(s.target).closest(".alert"),e.close.apply($element)}),t(".alert[data-timeout]").each(function(s,a){e.closeAfter.apply(a,[t(a).data("timeout")])})}(jQuery); \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..f59de06 --- /dev/null +++ b/index.js @@ -0,0 +1,101 @@ +(function ($) { + + $.fn.aalert = function (method) { + if (methods[method]) { + return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); + } else { + $.error('Method ' + method + ' does not exist'); + return false; + } + }; + + var methods = { + + changeTo(valiant) { + var $this = $(this); + + $this.removeClass((index, css) => { + return (css.match (/(^|\s)alert-\S+/g) || []).join(' '); + }); + + $this.addClass('alert-' + valiant); + + return this; + }, + + changeContentTo(content, open = true) { + var $this = $(this); + + $this.find('.alert-content').html(content); + + if (open === true) { + methods.open.apply(this); + } + + return this; + }, + + toggle() { + var $this = $(this); + if ($this.hasClass('fade')) { + $this.fadeToggle(); + } else if ($this.hasClass('slide')) { + $this.slideToggle(); + } else { + $this.toggle(); + } + + return this; + }, + + close() { + var $this = $(this); + if ($this.hasClass('fade')) { + $this.fadeOut(); + } else if ($this.hasClass('slide')) { + $this.slideUp(); + } else { + $this.hide(); + } + + if ( $this.hasClass('remove')) { + $this.remove(); + } + + return this; + }, + + open() { + var $this = $(this); + if ($this.hasClass('fade')) { + $this.fadeIn(); + } else if ( $this.hasClass('slide')) { + $this.slideDown(); + } else { + $this.show(); + } + + return this; + }, + + closeAfter(timeOut) { + var that = this; + setTimeout(() => { + methods.close.apply(that); + }, timeOut); + + return this; + } + + }; + + $('.alert [data-dismiss="aalert"]').click(e => { + $element = $(e.target).closest('.alert'); + methods.close.apply($element); + }); + + $('.alert[data-timeout]').each((index, element) => { + methods.closeAfter.apply(element, [$(element).data('timeout')]); + }); + +})(jQuery); \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..80265b4 --- /dev/null +++ b/package.json @@ -0,0 +1,23 @@ +{ + "name": "bs-advanced-alert", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "bootstrap": "^3.3.7", + "jquery": "^3.2.1" + }, + "devDependencies": { + "babel-core": "^6.26.0", + "babel-preset-env": "^1.6.0", + "grunt": "^1.0.1", + "grunt-babel": "^7.0.0", + "grunt-contrib-uglify": "^3.1.0", + "load-grunt-tasks": "^3.5.2" + } +}