added lib/bootstrap_growl
This commit is contained in:
commit
49319a0890
3
autoload.inc
Normal file
3
autoload.inc
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<?php
|
||||||
|
\SYSTEM\autoload::registerFolder(dirname(__FILE__),'LIB');
|
||||||
|
\LIB\lib_controll::register('\LIB\lib_bootstrap_growl');
|
||||||
21
lib/LICENSE.md
Normal file
21
lib/LICENSE.md
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
The MIT License
|
||||||
|
|
||||||
|
Copyright (c) Nick Larson, http://github.com/ifightcrime
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
51
lib/README.md
Normal file
51
lib/README.md
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
#bootstrap-growl
|
||||||
|
|
||||||
|
Pretty simple jQuery plugin that turns standard Bootstrap alerts into hovering "Growl-like" notifications.
|
||||||
|
|
||||||
|
##Demo
|
||||||
|
|
||||||
|
I have a basic demo set up at jsfiddle for the time being which you can view here: http://jsfiddle.net/ifightcrime/Us6WX/1008/
|
||||||
|
|
||||||
|
##Features
|
||||||
|
|
||||||
|
* Uses standard [Twitter Bootstrap alerts](http://twitter.github.com/bootstrap/components.html#alerts) which provides 'info', 'danger', and 'success' styles.
|
||||||
|
* Multiple growls called consecutively are stacked up one after another in a list.
|
||||||
|
* Automatically fades growls away after a default of 4 seconds.
|
||||||
|
|
||||||
|
##Dependencies
|
||||||
|
|
||||||
|
1. Latest version of jQuery. (tested on 1.11.0)
|
||||||
|
2. [Twitter Bootstrap](http://twitter.github.com/bootstrap/index.html). (current rev tested with 3.3.1)
|
||||||
|
|
||||||
|
##Usage
|
||||||
|
|
||||||
|
Include the dependencies and `jquery.bootstrap-growl.min.js` into your page and call the following:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
$.bootstrapGrowl("My message");
|
||||||
|
```
|
||||||
|
|
||||||
|
##Available Options
|
||||||
|
|
||||||
|
By default, growls use the standard 'alert' Bootstrap style, are 250px wide, right aligned, and are positioned 20px from the top right of the page.
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
$.bootstrapGrowl("another message, yay!", {
|
||||||
|
ele: 'body', // which element to append to
|
||||||
|
type: 'info', // (null, 'info', 'danger', 'success')
|
||||||
|
offset: {from: 'top', amount: 20}, // 'top', or 'bottom'
|
||||||
|
align: 'right', // ('left', 'right', or 'center')
|
||||||
|
width: 250, // (integer, or 'auto')
|
||||||
|
delay: 4000, // Time while the message will be displayed. It's not equivalent to the *demo* timeOut!
|
||||||
|
allow_dismiss: true, // If true then will display a cross to close the popup.
|
||||||
|
stackup_spacing: 10 // spacing between consecutively stacked growls.
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
Note: Previous ```top_offset``` is not broken by this latest change.
|
||||||
|
|
||||||
|
##Additional Contributors
|
||||||
|
|
||||||
|
* Jose Martinez https://github.com/callado4
|
||||||
|
* Lloyd Watkin https://github.com/lloydwatkin
|
||||||
|
* TruongSinh Tran-Nguyen https://github.com/tran-nguyen
|
||||||
57
lib/Rakefile
Normal file
57
lib/Rakefile
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
# special thanks to https://github.com/tuupola/jquery_lazyload for this cool Rakefile
|
||||||
|
task :default => [:minify]
|
||||||
|
|
||||||
|
desc "coffee2js"
|
||||||
|
task :coffee2js do
|
||||||
|
coffee2js
|
||||||
|
end
|
||||||
|
|
||||||
|
desc "Minify"
|
||||||
|
task :minify do
|
||||||
|
minify
|
||||||
|
end
|
||||||
|
|
||||||
|
desc "Build"
|
||||||
|
task :build do
|
||||||
|
coffee2js
|
||||||
|
minify
|
||||||
|
end
|
||||||
|
|
||||||
|
# method definitions
|
||||||
|
|
||||||
|
def coffee2js
|
||||||
|
begin
|
||||||
|
require 'coffee-script'
|
||||||
|
rescue LoadError => e
|
||||||
|
if verbose
|
||||||
|
puts "\nYou'll need the 'coffee-script' gem for translate the coffeescript file to js. Just run:\n\n"
|
||||||
|
puts " $ gem install coffee-script"
|
||||||
|
puts "\nand you should be all set.\n\n"
|
||||||
|
exit
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
puts "Translating jquery.bootstrap-growl.coffee to jquery.bootstrap-growl.js..."
|
||||||
|
File.open("jquery.bootstrap-growl.js", "w") do |f|
|
||||||
|
f.puts CoffeeScript.compile(File.read("jquery.bootstrap-growl.coffee"))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def minify
|
||||||
|
begin
|
||||||
|
require 'uglifier'
|
||||||
|
rescue LoadError => e
|
||||||
|
if verbose
|
||||||
|
puts "\nYou'll need the 'uglifier' gem for minification. Just run:\n\n"
|
||||||
|
puts " $ gem install uglifier"
|
||||||
|
puts "\nand you should be all set.\n\n"
|
||||||
|
exit
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
puts "Minifying jquery.bootstrap-growl.js with UglifyJS..."
|
||||||
|
File.open("jquery.bootstrap-growl.min.js", "w") do |f|
|
||||||
|
f.puts Uglifier.new.compile(File.read("jquery.bootstrap-growl.js"))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
8
lib/composer.json
Normal file
8
lib/composer.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"name": "ifightcrime/bootstrap-growl",
|
||||||
|
"description": "Pretty simple jQuery plugin that turns standard Bootstrap alerts into 'Growl-like' notifications.",
|
||||||
|
"keywords": ["bootstrap", "growl", "notifications"],
|
||||||
|
"homepage": "https://github.com/ifightcrime/bootstrap-growl",
|
||||||
|
"author": "Nick Larson",
|
||||||
|
"license": "MIT"
|
||||||
|
}
|
||||||
43
lib/demo.html
Normal file
43
lib/demo.html
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>jquery.bootstrap-growl Demo</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
|
||||||
|
<script src="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
|
||||||
|
<script src="jquery.bootstrap-growl.js"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
$(function() {
|
||||||
|
$.bootstrapGrowl("This is a test.");
|
||||||
|
|
||||||
|
setTimeout(function() {
|
||||||
|
$.bootstrapGrowl("This is another test.", { type: 'success' });
|
||||||
|
}, 1000);
|
||||||
|
|
||||||
|
setTimeout(function() {
|
||||||
|
$.bootstrapGrowl("Danger, Danger!", {
|
||||||
|
type: 'danger',
|
||||||
|
align: 'center',
|
||||||
|
width: 'auto',
|
||||||
|
allow_dismiss: false
|
||||||
|
});
|
||||||
|
}, 2000);
|
||||||
|
|
||||||
|
setTimeout(function() {
|
||||||
|
$.bootstrapGrowl("Danger, Danger!", {
|
||||||
|
type: 'info',
|
||||||
|
align: 'left',
|
||||||
|
stackup_spacing: 30
|
||||||
|
});
|
||||||
|
}, 3000);
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
73
lib/jquery.bootstrap-growl.coffee
Normal file
73
lib/jquery.bootstrap-growl.coffee
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
# https://github.com/ifightcrime/bootstrap-growl
|
||||||
|
|
||||||
|
$ = jQuery
|
||||||
|
|
||||||
|
$.bootstrapGrowl = (message, options) ->
|
||||||
|
options = $.extend({}, $.bootstrapGrowl.default_options, options)
|
||||||
|
|
||||||
|
$alert = $("<div>")
|
||||||
|
$alert.attr "class", "bootstrap-growl alert"
|
||||||
|
$alert.addClass "alert-" + options.type if options.type
|
||||||
|
if options.allow_dismiss
|
||||||
|
$alert.addClass "alert-dismissible"
|
||||||
|
$alert.append "<button class=\"close\" data-dismiss=\"alert\" type=\"button\"><span aria-hidden=\"true\">×</span><span class=\"sr-only\">Close</span></button>"
|
||||||
|
|
||||||
|
$alert.append message
|
||||||
|
|
||||||
|
# Prevent BC breaks
|
||||||
|
if options.top_offset
|
||||||
|
options.offset =
|
||||||
|
from: "top"
|
||||||
|
amount: options.top_offset
|
||||||
|
|
||||||
|
# calculate any 'stack-up'
|
||||||
|
offsetAmount = options.offset.amount
|
||||||
|
$(".bootstrap-growl").each ->
|
||||||
|
offsetAmount = Math.max(offsetAmount, parseInt($(this).css(options.offset.from)) + $(this).outerHeight() + options.stackup_spacing)
|
||||||
|
|
||||||
|
css =
|
||||||
|
"position": (if options.ele is "body" then "fixed" else "absolute")
|
||||||
|
"margin": 0
|
||||||
|
"z-index": "9999"
|
||||||
|
"display": "none"
|
||||||
|
|
||||||
|
css[options.offset.from] = offsetAmount + "px"
|
||||||
|
|
||||||
|
$alert.css css
|
||||||
|
|
||||||
|
$alert.css "width", options.width + "px" if options.width isnt "auto"
|
||||||
|
|
||||||
|
# have to append before we can use outerWidth()
|
||||||
|
$(options.ele).append $alert
|
||||||
|
|
||||||
|
switch options.align
|
||||||
|
when "center"
|
||||||
|
$alert.css
|
||||||
|
"left": "50%"
|
||||||
|
"margin-left": "-#{$alert.outerWidth() / 2}px"
|
||||||
|
when "left"
|
||||||
|
$alert.css "left", "20px"
|
||||||
|
else
|
||||||
|
$alert.css "right", "20px"
|
||||||
|
|
||||||
|
$alert.fadeIn()
|
||||||
|
|
||||||
|
# Only remove after delay if delay is more than 0
|
||||||
|
if options.delay > 0
|
||||||
|
$alert.delay(options.delay).fadeOut ->
|
||||||
|
$(this).alert "close"
|
||||||
|
|
||||||
|
$alert
|
||||||
|
|
||||||
|
$.bootstrapGrowl.default_options =
|
||||||
|
ele: "body"
|
||||||
|
type: "info"
|
||||||
|
offset:
|
||||||
|
from: "top"
|
||||||
|
amount: 20
|
||||||
|
align: "right" # (left, right, or center)
|
||||||
|
width: 250
|
||||||
|
delay: 4000
|
||||||
|
allow_dismiss: true
|
||||||
|
stackup_spacing: 10
|
||||||
|
|
||||||
77
lib/jquery.bootstrap-growl.js
Normal file
77
lib/jquery.bootstrap-growl.js
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
(function() {
|
||||||
|
var $;
|
||||||
|
|
||||||
|
$ = jQuery;
|
||||||
|
|
||||||
|
$.bootstrapGrowl = function(message, options) {
|
||||||
|
var $alert, css, offsetAmount;
|
||||||
|
options = $.extend({}, $.bootstrapGrowl.default_options, options);
|
||||||
|
$alert = $("<div>");
|
||||||
|
$alert.attr("class", "bootstrap-growl alert");
|
||||||
|
if (options.type) {
|
||||||
|
$alert.addClass("alert-" + options.type);
|
||||||
|
}
|
||||||
|
if (options.allow_dismiss) {
|
||||||
|
$alert.addClass("alert-dismissible");
|
||||||
|
$alert.append("<button class=\"close\" data-dismiss=\"alert\" type=\"button\"><span aria-hidden=\"true\">×</span><span class=\"sr-only\">Close</span></button>");
|
||||||
|
}
|
||||||
|
$alert.append(message);
|
||||||
|
if (options.top_offset) {
|
||||||
|
options.offset = {
|
||||||
|
from: "top",
|
||||||
|
amount: options.top_offset
|
||||||
|
};
|
||||||
|
}
|
||||||
|
offsetAmount = options.offset.amount;
|
||||||
|
$(".bootstrap-growl").each(function() {
|
||||||
|
return offsetAmount = Math.max(offsetAmount, parseInt($(this).css(options.offset.from)) + $(this).outerHeight() + options.stackup_spacing);
|
||||||
|
});
|
||||||
|
css = {
|
||||||
|
"position": (options.ele === "body" ? "fixed" : "absolute"),
|
||||||
|
"margin": 0,
|
||||||
|
"z-index": "9999",
|
||||||
|
"display": "none"
|
||||||
|
};
|
||||||
|
css[options.offset.from] = offsetAmount + "px";
|
||||||
|
$alert.css(css);
|
||||||
|
if (options.width !== "auto") {
|
||||||
|
$alert.css("width", options.width + "px");
|
||||||
|
}
|
||||||
|
$(options.ele).append($alert);
|
||||||
|
switch (options.align) {
|
||||||
|
case "center":
|
||||||
|
$alert.css({
|
||||||
|
"left": "50%",
|
||||||
|
"margin-left": "-" + ($alert.outerWidth() / 2) + "px"
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case "left":
|
||||||
|
$alert.css("left", "20px");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$alert.css("right", "20px");
|
||||||
|
}
|
||||||
|
$alert.fadeIn();
|
||||||
|
if (options.delay > 0) {
|
||||||
|
$alert.delay(options.delay).fadeOut(function() {
|
||||||
|
return $(this).alert("close");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return $alert;
|
||||||
|
};
|
||||||
|
|
||||||
|
$.bootstrapGrowl.default_options = {
|
||||||
|
ele: "body",
|
||||||
|
type: "info",
|
||||||
|
offset: {
|
||||||
|
from: "top",
|
||||||
|
amount: 20
|
||||||
|
},
|
||||||
|
align: "right",
|
||||||
|
width: 250,
|
||||||
|
delay: 4000,
|
||||||
|
allow_dismiss: true,
|
||||||
|
stackup_spacing: 10
|
||||||
|
};
|
||||||
|
|
||||||
|
}).call(this);
|
||||||
1
lib/jquery.bootstrap-growl.min.js
vendored
Normal file
1
lib/jquery.bootstrap-growl.min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
(function(){var c;c=jQuery;c.bootstrapGrowl=function(f,a){var b,e,d;a=c.extend({},c.bootstrapGrowl.default_options,a);b=c("<div>");b.attr("class","bootstrap-growl alert");a.type&&b.addClass("alert-"+a.type);a.allow_dismiss&&(b.addClass("alert-dismissible"),b.append('<button class="close" data-dismiss="alert" type="button"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>'));b.append(f);a.top_offset&&(a.offset={from:"top",amount:a.top_offset});d=a.offset.amount;c(".bootstrap-growl").each(function(){return d= Math.max(d,parseInt(c(this).css(a.offset.from))+c(this).outerHeight()+a.stackup_spacing)});e={position:"body"===a.ele?"fixed":"absolute",margin:0,"z-index":"9999",display:"none"};e[a.offset.from]=d+"px";b.css(e);"auto"!==a.width&&b.css("width",a.width+"px");c(a.ele).append(b);switch(a.align){case "center":b.css({left:"50%","margin-left":"-"+b.outerWidth()/2+"px"});break;case "left":b.css("left","20px");break;default:b.css("right","20px")}b.fadeIn();0<a.delay&&b.delay(a.delay).fadeOut(function(){return c(this).alert("close")}); return b};c.bootstrapGrowl.default_options={ele:"body",type:"info",offset:{from:"top",amount:20},align:"right",width:250,delay:4E3,allow_dismiss:!0,stackup_spacing:10}}).call(this);
|
||||||
15
lib/package.json
Normal file
15
lib/package.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"name": "bootstrap-growl",
|
||||||
|
"description": "Pretty simple jQuery plugin that turns standard Bootstrap alerts into hovering 'Growl-like' notifications.",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"license": "MIT",
|
||||||
|
"homepage": "http://ifightcrime.github.io/bootstrap-growl",
|
||||||
|
"author": { "name": "Nick Larson" },
|
||||||
|
"main": "jquery.bootstrap-growl.js",
|
||||||
|
"repositories": [
|
||||||
|
{
|
||||||
|
"type": "git",
|
||||||
|
"url": "http://github.com/ifightcrime/bootstrap-growl"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
9
lib_bootstrap_growl.php
Normal file
9
lib_bootstrap_growl.php
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?php
|
||||||
|
namespace LIB;
|
||||||
|
class lib_bootstrap_growl extends \LIB\lib_js{
|
||||||
|
public static function get_class(){
|
||||||
|
return self::class;}
|
||||||
|
public static function js_path(){
|
||||||
|
return \SYSTEM\WEBPATH(new \SYSTEM\PLIB(),'bootstrap-growl/lib/animate.min.css');}
|
||||||
|
public static function version(){
|
||||||
|
return '<a href="https://github.com/ifightcrime/bootstrap-growl/tree/162daa41cd1155fe308ef14daea6296fbaa3d756" target="_blank">github commit</a>';}}
|
||||||
Loading…
x
Reference in New Issue
Block a user