simple-navigation 3.4.2 → 3.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ *3.5.0
2
+
3
+ * Added (configurable) "simple-navigation-active-leaf" class to last selected element and elements that have :highlights_on return true. Thanks to Frank Schumacher (thenoseman).
4
+
1
5
  *3.4.2
2
6
 
3
7
  * Improve Gemfile dependencies with :development and :rails groups.
@@ -218,4 +222,4 @@
218
222
 
219
223
  *1.1.1
220
224
 
221
- * Change plugin into a GemPlugin
225
+ * Change plugin into a GemPlugin
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.4.2
1
+ 3.5.0
@@ -1,3 +1,4 @@
1
+ # -*- coding: utf-8 -*-
1
2
  # Configures your navigation
2
3
  SimpleNavigation::Configuration.run do |navigation|
3
4
  # Specify a custom renderer if needed.
@@ -8,6 +9,10 @@ SimpleNavigation::Configuration.run do |navigation|
8
9
  # Specify the class that will be applied to active navigation items. Defaults to 'selected'
9
10
  # navigation.selected_class = 'your_selected_class'
10
11
 
12
+ # Specify the class that will be applied to the current leaf of
13
+ # active navigation items. Defaults to 'simple-navigation-active-leaf'
14
+ # navigation.active_leaf_class = 'your_active_leaf_class'
15
+
11
16
  # Item keys are normally added to list items as id.
12
17
  # This setting turns that off
13
18
  # navigation.autogenerate_item_ids = false
@@ -42,7 +47,7 @@ SimpleNavigation::Configuration.run do |navigation|
42
47
  # :method - Specifies the http-method for the generated link - default is :get.
43
48
  # :highlights_on - if autohighlighting is turned off and/or you want to explicitly specify
44
49
  # when the item should be highlighted, you can set a regexp which is matched
45
- # against the current URI.
50
+ # against the current URI. You may also use a proc, or the symbol <tt>:subpath</tt>.
46
51
  #
47
52
  primary.item :key_1, 'name', url, options
48
53
 
@@ -68,4 +73,4 @@ SimpleNavigation::Configuration.run do |navigation|
68
73
 
69
74
  end
70
75
 
71
- end
76
+ end
@@ -6,7 +6,7 @@ module SimpleNavigation
6
6
  class Configuration
7
7
  include Singleton
8
8
 
9
- attr_accessor :renderer, :selected_class, :autogenerate_item_ids, :id_generator, :auto_highlight, :name_generator
9
+ attr_accessor :renderer, :selected_class, :active_leaf_class, :autogenerate_item_ids, :id_generator, :auto_highlight, :name_generator
10
10
  attr_reader :primary_navigation
11
11
 
12
12
  class << self
@@ -27,6 +27,7 @@ module SimpleNavigation
27
27
  def initialize
28
28
  @renderer = SimpleNavigation.default_renderer || SimpleNavigation::Renderer::List
29
29
  @selected_class = 'selected'
30
+ @active_leaf_class = 'simple-navigation-active-leaf'
30
31
  @autogenerate_item_ids = true
31
32
  @id_generator = Proc.new {|id| id.to_s }
32
33
  @name_generator = Proc.new {|name| name}
@@ -68,4 +69,4 @@ module SimpleNavigation
68
69
 
69
70
  end
70
71
 
71
- end
72
+ end
@@ -53,13 +53,19 @@ module SimpleNavigation
53
53
  def html_options
54
54
  default_options = self.autogenerate_item_ids? ? {:id => autogenerated_item_id} : {}
55
55
  options = default_options.merge(@html_options)
56
- options[:class] = [@html_options[:class], self.selected_class].flatten.compact.join(' ')
56
+ options[:class] = [@html_options[:class], self.selected_class, self.active_leaf_class].flatten.compact.join(' ')
57
57
  options.delete(:class) if options[:class].nil? || options[:class] == ''
58
58
  options
59
59
  end
60
60
 
61
- # Returns the configured selected_class if the item is selected, nil otherwise
62
- #
61
+ # Returns the configured active_leaf_class if the item is the selected leaf,
62
+ # nil otherwise
63
+ def active_leaf_class
64
+ selected_by_condition? ? SimpleNavigation.config.active_leaf_class : nil
65
+ end
66
+
67
+ # Returns the configured selected_class if the item is selected,
68
+ # nil otherwise
63
69
  def selected_class
64
70
  selected? ? SimpleNavigation.config.selected_class : nil
65
71
  end
@@ -43,6 +43,9 @@ describe SimpleNavigation::Configuration do
43
43
  it "should set the selected_class to 'selected' as default" do
44
44
  @config.selected_class.should == 'selected'
45
45
  end
46
+ it "should set the active_leaf_class to 'simple-navigation-active-leaf' as default" do
47
+ @config.active_leaf_class.should == 'simple-navigation-active-leaf'
48
+ end
46
49
  it "should set autogenerate_item_ids to true as default" do
47
50
  @config.autogenerate_item_ids.should be_true
48
51
  end
@@ -197,14 +197,14 @@ describe SimpleNavigation::Item do
197
197
  end
198
198
  context 'with item selected' do
199
199
  before(:each) do
200
- @item.stub!(:selected? => true)
200
+ @item.stub!(:selected? => true, :selected_by_condition? => true)
201
201
  end
202
- it {@item.html_options[:class].should == 'my_class selected'}
202
+ it {@item.html_options[:class].should == 'my_class selected simple-navigation-active-leaf'}
203
203
  end
204
204
 
205
205
  context 'with item not selected' do
206
206
  before(:each) do
207
- @item.stub!(:selected? => false)
207
+ @item.stub!(:selected? => false, :selected_by_condition? => false)
208
208
  end
209
209
  it {@item.html_options[:class].should == 'my_class'}
210
210
  end
@@ -217,25 +217,26 @@ describe SimpleNavigation::Item do
217
217
  end
218
218
  context 'with item selected' do
219
219
  before(:each) do
220
- @item.stub!(:selected? => true)
220
+ @item.stub!(:selected? => true, :selected_by_condition? => true)
221
221
  end
222
- it {@item.html_options[:class].should == 'selected'}
222
+ it {@item.html_options[:class].should == 'selected simple-navigation-active-leaf'}
223
223
  end
224
224
 
225
225
  context 'with item not selected' do
226
226
  before(:each) do
227
- @item.stub!(:selected? => false)
227
+ @item.stub!(:selected? => false, :selected_by_condition? => false)
228
228
  end
229
229
  it {@item.html_options[:class].should be_blank}
230
230
  end
231
231
  end
232
+
232
233
  end
233
234
 
234
235
  describe 'id' do
235
236
  context 'with autogenerate_item_ids == true' do
236
237
  before(:each) do
237
238
  @item.stub!(:autogenerate_item_ids? => true)
238
- @item.stub!(:selected? => false)
239
+ @item.stub!(:selected? => false, :selected_by_condition? => false)
239
240
  end
240
241
  context 'with id defined in options' do
241
242
  before(:each) do
@@ -255,7 +256,7 @@ describe SimpleNavigation::Item do
255
256
  context 'with autogenerate_item_ids == false' do
256
257
  before(:each) do
257
258
  @item.stub!(:autogenerate_item_ids? => false)
258
- @item.stub!(:selected? => false)
259
+ @item.stub!(:selected? => false, :selected_by_condition? => false)
259
260
  end
260
261
  context 'with id defined in options' do
261
262
  before(:each) do
@@ -284,11 +285,11 @@ describe SimpleNavigation::Item do
284
285
  @item.stub!(:sub_navigation => @sub_navigation)
285
286
  end
286
287
  it "should return true if subnav is selected" do
287
- @sub_navigation.stub!(:selected? => true)
288
+ @sub_navigation.stub!(:selected? => true, :selected_by_condition? => true)
288
289
  @item.should be_selected_by_subnav
289
290
  end
290
291
  it "should return false if subnav is not selected" do
291
- @sub_navigation.stub!(:selected? => false)
292
+ @sub_navigation.stub!(:selected? => false, :selected_by_condition? => true)
292
293
  @item.should_not be_selected_by_subnav
293
294
  end
294
295
  end
data/spec/spec_helper.rb CHANGED
@@ -56,7 +56,7 @@ def containers
56
56
  container.dom_id = 'nav_dom_id'
57
57
  container.dom_class = 'nav_dom_class'
58
58
  @items = primary_items.map {|params| SimpleNavigation::Item.new(container, *params)}
59
- @items.each {|i| i.stub!(:selected? => false)}
59
+ @items.each {|i| i.stub!(:selected? => false, :selected_by_condition? => false)}
60
60
  container.instance_variable_set(:@items, @items)
61
61
  sub_container = subnav_container
62
62
  primary_item(:invoices) {|item| item.instance_variable_set(:@sub_navigation, sub_container)}
@@ -79,14 +79,14 @@ def select_item(key)
79
79
  item.instance_variable_get(:@sub_navigation).items.find { |i| i.key == key}.stub!(:selected? => true)
80
80
  end
81
81
  else
82
- primary_item(key) {|item| item.stub!(:selected? => true) unless item.frozen?}
82
+ primary_item(key) {|item| item.stub!(:selected? => true, :selected_by_condition? => true) unless item.frozen?}
83
83
  end
84
84
  end
85
85
 
86
86
  def subnav_container
87
87
  container = SimpleNavigation::ItemContainer.new(2)
88
88
  items = sub_items.map {|params| SimpleNavigation::Item.new(container, *params)}
89
- items.each {|i| i.stub!(:selected? => false)}
89
+ items.each {|i| i.stub!(:selected? => false, :selected_by_condition? => false)}
90
90
  container.instance_variable_set(:@items, items)
91
91
  container
92
92
  end
metadata CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
5
5
  prerelease: false
6
6
  segments:
7
7
  - 3
8
- - 4
9
- - 2
10
- version: 3.4.2
8
+ - 5
9
+ - 0
10
+ version: 3.5.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Andi Schacke
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-08-14 00:00:00 +01:00
19
+ date: 2011-08-15 00:00:00 +01:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency