simple-navigation-bootstrap 1.0.0 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZmY2ZmNlODIyOTU5YTRlZDcyMmI5ZTRmMjJjOWI1NTIyMDVhZjMzNA==
5
+ data.tar.gz: !binary |-
6
+ MDQ0Yzg1Njk5YTkyNGEzMDNhNmI5MTQ3NTE4MzFhMGQ5NzhlNjc1NQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ OTg2ZjA4YWNiNzc3NDU2NzI4YzE1OWM3YTcyZjkxZDg5NmZmNjA0ZWY4OWIx
10
+ MTZjYmMwOGRkNDk1M2MxMzA4NDYwOWE1YzY0ZjYyZWQzN2FkYmM1ZDJlYjEx
11
+ NjJmNDhjNDZkZmJjNzU4MmFhZDZkZTE2Y2FjZGQzMTdmZjY4OGU=
12
+ data.tar.gz: !binary |-
13
+ MDBkMGEyYWE4ZGM4NmZiZGE5OGUwYWY0OWJiNDA4MmUyNDU0ZjMzMWZmMDJi
14
+ NWIyOTY1Zjg4MmFiZTI0MTExMGY0NWNlZjMwNTEwNzM4N2YyNGJkZGYyODcy
15
+ NWI5YmEwZWM1NjQzZjM4MDYwOGNlMDg3Njg1NTJkMmNlMDNmNDU=
data/README.md CHANGED
@@ -18,16 +18,30 @@ To use the Bootstrap renderer, specify it in your view:
18
18
  render_navigation :expand_all => true, :renderer => :bootstrap
19
19
  ```
20
20
 
21
+ And the minimal navigation config you need is:
22
+ ```ruby
23
+ SimpleNavigation::Configuration.run do |navigation|
24
+ navigation.items do |primary|
25
+ primary.dom_class = 'nav'
26
+ end
27
+ end
28
+ ```
29
+
30
+ See below for a more complete example.
31
+
21
32
  ## Additional Functionality
33
+ ### Icons
22
34
  In addition to generating Bootstrap-comptible list markup, you may specify
23
35
  an `:icon` attribute on your navigation items, either as an array
24
36
  or string, containing Bootstrap [icon classes](http://twitter.github.com/bootstrap/base-css.html#icons), to add an icon to the item.
25
37
 
26
- For items with sub-navigation, you may specify `:split => true` to enable a
27
- split dropdown. Split dropdowns allow using an url on the primary navigation
28
- item, as well as having a dropdown containing sub-navigation. If you plan on
29
- using this feature, in your `application.css` or equivalent you must require
30
- the `bootstrap_navbar_split_dropdowns` stylesheet after requiring Bootstrap.
38
+ ### Split navigation
39
+ For items with sub-navigation, you may specify `:split => true` on an item to
40
+ enable a split dropdown. Split dropdowns allow using an url on the primary
41
+ navigation item, as well as having a dropdown containing sub-navigation. If
42
+ you plan on using this feature, in your `application.css` or equivalent you
43
+ must require the `bootstrap_navbar_split_dropdowns` stylesheet after
44
+ requiring Bootstrap.
31
45
 
32
46
  For example:
33
47
  ```css
@@ -37,6 +51,15 @@ For example:
37
51
  */
38
52
  ```
39
53
 
54
+ You may also enable split navigation for all children by setting the `split`
55
+ attribute of the container to `true` (defaults to `false`).
56
+
57
+ ### Dropdowns
58
+ If you wish to disable dropdown attributes for some reason (eg -you don't use the
59
+ JavaScript, or have custom handling), you may specify `:dropdown => false` on an
60
+ item, or set the `dropdown` attribute on the container to `false` (defaults to
61
+ `true`).
62
+
40
63
  ## Examples
41
64
  To create a navigation menu, you might do something like this:
42
65
  ```ruby
@@ -52,6 +75,8 @@ SimpleNavigation::Configuration.run do |navigation|
52
75
  books.item :history, 'History', books_history_path
53
76
  end
54
77
  primary.dom_class = 'nav'
78
+ primary.dropdown = true
79
+ primary.split = false
55
80
  end
56
81
  end
57
82
  ```
@@ -1,4 +1,5 @@
1
1
  require "simple-navigation"
2
+ require "simple_navigation/core_ext/item_container.rb"
2
3
  require "simple_navigation/rendering/renderer/bootstrap"
3
4
  require "simple-navigation-bootstrap/engine"
4
5
  require "simple-navigation-bootstrap/version"
@@ -1,3 +1,3 @@
1
1
  module SimpleNavigationBootstrap
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.2"
3
3
  end
@@ -0,0 +1,6 @@
1
+ module SimpleNavigation
2
+ # ItemContainer monkey-patch to add some Bootstrap configuration attributes
3
+ class ItemContainer
4
+ attr_accessor :dropdown, :split
5
+ end
6
+ end
@@ -2,13 +2,17 @@ module SimpleNavigation
2
2
  module Renderer
3
3
  class Bootstrap < SimpleNavigation::Renderer::Base
4
4
  def render(item_container)
5
+ return '' if respond_to?(:skip_if_empty?) && skip_if_empty? && item_container.empty?
5
6
  config_selected_class = SimpleNavigation.config.selected_class
6
7
  SimpleNavigation.config.selected_class = 'active'
7
8
  list_content = item_container.items.inject([]) do |list, item|
8
9
  li_options = item.html_options.reject {|k, v| k == :link}
9
10
  icon = li_options.delete(:icon)
10
- split = (include_sub_navigation?(item) and li_options.delete(:split))
11
- li_content = tag_for(item, item.name, icon, split)
11
+ dropdown = item_container.dropdown.nil? ? true : item_container.dropdown
12
+ split = item_container.split
13
+ split = (include_sub_navigation?(item) and li_options.delete(:split)) if li_options.include?(:split)
14
+ dropdown = (include_sub_navigation?(item) and li_options.delete(:dropdown)) if li_options.include?(:dropdown)
15
+ li_content = tag_for(item, item.name, icon, split, dropdown)
12
16
  if include_sub_navigation?(item)
13
17
  if split
14
18
  lio = li_options.dup
@@ -18,23 +22,25 @@ module SimpleNavigation
18
22
  li_options[:id] = nil
19
23
  li_content = tag_for(item)
20
24
  end
21
- item.sub_navigation.dom_class = [item.sub_navigation.dom_class, 'dropdown-menu', split ? 'pull-right' : nil].flatten.compact.join(' ')
25
+ item.sub_navigation.dom_class = [item.sub_navigation.dom_class, dropdown ? 'dropdown-menu' : nil, split ? 'pull-right' : nil].flatten.compact.join(' ')
22
26
  li_content << render_sub_navigation_for(item)
23
- li_options[:class] = [li_options[:class], 'dropdown', split ? 'dropdown-split-right' : nil].flatten.compact.join(' ')
27
+ li_options[:class] = [li_options[:class], dropdown ? 'dropdown' : nil, split ? 'dropdown-split-right' : nil].flatten.compact.join(' ')
24
28
  end
25
29
  list << content_tag(:li, li_content, li_options)
26
30
  end.join
27
31
  SimpleNavigation.config.selected_class = config_selected_class
28
- if skip_if_empty? && item_container.empty?
29
- ''
30
- else
31
- content_tag(:ul, list_content, {:id => item_container.dom_id, :class => item_container.dom_class})
32
+ if item_container.respond_to?(:dom_attributes)
33
+ dom_attributes = item_container.dom_attributes
34
+ else
35
+ # supports simple-navigation before the ItemContainer#dom_attributes
36
+ dom_attributes = {:id => item_container.dom_id, :class => item_container.dom_class}
32
37
  end
38
+ content_tag(:ul, list_content, dom_attributes)
33
39
  end
34
40
 
35
41
  protected
36
42
 
37
- def tag_for(item, name = '', icon = nil, split = false)
43
+ def tag_for(item, name = '', icon = nil, split = false, dropdown = false)
38
44
  unless item.url or include_sub_navigation?(item)
39
45
  return item.name
40
46
  end
@@ -47,9 +53,11 @@ module SimpleNavigation
47
53
  item_options[:link] = Hash.new if item_options[:link].nil?
48
54
  item_options[:link][:class] = Array.new if item_options[:link][:class].nil?
49
55
  unless split
50
- item_options[:link][:class] << 'dropdown-toggle'
51
- item_options[:link][:'data-toggle'] = 'dropdown'
52
- item_options[:link][:'data-target'] = '#'
56
+ if dropdown
57
+ item_options[:link][:class] << 'dropdown-toggle'
58
+ item_options[:link][:'data-toggle'] = 'dropdown'
59
+ item_options[:link][:'data-target'] = '#'
60
+ end
53
61
  link << content_tag(:b, '', :class => 'caret')
54
62
  end
55
63
  item.html_options = item_options
@@ -18,6 +18,6 @@ Gem::Specification.new do |s|
18
18
 
19
19
  # specify any dependencies here; for example:
20
20
  s.add_development_dependency "rake"
21
- s.add_runtime_dependency "simple-navigation", ">= 3.7.0"
21
+ s.add_runtime_dependency "simple-navigation", ">= 3.7.0", "< 4.0.0"
22
22
  s.add_runtime_dependency "railties", ">= 3.1"
23
23
  end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple-navigation-bootstrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
5
- prerelease:
4
+ version: 1.0.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Peter Fern
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-06-19 00:00:00.000000000 Z
11
+ date: 2015-05-22 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ! '>='
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ! '>='
28
25
  - !ruby/object:Gem::Version
@@ -30,23 +27,26 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: simple-navigation
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ! '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: 3.7.0
34
+ - - <
35
+ - !ruby/object:Gem::Version
36
+ version: 4.0.0
38
37
  type: :runtime
39
38
  prerelease: false
40
39
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
40
  requirements:
43
41
  - - ! '>='
44
42
  - !ruby/object:Gem::Version
45
43
  version: 3.7.0
44
+ - - <
45
+ - !ruby/object:Gem::Version
46
+ version: 4.0.0
46
47
  - !ruby/object:Gem::Dependency
47
48
  name: railties
48
49
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
50
  requirements:
51
51
  - - ! '>='
52
52
  - !ruby/object:Gem::Version
@@ -54,7 +54,6 @@ dependencies:
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
57
  requirements:
59
58
  - - ! '>='
60
59
  - !ruby/object:Gem::Version
@@ -75,38 +74,32 @@ files:
75
74
  - lib/simple-navigation-bootstrap.rb
76
75
  - lib/simple-navigation-bootstrap/engine.rb
77
76
  - lib/simple-navigation-bootstrap/version.rb
77
+ - lib/simple_navigation/core_ext/item_container.rb
78
78
  - lib/simple_navigation/rendering/renderer/bootstrap.rb
79
79
  - simple-navigation-bootstrap.gemspec
80
80
  - vendor/assets/stylesheets/bootstrap_navbar_split_dropdowns.css
81
81
  homepage: https://github.com/pdf/simple-navigation-bootstrap
82
82
  licenses: []
83
+ metadata: {}
83
84
  post_install_message:
84
85
  rdoc_options: []
85
86
  require_paths:
86
87
  - lib
87
88
  required_ruby_version: !ruby/object:Gem::Requirement
88
- none: false
89
89
  requirements:
90
90
  - - ! '>='
91
91
  - !ruby/object:Gem::Version
92
92
  version: '0'
93
- segments:
94
- - 0
95
- hash: 4218250063998013409
96
93
  required_rubygems_version: !ruby/object:Gem::Requirement
97
- none: false
98
94
  requirements:
99
95
  - - ! '>='
100
96
  - !ruby/object:Gem::Version
101
97
  version: '0'
102
- segments:
103
- - 0
104
- hash: 4218250063998013409
105
98
  requirements: []
106
99
  rubyforge_project:
107
- rubygems_version: 1.8.25
100
+ rubygems_version: 2.4.7
108
101
  signing_key:
109
- specification_version: 3
102
+ specification_version: 4
110
103
  summary: simple-navigation-bootstrap is a simple-navigation renderer for twitter-bootstrap
111
104
  navigation and dropdowns.
112
105
  test_files: []