expressionui 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -7
- data/{LICENSE.txt → MIT-LICENSE} +2 -4
- data/lib/expressionui/version.rb +1 -1
- data/lib/expressionui.rb +4 -1
- data/vendor/assets/javascripts/expressionui.modal.js +175 -0
- data/vendor/assets/javascripts/expressionui.notify.js +199 -0
- data/vendor/assets/javascripts/expressionui.popover.js +62 -0
- data/vendor/assets/stylesheets/_app_classes.sass +55 -0
- data/vendor/assets/stylesheets/_boilerplate.sass +208 -0
- data/vendor/assets/stylesheets/_forms.sass +345 -0
- data/vendor/assets/stylesheets/_helpers.sass +274 -0
- data/vendor/assets/stylesheets/_modals.sass +163 -0
- data/vendor/assets/stylesheets/_notifications.css.sass +689 -0
- data/vendor/assets/stylesheets/_popover.css.sass +30 -0
- data/vendor/assets/stylesheets/_variables.sass +34 -0
- data/vendor/assets/stylesheets/expressionui/loading/_dots_round.css.sass +29 -0
- data/vendor/assets/stylesheets/expressionui/loading/_progress.css.sass +21 -0
- data/vendor/assets/stylesheets/expressionui/loading/_spinner.css.sass +22 -0
- data/vendor/assets/stylesheets/expressionui/loading/_three_dots.css.sass +29 -0
- metadata +122 -71
- data/.gitignore +0 -17
- data/Gemfile +0 -4
- data/Rakefile +0 -1
- data/expressionui.gemspec +0 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
5
|
-
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 11256f25a87790c8f49299cd5537a0a67daf84fa
|
4
|
+
data.tar.gz: c2969ebf5e901ff2ab397ea5accad090df9ca228
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7399362f647a7245116a8228318e640ca091536bd46d906264c985688cfa175e9ce62b4c56fa881502098cdcf2229279bc0747c1ece81db25d8bfc89e87e849c
|
7
|
+
data.tar.gz: dfd3ea146ddd2502bcdf9011cb5a1535a25428d5b41e1a5a083e13b113cc6453b768534b4bc867260e40719e8031366d4c38ce206fca3f9e763aa149daa0548d
|
data/{LICENSE.txt → MIT-LICENSE}
RENAMED
@@ -1,6 +1,4 @@
|
|
1
|
-
Copyright
|
2
|
-
|
3
|
-
MIT License
|
1
|
+
Copyright 2013 Jason Cypret
|
4
2
|
|
5
3
|
Permission is hereby granted, free of charge, to any person obtaining
|
6
4
|
a copy of this software and associated documentation files (the
|
@@ -19,4 +17,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
17
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
18
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
19
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/lib/expressionui/version.rb
CHANGED
data/lib/expressionui.rb
CHANGED
@@ -0,0 +1,175 @@
|
|
1
|
+
/* expressionUI modal v2.0
|
2
|
+
* https://github.com/jasoncypret/expressionUI
|
3
|
+
*
|
4
|
+
* Copyright (c) 2013 Jason Cypret (http://jasoncypret.com/)
|
5
|
+
* Licensed under the MIT License
|
6
|
+
*/
|
7
|
+
|
8
|
+
(function ($) {
|
9
|
+
var methods = {
|
10
|
+
defaults: {
|
11
|
+
title: 'Alert',
|
12
|
+
id: 'dialog',
|
13
|
+
closeID: 'closeDialog',
|
14
|
+
overlay: true,
|
15
|
+
overlayMrk: '<div class="pageOverlay"></div>',
|
16
|
+
appendTo: 'body',
|
17
|
+
threshold: 15,
|
18
|
+
ajax: '',
|
19
|
+
ajaxTarget: '',
|
20
|
+
notify: false,
|
21
|
+
width: 'auto',
|
22
|
+
height: 'auto',
|
23
|
+
header: true,
|
24
|
+
headerContent: '',
|
25
|
+
footer: true,
|
26
|
+
removeContent: false,
|
27
|
+
buttons: [
|
28
|
+
{ buttonText: 'Ok', callback: function () {
|
29
|
+
return;
|
30
|
+
}, defaultButton: true }
|
31
|
+
],
|
32
|
+
beforeOpen: $.noop,
|
33
|
+
afterOpen: $.noop,
|
34
|
+
beforeClose: $.noop,
|
35
|
+
afterClose: $.noop
|
36
|
+
},
|
37
|
+
init: function (options) {
|
38
|
+
options = $.extend({}, methods.defaults, options);
|
39
|
+
$(this).dialog('_open', options);
|
40
|
+
},
|
41
|
+
_open: function (options) {
|
42
|
+
options.beforeOpen();
|
43
|
+
var overlay = '',
|
44
|
+
isMobile = '',
|
45
|
+
buildModal,
|
46
|
+
buttons = ''
|
47
|
+
$.each(options.buttons, function (i, btn) {
|
48
|
+
var defaultBtn = '';
|
49
|
+
if (typeof btn.defaultButton != 'undefined')
|
50
|
+
defaultBtn = ' defaultButton';
|
51
|
+
var className = '';
|
52
|
+
if (typeof btn.className != 'undefined')
|
53
|
+
className = btn.className;
|
54
|
+
buttons += '<a href="javascript:;" id="dialogBtn' + i + '" class="' + className + defaultBtn + '"><span>' + btn.buttonText + '</span></a>';
|
55
|
+
});
|
56
|
+
if (options.width != "auto") {
|
57
|
+
options.width = options.width + 'px'
|
58
|
+
}
|
59
|
+
if (options.overlay) {
|
60
|
+
overlay = options.overlayMrk;
|
61
|
+
}
|
62
|
+
buildModal = '<div id="' + options.id + '" class="dialog_container ' + isMobile + ' ' + options.height + '">' + overlay + '<div style="width:' + options.width + ';" class="dialog">';
|
63
|
+
if (options.header) {
|
64
|
+
buildModal += '<h1><span class="container">' + options.title + '<a href="javascript:;" id="' + options.closeID + '" class="closeDialog ' + options.closeClass + '">x</a></span></h1>';
|
65
|
+
} else {
|
66
|
+
buttons += '<a href="javascript:;" class="closeDialog"><span>Cancel</span></a>';
|
67
|
+
}
|
68
|
+
buildModal += '<div class="dialogBody"><div class="container"><div class="d_content"></div></div></div>';
|
69
|
+
if (options.footer) {
|
70
|
+
buildModal += '<div class="dialogFooter"><span class="container">' + buttons + '</span></div>';
|
71
|
+
}
|
72
|
+
buildModal += '</div></div>';
|
73
|
+
$(options.appendTo).append(buildModal);
|
74
|
+
if (options.headerContent && options.header) {
|
75
|
+
$(options.headerContent).appendTo('#' + options.id + ' h1 .container').css('display', 'block');
|
76
|
+
}
|
77
|
+
$(this).appendTo('#' + options.id + ' .d_content').css('display', 'block');
|
78
|
+
if (options.ajax) {
|
79
|
+
$(this).dialog('ajax', options);
|
80
|
+
}
|
81
|
+
$('#' + options.id + ' .dialog').dialog('position', options);
|
82
|
+
$('#' + options.id).dialog('_setupEvents', options);
|
83
|
+
$(options.appendTo).addClass("dialog_open");
|
84
|
+
options.afterOpen.call();
|
85
|
+
},
|
86
|
+
ajax: function (options) {
|
87
|
+
var _this = $(this)
|
88
|
+
if (options.ajaxTarget) options.ajax = options.ajax + ' ' + options.ajaxTarget
|
89
|
+
if (options.notify) {
|
90
|
+
_this.parents('.dialogBody').notify({ style: "none", position: "middle", loading: "circles", sticky: true, content: "hidden" });
|
91
|
+
}
|
92
|
+
_this.load(options.ajax, function (response, status, xhr) {
|
93
|
+
_this.parents('.dialogBody').find('.notify').notify("close")
|
94
|
+
if (status == "error") {
|
95
|
+
var msg = "Sorry but there was an error: ";
|
96
|
+
alert(msg + xhr.status + " " + xhr.statusText);
|
97
|
+
}
|
98
|
+
});
|
99
|
+
},
|
100
|
+
close: function (options) {
|
101
|
+
options = $.extend({}, methods.defaults, options);
|
102
|
+
if ($('.dialog')[1]) {
|
103
|
+
var amount = $('.dialog').length - 1
|
104
|
+
$.each($('.dialog'), function (i, v) {
|
105
|
+
if (i === amount) {
|
106
|
+
$(v).parents('.dialog_container').fadeOut('fast');
|
107
|
+
}
|
108
|
+
});
|
109
|
+
} else {
|
110
|
+
$(options.appendTo).removeClass('dialog_open').addClass('dialog_close');
|
111
|
+
}
|
112
|
+
options.beforeClose();
|
113
|
+
var modal_content = $(this).find('.d_content').children(),
|
114
|
+
parent = $(this).parents('.dialog_container'),
|
115
|
+
body = $(this).find('.dialogBody'),
|
116
|
+
b_width = body.outerWidth(),
|
117
|
+
b_height = body.outerHeight();
|
118
|
+
body.css({width: b_width, height: b_height});
|
119
|
+
if (!options.removeContent) {
|
120
|
+
modal_content.appendTo(options.appendTo).css('display', 'none');
|
121
|
+
if (options.headerContent && options.header) {
|
122
|
+
$(options.headerContent).appendTo(options.appendTo).css('display', 'none');
|
123
|
+
}
|
124
|
+
} else {
|
125
|
+
modal_content.remove();
|
126
|
+
}
|
127
|
+
setTimeout(function () {
|
128
|
+
if (!$('.dialog')[1]) {
|
129
|
+
$(options.appendTo).removeClass("dialog_close");
|
130
|
+
}
|
131
|
+
parent.remove();
|
132
|
+
$(window).unbind("resize.modal");
|
133
|
+
}, 1000);
|
134
|
+
options.afterClose();
|
135
|
+
},
|
136
|
+
_setupEvents: function (options) {
|
137
|
+
var _this = $(this)
|
138
|
+
$(window).bind("resize.modal", function () {
|
139
|
+
_this.find('.dialog').dialog('position', options)
|
140
|
+
});
|
141
|
+
$(this).find('.dialogFooter a:not(.closeDialog)').each(function (i) {
|
142
|
+
$(this).click(options.buttons[i].context ? function () {
|
143
|
+
options.buttons[i].callback.apply(options.buttons[i].context)
|
144
|
+
} : options.buttons[i].callback);
|
145
|
+
});
|
146
|
+
$(this).find('.closeDialog').click(function () {
|
147
|
+
(typeof options.closeCallback === 'undefined') ? $('#' + options.id + ' .dialog').dialog('close', options) : options.closeCallback();
|
148
|
+
});
|
149
|
+
},
|
150
|
+
position: function (options) {
|
151
|
+
var dialog = $(this);
|
152
|
+
var dialogHeight = dialog.outerHeight();
|
153
|
+
var dialogPadding = dialogHeight - dialog.height();
|
154
|
+
var win = $(window).height();
|
155
|
+
var threshold = options.threshold;
|
156
|
+
if (options.height == 'auto') {
|
157
|
+
if ( dialogHeight > (win - (threshold * 2)) ) {
|
158
|
+
dialog.css('height', (win - ((threshold * 2) - dialogPadding)) );
|
159
|
+
}
|
160
|
+
dialog.css({ 'margin-top': -(dialog.outerHeight() / 2), 'margin-left': -(dialog.outerWidth() / 2) });
|
161
|
+
} else {
|
162
|
+
dialog.css({ 'top': threshold, 'bottom': threshold, 'margin-left': -(dialog.outerWidth() / 2) });
|
163
|
+
}
|
164
|
+
}
|
165
|
+
};
|
166
|
+
$.fn.dialog = function (method) {
|
167
|
+
if (methods[method]) {
|
168
|
+
return methods[ method ].apply(this, Array.prototype.slice.call(arguments, 1));
|
169
|
+
} else if (typeof method === 'object' || !method) {
|
170
|
+
return methods.init.apply(this, arguments);
|
171
|
+
} else {
|
172
|
+
$.error('Method ' + method + ' does not exist on jQuery.Modal');
|
173
|
+
}
|
174
|
+
}
|
175
|
+
})(jQuery);
|
@@ -0,0 +1,199 @@
|
|
1
|
+
/* expressionUI notify v2.0
|
2
|
+
* https://github.com/jasoncypret/expressionUI
|
3
|
+
*
|
4
|
+
* Copyright (c) 2013 Jason Cypret (http://jasoncypret.com/)
|
5
|
+
* Licensed under the MIT License
|
6
|
+
*/
|
7
|
+
|
8
|
+
(function() {
|
9
|
+
(function($) {
|
10
|
+
var methods, t;
|
11
|
+
t = void 0;
|
12
|
+
methods = {
|
13
|
+
defaults: {
|
14
|
+
n_class: "",
|
15
|
+
message: null,
|
16
|
+
sticky: false,
|
17
|
+
width: "full",
|
18
|
+
style: "success",
|
19
|
+
append_type: "prepend",
|
20
|
+
allow_multiple: false,
|
21
|
+
invert: false,
|
22
|
+
icon: true,
|
23
|
+
loading: null,
|
24
|
+
position: "top",
|
25
|
+
duration: "7000",
|
26
|
+
content: "visible",
|
27
|
+
text_align: "bottom",
|
28
|
+
beforeOpen: $.noop,
|
29
|
+
afterOpen: $.noop,
|
30
|
+
beforeClose: $.noop,
|
31
|
+
afterClose: $.noop
|
32
|
+
},
|
33
|
+
init: function(options) {
|
34
|
+
options = $.extend({}, methods.defaults, options);
|
35
|
+
if (!options.allow_multiple) {
|
36
|
+
var selector = '';
|
37
|
+
switch (options.append_type) {
|
38
|
+
case 'prepend': case 'append':
|
39
|
+
selector = $(this).find('.notify');
|
40
|
+
break
|
41
|
+
case 'after':
|
42
|
+
selector = $(this).next('.notify');
|
43
|
+
break
|
44
|
+
case 'before':
|
45
|
+
selector = $(this).prev('.notify');
|
46
|
+
break
|
47
|
+
}
|
48
|
+
if (selector.length > 0) {
|
49
|
+
$(selector).notify("close", options, false);
|
50
|
+
}
|
51
|
+
return $(this).notify("_add_markup", options);
|
52
|
+
} else {
|
53
|
+
return $(this).notify("_add_markup", options);
|
54
|
+
}
|
55
|
+
},
|
56
|
+
_add_markup: function(options) {
|
57
|
+
var markup, iconType;
|
58
|
+
|
59
|
+
// Check ICON TRUE
|
60
|
+
if (options.style === "error") { iconType = 'x'; }
|
61
|
+
if (options.style === "success") { iconType = '/'; }
|
62
|
+
if (options.style === "tip") { iconType = '!'; }
|
63
|
+
if (options.style === "info") { iconType = 'i'; }
|
64
|
+
if (!options.message) { options.message = ''; }
|
65
|
+
|
66
|
+
markup = '<div style="display:none;" class="notify' + options.n_class + ' text_align_' + options.text_align + ' style_' + options.style + ' position_' + options.position + ' width_' + options.width + ' invert_' + options.invert + ' loading_' + options.loading + ' icon_' + options.icon +'">';
|
67
|
+
markup += '<div class="notify_wrap">';
|
68
|
+
if (options.icon) { markup += '<div class="icon">' + iconType + '</div>' }
|
69
|
+
|
70
|
+
|
71
|
+
switch(options.loading) {
|
72
|
+
case "dots":
|
73
|
+
markup += '<div class="indicator">';
|
74
|
+
markup += '<div class="dot1"></div>';
|
75
|
+
markup += '<div class="dot2"></div>';
|
76
|
+
markup += '<div class="dot3"></div>';
|
77
|
+
markup += '<div class="dot4"></div>';
|
78
|
+
markup += '<div class="dot5"></div>';
|
79
|
+
markup += '<div class="dot6"></div>';
|
80
|
+
markup += '<div class="dot7"></div>';
|
81
|
+
markup += '<div class="dot8"></div>';
|
82
|
+
markup += '</div>'
|
83
|
+
markup += '<div class="msg">' + options.message + '</div>';
|
84
|
+
break
|
85
|
+
|
86
|
+
case "spinner":
|
87
|
+
markup += '<div class="indicator"></div>';
|
88
|
+
markup += '<div class="msg">' + options.message + '</div>';
|
89
|
+
break
|
90
|
+
|
91
|
+
case "bars":
|
92
|
+
markup += '<div class="indicator"><div class="progress"></div></div>';
|
93
|
+
markup += '<div class="msg">' + options.message + '</div>';
|
94
|
+
break
|
95
|
+
|
96
|
+
case "circles":
|
97
|
+
markup += '<div class="indicator">';
|
98
|
+
markup += '<div class="circle1"></div>';
|
99
|
+
markup += '<div class="circle2"></div>'
|
100
|
+
markup += '<div class="circle3"></div>';
|
101
|
+
markup += '</div>';
|
102
|
+
markup += '<div class="msg">' + options.message + '</div>';
|
103
|
+
break
|
104
|
+
|
105
|
+
default:
|
106
|
+
(options.style == "loading") ? markup += '<div class="progress"></div><div class="msg">' + options.message + '</div>' : markup += '<div class="msg">' + options.message + '</div>' ;
|
107
|
+
markup += '<a class="notify_close" href="javascript:;"><span>x</span></a>';
|
108
|
+
markup += '</div>';
|
109
|
+
}
|
110
|
+
|
111
|
+
markup += '</div>';
|
112
|
+
|
113
|
+
return $(this).notify("_open", options, markup);
|
114
|
+
},
|
115
|
+
|
116
|
+
_open: function(options, markup) {
|
117
|
+
var selector
|
118
|
+
options.beforeOpen();
|
119
|
+
$(this).addClass('notify_container content_' + options.content)[options.append_type](markup);
|
120
|
+
switch (options.append_type) {
|
121
|
+
case 'prepend': case 'append':
|
122
|
+
selector = $(this).find('.notify[style*="display"]');
|
123
|
+
break
|
124
|
+
case 'after':
|
125
|
+
selector = $(this).next('.notify[style*="display"]');
|
126
|
+
break
|
127
|
+
case 'before':
|
128
|
+
selector = $(this).prev('.notify[style*="display"]');
|
129
|
+
break
|
130
|
+
}
|
131
|
+
$(selector).slideDown("fast");
|
132
|
+
options.afterOpen();
|
133
|
+
return $(this).notify("_setupEvents", options, selector);
|
134
|
+
},
|
135
|
+
close: function(options, animate) {
|
136
|
+
var selector
|
137
|
+
animate = typeof animate !== 'undefined' ? animate : true;
|
138
|
+
options = $.extend({}, methods.defaults, options);
|
139
|
+
options.beforeClose();
|
140
|
+
switch (options.append_type) {
|
141
|
+
case 'prepend': case 'append': case 'before':
|
142
|
+
selector = $(this).parents('.notify_container');
|
143
|
+
break
|
144
|
+
case 'after':
|
145
|
+
selector = $(this).prev('.notify_container');
|
146
|
+
break
|
147
|
+
}
|
148
|
+
if (!$(this).hasClass("loading_null")) {
|
149
|
+
animate = false;
|
150
|
+
}
|
151
|
+
if (animate) {
|
152
|
+
$(this).slideUp("fast", function() {
|
153
|
+
$(selector).removeClass('content_hidden content_overlay content_visible notify_container');
|
154
|
+
return $(this).remove();
|
155
|
+
});
|
156
|
+
} else {
|
157
|
+
$(selector).removeClass('content_hidden content_overlay content_visible notify_container');
|
158
|
+
return $(this).remove();
|
159
|
+
}
|
160
|
+
return options.afterClose();
|
161
|
+
},
|
162
|
+
close_all: function(options) {
|
163
|
+
options = $.extend({}, methods.defaults, options);
|
164
|
+
options.beforeClose();
|
165
|
+
$(".notify").slideUp("fast", function() {
|
166
|
+
$(this).closest('[class^=content_]').removeClass('content_hidden content_overlay content_visible');
|
167
|
+
return $(this).remove();
|
168
|
+
});
|
169
|
+
return options.afterClose();
|
170
|
+
},
|
171
|
+
loading: function(options) {
|
172
|
+
options = $.extend({}, methods.defaults, options);
|
173
|
+
},
|
174
|
+
_setupEvents: function(options, selector) {
|
175
|
+
if (!options.sticky) {
|
176
|
+
t = setTimeout(function() {
|
177
|
+
$(selector).notify("close", options);
|
178
|
+
return clearTimeout(t);
|
179
|
+
}, options.duration);
|
180
|
+
}
|
181
|
+
return $(selector).click(function() {
|
182
|
+
clearTimeout(t);
|
183
|
+
return $(selector).notify("close", options);
|
184
|
+
});
|
185
|
+
}
|
186
|
+
};
|
187
|
+
return $.fn.notify = function(method) {
|
188
|
+
if (methods[method]) {
|
189
|
+
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
190
|
+
} else if (typeof method === "object" || !method) {
|
191
|
+
return methods.init.apply(this, arguments);
|
192
|
+
} else {
|
193
|
+
return $.error("Method " + method + " does not exist on jQuery.Notify");
|
194
|
+
}
|
195
|
+
};
|
196
|
+
})(jQuery);
|
197
|
+
|
198
|
+
}).call(this);
|
199
|
+
|
@@ -0,0 +1,62 @@
|
|
1
|
+
/* expressionUI popover v2.0
|
2
|
+
* https://github.com/jasoncypret/expressionUI
|
3
|
+
*
|
4
|
+
* Copyright (c) 2013 Jason Cypret (http://jasoncypret.com/)
|
5
|
+
* Licensed under the MIT License
|
6
|
+
*/
|
7
|
+
|
8
|
+
(function ($) {
|
9
|
+
$.fn.popover = function (options) {
|
10
|
+
var defaults = {
|
11
|
+
content: $('.popover'),
|
12
|
+
padding: 0,
|
13
|
+
aOffset: 55
|
14
|
+
};
|
15
|
+
options = $.extend({}, defaults, options);
|
16
|
+
var left = $(this).offset().left,
|
17
|
+
top = $(this).offset().top,
|
18
|
+
winTopMax = $(window).height() / 2,
|
19
|
+
winLeftMax = $(window).width() / 2,
|
20
|
+
pos = '',
|
21
|
+
num = 0,
|
22
|
+
tooltipHeight,
|
23
|
+
tooltipWidth;
|
24
|
+
(top >= 1 && top - $(window).scrollTop() <= winTopMax) ? pos = 'top' : pos = 'bottom';
|
25
|
+
(left >= 1 && left - $(window).scrollLeft() <= winLeftMax) ? pos += 'left' : pos += 'right';
|
26
|
+
options.content.addClass('popover_container ' + pos).css({visibility: 'hidden', display: 'block', zIndex: '9999'});
|
27
|
+
tooltipHeight = options.content.outerHeight();
|
28
|
+
tooltipWidth = options.content.outerWidth();
|
29
|
+
switch (pos) {
|
30
|
+
case "topleft":
|
31
|
+
top += ( $(this).outerHeight() * Math.PHI ) + options.padding;
|
32
|
+
left -= options.aOffset / (Math.PHI * Math.PHI);
|
33
|
+
break;
|
34
|
+
case "topright":
|
35
|
+
top += ( $(this).outerHeight() * Math.PHI ) + options.padding;
|
36
|
+
left -= tooltipWidth - options.aOffset;
|
37
|
+
break;
|
38
|
+
case "bottomleft":
|
39
|
+
top -= tooltipHeight + ($(this).outerHeight() / 2);
|
40
|
+
left -= options.aOffset / (Math.PHI * Math.PHI);
|
41
|
+
break;
|
42
|
+
case "bottomright":
|
43
|
+
top -= tooltipHeight + ($(this).outerHeight() / 2);
|
44
|
+
left -= tooltipWidth - options.aOffset;
|
45
|
+
break;
|
46
|
+
}
|
47
|
+
options.content.css({ 'left': left + 'px', 'top': top + 'px', 'display': 'none', 'visibility': 'visible' }).show();
|
48
|
+
$(this).addClass('popover_active')
|
49
|
+
var removePopup = function (e) {
|
50
|
+
num++;
|
51
|
+
if (num > 1) {
|
52
|
+
$(options.content).removeClass('popover_container topleft bottomleft topright bottomright').hide();
|
53
|
+
$(document).unbind('click.popover content.scroll');
|
54
|
+
$('.popover_active').removeClass('popover_active')
|
55
|
+
}
|
56
|
+
};
|
57
|
+
$(document).bind('click.popover content.scroll', removePopup);
|
58
|
+
}
|
59
|
+
})(jQuery);
|
60
|
+
|
61
|
+
//TODO: Move to a global place
|
62
|
+
Math.PHI = 1.61803398875;
|
@@ -0,0 +1,55 @@
|
|
1
|
+
a:visited
|
2
|
+
//color: $link
|
3
|
+
|
4
|
+
.btn
|
5
|
+
+btn(#fff)
|
6
|
+
&.highlight
|
7
|
+
+btn($highlight)
|
8
|
+
&.accent
|
9
|
+
+btn($accent)
|
10
|
+
|
11
|
+
.amp
|
12
|
+
+amp
|
13
|
+
|
14
|
+
.markdown_style
|
15
|
+
//+markdown_style
|
16
|
+
|
17
|
+
.offscreen
|
18
|
+
+offscreen
|
19
|
+
|
20
|
+
a.nav_action
|
21
|
+
+nav_action
|
22
|
+
|
23
|
+
a.btn_filter
|
24
|
+
+btn_filter
|
25
|
+
|
26
|
+
.icon
|
27
|
+
+icon_font
|
28
|
+
|
29
|
+
.icon_left:before
|
30
|
+
+icon_inline
|
31
|
+
padding-right: $pad/1.5
|
32
|
+
|
33
|
+
.icon_right:after
|
34
|
+
+icon_inline
|
35
|
+
padding-left: $pad/1.5
|
36
|
+
|
37
|
+
.invisible
|
38
|
+
visibility: hidden
|
39
|
+
position: relative
|
40
|
+
+group
|
41
|
+
|
42
|
+
.left
|
43
|
+
float: left
|
44
|
+
|
45
|
+
.middle
|
46
|
+
display: block
|
47
|
+
|
48
|
+
.right
|
49
|
+
float: right
|
50
|
+
|
51
|
+
.group
|
52
|
+
+group
|
53
|
+
|
54
|
+
.inline
|
55
|
+
+inline_block
|