railsstrap 3.3.1 → 3.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (125) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +13 -27
  3. data/app/helpers/railsstrap/aside_helper.rb +59 -0
  4. data/app/helpers/railsstrap/badge_label_helper.rb +0 -4
  5. data/app/helpers/railsstrap/bootstrap_flash_helper.rb +1 -1
  6. data/app/helpers/railsstrap/date_picker_helper.rb +16 -8
  7. data/app/helpers/railsstrap/modal_helper.rb +18 -24
  8. data/lib/generators/railsstrap/install/templates/bootstrap_and_overrides.less +42 -26
  9. data/lib/railsstrap/constants.rb +1 -1
  10. data/lib/railsstrap/engine.rb +9 -5
  11. data/spec/lib/railsstrap/aside_helper_spec.rb +140 -0
  12. data/spec/lib/railsstrap/badge_label_helper_spec.rb +42 -0
  13. data/spec/lib/railsstrap/bootstrap_flash_helper_spec.rb +130 -0
  14. data/spec/lib/railsstrap/breadcrumbs_spec.rb +75 -0
  15. data/spec/lib/railsstrap/datepicker_helper_spec.rb +59 -0
  16. data/spec/lib/railsstrap/form_errors_helper_spec.rb +147 -0
  17. data/spec/lib/railsstrap/glyph_helper_spec.rb +24 -0
  18. data/spec/lib/railsstrap/icon_helper_spec.rb +24 -0
  19. data/spec/lib/railsstrap/modal_helper_spec.rb +140 -0
  20. data/spec/lib/railsstrap/navbar_helper_spec.rb +373 -0
  21. data/spec/lib/railsstrap/uri_state_spec.rb +49 -0
  22. data/spec/spec_helper.rb +20 -0
  23. data/vendor/assets/bower_components/bootstrap/Gruntfile.js +45 -8
  24. data/vendor/assets/bower_components/bootstrap/LICENSE +1 -1
  25. data/vendor/assets/bower_components/bootstrap/README.md +12 -9
  26. data/vendor/assets/bower_components/bootstrap/bower.json +1 -1
  27. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.css +8 -2
  28. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.css.map +1 -1
  29. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.min.css +3 -3
  30. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.css +257 -23
  31. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.css.map +1 -1
  32. data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.min.css +3 -3
  33. data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot +0 -0
  34. data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +273 -214
  35. data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  36. data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff +0 -0
  37. data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
  38. data/vendor/assets/bower_components/bootstrap/dist/js/bootstrap.js +55 -69
  39. data/vendor/assets/bower_components/bootstrap/dist/js/bootstrap.min.js +4 -4
  40. data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
  41. data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg +273 -214
  42. data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
  43. data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
  44. data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 +0 -0
  45. data/vendor/assets/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js +41 -0
  46. data/vendor/assets/bower_components/bootstrap/grunt/configBridge.json +1 -0
  47. data/vendor/assets/bower_components/bootstrap/grunt/sauce_browsers.yml +4 -4
  48. data/vendor/assets/bower_components/bootstrap/js/affix.js +4 -4
  49. data/vendor/assets/bower_components/bootstrap/js/alert.js +3 -3
  50. data/vendor/assets/bower_components/bootstrap/js/button.js +3 -3
  51. data/vendor/assets/bower_components/bootstrap/js/carousel.js +7 -10
  52. data/vendor/assets/bower_components/bootstrap/js/collapse.js +4 -4
  53. data/vendor/assets/bower_components/bootstrap/js/dropdown.js +3 -3
  54. data/vendor/assets/bower_components/bootstrap/js/modal.js +3 -3
  55. data/vendor/assets/bower_components/bootstrap/js/popover.js +7 -13
  56. data/vendor/assets/bower_components/bootstrap/js/scrollspy.js +3 -3
  57. data/vendor/assets/bower_components/bootstrap/js/tab.js +3 -3
  58. data/vendor/assets/bower_components/bootstrap/js/tooltip.js +10 -16
  59. data/vendor/assets/bower_components/bootstrap/js/transition.js +2 -2
  60. data/vendor/assets/bower_components/bootstrap/less/alerts.less +5 -0
  61. data/vendor/assets/bower_components/bootstrap/less/badges.less +4 -0
  62. data/vendor/assets/bower_components/bootstrap/less/button-groups.less +2 -2
  63. data/vendor/assets/bower_components/bootstrap/less/buttons.less +1 -1
  64. data/vendor/assets/bower_components/bootstrap/less/carousel.less +8 -6
  65. data/vendor/assets/bower_components/bootstrap/less/close.less +1 -0
  66. data/vendor/assets/bower_components/bootstrap/less/dropdowns.less +2 -1
  67. data/vendor/assets/bower_components/bootstrap/less/forms.less +41 -21
  68. data/vendor/assets/bower_components/bootstrap/less/glyphicons.less +67 -0
  69. data/vendor/assets/bower_components/bootstrap/less/jumbotron.less +1 -0
  70. data/vendor/assets/bower_components/bootstrap/less/media.less +14 -0
  71. data/vendor/assets/bower_components/bootstrap/less/mixins/vendor-prefixes.less +1 -1
  72. data/vendor/assets/bower_components/bootstrap/less/navbar.less +1 -0
  73. data/vendor/assets/bower_components/bootstrap/less/panels.less +5 -1
  74. data/vendor/assets/bower_components/bootstrap/less/popovers.less +1 -1
  75. data/vendor/assets/bower_components/bootstrap/less/tables.less +3 -3
  76. data/vendor/assets/bower_components/bootstrap/less/theme.less +3 -2
  77. data/vendor/assets/bower_components/bootstrap/less/tooltip.less +1 -1
  78. data/vendor/assets/bower_components/bootstrap/less/variables.less +3 -2
  79. data/vendor/assets/bower_components/bootstrap/package.json +14 -13
  80. data/vendor/assets/bower_components/jquery/bower.json +2 -2
  81. data/vendor/assets/bower_components/jquery/dist/jquery.js +277 -262
  82. data/vendor/assets/bower_components/jquery/dist/jquery.min.js +4 -4
  83. data/vendor/assets/bower_components/jquery/dist/jquery.min.map +1 -1
  84. data/vendor/assets/bower_components/jquery/src/ajax.js +11 -31
  85. data/vendor/assets/bower_components/jquery/src/ajax/xhr.js +3 -2
  86. data/vendor/assets/bower_components/jquery/src/attributes/attr.js +0 -2
  87. data/vendor/assets/bower_components/jquery/src/attributes/classes.js +4 -4
  88. data/vendor/assets/bower_components/jquery/src/attributes/prop.js +1 -3
  89. data/vendor/assets/bower_components/jquery/src/attributes/support.js +8 -8
  90. data/vendor/assets/bower_components/jquery/src/attributes/val.js +3 -5
  91. data/vendor/assets/bower_components/jquery/src/core.js +6 -7
  92. data/vendor/assets/bower_components/jquery/src/core/init.js +3 -3
  93. data/vendor/assets/bower_components/jquery/src/core/ready.js +1 -1
  94. data/vendor/assets/bower_components/jquery/src/css.js +28 -29
  95. data/vendor/assets/bower_components/jquery/src/css/addGetHookIf.js +2 -4
  96. data/vendor/assets/bower_components/jquery/src/css/curCSS.js +1 -1
  97. data/vendor/assets/bower_components/jquery/src/css/defaultDisplay.js +1 -1
  98. data/vendor/assets/bower_components/jquery/src/css/support.js +5 -0
  99. data/vendor/assets/bower_components/jquery/src/css/var/getStyles.js +8 -1
  100. data/vendor/assets/bower_components/jquery/src/data.js +10 -11
  101. data/vendor/assets/bower_components/jquery/src/data/Data.js +3 -3
  102. data/vendor/assets/bower_components/jquery/src/deferred.js +2 -2
  103. data/vendor/assets/bower_components/jquery/src/dimensions.js +1 -1
  104. data/vendor/assets/bower_components/jquery/src/effects.js +29 -30
  105. data/vendor/assets/bower_components/jquery/src/effects/Tween.js +7 -7
  106. data/vendor/assets/bower_components/jquery/src/event.js +5 -5
  107. data/vendor/assets/bower_components/jquery/src/event/ajax.js +13 -0
  108. data/vendor/assets/bower_components/jquery/src/exports/global.js +2 -2
  109. data/vendor/assets/bower_components/jquery/src/intro.js +8 -8
  110. data/vendor/assets/bower_components/jquery/src/jquery.js +1 -0
  111. data/vendor/assets/bower_components/jquery/src/manipulation.js +9 -11
  112. data/vendor/assets/bower_components/jquery/src/manipulation/support.js +6 -5
  113. data/vendor/assets/bower_components/jquery/src/offset.js +9 -6
  114. data/vendor/assets/bower_components/jquery/src/queue.js +3 -3
  115. data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.js +83 -60
  116. data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.min.js +3 -3
  117. data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.min.map +1 -1
  118. data/vendor/assets/bower_components/jquery/src/traversing.js +3 -4
  119. data/vendor/assets/bower_components/jquery/src/wrap.js +1 -0
  120. data/vendor/assets/stylesheets/aside/aside.less +18 -2
  121. data/vendor/assets/stylesheets/bootstrap.less +2 -0
  122. data/vendor/assets/stylesheets/dist/railsstrap.css +28 -6
  123. data/vendor/assets/stylesheets/fontawesome-local.less +15 -0
  124. data/vendor/assets/stylesheets/glyphicons.less +12 -0
  125. metadata +278 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a5368848076f90de4d3bb93d722da03a756c8587
4
- data.tar.gz: 89ace966b95408b74b85a76027cec3504d264def
3
+ metadata.gz: f8b40a637cd238fc544f48492e0c13ccfda32a29
4
+ data.tar.gz: a3afbde82508a3dbd9539ac62b0c210555376d5f
5
5
  SHA512:
6
- metadata.gz: 84d1f162e59603eba4dd0a94d284c23ce7304a5d2acec3f13d0351f569130505a609813da16aebdf2c37aa2ed3da51bd170f993ff7f27d09c5c89d4a16a13057
7
- data.tar.gz: 0b193c4a8a0d599cf33a6b56587dae0ea6b59302d212ea496348b0a6d350290c97bd9b25a67b1f186a9f9ebcd85806fd70c326a1da71bcf37cc6a8140c35eb72
6
+ metadata.gz: eab6acbafb4c2a3c58fb434436df0f49b5a1268dc4da98426c4be99bcc91b1fcd09b2db0be49f467b75566505dfd5a2c5bc6001281240ebd73604b6934a6dfbf
7
+ data.tar.gz: de986680ea4fe4d74a7e84da5ba20b9fdaf36468416801f70067a467d2c12af8abaeb37c719cfffdd5b7ccd6311dfe9fa17bf8f65fd18a2b7c3b222817f01a0e
data/README.md CHANGED
@@ -14,13 +14,13 @@ Railsstrap is more than just another gem providing bootstrap and fontawesome for
14
14
 
15
15
  ##Bootstrap additions
16
16
 
17
- ###Custom Components (in development)
18
- * Asides - A modal that slides in from the left or right. Used often in mobile apps for off-screen sidebars or overlays.
19
- * Callouts - Similar to an alert, it is used for drawing attention to content. - New in 3.3.0!
20
- * Date & Time picker - A styled HTML5 datepicker. - New in 3.3.1!
21
- * Modal enhancements - animations and real centering placement.
22
- * Popover enhancements - animations and custom placements for popover arrows and locations.
23
- * Tooltip - animations and custom placements for tooltip arrows and locations.
17
+ ###Custom Components
18
+ * [Asides](https://github.com/toadkicker/railsstrap/wiki/Bootstrap-Additions#aside) - A modal that slides in from the left or right. Used often in mobile apps for off-screen sidebars or overlays. - New in 3.3.2!
19
+ * [Callouts](https://github.com/toadkicker/railsstrap/wiki/Bootstrap-Additions#callout) - Similar to an alert, it is used for drawing attention to content. - New in 3.3.0!
20
+ * [Date & Time picker](https://github.com/toadkicker/railsstrap/wiki/Bootstrap-Additions#datepicker--timepicker) - A styled HTML5 datepicker. - New in 3.3.1!
21
+ * [Modal enhancements](https://github.com/toadkicker/railsstrap/wiki/Bootstrap-Additions#modal) - animations and real centering placement.
22
+ * [Popover enhancements](https://github.com/toadkicker/railsstrap/wiki/Bootstrap-Additions#popover) - animations and custom placements for popover arrows and locations.
23
+ * [Tooltip](https://github.com/toadkicker/railsstrap/wiki/Bootstrap-Additions#tooltip) - animations and custom placements for tooltip arrows and locations.
24
24
 
25
25
  ###Animations
26
26
 
@@ -32,7 +32,10 @@ An example application is available at [toadkicker/teststrap](https://github.com
32
32
  ## Quick install
33
33
  Open your Gemfile, and add the gem to your list of dependencies.
34
34
 
35
- ```gem railsstrap```
35
+ ```
36
+ gem less-rails
37
+ gem railsstrap
38
+ ```
36
39
 
37
40
  Then run the installer
38
41
 
@@ -41,26 +44,9 @@ bundle install
41
44
  bundle exec rails g railsstrap:install
42
45
  ```
43
46
 
44
- This will insert the appropriate entries into your application.js and application.css files. It will also provide you with the ability to customize Bootstrap and FontAwesome to your liking.
45
-
46
- ####Hotfix note for v3.2.0.2 and lower:
47
-
48
- You will need to precompile your assets for FontAwesome support. To do this add this line:
49
-
50
- This is verbose:
51
- ```
52
- Rails.application.config.assets.precompile += %w( fontawesome/fonts/fontawesome-webfont.eot fontawesome/fonts/fontawesome-webfont.woff fontawesome/fonts/fontawesome-webfont.ttf fontawesome/fonts/fontawesome-webfont.svg )
53
- ```
54
-
55
- This is all you really need:
56
- ```
57
- Rails.application.config.assets.precompile += %w(.svg .eot .woff .ttf)
58
- ```
59
-
60
- For Rails 3 applications, add it to ```config/environments/production.rb```. For Rails 4, add it to ```config/initializers/assets.rb```.
61
-
47
+ This will insert the appropriate entries into your application.js and application.css files, as well as configure rails asset pipeline. It will also provide you with the ability to customize Bootstrap and FontAwesome to your liking.
62
48
 
63
- Most of the info you'll need is in the wiki, and if it isn't please contribute!
49
+ Most of the info you'll need is in the [wiki](https://github.com/toadkicker/railsstrap/wiki/Installing), and if it isn't please contribute!
64
50
 
65
51
  ##Building the gem
66
52
 
@@ -0,0 +1,59 @@
1
+ module Railsstrap
2
+ module AsideHelper
3
+
4
+ #asides have a header, a body, a footer for options.
5
+ def aside_dialog(options = {}, &block)
6
+ opts = default_aside_options.merge(options)
7
+ content_tag :div, :id => opts[:id], :class => "railsstrap-aside aside #{opts[:class]}", :data => { :backdrop => 'false' } do
8
+ content_tag :div, :class => "aside-dialog #{opts['size']}" do
9
+ content_tag :div, :class => 'aside-content' do
10
+ aside_header(opts[:header], &block) +
11
+ aside_body(opts[:body], &block) +
12
+ aside_footer(opts[:footer], &block)
13
+ end
14
+ end
15
+ end
16
+ end
17
+
18
+ def aside_header(options, &block)
19
+ content_tag :div, :class => 'aside-header' do
20
+ if options[:show_close]
21
+ close_button(options[:dismiss]) +
22
+ content_tag(:h4, options[:title], :class => 'aside-title', &block)
23
+ else
24
+ content_tag(:h4, options[:title], :class => 'aside-title', &block)
25
+ end
26
+ end
27
+ end
28
+
29
+ def aside_body(options, &block)
30
+ content_tag :div, options[:content], :class => 'aside-body', :style => options[:style], &block
31
+ end
32
+
33
+ def aside_footer(options, &block)
34
+ content_tag :div, options[:content], :class => 'aside-footer', &block
35
+ end
36
+
37
+ def close_button(dismiss)
38
+ content_tag :button, '×'.html_safe, :class => 'close', :data => {:dismiss => dismiss}, :'aria-hidden' => true
39
+ end
40
+
41
+ def aside_toggle(options = nil, &block)
42
+ opts = { :content => 'Close', :class => 'btn btn-default', :data => { :toggle => 'aside'}, :href => options[:dialog] }.merge(options)
43
+ content = opts[:content]
44
+ opts.delete :content
45
+ block_given? ? content_tag(:a, content, opts, true, &block) : content_tag(:a, content, opts, true)
46
+ end
47
+
48
+ def aside_cancel_button(content, options)
49
+ default_opts = { :class => 'btn railsstrap-aside-cancel-button' }
50
+ content_tag_string :a, content, default_opts.merge(options)
51
+ end
52
+
53
+ protected
54
+ def default_aside_options
55
+ {:id => 'aside', :size => '', :show_close => true, :dismiss => true}
56
+ end
57
+
58
+ end
59
+ end
@@ -4,10 +4,6 @@ module Railsstrap
4
4
  badge_label(:badge, *args)
5
5
  end
6
6
 
7
- def tag_label(*args)
8
- badge_label(:label, *args)
9
- end
10
-
11
7
  private
12
8
  def badge_label(what, value, type = nil)
13
9
  klass = [what]
@@ -29,7 +29,7 @@ module Railsstrap
29
29
 
30
30
  text = content_tag(opts[:container_tag],
31
31
  (opts[:show_close] ? close_button : '') +
32
- msg, :class => "alert #{opts[:animation]} alert-#{type} #{opts[:class]}")
32
+ msg.html_safe, :class => "alert #{opts[:animation]} alert-#{type} #{opts[:class]}")
33
33
  flash_messages << text if msg
34
34
  end
35
35
  end
@@ -37,23 +37,31 @@ module Railsstrap
37
37
  module DatePickerHelper
38
38
 
39
39
  def date_picker(options = {})
40
- opts = default_options.merge(options)
41
- input = text_field_tag opts[:input_name], '', class: opts[:input_class]
42
- icon_wrapper = content_tag opts[:icon_wrapper_tag], class: opts[:icon_wrapper_class] do
43
- content_tag :i, '', class: opts[:icon]
44
- end
40
+ opts = default_dp_options.merge(options)
45
41
  content_tag(opts[:wrapper_tag], id: opts[:id], class: opts[:wrapper_class], data: opts[:data]) {
46
- opts[:show_input] ? input + icon_wrapper : icon_wrapper
42
+ opts[:show_input] ? date_picker_input(opts) + date_picker_icon(opts) : date_picker_icon(opts)
47
43
  }
48
44
  end
49
45
 
46
+ def date_picker_icon(options = {})
47
+ opts = default_dp_options.merge(options)
48
+ content_tag opts[:icon_wrapper_tag], class: opts[:icon_wrapper_class] {
49
+ content_tag :i, '', class: opts[:icon]
50
+ }
51
+ end
52
+
53
+ def date_picker_input(options = {})
54
+ opts = default_dp_options.merge(options)
55
+ text_field_tag opts[:input_name], '', class: opts[:input_class]
56
+ end
57
+
50
58
  def date_picker_javascript(options = {})
51
59
  opts = default_js_options.merge(options)
52
60
  javascript_tag "(function ($) { $('#{opts[:selector]}').datetimepicker(#{opts.to_json});})(jQuery);"
53
61
  end
54
62
 
55
- private
56
- def default_options
63
+ protected
64
+ def default_dp_options
57
65
  { id: 'date_picker',
58
66
  wrapper_tag: :div,
59
67
  show_input: true,
@@ -1,19 +1,15 @@
1
1
  module Railsstrap
2
2
  module ModalHelper
3
3
 
4
- def default_options
5
- return {:id => 'modal', :size => '', :show_close => true, :dismiss => true}
6
- end
7
-
8
4
  #modals have a header, a body, a footer for options.
9
5
  def modal_dialog(options = {}, &block)
10
- opts = default_options.merge(options)
11
- content_tag :div, :id => options[:id], :class => "railsstrap-modal modal fade" do
6
+ opts = default_modal_options.merge(options)
7
+ content_tag :div, :id => opts[:id], :class => "railsstrap-modal modal #{opts[:class]} fade" do
12
8
  content_tag :div, :class => "modal-dialog #{opts['size']}" do
13
- content_tag :div, :class => "modal-content" do
14
- modal_header(options[:header], &block) +
15
- modal_body(options[:body], &block) +
16
- modal_footer(options[:footer], &block)
9
+ content_tag :div, :class => 'modal-content' do
10
+ modal_header(opts[:header], &block) +
11
+ modal_body(opts[:body], &block) +
12
+ modal_footer(opts[:footer], &block)
17
13
  end
18
14
  end
19
15
  end
@@ -39,26 +35,24 @@ module Railsstrap
39
35
  end
40
36
 
41
37
  def close_button(dismiss)
42
- #It doesn't seem to like content_tag, so we do this instead.
43
- raw("<button class=\"close\" data-dismiss=\"#{dismiss}\" aria-hidden=\"true\">&times;</button>")
38
+ content_tag :button, '&times;'.html_safe, :class => 'close', :data => {:dismiss => dismiss}, :'aria-hidden' => true
44
39
  end
45
40
 
46
- def modal_toggle(content_or_options = nil, options, &block)
47
- if block_given?
48
- options = content_or_options if content_or_options.is_a?(Hash)
49
- default_options = { :class => 'btn btn-default', "data-toggle" => "modal", "href" => options[:dialog] }.merge(options)
50
-
51
- content_tag :a, nil, default_options, true, &block
52
- else
53
- default_options = { :class => 'btn btn-default', "data-toggle" => "modal", "href" => options[:dialog] }.merge(options)
54
- content_tag :a, content_or_options, default_options, true
55
- end
41
+ def modal_toggle(options = nil, &block)
42
+ opts = { :content => 'Close', :class => 'btn btn-default', :data => { :toggle => 'modal'}, :href => options[:dialog] }.merge(options)
43
+ content = opts[:content]
44
+ opts.delete :content
45
+ block_given? ? content_tag(:a, content, opts, true, &block) : content_tag(:a, content, opts, true)
56
46
  end
57
47
 
58
48
  def modal_cancel_button(content, options)
59
- default_opts = { :class => "btn railsstrap-modal-cancel-button" }
49
+ default_opts = { :class => 'btn railsstrap-modal-cancel-button' }
50
+ content_tag_string :a, content, default_opts.merge(options)
51
+ end
60
52
 
61
- content_tag_string "a", content, default_opts.merge(options)
53
+ protected
54
+ def default_modal_options
55
+ {:id => 'modal', :size => '', :show_close => true, :dismiss => true}
62
56
  end
63
57
 
64
58
  end
@@ -1,26 +1,42 @@
1
- @import "bootstrap/less/bootstrap";
2
- //If you want exotic placement features, animations, and more, import this
3
- //@import "railsstrap";
4
-
5
- // Glyphicons - included by default in bootstrap.
6
- // You may need to customize config/initializers/assets.rb (Rails 4), or config/environments/[env].rb to add font paths in.
7
- // In either case of FontAwesome or Glyphicons, the railsstrap:install task should insert the appropriate entries for you.
8
-
9
- // Your custom LESS stylesheets goes here
10
- //
11
- // Since railsstrap was imported above you have access to its mixins which
12
- // you may use and inherit here, ex:
13
- // @import "bootstrap/less/mixins/alerts.less;
14
- //
15
- // If you'd like to override railsstrap's own variables, you can do so here as well
16
- // See http://bootstrap.github.com/bootstrap/customize.html#variables for their names and documentation
17
- //
18
- // Example:
19
- // @import (reference) 'bootstrap/less/variables.less';
20
- // @link-color: #ff0000;
21
- //
22
- // Date and Time Picker
23
- //
24
- // To enable the date and time picker, uncomment this line:
25
- // @import "datepicker/datepicker.less";
26
- // Don't forget to include the javascript library as well.
1
+ /*
2
+ Bootstrap
3
+ This line imports bootstrap, modified to use glyphicons from Cloudflare CDN.
4
+ */
5
+ @import "bootstrap";
6
+
7
+ /*
8
+ Glyphicons - included by default in bootstrap.
9
+ If for any reason you prefer to have them as part of the asset pipeline, uncomment this.
10
+ If you choose to use this, open config/initializers/assets.rb (rails 4) and add this line:
11
+ Rails.application.config.assets.precompile += %w( *.eot *.woff *.ttf *.svg )
12
+ */
13
+
14
+ // @import "glyphicons";
15
+
16
+ /*
17
+ FontAwesome is hosted via CDN as well. If you prefer to have them included in the asset
18
+ pipeline, comment this out and see the next section.
19
+ */
20
+ @import 'fontawesome';
21
+
22
+ /*
23
+ Font Awesome
24
+ If for some reason you want fontawesome as part of the asset pipeline, comment out
25
+ the above refererence and uncomment the following lines. If you choose to use this, open
26
+ config/initializers/assets.rb (rails 4) and add this line:
27
+ Rails.application.config.assets.precompile += %w( *.eot *.woff *.ttf *.svg )
28
+ */
29
+
30
+ //@import 'fontawesome-local';
31
+
32
+ //If you want exotic placement features, animations, and more, import this:
33
+ @import "railsstrap";
34
+
35
+ /*
36
+ Date and Time Picker (https://github.com/toadkicker/railsstrap/wiki/Date-and-Time-Picker)
37
+ To enable the date and time picker, uncomment this line:
38
+ Don't forget to include the javascript library as well.
39
+ */
40
+
41
+ //@import "datepicker/datepicker";
42
+
@@ -1,6 +1,6 @@
1
1
  module Railsstrap
2
2
  module Constants
3
3
  #we follow along with Bootstrap's version number for easy identification
4
- VERSION = '3.3.1'
4
+ VERSION = '3.3.2'
5
5
  end
6
6
  end
@@ -13,17 +13,21 @@ module Railsstrap
13
13
  class Engine < ::Rails::Engine
14
14
 
15
15
  initializer 'railsstrap.setup',
16
- :group => :all do |app|
17
- bowerrc = File.read(File.join(config.root, '.bowerrc'))
18
- app.config.assets.paths << File.join(bowerrc['directory'])
19
- end
16
+ :after => 'railsstrap.before.load_config_initializers',
17
+ :group => :all do |app|
18
+ bowerrc = File.read(File.join(config.root, '.bowerrc'))
19
+ app.config.less.paths << File.join(bowerrc['directory'])
20
+ app.config.assets.paths << File.join(bowerrc['directory'])
21
+ app.config.app_generators.stylesheet_engine :less
22
+ end
20
23
 
21
24
  initializer 'railsstrap.setup_helpers' do |app|
22
25
  app.config.to_prepare do
23
26
  ActionController::Base.send :include, Railsstrap::Breadcrumbs
24
27
  end
25
28
 
26
- [Railsstrap::BootstrapFlashHelper,
29
+ [Railsstrap::AsideHelper,
30
+ Railsstrap::BootstrapFlashHelper,
27
31
  Railsstrap::FormErrorsHelper,
28
32
  Railsstrap::ModalHelper,
29
33
  Railsstrap::GlyphHelper,
@@ -0,0 +1,140 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ require_relative '../../../app/helpers/railsstrap/aside_helper'
4
+
5
+ include ActionView::Helpers
6
+ include ActionView::Context
7
+ include Railsstrap::AsideHelper
8
+
9
+ describe Railsstrap::AsideHelper, :type => :helper do
10
+ header_with_close = {:show_close => true, :dismiss => 'aside', :title => 'Aside header'}
11
+ header_without_close = {:show_close => false, :title => 'Aside header'}
12
+ options = {:id => "aside",
13
+ :header => header_with_close,
14
+ :body => {content: 'This is the body'},
15
+ :footer => {content: content_tag(:button, 'Save', :class => 'btn')}
16
+ }
17
+
18
+ it 'returns a complete aside' do
19
+ expect(aside_dialog(options).gsub(/\s/, '')).to eql BASIC_ASIDE.gsub(/\s/, '')
20
+ end
21
+
22
+ it 'returns a left aside' do
23
+ options[:class] = 'left'
24
+ expect(aside_dialog(options).gsub(/\s/, '')).to eql LEFT_ASIDE.gsub(/\s/, '')
25
+ end
26
+
27
+ it 'returns a aside header with a close button if show_close is true' do
28
+ expect(aside_header(header_with_close).gsub(/\s/, '')).to eql ASIDE_HEADER_WITH_CLOSE.gsub(/\s/, '')
29
+ end
30
+
31
+ it 'renders a aside header without a close button' do
32
+ expect(aside_header(header_without_close).gsub(/\s/, '')).to eql ASIDE_HEADER_WITHOUT_CLOSE.gsub(/\s/, '')
33
+ end
34
+
35
+ it 'renders a aside body' do
36
+ expect(aside_body(options[:body]).gsub(/\s/, '')).to eql ASIDE_BODY.gsub(/\s/, '')
37
+ end
38
+
39
+ it 'renders a aside footer' do
40
+ expect(aside_footer(options[:footer]).gsub(/\s/, '')).to eql ASIDE_FOOTER.gsub(/\s/, '')
41
+ end
42
+
43
+ it 'renders a close button' do
44
+ expect(close_button('aside')).to eql ASIDE_CLOSE_BUTTON.gsub(/\n/, '')
45
+ end
46
+
47
+ it 'renders a aside toggle button' do
48
+ expect(aside_toggle(:content => 'Save', :href => "#aside").gsub(/\s/, '')).to eql ASIDE_TOGGLE.gsub(/\s/, '')
49
+ end
50
+
51
+ it 'renders a aside toggle button with options changed' do
52
+ expect(aside_toggle(:content => 'Save', :href => "#aside", :data => {:foo => true, :toggle => 'aside'}).gsub(/\s/, '')).to eql ASIDE_TOGGLE_OPTS.gsub(/\s/, '')
53
+ end
54
+
55
+ it 'renders a aside toggle button with a block given' do
56
+ expect(aside_toggle(:href => "#aside", :data => {:foo => true, :toggle => 'aside'}){ content_tag(:span, 'Blocks Rock', class: "i-added-you") }.gsub(/\s/, '')).to eql ASIDE_TOGGLE_BLOCK.gsub(/\s/, '')
57
+ end
58
+
59
+ it 'renders a cancel button' do
60
+ expect(aside_cancel_button('Cancel', :href => "#aside", :data => {:dismiss => 'aside'}).gsub(/\s/, '')).to eql ASIDE_CANCEL_BUTTON.gsub(/\s/, '')
61
+ end
62
+ end
63
+
64
+ BASIC_ASIDE = <<-HTML
65
+ <div id="aside" class="railsstrap-aside aside" data-backdrop="false">
66
+ <div class="aside-dialog ">
67
+ <div class="aside-content">
68
+ <div class="aside-header">
69
+ <button class="close" data-dismiss="aside" aria-hidden="true">&times;</button>
70
+ <h4 class="aside-title">Aside header</h4>
71
+ </div>
72
+ <div class="aside-body">This is the body</div>
73
+ <div class="aside-footer">
74
+ <button class="btn">Save</button>
75
+ </div>
76
+ </div>
77
+ </div>
78
+ </div>
79
+ HTML
80
+
81
+ LEFT_ASIDE = <<-HTML
82
+ <div id="aside" class="railsstrap-aside aside left" data-backdrop="false">
83
+ <div class="aside-dialog ">
84
+ <div class="aside-content">
85
+ <div class="aside-header">
86
+ <button class="close" data-dismiss="aside" aria-hidden="true">&times;</button>
87
+ <h4 class="aside-title">Aside header</h4>
88
+ </div>
89
+ <div class="aside-body">This is the body</div>
90
+ <div class="aside-footer">
91
+ <button class="btn">Save</button>
92
+ </div>
93
+ </div>
94
+ </div>
95
+ </div>
96
+ HTML
97
+
98
+ ASIDE_BODY = <<-HTML
99
+ <div class="aside-body">This is the body</div>
100
+ HTML
101
+
102
+ ASIDE_FOOTER = <<-HTML
103
+ <div class="aside-footer"><button class="btn">Save</button></div>
104
+ HTML
105
+
106
+ ASIDE_HEADER_WITHOUT_CLOSE = <<-HTML
107
+ <div class="aside-header"><h4 class="aside-title">Aside header</h4></div>
108
+ HTML
109
+
110
+ ASIDE_HEADER_WITH_CLOSE = <<-HTML
111
+ <div class="aside-header">
112
+ <button class="close" data-dismiss="aside" aria-hidden="true">&times;</button>
113
+ <h4 class="aside-title">Aside header</h4>
114
+ </div>
115
+ HTML
116
+
117
+ ASIDE_TOGGLE = <<-HTML
118
+ <a class="btn btn-default" data-toggle="aside" href="#aside">Save</a>
119
+ HTML
120
+
121
+ ASIDE_TOGGLE_OPTS = <<-HTML
122
+ <a class="btn btn-default" data-foo="true" data-toggle="aside" href="#aside">Save</a>
123
+ HTML
124
+
125
+ ASIDE_TOGGLE_BLOCK = <<-HTML
126
+ <a class="btn btn-default" data-foo="true" data-toggle="aside" href="#aside">
127
+ <span class="i-added-you">
128
+ Blocks Rock
129
+ </span>
130
+ </a>
131
+ HTML
132
+
133
+ ASIDE_CANCEL_BUTTON = <<-HTML
134
+ <a class="btn railsstrap-aside-cancel-button" href="#aside" data-dismiss="aside">Cancel</a>
135
+ HTML
136
+
137
+ ASIDE_CLOSE_BUTTON = <<-HTML
138
+ <button class="close" data-dismiss="aside" aria-hidden="true">&times;</button>
139
+ HTML
140
+