-
Notifications
You must be signed in to change notification settings - Fork 207
/
jquery.bootstrap-growl.coffee
73 lines (56 loc) · 1.86 KB
/
jquery.bootstrap-growl.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# 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