groundworkcss-rails 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. data/app/helpers/breadcrumbs_helper.rb~ +5 -0
  2. data/app/helpers/flash_block_helper.rb~ +18 -0
  3. data/app/helpers/flash_helper.rb~ +21 -0
  4. data/app/helpers/groundwork_flash_helper.rb~ +21 -0
  5. data/app/helpers/modal_helper.rb~ +42 -0
  6. data/app/helpers/social_glyph_helper.rb~ +12 -0
  7. data/lib/generators/groundworkcss/install/install_generator.rb~ +44 -0
  8. data/lib/generators/groundworkcss/install/templates/application.css.scss~ +8 -0
  9. data/lib/generators/groundworkcss/install/templates/application.css~ +7 -0
  10. data/lib/generators/groundworkcss/install/templates/application.js~ +10 -0
  11. data/lib/generators/groundworkcss/install/templates/groundwork-and-overrides.scss~ +12 -0
  12. data/lib/generators/groundworkcss/install/templates/groundwork-overrides.scss~ +7 -0
  13. data/lib/generators/groundworkcss/install/templates/groundwork.coffee~ +0 -0
  14. data/lib/generators/groundworkcss/install/templates/groundwork.js~ +1 -0
  15. data/lib/generators/groundworkcss/layout/layout_generator.rb~ +1 -1
  16. data/lib/generators/groundworkcss/layout/templates/_header.html.erb~ +24 -0
  17. data/lib/generators/groundworkcss/layout/templates/_sidebar.html.erb~ +18 -0
  18. data/lib/generators/groundworkcss/layout/templates/layout.html.erb~ +44 -0
  19. data/lib/groundworkcss/rails/bootstrap.rb~ +2 -0
  20. data/lib/groundworkcss/rails/engine.rb~ +30 -0
  21. data/lib/groundworkcss/rails/version.rb +1 -1
  22. data/lib/groundworkcss/rails/version.rb~ +1 -1
  23. data/lib/twitter-bootstrap-rails.rb~ +10 -0
  24. data/vendor/assets/javascripts/groundwork.js~ +8 -0
  25. data/vendor/assets/javascripts/groundworkcss/groundwork.js +24 -217
  26. data/vendor/assets/javascripts/groundworkcss/groundwork.js~ +7 -0
  27. data/vendor/assets/javascripts/groundworkcss/plugins/jquery.modals.js +1 -1
  28. data/vendor/assets/javascripts/groundworkcss/plugins/jquery.popover.js +1 -1
  29. data/vendor/assets/javascripts/groundworkcss/plugins/jquery.responsiveTables.js +1 -1
  30. data/vendor/assets/javascripts/groundworkcss/plugins/jquery.responsiveText.js +1 -1
  31. data/vendor/assets/javascripts/groundworkcss/plugins/jquery.tooltip.js +24 -10
  32. data/vendor/assets/stylesheets/groundworkcss-scss/_buttons.scss +3 -0
  33. data/vendor/assets/stylesheets/groundworkcss-scss/_classes.scss +149 -0
  34. data/vendor/assets/stylesheets/groundworkcss-scss/_font-awesome.scss~ +534 -0
  35. data/vendor/assets/stylesheets/groundworkcss-scss/_grid.scss +46 -366
  36. data/vendor/assets/stylesheets/groundworkcss-scss/_layout.scss +11 -11
  37. data/vendor/assets/stylesheets/groundworkcss-scss/_mixins.scss +9 -0
  38. data/vendor/assets/stylesheets/groundworkcss-scss/_responsive.scss +4 -106
  39. data/vendor/assets/stylesheets/groundworkcss-scss/_social-icons.scss~ +92 -0
  40. data/vendor/assets/stylesheets/groundworkcss-scss/_tooltips.scss +5 -5
  41. data/vendor/assets/stylesheets/groundworkcss-scss/_typography.scss +48 -43
  42. data/vendor/assets/stylesheets/groundworkcss-scss/_variables.scss +47 -46
  43. data/vendor/assets/stylesheets/groundworkcss-scss/groundwork.scss +3 -0
  44. metadata +318 -299
  45. data/vendor/assets/javascripts/groundworkcss/coffee/groundwork.coffee +0 -207
  46. data/vendor/assets/javascripts/groundworkcss/coffee/plugins/jquery.modals.coffee +0 -162
  47. data/vendor/assets/javascripts/groundworkcss/coffee/plugins/jquery.popover.coffee +0 -198
  48. data/vendor/assets/javascripts/groundworkcss/coffee/plugins/jquery.responsiveTables.coffee +0 -56
  49. data/vendor/assets/javascripts/groundworkcss/coffee/plugins/jquery.responsiveText.coffee +0 -32
  50. data/vendor/assets/javascripts/groundworkcss/coffee/plugins/jquery.tooltip.coffee +0 -121
@@ -0,0 +1,5 @@
1
+ module TwitterBreadcrumbsHelper
2
+ def render_breadcrumbs(divider = '/')
3
+ render :partial => 'twitter-bootstrap/breadcrumbs', :locals => { :divider => divider }
4
+ end
5
+ end
@@ -0,0 +1,18 @@
1
+ module FlashBlockHelper
2
+ def flash_block
3
+ output = ''
4
+ flash.each do |type, message|
5
+ output += flash_container(type, message)
6
+ end
7
+
8
+ raw(output)
9
+ end
10
+
11
+ def flash_container(type, message)
12
+ # Types: important, success, warning, error
13
+ #<p class="warning message">This is a warning message.</p>
14
+ raw(content_tag(:p, :class => "message #{type}") do
15
+ message
16
+ end)
17
+ end
18
+ end
@@ -0,0 +1,21 @@
1
+ module GroundworkFlashHelper
2
+ ALERT_TYPES = [:error, :success, :warning]
3
+
4
+ def groundwork_flash
5
+ flash_messages = []
6
+ flash.each do |type, message|
7
+ next if message.blank?
8
+
9
+ type = :success if type == :notice
10
+ type = :error if type == :alert
11
+ next unless ALERT_TYPES.include?(type)
12
+
13
+ Array(message).each do |msg|
14
+ text = content_tag(:p,
15
+ msg.html_safe, :class => "message #{type}")
16
+ flash_messages << text if message
17
+ end
18
+ end
19
+ flash_messages.join("\n").html_safe
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module GroundworkFlashHelper
2
+ ALERT_TYPES = [:error, :success, :warning]
3
+
4
+ def bootstrap_flash
5
+ flash_messages = []
6
+ flash.each do |type, message|
7
+ next if message.blank?
8
+
9
+ type = :success if type == :notice
10
+ type = :error if type == :alert
11
+ next unless ALERT_TYPES.include?(type)
12
+
13
+ Array(message).each do |msg|
14
+ text = content_tag(:p,
15
+ msg.html_safe, :class => "message #{type}")
16
+ flash_messages << text if message
17
+ end
18
+ end
19
+ flash_messages.join("\n").html_safe
20
+ end
21
+ end
@@ -0,0 +1,42 @@
1
+ module ModalHelper
2
+ def modal_dialog(options = {}, escape = true, &block)
3
+ default_options = {:class => "bootstrap-modal modal"}
4
+ content_tag :div, nil, options.merge(default_options), escape, &block
5
+ end
6
+
7
+ def modal_header(options = {}, escape = true, &block)
8
+ default_options = {:class => 'modal-header'}
9
+ content_tag :div, nil, options.merge(default_options), escape do
10
+ raw("<button class=\"close\" data-dismiss=\"modal\">&times;</button>" + capture(&block))
11
+ end
12
+ end
13
+
14
+ def modal_body(options = {}, escape = true, &block)
15
+ default_options = {:class => 'modal-body'}
16
+ content_tag :div, nil, options.merge(default_options), escape, &block
17
+ end
18
+
19
+ def modal_footer(options = {}, escape = true, &block)
20
+ default_options = {:class => 'modal-footer'}
21
+ content_tag :div, nil, options.merge(default_options), escape, &block
22
+ end
23
+
24
+ def modal_toggle(content_or_options = nil, options = {}, &block)
25
+ if block_given?
26
+ options = content_or_options if content_or_options.is_a?(Hash)
27
+ default_options = {:class => 'btn', "data-toggle" => "modal", "href" => options[:dialog]}.merge(options)
28
+
29
+ content_tag :a, nil, default_options, true, &block
30
+ else
31
+ default_options = {:class => 'btn', "data-toggle" => "modal", "href" => options[:dialog]}.merge(options)
32
+ content_tag :a, content_or_options, default_options, true
33
+ end
34
+ end
35
+
36
+ def modal_cancel_button content, options = {}
37
+ default_options = {:class => "btn bootstrap-modal-cancel-button"}
38
+
39
+ content_tag_string "a", content, default_options.merge(options)
40
+ end
41
+ end
42
+
@@ -0,0 +1,12 @@
1
+ module SocialGlyphHelper
2
+ # ==== Examples
3
+ # social_glyph(:dropbox, :large)
4
+ # # => <i class="social-icon dropbox large"></i>
5
+ # social_glyph(:dropbox)
6
+ # # => <i class="social-icon dropbox"></i>
7
+
8
+ def social_glyph(icon, size)
9
+ content_tag :i, nil, :class => "social-icon #{icon} #{size unless size.nil?}"
10
+ end
11
+ end
12
+
@@ -0,0 +1,44 @@
1
+ require 'rails/generators'
2
+
3
+ module Groundworkcss
4
+ module Generators
5
+ class InstallGenerator < ::Rails::Generators::Base
6
+
7
+ source_root File.expand_path("../templates", __FILE__)
8
+ desc "This generator installs GroundworkCSS to Asset Pipeline"
9
+ argument :stylesheets_type, :type => :string, :default => 'less', :banner => '*less or static'
10
+
11
+ def add_assets
12
+
13
+ if File.exist?('app/assets/javascripts/application.js')
14
+ insert_into_file "app/assets/javascripts/application.js", "//= require groundwork\n", :after => "jquery_ujs\n"
15
+ else
16
+ copy_file "application.js", "app/assets/javascripts/application.js"
17
+ end
18
+
19
+ if File.exist?('app/assets/stylesheets/application.css')
20
+ style_require_block = " *= require groundwork-and-overrides\n"
21
+ insert_into_file "app/assets/stylesheets/application.css", style_require_block, :after => "require_self\n"
22
+ else
23
+ copy_file "application.css", "app/assets/stylesheets/application.css"
24
+ end
25
+
26
+ copy_file "groundwork-and-overrides.scss", "app/assets/stylesheets/groundwork-and-overrides.scss"
27
+
28
+ end
29
+
30
+ def add_javascript
31
+ if use_coffeescript?
32
+ copy_file "groundwork.coffee", "app/assets/javascripts/groundwork.js.coffee"
33
+ else
34
+ copy_file "groundwork.js", "app/assets/javascripts/groundwork.js"
35
+ end
36
+ end
37
+
38
+ private
39
+ def use_coffeescript?
40
+ ::Rails.configuration.app_generators.rails[:javascript_engine] == :coffee
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,8 @@
1
+ /*
2
+ * This is a manifest file that'll automatically include all the stylesheets available in this directory
3
+ * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
4
+ * the top of the compiled file, but it's generally better to create a new file per style scope.
5
+ *= require_self
6
+ *= require groundworkscss/groundwork
7
+ *= require_tree .
8
+ */
@@ -0,0 +1,7 @@
1
+ /*
2
+ * This is a manifest file that'll automatically include all the stylesheets available in this directory
3
+ * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
4
+ * the top of the compiled file, but it's generally better to create a new file per style scope.
5
+ *= require_self
6
+ *= require_tree .
7
+ */
@@ -0,0 +1,10 @@
1
+ // This is a manifest file that'll be compiled into including all the files listed below.
2
+ // Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
3
+ // be included in the compiled file accessible from http://example.com/assets/application.js
4
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
5
+ // the compiled file.
6
+ //
7
+ //= require jquery
8
+ //= require jquery_ujs
9
+ //= require twitter/bootstrap
10
+ //= require_tree .
@@ -0,0 +1,12 @@
1
+ $socialPath: "../assets/groundworkcss/social-icons" !default;
2
+ $fontAwesomePath: "../assets/groundworkcss" !default;
3
+
4
+ @import "groundworkcss-scss/groundwork";
5
+
6
+ body {
7
+ background: url("pw_maze_white.png");
8
+ }
9
+
10
+ header{
11
+ background: white;
12
+ }
@@ -0,0 +1,7 @@
1
+ body {
2
+ background: url("pw_maze_white.png");
3
+ }
4
+
5
+ header{
6
+ background: white;
7
+ }
@@ -14,7 +14,7 @@ module Groundworkcss
14
14
  ext = app.config.generators.options[:rails][:template_engine] || :erb
15
15
  template "layout.html.#{ext}", "app/views/layouts/#{layout_name}.html.#{ext}"
16
16
  copy_file "_sidebar.html.#{ext}", "app/views/layouts/_sidebar.html.#{ext}"
17
- copy_file "_header.html.#{ext}", "app/views/layouts/_header.html.#{ext}"
17
+ copy_file "_header.html.#{ext}", "app/views/layouts/_sidebar.html.#{ext}"
18
18
  end
19
19
  end
20
20
  end
@@ -0,0 +1,24 @@
1
+ <header class="white band padded">
2
+ <div class="container pad-top">
3
+ <div class="row">
4
+ <div class="one third padded">
5
+
6
+ <h1 class="responsive">
7
+ <a href="#">
8
+ <%= ::Rails.application.class.to_s.split("::").first %>
9
+ </a>
10
+ </h1>
11
+
12
+ </div>
13
+ <div class="two thirds padded">
14
+ <nav class="inline pull-right pad-top">
15
+ <ul>
16
+ <li><a href="#">Link 1</a></li>
17
+ <li><a href="#">Link 2</a></li>
18
+ <li><a href="#">Link 3</a></li>
19
+ </ul>
20
+ </nav>
21
+ </div>
22
+ </div>
23
+ </div>
24
+ </header>
@@ -0,0 +1,18 @@
1
+ <% if content_for?(:nav) || content_for?(:sidebar)%>
2
+ <aside class="one fifth padded border-right">
3
+ <% if content_for? :nav %>
4
+ <h3>Navigation</h3>
5
+ <nav>
6
+ <ul>
7
+ <%= yield :nav%>
8
+ </ul>
9
+ </nav>
10
+ <%end%>
11
+
12
+ <br/>
13
+
14
+ <% if content_for? :sidebar%>
15
+ <%= yield :sidebar%>
16
+ <%end%>
17
+ </aside>
18
+ <%end%>
@@ -0,0 +1,44 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1">
7
+ <title><%%= content_for?(:title) ? yield(:title) : "<%= app_name %>" %></title>
8
+ <%%= csrf_meta_tags %>
9
+
10
+ <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
11
+ <!--[if lt IE 9]>
12
+ <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.6.1/html5shiv.js" type="text/javascript"></script>
13
+ <![endif]-->
14
+ <%%= stylesheet_link_tag "application", :media => "all" %>
15
+ </head>
16
+ <body>
17
+
18
+ <%%= render :partial => "layouts/header"%>
19
+
20
+ <div class="container">
21
+ <div class="row">
22
+ <%%= render :partial => "layouts/sidebar"%>
23
+
24
+ <section class="
25
+ <%%if content_for?(:sidebar) || content_for?(:nav)%>
26
+ four fifths
27
+ <%%end%>
28
+ padded">
29
+
30
+ <%%= groundwork_flash %>
31
+
32
+ <%%= yield %>
33
+
34
+ </section>
35
+ </div>
36
+
37
+ <footer class="footer align-center">
38
+ <p>&copy; Company 2013</p>
39
+ </footer>
40
+
41
+ </div> <!-- /container -->
42
+ <%%= javascript_include_tag "application" %>
43
+ </body>
44
+ </html>
@@ -0,0 +1,2 @@
1
+ require "twitter/bootstrap/rails/engine"
2
+ require "twitter/bootstrap/rails/version"
@@ -0,0 +1,30 @@
1
+ require 'rails'
2
+
3
+ require File.dirname(__FILE__) + '/../../../app/helpers/flash_block_helper.rb'
4
+ require File.dirname(__FILE__) + '/../../../app/helpers/glyph_helper.rb'
5
+ require File.dirname(__FILE__) + '/../../../app/helpers/social_glyph_helper.rb'
6
+
7
+ module Groundworkcss
8
+ module Rails
9
+ class Engine < ::Rails::Engine
10
+ initializer 'groundworkcss-rails.setup',
11
+ :after => 'less-rails.after.load_config_initializers',
12
+ :group => :all do |app|
13
+ if defined?(Less)
14
+ app.config.less.paths << File.join(config.root, 'vendor', 'toolkit')
15
+ end
16
+ end
17
+
18
+ initializer 'groundworkcss-rails.setup_helpers' do |app|
19
+ app.config.to_prepare do
20
+ ActionController::Base.send :include, BreadCrumbs
21
+ ActionController::Base.send :helper, FlashBlockHelper
22
+ ActionController::Base.send :helper, ModalHelper
23
+ ActionController::Base.send :helper, GlyphHelper
24
+ ActionController::Base.send :helper, SocialGlyphHelper
25
+ #ActionController::Base.send :helper_method, :render_breadcrumbs
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,5 +1,5 @@
1
1
  module Groundworkcss
2
2
  module Rails
3
- VERSION = "0.2.1"
3
+ VERSION = "0.2.2"
4
4
  end
5
5
  end
@@ -1,5 +1,5 @@
1
1
  module Groundworkcss
2
2
  module Rails
3
- VERSION = "0.2"
3
+ VERSION = "0.2.1"
4
4
  end
5
5
  end
@@ -0,0 +1,10 @@
1
+ module Twitter
2
+ module Bootstrap
3
+ module Rails
4
+ require 'twitter/bootstrap/rails/engine' if defined?(Rails)
5
+ end
6
+ end
7
+ end
8
+
9
+ #require 'less-rails'
10
+ require 'twitter/bootstrap/rails/bootstrap' if defined?(Rails)
@@ -0,0 +1,8 @@
1
+ //= require_tree ./libs
2
+ //= require ./plugins/jquery.modals.js
3
+ //= require ./plugins/jquery.orbit-1.4.0.js
4
+ //= require ./plugins/jquery.popover.js
5
+ //= require ./plugins/jquery.responsiveTables.js
6
+ //= require ./plugins/jquery.responsiveText.js
7
+ //= require ./plugins/jquery.tooltip.js
8
+ //= require ./groundwork_ujs.js
@@ -1,4 +1,4 @@
1
- // Generated by CoffeeScript 1.4.0
1
+ // Generated by CoffeeScript 1.6.1
2
2
 
3
3
  /*
4
4
  *
@@ -241,7 +241,7 @@
241
241
 
242
242
  (function($) {
243
243
  return $.fn.tooltip = function(options) {
244
- var closetooltip, defaults, delayShow, getElementPosition, setPosition, showtooltip, tooltip, trigger;
244
+ var closetooltip, defaults, delayShow, getElementPosition, resettooltip, setPosition, showtooltip, tooltip, trigger;
245
245
  defaults = {
246
246
  topOffset: 0,
247
247
  delay: 100,
@@ -251,6 +251,10 @@
251
251
  tooltip = $('#tooltip');
252
252
  delayShow = '';
253
253
  trigger = '';
254
+ if ($('#tooltip').length !== 1) {
255
+ tooltip = $("<div id=\"tooltip\"></div>");
256
+ tooltip.appendTo("body").hide();
257
+ }
254
258
  getElementPosition = function(el) {
255
259
  var bottom, left, offset, right, top, win;
256
260
  offset = el.offset();
@@ -288,22 +292,32 @@
288
292
  }
289
293
  return tooltip.css(attrs);
290
294
  };
295
+ resettooltip = function() {
296
+ return tooltip.text('').removeClass('left right top bottom').css({
297
+ left: 'auto',
298
+ right: 'auto',
299
+ top: 'auto',
300
+ bottom: 'auto',
301
+ width: 'auto',
302
+ 'padding-left': 'auto',
303
+ 'padding-right': 'auto'
304
+ });
305
+ };
291
306
  closetooltip = function() {
292
- tooltip.stop().remove();
307
+ tooltip.stop().hide();
308
+ resettooltip();
293
309
  return $('[role=tooltip]').removeClass('on');
294
310
  };
295
311
  showtooltip = function(trigger) {
296
- closetooltip();
297
312
  clearTimeout(delayShow);
298
313
  return delayShow = setTimeout(function() {
299
- if ($('#tooltip').length !== 1) {
300
- $('#tooltip').remove();
301
- tooltip = $("<div id=\"tooltip\"></div>");
302
- tooltip.appendTo("body");
303
- }
304
- tooltip.css("opacity", 0).text(trigger.attr('data-title'));
314
+ tooltip.css({
315
+ "opacity": 0,
316
+ "display": "block"
317
+ }).text(trigger.attr('data-title'));
305
318
  setPosition(trigger);
306
319
  trigger.addClass('on');
320
+ console.log(tooltip.css('display'));
307
321
  return tooltip.animate({
308
322
  top: "+=10",
309
323
  opacity: 1
@@ -341,213 +355,6 @@
341
355
  };
342
356
  })(jQuery);
343
357
 
344
- /* --------------------------------------------
345
- Begin jquery.popover.coffee
346
- --------------------------------------------
347
- */
348
-
349
-
350
- /*
351
- *
352
- * jQuery Popovers by Gary Hepting - https://github.com/ghepting/jquery-popovers
353
- *
354
- * Open source under the BSD License.
355
- *
356
- * Copyright © 2013 Gary Hepting. All rights reserved.
357
- *
358
- */
359
-
360
-
361
- (function($) {
362
- return $.fn.popover = function(options) {
363
- var closePopover, defaults, delayAdjust, delayHide, getElementPosition, popover, resetPopover, setPosition, showPopover, trigger;
364
- defaults = {
365
- hover: false,
366
- click: true,
367
- resize: true,
368
- scroll: true,
369
- topOffset: 0,
370
- delay: 500,
371
- speed: 100
372
- };
373
- options = $.extend(defaults, options);
374
- popover = $('#popover');
375
- delayHide = '';
376
- delayAdjust = '';
377
- trigger = '';
378
- getElementPosition = function(el) {
379
- var bottom, left, offset, right, top, win;
380
- offset = el.offset();
381
- win = $(window);
382
- return {
383
- top: top = offset.top - win.scrollTop(),
384
- left: left = offset.left - win.scrollLeft(),
385
- bottom: bottom = win.height() - top - el.outerHeight(),
386
- right: right = win.width() - left - el.outerWidth()
387
- };
388
- };
389
- resetPopover = function(resize) {
390
- popover.css({
391
- top: 'auto',
392
- right: 'auto',
393
- bottom: 'auto',
394
- left: 'auto'
395
- });
396
- if (resize) {
397
- popover.css({
398
- width: 'auto'
399
- });
400
- }
401
- popover.removeClass('top');
402
- popover.removeClass('right');
403
- popover.removeClass('bottom');
404
- return popover.removeClass('left');
405
- };
406
- setPosition = function(trigger, skipAnimation, resize) {
407
- var attrs, coords, height, width;
408
- if (trigger) {
409
- if (resize) {
410
- resetPopover(true);
411
- } else {
412
- resetPopover();
413
- }
414
- coords = getElementPosition(trigger);
415
- if (popover.outerWidth() > ($(window).width() - 20)) {
416
- popover.css('width', $(window).width() - 20);
417
- }
418
- popover.css('max-width', Math.min($(window).width() - parseInt($('body').css('padding-left')) - parseInt($('body').css('padding-right')), parseInt(popover.css('max-width'))));
419
- width = popover.outerWidth();
420
- height = popover.outerHeight();
421
- attrs = {};
422
- if (coords.left <= coords.right) {
423
- popover.addClass('left');
424
- attrs.left = coords.left;
425
- } else {
426
- popover.addClass('right');
427
- attrs.right = coords.right;
428
- }
429
- if ((coords.top - options.topOffset) > (height + 20)) {
430
- popover.addClass('top');
431
- attrs.top = trigger.offset().top - height - 20;
432
- } else {
433
- popover.addClass('bottom');
434
- attrs.top = trigger.offset().top + 15;
435
- }
436
- popover.css(attrs);
437
- if (skipAnimation) {
438
- return popover.css({
439
- top: '+=10'
440
- });
441
- }
442
- }
443
- };
444
- closePopover = function() {
445
- $('.popover-trigger').removeClass('popover-trigger');
446
- return popover.removeClass('sticky').remove();
447
- };
448
- showPopover = function(e) {
449
- var tip;
450
- trigger = $(e.target);
451
- if (!trigger.hasClass('popover-trigger')) {
452
- closePopover();
453
- trigger.addClass('popover-trigger');
454
- }
455
- tip = $('#' + trigger.attr('data-content')).html();
456
- popover = $("<div id=\"popover\"></div>");
457
- if (!tip || tip === "") {
458
- return false;
459
- }
460
- trigger.removeAttr("title");
461
- popover.css("opacity", 0).html(tip).appendTo("body");
462
- setPosition(trigger);
463
- popover.animate({
464
- top: "+=10",
465
- opacity: 1
466
- }, options.speed);
467
- popover.bind("click", function(e) {
468
- if (e.target.tagName !== 'a') {
469
- popover.addClass('sticky');
470
- e.stopPropagation();
471
- e.preventDefault();
472
- return false;
473
- }
474
- });
475
- popover.find('.close').bind("click", function(e) {
476
- $('.popover-trigger').removeClass('popover-trigger');
477
- popover.removeClass('sticky').remove();
478
- e.stopPropagation();
479
- e.preventDefault();
480
- return false;
481
- });
482
- return popover.bind({
483
- mouseenter: function() {
484
- return clearTimeout(delayHide);
485
- },
486
- mouseleave: function() {
487
- if (!popover.hasClass('sticky')) {
488
- return delayHide = setTimeout((function() {
489
- $('.popover-trigger').removeClass('popover-trigger');
490
- return popover.removeClass('sticky').remove();
491
- }), 500);
492
- }
493
- }
494
- });
495
- };
496
- return this.each(function() {
497
- var $this;
498
- $this = $(this);
499
- if (options.hover) {
500
- $this.bind({
501
- mouseenter: function(e) {
502
- trigger = $(e.target);
503
- clearTimeout(delayHide);
504
- if (!$this.hasClass('popover-trigger') && !popover.hasClass('sticky')) {
505
- return showPopover(e);
506
- }
507
- },
508
- mouseleave: function() {
509
- if (!popover.hasClass('sticky')) {
510
- return delayHide = setTimeout(function() {
511
- return closePopover();
512
- }, options.delay);
513
- }
514
- }
515
- });
516
- }
517
- if (options.click) {
518
- $this.bind("click", function(e) {
519
- trigger = $(e.target);
520
- if (!trigger.hasClass('popover-trigger')) {
521
- closePopover();
522
- showPopover(e);
523
- }
524
- popover.addClass('sticky');
525
- e.preventDefault();
526
- e.stopPropagation();
527
- return false;
528
- });
529
- }
530
- if (options.resize) {
531
- $(window).resize(function() {
532
- clearTimeout(delayAdjust);
533
- return delayAdjust = setTimeout(function() {
534
- return setPosition(trigger, true, true);
535
- }, 100);
536
- });
537
- }
538
- if (options.scroll) {
539
- $(window).scroll(function() {
540
- return setPosition(trigger, true);
541
- });
542
- }
543
- return $('html, body').bind("click", function(e) {
544
- $('.popover-trigger').removeClass('popover-trigger');
545
- return popover.removeClass('sticky').remove();
546
- });
547
- });
548
- };
549
- })(jQuery);
550
-
551
358
  /* --------------------------------------------
552
359
  Begin jquery.responsiveText.coffee
553
360
  --------------------------------------------