bootstrap-components-helpers 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 19936223524696b2929edcfe7eb6d443ba67231d
|
4
|
+
data.tar.gz: 03499a47b9d2f88302a53b7cbd7535329924f171
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7baf4c3dc8fc97e30af97dd5dff20f00f56b14f4646b903595500cc72d6a5b43f2a61bae07c9702babee99fd939e306eda5dbf4e2591b0102a6e53574f8c9297
|
7
|
+
data.tar.gz: fcca9bc6562ba23ceb3fd9c3e630585104946327d4b62922bc93a5a916ec5290ffe069608dd990af04ac162fd70c7f9edc14a471dd307c2c996c2d27d0bd9116
|
data/README.markdown
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module BootstrapComponentsHelpers
|
2
4
|
module ModalHelper
|
3
5
|
|
@@ -40,4 +42,4 @@ module BootstrapComponentsHelpers
|
|
40
42
|
end
|
41
43
|
end
|
42
44
|
|
43
|
-
ActionView::Base.send :include, BootstrapComponentsHelpers::ModalHelper
|
45
|
+
ActionView::Base.send :include, BootstrapComponentsHelpers::ModalHelper
|
@@ -5,6 +5,8 @@ module BootstrapComponentsHelpers
|
|
5
5
|
opts[:style] ||= 'tabs'
|
6
6
|
builder = TabsBuilder.new self
|
7
7
|
yield builder
|
8
|
+
pane_handles_html = builder.pane_handles_html
|
9
|
+
return unless pane_handles_html
|
8
10
|
tabs = content_tag(:ul, builder.pane_handles_html, :class => "nav nav-#{opts[:style]}")
|
9
11
|
contents = content_tag(:div, builder.pane_contents_html, :class => 'tab-content')
|
10
12
|
css_direction = "tabs-#{opts[:direction]}" unless opts[:direction] == 'above'
|
@@ -14,6 +16,7 @@ module BootstrapComponentsHelpers
|
|
14
16
|
end
|
15
17
|
|
16
18
|
class TabsBuilder
|
19
|
+
include ActionView::Helpers::OutputSafetyHelper
|
17
20
|
|
18
21
|
attr_reader :parent, :pane_contents, :pane_handles
|
19
22
|
delegate :capture, :content_tag, :to => :parent
|
@@ -26,28 +29,47 @@ module BootstrapComponentsHelpers
|
|
26
29
|
|
27
30
|
def pane title, options = {}, &block
|
28
31
|
css_class = options[:active] ? 'active' : ''
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
+
tab_id = options[:id] || default_tab_id(title)
|
33
|
+
link = content_tag(:a, :'data-toggle' => 'tab', :href => "##{tab_id}") do
|
34
|
+
if options[:icon]
|
35
|
+
title = raw(content_tag(:i, '', class: "#{options[:icon]}") + ' ' + title)
|
36
|
+
end
|
37
|
+
title
|
38
|
+
end
|
39
|
+
content = capture(&block)
|
40
|
+
if content.present?
|
41
|
+
@pane_handles << [link, css_class]
|
42
|
+
@pane_contents << [[css_class, options[:class]], title, tab_id, content]
|
43
|
+
end
|
32
44
|
nil
|
33
45
|
end
|
34
|
-
|
46
|
+
|
35
47
|
def pane_handles_html
|
48
|
+
return if pane_handles.empty?
|
36
49
|
pane_handles.first[1] = 'active' unless pane_handles.detect {|ph| ph[1] == 'active'}
|
37
50
|
pane_handles.map do |link, css_class|
|
38
51
|
content_tag(:li, link, :class => css_class)
|
39
52
|
end.join("\n").html_safe
|
40
53
|
end
|
41
|
-
|
54
|
+
|
42
55
|
def pane_contents_html
|
43
|
-
|
44
|
-
pane_contents.
|
45
|
-
|
56
|
+
return if pane_contents.empty?
|
57
|
+
pane_contents.first[0] << 'active' unless pane_contents.detect {|pc| pc[0].include? 'active'}
|
58
|
+
pane_contents.map do |css_class, title, tab_id, content|
|
59
|
+
css_class << 'in' if css_class.include?('active') && css_class.include?('fade')
|
60
|
+
css_class = css_class.join(' ').strip
|
61
|
+
content_tag :div, content, :class => "tab-pane #{css_class}", :id => "#{tab_id}"
|
46
62
|
end.join("\n").html_safe
|
47
63
|
end
|
48
64
|
|
65
|
+
private
|
66
|
+
|
67
|
+
def default_tab_id(title)
|
68
|
+
title.parameterize + '_tab'
|
69
|
+
end
|
70
|
+
|
49
71
|
end
|
50
|
-
|
72
|
+
|
51
73
|
end
|
52
74
|
end
|
53
75
|
|
data/test/test_helper.rb
CHANGED
@@ -4,9 +4,9 @@ require 'action_view/template'
|
|
4
4
|
require 'bootstrap-components-helpers'
|
5
5
|
|
6
6
|
class ActionView::TestCase
|
7
|
-
|
7
|
+
|
8
8
|
def assert_helper_output fixture_name, actual_output
|
9
|
-
assert_equal File.read("#{File.dirname __FILE__}/fixtures/#{fixture_name}.html"), actual_output
|
9
|
+
assert_equal File.read("#{File.dirname __FILE__}/fixtures/#{fixture_name}.html").strip, actual_output
|
10
10
|
end
|
11
|
-
|
12
|
-
end
|
11
|
+
|
12
|
+
end
|
data/test/test_tabs_helper.rb
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class TabsHelperTest < ActionView::TestCase
|
4
|
-
|
5
4
|
include BootstrapComponentsHelpers::TabsHelper
|
6
|
-
|
5
|
+
|
7
6
|
test "calling tabs method" do
|
8
7
|
html = tabs do |tabs|
|
9
8
|
tabs.pane 'My first pane' do
|
@@ -13,4 +12,35 @@ class TabsHelperTest < ActionView::TestCase
|
|
13
12
|
assert_helper_output 'tabs', html
|
14
13
|
end
|
15
14
|
|
15
|
+
test "extra options" do
|
16
|
+
html = tabs do |tabs|
|
17
|
+
tabs.pane 'My first pane<br>', id: 'custom_id', icon: 'fa fa-ok', class: 'custom-class' do
|
18
|
+
'inside the pane'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
assert_match /href="#custom_id"/, html
|
22
|
+
assert_match /id="custom_id"/, html
|
23
|
+
assert_match /i class="fa fa-ok"/, html
|
24
|
+
assert_match /class=".*custom-class.*"/, html
|
25
|
+
refute_match /<br>/, html
|
26
|
+
end
|
27
|
+
|
28
|
+
test "adds 'in' css class to active tab with 'ade effect" do
|
29
|
+
html = tabs do |tabs|
|
30
|
+
tabs.pane 'My first pane', class: 'fade', active: true do
|
31
|
+
'inside the pane'
|
32
|
+
end
|
33
|
+
end
|
34
|
+
assert_match /class=".*active.*"/, html
|
35
|
+
assert_match /class=".*in.*"/, html
|
36
|
+
end
|
37
|
+
|
38
|
+
test "empty pane does not included in html" do
|
39
|
+
html = tabs do |tabs|
|
40
|
+
tabs.pane 'Empty pane' do
|
41
|
+
''
|
42
|
+
end
|
43
|
+
end
|
44
|
+
refute_match /Empty pane/, html
|
45
|
+
end
|
16
46
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bootstrap-components-helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan Schneider
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-05-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionpack
|
@@ -32,10 +32,10 @@ extensions: []
|
|
32
32
|
extra_rdoc_files: []
|
33
33
|
files:
|
34
34
|
- README.markdown
|
35
|
+
- lib/bootstrap-components-helpers.rb
|
35
36
|
- lib/bootstrap-components-helpers/accordion_helper.rb
|
36
37
|
- lib/bootstrap-components-helpers/modal_helper.rb
|
37
38
|
- lib/bootstrap-components-helpers/tabs_helper.rb
|
38
|
-
- lib/bootstrap-components-helpers.rb
|
39
39
|
- test/test_accordion_helper.rb
|
40
40
|
- test/test_helper.rb
|
41
41
|
- test/test_modal_helper.rb
|
@@ -60,7 +60,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
60
60
|
version: '0'
|
61
61
|
requirements: []
|
62
62
|
rubyforge_project:
|
63
|
-
rubygems_version: 2.
|
63
|
+
rubygems_version: 2.2.2
|
64
64
|
signing_key:
|
65
65
|
specification_version: 4
|
66
66
|
summary: View helpers for Twitter Bootstrap components
|