railsstrap 3.3.1 → 3.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +13 -27
- data/app/helpers/railsstrap/aside_helper.rb +59 -0
- data/app/helpers/railsstrap/badge_label_helper.rb +0 -4
- data/app/helpers/railsstrap/bootstrap_flash_helper.rb +1 -1
- data/app/helpers/railsstrap/date_picker_helper.rb +16 -8
- data/app/helpers/railsstrap/modal_helper.rb +18 -24
- data/lib/generators/railsstrap/install/templates/bootstrap_and_overrides.less +42 -26
- data/lib/railsstrap/constants.rb +1 -1
- data/lib/railsstrap/engine.rb +9 -5
- data/spec/lib/railsstrap/aside_helper_spec.rb +140 -0
- data/spec/lib/railsstrap/badge_label_helper_spec.rb +42 -0
- data/spec/lib/railsstrap/bootstrap_flash_helper_spec.rb +130 -0
- data/spec/lib/railsstrap/breadcrumbs_spec.rb +75 -0
- data/spec/lib/railsstrap/datepicker_helper_spec.rb +59 -0
- data/spec/lib/railsstrap/form_errors_helper_spec.rb +147 -0
- data/spec/lib/railsstrap/glyph_helper_spec.rb +24 -0
- data/spec/lib/railsstrap/icon_helper_spec.rb +24 -0
- data/spec/lib/railsstrap/modal_helper_spec.rb +140 -0
- data/spec/lib/railsstrap/navbar_helper_spec.rb +373 -0
- data/spec/lib/railsstrap/uri_state_spec.rb +49 -0
- data/spec/spec_helper.rb +20 -0
- data/vendor/assets/bower_components/bootstrap/Gruntfile.js +45 -8
- data/vendor/assets/bower_components/bootstrap/LICENSE +1 -1
- data/vendor/assets/bower_components/bootstrap/README.md +12 -9
- data/vendor/assets/bower_components/bootstrap/bower.json +1 -1
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.css +8 -2
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.css.map +1 -1
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap-theme.min.css +3 -3
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.css +257 -23
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.css.map +1 -1
- data/vendor/assets/bower_components/bootstrap/dist/css/bootstrap.min.css +3 -3
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot +0 -0
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +273 -214
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff +0 -0
- data/vendor/assets/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/vendor/assets/bower_components/bootstrap/dist/js/bootstrap.js +55 -69
- data/vendor/assets/bower_components/bootstrap/dist/js/bootstrap.min.js +4 -4
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg +273 -214
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
- data/vendor/assets/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/vendor/assets/bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js +41 -0
- data/vendor/assets/bower_components/bootstrap/grunt/configBridge.json +1 -0
- data/vendor/assets/bower_components/bootstrap/grunt/sauce_browsers.yml +4 -4
- data/vendor/assets/bower_components/bootstrap/js/affix.js +4 -4
- data/vendor/assets/bower_components/bootstrap/js/alert.js +3 -3
- data/vendor/assets/bower_components/bootstrap/js/button.js +3 -3
- data/vendor/assets/bower_components/bootstrap/js/carousel.js +7 -10
- data/vendor/assets/bower_components/bootstrap/js/collapse.js +4 -4
- data/vendor/assets/bower_components/bootstrap/js/dropdown.js +3 -3
- data/vendor/assets/bower_components/bootstrap/js/modal.js +3 -3
- data/vendor/assets/bower_components/bootstrap/js/popover.js +7 -13
- data/vendor/assets/bower_components/bootstrap/js/scrollspy.js +3 -3
- data/vendor/assets/bower_components/bootstrap/js/tab.js +3 -3
- data/vendor/assets/bower_components/bootstrap/js/tooltip.js +10 -16
- data/vendor/assets/bower_components/bootstrap/js/transition.js +2 -2
- data/vendor/assets/bower_components/bootstrap/less/alerts.less +5 -0
- data/vendor/assets/bower_components/bootstrap/less/badges.less +4 -0
- data/vendor/assets/bower_components/bootstrap/less/button-groups.less +2 -2
- data/vendor/assets/bower_components/bootstrap/less/buttons.less +1 -1
- data/vendor/assets/bower_components/bootstrap/less/carousel.less +8 -6
- data/vendor/assets/bower_components/bootstrap/less/close.less +1 -0
- data/vendor/assets/bower_components/bootstrap/less/dropdowns.less +2 -1
- data/vendor/assets/bower_components/bootstrap/less/forms.less +41 -21
- data/vendor/assets/bower_components/bootstrap/less/glyphicons.less +67 -0
- data/vendor/assets/bower_components/bootstrap/less/jumbotron.less +1 -0
- data/vendor/assets/bower_components/bootstrap/less/media.less +14 -0
- data/vendor/assets/bower_components/bootstrap/less/mixins/vendor-prefixes.less +1 -1
- data/vendor/assets/bower_components/bootstrap/less/navbar.less +1 -0
- data/vendor/assets/bower_components/bootstrap/less/panels.less +5 -1
- data/vendor/assets/bower_components/bootstrap/less/popovers.less +1 -1
- data/vendor/assets/bower_components/bootstrap/less/tables.less +3 -3
- data/vendor/assets/bower_components/bootstrap/less/theme.less +3 -2
- data/vendor/assets/bower_components/bootstrap/less/tooltip.less +1 -1
- data/vendor/assets/bower_components/bootstrap/less/variables.less +3 -2
- data/vendor/assets/bower_components/bootstrap/package.json +14 -13
- data/vendor/assets/bower_components/jquery/bower.json +2 -2
- data/vendor/assets/bower_components/jquery/dist/jquery.js +277 -262
- data/vendor/assets/bower_components/jquery/dist/jquery.min.js +4 -4
- data/vendor/assets/bower_components/jquery/dist/jquery.min.map +1 -1
- data/vendor/assets/bower_components/jquery/src/ajax.js +11 -31
- data/vendor/assets/bower_components/jquery/src/ajax/xhr.js +3 -2
- data/vendor/assets/bower_components/jquery/src/attributes/attr.js +0 -2
- data/vendor/assets/bower_components/jquery/src/attributes/classes.js +4 -4
- data/vendor/assets/bower_components/jquery/src/attributes/prop.js +1 -3
- data/vendor/assets/bower_components/jquery/src/attributes/support.js +8 -8
- data/vendor/assets/bower_components/jquery/src/attributes/val.js +3 -5
- data/vendor/assets/bower_components/jquery/src/core.js +6 -7
- data/vendor/assets/bower_components/jquery/src/core/init.js +3 -3
- data/vendor/assets/bower_components/jquery/src/core/ready.js +1 -1
- data/vendor/assets/bower_components/jquery/src/css.js +28 -29
- data/vendor/assets/bower_components/jquery/src/css/addGetHookIf.js +2 -4
- data/vendor/assets/bower_components/jquery/src/css/curCSS.js +1 -1
- data/vendor/assets/bower_components/jquery/src/css/defaultDisplay.js +1 -1
- data/vendor/assets/bower_components/jquery/src/css/support.js +5 -0
- data/vendor/assets/bower_components/jquery/src/css/var/getStyles.js +8 -1
- data/vendor/assets/bower_components/jquery/src/data.js +10 -11
- data/vendor/assets/bower_components/jquery/src/data/Data.js +3 -3
- data/vendor/assets/bower_components/jquery/src/deferred.js +2 -2
- data/vendor/assets/bower_components/jquery/src/dimensions.js +1 -1
- data/vendor/assets/bower_components/jquery/src/effects.js +29 -30
- data/vendor/assets/bower_components/jquery/src/effects/Tween.js +7 -7
- data/vendor/assets/bower_components/jquery/src/event.js +5 -5
- data/vendor/assets/bower_components/jquery/src/event/ajax.js +13 -0
- data/vendor/assets/bower_components/jquery/src/exports/global.js +2 -2
- data/vendor/assets/bower_components/jquery/src/intro.js +8 -8
- data/vendor/assets/bower_components/jquery/src/jquery.js +1 -0
- data/vendor/assets/bower_components/jquery/src/manipulation.js +9 -11
- data/vendor/assets/bower_components/jquery/src/manipulation/support.js +6 -5
- data/vendor/assets/bower_components/jquery/src/offset.js +9 -6
- data/vendor/assets/bower_components/jquery/src/queue.js +3 -3
- data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.js +83 -60
- data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.min.js +3 -3
- data/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.min.map +1 -1
- data/vendor/assets/bower_components/jquery/src/traversing.js +3 -4
- data/vendor/assets/bower_components/jquery/src/wrap.js +1 -0
- data/vendor/assets/stylesheets/aside/aside.less +18 -2
- data/vendor/assets/stylesheets/bootstrap.less +2 -0
- data/vendor/assets/stylesheets/dist/railsstrap.css +28 -6
- data/vendor/assets/stylesheets/fontawesome-local.less +15 -0
- data/vendor/assets/stylesheets/glyphicons.less +12 -0
- metadata +278 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f8b40a637cd238fc544f48492e0c13ccfda32a29
|
4
|
+
data.tar.gz: a3afbde82508a3dbd9539ac62b0c210555376d5f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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
|
-
```
|
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
|
@@ -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 =
|
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] ?
|
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
|
-
|
56
|
-
def
|
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 =
|
11
|
-
content_tag :div, :id =>
|
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 =>
|
14
|
-
modal_header(
|
15
|
-
modal_body(
|
16
|
-
modal_footer(
|
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
|
-
|
43
|
-
raw("<button class=\"close\" data-dismiss=\"#{dismiss}\" aria-hidden=\"true\">×</button>")
|
38
|
+
content_tag :button, '×'.html_safe, :class => 'close', :data => {:dismiss => dismiss}, :'aria-hidden' => true
|
44
39
|
end
|
45
40
|
|
46
|
-
def modal_toggle(
|
47
|
-
|
48
|
-
|
49
|
-
|
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 =>
|
49
|
+
default_opts = { :class => 'btn railsstrap-modal-cancel-button' }
|
50
|
+
content_tag_string :a, content, default_opts.merge(options)
|
51
|
+
end
|
60
52
|
|
61
|
-
|
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
|
-
|
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
|
-
|
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
|
+
|
data/lib/railsstrap/constants.rb
CHANGED
data/lib/railsstrap/engine.rb
CHANGED
@@ -13,17 +13,21 @@ module Railsstrap
|
|
13
13
|
class Engine < ::Rails::Engine
|
14
14
|
|
15
15
|
initializer 'railsstrap.setup',
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
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::
|
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">×</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">×</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">×</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">×</button>
|
139
|
+
HTML
|
140
|
+
|