bootstrap-navbar 1.0.0.pre2 → 1.0.0.pre3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +3 -469
- data/lib/bootstrap-navbar/helpers.rb +9 -8
- data/lib/bootstrap-navbar/helpers/bootstrap2.rb +33 -33
- data/lib/bootstrap-navbar/helpers/bootstrap3.rb +27 -27
- data/lib/bootstrap-navbar/version.rb +1 -1
- data/spec/bootstrap-navbar/helpers/bootstrap2_spec.rb +50 -50
- data/spec/bootstrap-navbar/helpers/bootstrap3_spec.rb +5 -5
- metadata +1 -3
- data/spec/bootstrap-navbar/helpers_spec.rb +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c1bf017cd13c884bc254a7d2c1d52f62544fe429
|
4
|
+
data.tar.gz: 74035cc23f029cb5fae56f2d1089e03435453357
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d98ebb16e693c825e5daf3b0b41ac32e8d33e2093d2031be02e40c6945523e0ec49d3632610ca28ec753598f9d38da1d5f02233f10bed157360788437631a5ed
|
7
|
+
data.tar.gz: 243b505a37bfca17f9bc5335b4537a661bbd96e59c1affc7006881ba8b2cddc0ee7ea039699706d52f27c7c005042718ef3eb3bd9a6fdde158fc5ac1fbee3880
|
data/README.md
CHANGED
@@ -67,477 +67,11 @@ ActionView::Base.send :include, BootstrapNavbar::Helpers
|
|
67
67
|
|
68
68
|
## Usage
|
69
69
|
|
70
|
-
|
70
|
+
Since the navbar format changed quite a bit between Bootstrap 2.x and 3.x, generating them using this gem is quite different as well. Check out the Wiki pages for detailed instructions:
|
71
71
|
|
72
|
-
|
72
|
+
[Usage with Bootstrap 2.x](https://github.com/krautcomputing/bootstrap-navbar/wiki/Usage-with-Bootstrap-2.x)
|
73
73
|
|
74
|
-
|
75
|
-
|
76
|
-
```ruby
|
77
|
-
= navbar brand: 'My great app', brand_link: '/home', fixed: :top, responsive: true do
|
78
|
-
= menu_group class: 'foo', id: 'menu' do
|
79
|
-
= menu_text 'Pick an option:'
|
80
|
-
= menu_item "Home", root_path
|
81
|
-
= menu_item "About Us", about_us_path
|
82
|
-
= menu_item contact_path do
|
83
|
-
= image_tag 'contact.jpg'
|
84
|
-
Contact Us!
|
85
|
-
= menu_divider
|
86
|
-
= drop_down "Stuff" do
|
87
|
-
= drop_down_header 'Great stuff!'
|
88
|
-
= menu_item "One", one_path
|
89
|
-
= menu_item "Two", two_path
|
90
|
-
= menu_item "Three", three_path
|
91
|
-
- if current_user.admin?
|
92
|
-
= drop_down_divider
|
93
|
-
= sub_drop_down 'Admin Stuff' do
|
94
|
-
= menu_item "Admin Dashboard", admin_path
|
95
|
-
= menu_item "Users", admin_users_path
|
96
|
-
= menu_group pull: 'right' do
|
97
|
-
- if current_user
|
98
|
-
= menu_item "Log Out", log_out_path
|
99
|
-
- else
|
100
|
-
= menu_item "Log In", log_in_path
|
101
|
-
```
|
102
|
-
|
103
|
-
### Methods
|
104
|
-
|
105
|
-
#### navbar
|
106
|
-
|
107
|
-
This method sets up the basic structure of a navbar.
|
108
|
-
|
109
|
-
```haml
|
110
|
-
= navbar
|
111
|
-
```
|
112
|
-
|
113
|
-
generates:
|
114
|
-
|
115
|
-
```html
|
116
|
-
<div class="navbar">
|
117
|
-
<div class="navbar-inner">
|
118
|
-
<div class="container">
|
119
|
-
</div>
|
120
|
-
</div>
|
121
|
-
</div>
|
122
|
-
```
|
123
|
-
|
124
|
-
The content of the navbar is supplied by the block and the available options:
|
125
|
-
|
126
|
-
```haml
|
127
|
-
= navbar do
|
128
|
-
Yay!
|
129
|
-
```
|
130
|
-
|
131
|
-
generates:
|
132
|
-
|
133
|
-
```html
|
134
|
-
<div class="navbar">
|
135
|
-
<div class="navbar-inner">
|
136
|
-
<div class="container">
|
137
|
-
Yay!
|
138
|
-
</div>
|
139
|
-
</div>
|
140
|
-
</div>
|
141
|
-
```
|
142
|
-
|
143
|
-
Options `brand` and `brand_link` autogenerate the brand link:
|
144
|
-
|
145
|
-
```haml
|
146
|
-
= navbar brand: 'My great app', brand_link: '/start'
|
147
|
-
```
|
148
|
-
|
149
|
-
generates:
|
150
|
-
|
151
|
-
```html
|
152
|
-
<div class="navbar">
|
153
|
-
<div class="navbar-inner">
|
154
|
-
<div class="container">
|
155
|
-
<a href="/start" class="brand">My great app</a>
|
156
|
-
</div>
|
157
|
-
</div>
|
158
|
-
</div>
|
159
|
-
```
|
160
|
-
|
161
|
-
If only `brand` is defined, `brand_link` defaults to `/`.
|
162
|
-
|
163
|
-
Option `responsive` generates a responsive navbar:
|
164
|
-
|
165
|
-
```haml
|
166
|
-
= navbar responsive: true
|
167
|
-
```
|
168
|
-
|
169
|
-
generates:
|
170
|
-
|
171
|
-
```html
|
172
|
-
<div class="navbar">
|
173
|
-
<div class="navbar-inner">
|
174
|
-
<div class="container">
|
175
|
-
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
|
176
|
-
<span class='icon-bar'></span>
|
177
|
-
<span class='icon-bar'></span>
|
178
|
-
<span class='icon-bar'></span>
|
179
|
-
</a>
|
180
|
-
<div class="nav-collapse collapse">
|
181
|
-
</div>
|
182
|
-
</div>
|
183
|
-
</div>
|
184
|
-
</div>
|
185
|
-
```
|
186
|
-
|
187
|
-
**Attention: when using the `responsive` option, the brand link should not be added through the `brand_link` method but directly supplied to the `navbar` call.**
|
188
|
-
|
189
|
-
Don't do this:
|
190
|
-
|
191
|
-
```haml
|
192
|
-
= navbar responsive: true do
|
193
|
-
= brand_link 'My great app', '/home'
|
194
|
-
```
|
195
|
-
|
196
|
-
Do this:
|
197
|
-
|
198
|
-
```haml
|
199
|
-
= navbar responsive: true, brand: 'My great app', brand_link: '/home'
|
200
|
-
```
|
201
|
-
|
202
|
-
Otherwise the brand link will be nested incorrectly and will disappear when resizing the window to a smaller size.
|
203
|
-
|
204
|
-
Option `fluid` changes the grid system to be [fluid](http://twitter.github.io/bootstrap/scaffolding.html#fluidGridSystem):
|
205
|
-
|
206
|
-
```haml
|
207
|
-
= navbar fluid: true
|
208
|
-
```
|
209
|
-
|
210
|
-
generates:
|
211
|
-
|
212
|
-
```html
|
213
|
-
<div class="navbar">
|
214
|
-
<div class="navbar-inner">
|
215
|
-
<div class="container-fluid">
|
216
|
-
</div>
|
217
|
-
</div>
|
218
|
-
</div>
|
219
|
-
```
|
220
|
-
|
221
|
-
#### brand_link
|
222
|
-
|
223
|
-
This method generates a menu divider, to be used in a `navbar`.
|
224
|
-
|
225
|
-
```haml
|
226
|
-
= brand_link 'My App', '/home'
|
227
|
-
```
|
228
|
-
|
229
|
-
generates:
|
230
|
-
|
231
|
-
```html
|
232
|
-
<a href="/home" class="brand">My App</a>
|
233
|
-
```
|
234
|
-
|
235
|
-
If the path (`/home` in this case) is not specified, it defaults to `/`.
|
236
|
-
|
237
|
-
#### menu_text
|
238
|
-
|
239
|
-
This method generates some menu text, to be used in a `navbar`.
|
240
|
-
|
241
|
-
```haml
|
242
|
-
= menu_text 'Select a option:'
|
243
|
-
```
|
244
|
-
|
245
|
-
generates:
|
246
|
-
|
247
|
-
```html
|
248
|
-
<p class="navbar-text">
|
249
|
-
Select a option:
|
250
|
-
</p>
|
251
|
-
```
|
252
|
-
|
253
|
-
A option can be supplied to make the text float to the right or left:
|
254
|
-
|
255
|
-
```haml
|
256
|
-
= menu_text 'Select a option:', :right
|
257
|
-
```
|
258
|
-
|
259
|
-
generates:
|
260
|
-
|
261
|
-
```html
|
262
|
-
<p class="navbar-text pull-right">
|
263
|
-
Select a option:
|
264
|
-
</p>
|
265
|
-
```
|
266
|
-
|
267
|
-
The content can alternatively be supplied in a block:
|
268
|
-
|
269
|
-
```haml
|
270
|
-
= menu_text do
|
271
|
-
Current country:
|
272
|
-
= image_text 'flags/en.jpg'
|
273
|
-
```
|
274
|
-
|
275
|
-
generates:
|
276
|
-
|
277
|
-
```html
|
278
|
-
<p class="navbar-text">
|
279
|
-
Current country:
|
280
|
-
<img src="/images/flags/en.jpg">
|
281
|
-
</p>
|
282
|
-
```
|
283
|
-
|
284
|
-
#### menu_group
|
285
|
-
|
286
|
-
This method generates a menu group, to be used in a `navbar`.
|
287
|
-
|
288
|
-
```haml
|
289
|
-
= menu_group
|
290
|
-
```
|
291
|
-
|
292
|
-
generates:
|
293
|
-
|
294
|
-
```html
|
295
|
-
<ul class="nav">
|
296
|
-
</ul>
|
297
|
-
```
|
298
|
-
|
299
|
-
The content of the menu group is supplied by the blocks:
|
300
|
-
|
301
|
-
```haml
|
302
|
-
= menu_group do
|
303
|
-
Yay!
|
304
|
-
```
|
305
|
-
|
306
|
-
generates:
|
307
|
-
|
308
|
-
```html
|
309
|
-
<ul class="nav">
|
310
|
-
Yay!
|
311
|
-
</ul>
|
312
|
-
```
|
313
|
-
|
314
|
-
You can add a `pull` option to make the group float to the right or left, and add more classes and other attributes:
|
315
|
-
|
316
|
-
```haml
|
317
|
-
= menu_group pull: 'right', class: 'large', id: 'menu'
|
318
|
-
```
|
319
|
-
|
320
|
-
generates:
|
321
|
-
|
322
|
-
```html
|
323
|
-
<ul class="nav pull-right large" id="menu">
|
324
|
-
</ul>
|
325
|
-
```
|
326
|
-
|
327
|
-
#### menu_item
|
328
|
-
|
329
|
-
This method generates a menu item, to be used in a `menu_group`.
|
330
|
-
|
331
|
-
```haml
|
332
|
-
= menu_item 'Home', '/home'
|
333
|
-
```
|
334
|
-
|
335
|
-
generates:
|
336
|
-
|
337
|
-
```html
|
338
|
-
<li>
|
339
|
-
<a href="/home">
|
340
|
-
Home
|
341
|
-
</a>
|
342
|
-
</li>
|
343
|
-
```
|
344
|
-
|
345
|
-
If the path (`/home` in this case) is not specified, it defaults to `#`.
|
346
|
-
|
347
|
-
You can also use a block (e.g., in case the link name is more than a single word):
|
348
|
-
|
349
|
-
```haml
|
350
|
-
= menu_item /home' do
|
351
|
-
= image_tag 'home.png'
|
352
|
-
Home
|
353
|
-
```
|
354
|
-
|
355
|
-
generates:
|
356
|
-
|
357
|
-
```html
|
358
|
-
<li>
|
359
|
-
<a href="/home">
|
360
|
-
<img src="/images/home.png">
|
361
|
-
Home
|
362
|
-
</a>
|
363
|
-
</li>
|
364
|
-
```
|
365
|
-
|
366
|
-
You can add options that will be passed on to the `li` and `a` elements:
|
367
|
-
|
368
|
-
```haml
|
369
|
-
= menu_item 'Home', '/home', { class: 'list-item' }, { id: 'home' }
|
370
|
-
```
|
371
|
-
|
372
|
-
generates:
|
373
|
-
|
374
|
-
```html
|
375
|
-
<li class="list-item">
|
376
|
-
<a href="/home" id="home">
|
377
|
-
Home
|
378
|
-
</a>
|
379
|
-
</li>
|
380
|
-
```
|
381
|
-
|
382
|
-
If the specified path/URL is the [current url](#set-current_url_method-required), it will be marked as `active`. Note that it doesn't matter if you link to a full URL or just the path, or if `BootstrapNavbar.configuration.current_url_method` returns a full URL or just the path, it will work regardless.
|
383
|
-
|
384
|
-
```haml
|
385
|
-
= menu_item 'Home', '/home'
|
386
|
-
```
|
387
|
-
|
388
|
-
generates:
|
389
|
-
|
390
|
-
```html
|
391
|
-
<!-- If the current path is /home -->
|
392
|
-
|
393
|
-
<li class="active">
|
394
|
-
<a href="/home">
|
395
|
-
Home
|
396
|
-
</a>
|
397
|
-
</li>
|
398
|
-
```
|
399
|
-
|
400
|
-
#### menu_divider
|
401
|
-
|
402
|
-
This method generates a menu divider, to be used in a `menu_group`.
|
403
|
-
|
404
|
-
```haml
|
405
|
-
= menu_divider
|
406
|
-
```
|
407
|
-
|
408
|
-
generates:
|
409
|
-
|
410
|
-
```html
|
411
|
-
<li class="divider-vertical"></li>
|
412
|
-
```
|
413
|
-
|
414
|
-
#### drop_down
|
415
|
-
|
416
|
-
This method generates a dropdown, to be used in a `menu_group`.
|
417
|
-
|
418
|
-
```haml
|
419
|
-
= drop_down 'Settings'
|
420
|
-
```
|
421
|
-
|
422
|
-
generates:
|
423
|
-
|
424
|
-
```html
|
425
|
-
<li class="dropdown">
|
426
|
-
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
427
|
-
Settings <b class="caret"></b>
|
428
|
-
</a>
|
429
|
-
<ul class="dropdown-menu">
|
430
|
-
</ul>
|
431
|
-
</li>
|
432
|
-
```
|
433
|
-
|
434
|
-
The content of the dropdown can be defined in the block using `menu_item`s:
|
435
|
-
|
436
|
-
```haml
|
437
|
-
= drop_down 'Settings' do
|
438
|
-
= menu_item 'Basic', '/settings/basic'
|
439
|
-
= menu_item 'Advanced', '/settings/advanced'
|
440
|
-
```
|
441
|
-
|
442
|
-
generates:
|
443
|
-
|
444
|
-
```html
|
445
|
-
<li class="dropdown">
|
446
|
-
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
447
|
-
Settings <b class="caret"></b>
|
448
|
-
</a>
|
449
|
-
<ul class="dropdown-menu">
|
450
|
-
<li>
|
451
|
-
<a href="/settings/basic">
|
452
|
-
Basic
|
453
|
-
</a>
|
454
|
-
</li>
|
455
|
-
<li>
|
456
|
-
<a href="/settings/advanced">
|
457
|
-
Advanced
|
458
|
-
</a>
|
459
|
-
</li>
|
460
|
-
</ul>
|
461
|
-
</li>
|
462
|
-
```
|
463
|
-
|
464
|
-
#### sub_drop_down
|
465
|
-
|
466
|
-
This method generates a sub dropdown, to be used in a `drop_down`.
|
467
|
-
|
468
|
-
```haml
|
469
|
-
= sub_drop_down 'Admin Settings'
|
470
|
-
```
|
471
|
-
|
472
|
-
generates:
|
473
|
-
|
474
|
-
```html
|
475
|
-
<li class="dropdown-submenu">
|
476
|
-
<a href="#">
|
477
|
-
Admin Settings
|
478
|
-
</a>
|
479
|
-
<ul class="dropdown-menu">
|
480
|
-
</ul>
|
481
|
-
</li>
|
482
|
-
```
|
483
|
-
|
484
|
-
Just like in the `drop_down`, the content of the sub dropdown is defined in the block:
|
485
|
-
|
486
|
-
```haml
|
487
|
-
= sub_drop_down 'Admin Settings' do
|
488
|
-
= menu_item 'Users', '/settings/admin/users'
|
489
|
-
= menu_item 'Stats', '/settings/admin/stats'
|
490
|
-
```
|
491
|
-
|
492
|
-
generates:
|
493
|
-
|
494
|
-
```html
|
495
|
-
<li class="dropdown-submenu">
|
496
|
-
<a href="#">
|
497
|
-
Admin Settings
|
498
|
-
</a>
|
499
|
-
<ul class="dropdown-menu">
|
500
|
-
<li>
|
501
|
-
<a href="/settings/admin/users">
|
502
|
-
Users
|
503
|
-
</a>
|
504
|
-
</li>
|
505
|
-
<li>
|
506
|
-
<a href="/settings/admin/stats">
|
507
|
-
Stats
|
508
|
-
</a>
|
509
|
-
</li>
|
510
|
-
</ul>
|
511
|
-
</li>
|
512
|
-
```
|
513
|
-
|
514
|
-
#### drop_down_divider
|
515
|
-
|
516
|
-
This method generates a dropdown divider, to be used in a `drop_down` or `sub_drop_down`.
|
517
|
-
|
518
|
-
```haml
|
519
|
-
= drop_down_divider
|
520
|
-
```
|
521
|
-
|
522
|
-
generates:
|
523
|
-
|
524
|
-
```html
|
525
|
-
<li class="divider"></li>
|
526
|
-
```
|
527
|
-
|
528
|
-
#### drop_down_header
|
529
|
-
|
530
|
-
This method generates a dropdown header, to be used in a `drop_down` or `sub_drop_down`.
|
531
|
-
|
532
|
-
```haml
|
533
|
-
= drop_down_header 'Important!'
|
534
|
-
```
|
535
|
-
|
536
|
-
generates:
|
537
|
-
|
538
|
-
```html
|
539
|
-
<li class="nav-header">Important!</li>
|
540
|
-
```
|
74
|
+
[Usage with Bootstrap 3.x](https://github.com/krautcomputing/bootstrap-navbar/wiki/Usage-with-Bootstrap-3.x)
|
541
75
|
|
542
76
|
## Contributing
|
543
77
|
|
@@ -1,15 +1,16 @@
|
|
1
1
|
module BootstrapNavbar::Helpers
|
2
2
|
def self.included(base)
|
3
|
-
helper_version = BootstrapNavbar.configuration.bootstrap_version
|
4
|
-
base.send :include, const_get("
|
3
|
+
helper_version = BootstrapNavbar.configuration.bootstrap_version[0]
|
4
|
+
base.send :include, const_get("Bootstrap#{helper_version}")
|
5
5
|
end
|
6
6
|
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
7
|
+
def attributes_for_tag(hash)
|
8
|
+
string = hash.map { |k, v| %(#{k}="#{v}") }.join(' ')
|
9
|
+
if string.length > 0
|
10
|
+
' ' << string
|
11
|
+
else
|
12
|
+
string
|
13
|
+
end
|
13
14
|
end
|
14
15
|
|
15
16
|
def current_url?(url)
|
@@ -1,26 +1,26 @@
|
|
1
1
|
module BootstrapNavbar::Helpers::Bootstrap2
|
2
2
|
def navbar(options = {}, &block)
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
wrapper options do
|
4
|
+
inner_wrapper do
|
5
|
+
container options[:brand], options[:brand_link], options[:responsive], options[:fluid], &block
|
6
6
|
end
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
10
|
-
def
|
10
|
+
def navbar_group(options = {}, &block)
|
11
11
|
css_classes = %w(nav).tap do |css_classes|
|
12
12
|
css_classes << "pull-#{options.delete(:pull)}" if options.has_key?(:pull)
|
13
13
|
css_classes << options.delete(:class) if options.has_key?(:class)
|
14
14
|
end
|
15
|
-
attributes =
|
15
|
+
attributes = attributes_for_tag({ class: css_classes.join(' ') }.merge(options))
|
16
16
|
prepare_html <<-HTML.chomp!
|
17
|
-
<ul#{
|
17
|
+
<ul#{attributes}>
|
18
18
|
#{capture(&block) if block_given?}
|
19
19
|
</ul>
|
20
20
|
HTML
|
21
21
|
end
|
22
22
|
|
23
|
-
def
|
23
|
+
def navbar_item(name = nil, path = nil, list_item_options = nil, link_options = nil, &block)
|
24
24
|
name, path, list_item_options, link_options = capture(&block), name, path, list_item_options if block_given?
|
25
25
|
path ||= '#'
|
26
26
|
list_item_options ||= {}
|
@@ -30,61 +30,61 @@ HTML
|
|
30
30
|
css_classes << 'active' if current_url?(path)
|
31
31
|
css_classes << list_item_options.delete(:class) if list_item_options.has_key?(:class)
|
32
32
|
end
|
33
|
-
list_item_attributes =
|
33
|
+
list_item_attributes = attributes_for_tag(
|
34
34
|
{ class: list_item_css_classes.join(' ') }
|
35
35
|
.delete_if { |k, v| v.empty? }
|
36
36
|
.merge(list_item_options)
|
37
37
|
)
|
38
|
-
link_attributes =
|
38
|
+
link_attributes = attributes_for_tag(link_options)
|
39
39
|
prepare_html <<-HTML.chomp!
|
40
|
-
<li#{
|
41
|
-
<a href="#{path}"#{
|
40
|
+
<li#{list_item_attributes}>
|
41
|
+
<a href="#{path}"#{link_attributes}>
|
42
42
|
#{name}
|
43
43
|
</a>
|
44
44
|
</li>
|
45
45
|
HTML
|
46
46
|
end
|
47
47
|
|
48
|
-
def
|
48
|
+
def navbar_dropdown(name, &block)
|
49
49
|
prepare_html <<-HTML.chomp!
|
50
50
|
<li class="dropdown">
|
51
51
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
52
52
|
#{name} <b class="caret"></b>
|
53
53
|
</a>
|
54
|
-
#{
|
54
|
+
#{dropdown_menu(&block)}
|
55
55
|
</li>
|
56
56
|
HTML
|
57
57
|
end
|
58
58
|
|
59
|
-
def
|
59
|
+
def navbar_sub_dropdown(name, list_item_options = {}, link_options = {}, &block)
|
60
60
|
list_item_css_classes = %w(dropdown-submenu).tap do |css_classes|
|
61
61
|
css_classes << list_item_options.delete(:class) if list_item_options.has_key?(:class)
|
62
62
|
end
|
63
|
-
list_item_attributes =
|
64
|
-
link_attributes =
|
63
|
+
list_item_attributes = attributes_for_tag({ class: list_item_css_classes.join(' ') }.merge(list_item_options))
|
64
|
+
link_attributes = attributes_for_tag(link_options)
|
65
65
|
prepare_html <<-HTML.chomp!
|
66
|
-
<li#{
|
67
|
-
<a href="#"#{
|
66
|
+
<li#{list_item_attributes}>
|
67
|
+
<a href="#"#{link_attributes}>
|
68
68
|
#{name}
|
69
69
|
</a>
|
70
|
-
#{
|
70
|
+
#{dropdown_menu(&block)}
|
71
71
|
</li>
|
72
72
|
HTML
|
73
73
|
end
|
74
74
|
|
75
|
-
def
|
75
|
+
def navbar_dropdown_divider
|
76
76
|
prepare_html %(<li class="divider"></li>)
|
77
77
|
end
|
78
78
|
|
79
|
-
def
|
79
|
+
def navbar_dropdown_header(text)
|
80
80
|
prepare_html %(<li class="nav-header">#{text}</li>)
|
81
81
|
end
|
82
82
|
|
83
|
-
def
|
83
|
+
def navbar_divider
|
84
84
|
prepare_html %(<li class="divider-vertical"></li>)
|
85
85
|
end
|
86
86
|
|
87
|
-
def
|
87
|
+
def navbar_text(text = nil, pull = nil, &block)
|
88
88
|
css_classes = %w(navbar-text).tap do |css_classes|
|
89
89
|
css_classes << "pull-#{pull}" if pull
|
90
90
|
end
|
@@ -95,13 +95,13 @@ HTML
|
|
95
95
|
HTML
|
96
96
|
end
|
97
97
|
|
98
|
-
def
|
98
|
+
def navbar_brand_link(name, url = nil)
|
99
99
|
prepare_html %(<a href="#{url || '/'}" class="brand">#{name}</a>)
|
100
100
|
end
|
101
101
|
|
102
102
|
private
|
103
103
|
|
104
|
-
def
|
104
|
+
def wrapper(options, &block)
|
105
105
|
position = case
|
106
106
|
when options.has_key?(:static)
|
107
107
|
"static-#{options[:static]}"
|
@@ -114,16 +114,16 @@ HTML
|
|
114
114
|
css_classes << 'navbar-inverse' if options[:inverse]
|
115
115
|
end
|
116
116
|
attribute_hash = { class: css_classes.join(' ') }
|
117
|
-
attributes =
|
117
|
+
attributes = attributes_for_tag(attribute_hash)
|
118
118
|
|
119
119
|
prepare_html <<-HTML.chomp!
|
120
|
-
<div#{
|
120
|
+
<div#{attributes}>
|
121
121
|
#{capture(&block) if block_given?}
|
122
122
|
</div>
|
123
123
|
HTML
|
124
124
|
end
|
125
125
|
|
126
|
-
def
|
126
|
+
def inner_wrapper(&block)
|
127
127
|
prepare_html <<-HTML.chomp!
|
128
128
|
<div class="navbar-inner">
|
129
129
|
#{capture(&block) if block_given?}
|
@@ -131,11 +131,11 @@ HTML
|
|
131
131
|
HTML
|
132
132
|
end
|
133
133
|
|
134
|
-
def
|
134
|
+
def container(brand, brand_link, responsive, fluid, &block)
|
135
135
|
css_class = fluid ? 'container-fluid' : 'container'
|
136
136
|
content = [].tap do |content|
|
137
137
|
content << responsive_button if responsive
|
138
|
-
content <<
|
138
|
+
content << navbar_brand_link(brand, brand_link) if brand || brand_link
|
139
139
|
content << if responsive
|
140
140
|
responsive_wrapper(&block)
|
141
141
|
else
|
@@ -153,9 +153,9 @@ HTML
|
|
153
153
|
css_classes = %w(nav-collapse).tap do |css_classes|
|
154
154
|
css_classes << 'collapse' if BootstrapNavbar.configuration.bootstrap_version >= '2.2.0'
|
155
155
|
end
|
156
|
-
attributes =
|
156
|
+
attributes = attributes_for_tag({ class: css_classes.join(' ') })
|
157
157
|
prepare_html <<-HTML.chomp!
|
158
|
-
<div#{
|
158
|
+
<div#{attributes}>
|
159
159
|
#{capture(&block) if block_given?}
|
160
160
|
</div>
|
161
161
|
HTML
|
@@ -171,7 +171,7 @@ HTML
|
|
171
171
|
HTML
|
172
172
|
end
|
173
173
|
|
174
|
-
def
|
174
|
+
def dropdown_menu(&block)
|
175
175
|
prepare_html <<-HTML.chomp!
|
176
176
|
<ul class="dropdown-menu">
|
177
177
|
#{capture(&block) if block_given?}
|
@@ -2,11 +2,11 @@ module BootstrapNavbar::Helpers::Bootstrap3
|
|
2
2
|
def navbar(options = {}, &block)
|
3
3
|
container = options.has_key?(:container) ? options[:container] : true
|
4
4
|
navbar_content =
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
header(options[:brand], options[:brand_link]) <<
|
6
|
+
collapsable(&block)
|
7
|
+
wrapper options do
|
8
8
|
if container
|
9
|
-
|
9
|
+
container(navbar_content)
|
10
10
|
else
|
11
11
|
navbar_content
|
12
12
|
end
|
@@ -17,14 +17,25 @@ module BootstrapNavbar::Helpers::Bootstrap3
|
|
17
17
|
css_classes = %w(nav navbar-nav).tap do |css_classes|
|
18
18
|
css_classes << "navbar-#{options[:align]}" if options.has_key?(:align)
|
19
19
|
end
|
20
|
-
attributes =
|
20
|
+
attributes = attributes_for_tag({ class: css_classes.join(' ') }.merge(options))
|
21
21
|
prepare_html <<-HTML.chomp!
|
22
|
-
<ul#{
|
22
|
+
<ul#{attributes}>
|
23
23
|
#{capture(&block) if block_given?}
|
24
24
|
</ul>
|
25
25
|
HTML
|
26
26
|
end
|
27
27
|
|
28
|
+
def navbar_group_item(text, url)
|
29
|
+
attributes = {}
|
30
|
+
attributes[:class] = 'active' if current_url?(url)
|
31
|
+
attributes = attributes_for_tag(attributes)
|
32
|
+
prepare_html <<-HTML.chomp!
|
33
|
+
<li#{attributes}>
|
34
|
+
<a href="#{url}">#{text}</a>
|
35
|
+
</li>
|
36
|
+
HTML
|
37
|
+
end
|
38
|
+
|
28
39
|
def navbar_dropdown(text, &block)
|
29
40
|
prepare_html <<-HTML.chomp!
|
30
41
|
<li class="dropdown">
|
@@ -36,25 +47,14 @@ HTML
|
|
36
47
|
HTML
|
37
48
|
end
|
38
49
|
|
39
|
-
def navbar_group_item(text, url)
|
40
|
-
attributes = {}
|
41
|
-
attributes[:class] = 'active' if current_url?(url)
|
42
|
-
attributes = attribute_hash_to_string(attributes)
|
43
|
-
prepare_html <<-HTML.chomp!
|
44
|
-
<li#{with_preceding_space attributes}>
|
45
|
-
<a href="#{url}">#{text}</a>
|
46
|
-
</li>
|
47
|
-
HTML
|
48
|
-
end
|
49
|
-
|
50
50
|
def navbar_form(options = {}, &block)
|
51
51
|
css_classes = %w(navbar-form).tap do |css_classes|
|
52
52
|
css_classes << "navbar-#{options[:align]}" if options.has_key?(:align)
|
53
53
|
end
|
54
54
|
attribute_hash = { class: css_classes.join(' '), role: 'form' }
|
55
|
-
attributes =
|
55
|
+
attributes = attributes_for_tag(attribute_hash)
|
56
56
|
prepare_html <<-HTML.chomp!
|
57
|
-
<form#{
|
57
|
+
<form#{attributes}>
|
58
58
|
#{capture(&block) if block_given?}
|
59
59
|
</form>
|
60
60
|
HTML
|
@@ -79,15 +79,15 @@ HTML
|
|
79
79
|
css_classes << options[:class] if options.has_key?(:class)
|
80
80
|
end
|
81
81
|
attribute_hash = { class: css_classes.join(' '), type: 'button' }
|
82
|
-
attributes =
|
82
|
+
attributes = attributes_for_tag(attribute_hash)
|
83
83
|
prepare_html <<-HTML.chomp!
|
84
|
-
<button#{
|
84
|
+
<button#{attributes}>#{text}</button>
|
85
85
|
HTML
|
86
86
|
end
|
87
87
|
|
88
88
|
private
|
89
89
|
|
90
|
-
def
|
90
|
+
def container(content)
|
91
91
|
prepare_html <<-HTML.chomp!
|
92
92
|
<div class="container">
|
93
93
|
#{content}
|
@@ -95,7 +95,7 @@ HTML
|
|
95
95
|
HTML
|
96
96
|
end
|
97
97
|
|
98
|
-
def
|
98
|
+
def header(brand, brand_link)
|
99
99
|
prepare_html <<-HTML.chomp!
|
100
100
|
<div class="navbar-header">
|
101
101
|
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapsable">
|
@@ -109,7 +109,7 @@ HTML
|
|
109
109
|
HTML
|
110
110
|
end
|
111
111
|
|
112
|
-
def
|
112
|
+
def collapsable(&block)
|
113
113
|
prepare_html <<-HTML.chomp!
|
114
114
|
<div class="collapse navbar-collapse" id="navbar-collapsable">
|
115
115
|
#{capture(&block) if block_given?}
|
@@ -121,7 +121,7 @@ HTML
|
|
121
121
|
prepare_html %(<a href="#{url || '/'}" class="navbar-brand">#{name}</a>)
|
122
122
|
end
|
123
123
|
|
124
|
-
def
|
124
|
+
def wrapper(options, &block)
|
125
125
|
style = options[:inverse] ? 'inverse' : 'default'
|
126
126
|
css_classes = %w(navbar).tap do |css_classes|
|
127
127
|
css_classes << "navbar-fixed-#{options[:fixed]}" if options.has_key?(:fixed)
|
@@ -130,9 +130,9 @@ HTML
|
|
130
130
|
css_classes << "navbar-#{style}"
|
131
131
|
end
|
132
132
|
attribute_hash = { class: css_classes.join(' '), role: 'navigation' }
|
133
|
-
attributes =
|
133
|
+
attributes = attributes_for_tag(attribute_hash)
|
134
134
|
prepare_html <<-HTML.chomp!
|
135
|
-
<nav#{
|
135
|
+
<nav#{attributes}>
|
136
136
|
#{capture(&block) if block_given?}
|
137
137
|
</nav>
|
138
138
|
HTML
|
@@ -6,7 +6,7 @@ shared_examples 'active menu item' do
|
|
6
6
|
paths_and_urls.each do |current_path_or_url|
|
7
7
|
paths_and_urls.each do |menu_path_or_url|
|
8
8
|
BootstrapNavbar.configuration.current_url_method = "'#{current_path_or_url}'"
|
9
|
-
expect(renderer.
|
9
|
+
expect(renderer.navbar_item('foo', menu_path_or_url)).to have_tag(:li, with: { class: 'active' })
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
@@ -109,12 +109,12 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
|
|
109
109
|
end
|
110
110
|
end
|
111
111
|
|
112
|
-
describe '#
|
112
|
+
describe '#navbar_group' do
|
113
113
|
context 'without parameters' do
|
114
114
|
it 'generates the correct HTML' do
|
115
115
|
with_all_2_dot_x_versions do
|
116
|
-
expect(renderer.
|
117
|
-
expect(renderer.
|
116
|
+
expect(renderer.navbar_group).to have_tag(:ul, with: { class: 'nav' })
|
117
|
+
expect(renderer.navbar_group { 'foo' }).to have_tag(:ul, with: { class: 'nav' }, text: /foo/)
|
118
118
|
end
|
119
119
|
end
|
120
120
|
end
|
@@ -122,7 +122,7 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
|
|
122
122
|
context 'with "pull" parameter' do
|
123
123
|
it 'generates the correct HTML' do
|
124
124
|
with_all_2_dot_x_versions do
|
125
|
-
expect(renderer.
|
125
|
+
expect(renderer.navbar_group(pull: 'right')).to have_tag(:ul, with: { class: 'nav pull-right' })
|
126
126
|
end
|
127
127
|
end
|
128
128
|
end
|
@@ -130,7 +130,7 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
|
|
130
130
|
context 'with "class" parameter' do
|
131
131
|
it 'generates the correct HTML' do
|
132
132
|
with_all_2_dot_x_versions do
|
133
|
-
expect(renderer.
|
133
|
+
expect(renderer.navbar_group(class: 'foo')).to have_tag(:ul, with: { class: 'nav foo' })
|
134
134
|
end
|
135
135
|
end
|
136
136
|
end
|
@@ -138,7 +138,7 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
|
|
138
138
|
context 'with random parameters' do
|
139
139
|
it 'generates the correct HTML' do
|
140
140
|
with_all_2_dot_x_versions do
|
141
|
-
expect(renderer.
|
141
|
+
expect(renderer.navbar_group(:'data-foo' => 'bar')).to have_tag(:ul, with: { class: 'nav', :'data-foo' => 'bar' })
|
142
142
|
end
|
143
143
|
end
|
144
144
|
end
|
@@ -146,13 +146,13 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
|
|
146
146
|
context 'with many parameters' do
|
147
147
|
it 'generates the correct HTML' do
|
148
148
|
with_all_2_dot_x_versions do
|
149
|
-
expect(renderer.
|
149
|
+
expect(renderer.navbar_group(pull: 'right', class: 'foo', :'data-foo' => 'bar')).to have_tag(:ul, with: { class: 'nav foo pull-right', :'data-foo' => 'bar' })
|
150
150
|
end
|
151
151
|
end
|
152
152
|
end
|
153
153
|
end
|
154
154
|
|
155
|
-
describe '#
|
155
|
+
describe '#navbar_item' do
|
156
156
|
context 'with current URL or path' do
|
157
157
|
# With root URL or path
|
158
158
|
it_behaves_like 'active menu item' do
|
@@ -202,7 +202,7 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
|
|
202
202
|
it 'generates the correct HTML' do
|
203
203
|
with_all_2_dot_x_versions do
|
204
204
|
BootstrapNavbar.configuration.current_url_method = '"/"'
|
205
|
-
expect(renderer.
|
205
|
+
expect(renderer.navbar_item('foo', '/', class: 'bar', id: 'baz')).to have_tag(:li, with: { class: 'active bar', id: 'baz' })
|
206
206
|
end
|
207
207
|
end
|
208
208
|
end
|
@@ -211,7 +211,7 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
|
|
211
211
|
it 'generates the correct HTML' do
|
212
212
|
with_all_2_dot_x_versions do
|
213
213
|
BootstrapNavbar.configuration.current_url_method = '"/"'
|
214
|
-
expect(renderer.
|
214
|
+
expect(renderer.navbar_item('foo', '/', {}, class: 'pelle', id: 'fant')).to have_tag(:li, with: { class: 'active' }) do
|
215
215
|
with_tag :a, with: { href: '/', class: 'pelle', id: 'fant' }, text: /foo/
|
216
216
|
end
|
217
217
|
end
|
@@ -222,7 +222,7 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
|
|
222
222
|
it 'generates the correct HTML' do
|
223
223
|
with_all_2_dot_x_versions do
|
224
224
|
BootstrapNavbar.configuration.current_url_method = '"/"'
|
225
|
-
expect(renderer.
|
225
|
+
expect(renderer.navbar_item('foo', '/', { class: 'bar', id: 'baz' }, class: 'pelle', id: 'fant')).to have_tag(:li, with: { class: 'active bar', id: 'baz' }) do
|
226
226
|
with_tag :a, with: { href: '/', class: 'pelle', id: 'fant' }, text: /foo/
|
227
227
|
end
|
228
228
|
end
|
@@ -234,17 +234,17 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
|
|
234
234
|
it 'generates the correct HTML' do
|
235
235
|
with_all_2_dot_x_versions do
|
236
236
|
BootstrapNavbar.configuration.current_url_method = '"/foo"'
|
237
|
-
expect(renderer.
|
237
|
+
expect(renderer.navbar_item('foo')).to have_tag(:li, without: { class: 'active' }) do
|
238
238
|
with_tag :a, with: { href: '#' }, text: /foo/
|
239
239
|
end
|
240
|
-
expect(renderer.
|
240
|
+
expect(renderer.navbar_item('foo', '/')).to have_tag(:li, without: { class: 'active' }) do
|
241
241
|
with_tag :a, with: { href: '/' }, text: /foo/
|
242
242
|
end
|
243
|
-
expect(renderer.
|
243
|
+
expect(renderer.navbar_item('foo', '/bar')).to have_tag(:li, without: { class: 'active' }) do
|
244
244
|
with_tag :a, with: { href: '/bar' }, text: /foo/
|
245
245
|
end
|
246
246
|
BootstrapNavbar.configuration.current_url_method = '"/"'
|
247
|
-
expect(renderer.
|
247
|
+
expect(renderer.navbar_item('foo', '/foo')).to have_tag(:li, without: { class: 'active' }) do
|
248
248
|
with_tag :a, with: { href: '/foo' }, text: /foo/
|
249
249
|
end
|
250
250
|
end
|
@@ -254,7 +254,7 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
|
|
254
254
|
it 'generates the correct HTML' do
|
255
255
|
with_all_2_dot_x_versions do
|
256
256
|
BootstrapNavbar.configuration.current_url_method = '"/foo"'
|
257
|
-
expect(renderer.
|
257
|
+
expect(renderer.navbar_item('foo', '/', class: 'bar', id: 'baz')).to have_tag(:li, without: { class: 'active' }, with: { class: 'bar', id: 'baz' })
|
258
258
|
end
|
259
259
|
end
|
260
260
|
end
|
@@ -263,7 +263,7 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
|
|
263
263
|
context 'with a block' do
|
264
264
|
it 'generates the correct HTML' do
|
265
265
|
with_all_2_dot_x_versions do
|
266
|
-
expect(renderer.
|
266
|
+
expect(renderer.navbar_item { 'bar' }).to have_tag(:li) do
|
267
267
|
with_tag :a, with: { href: '#' }, text: /bar/
|
268
268
|
end
|
269
269
|
end
|
@@ -272,7 +272,7 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
|
|
272
272
|
context 'with list item options' do
|
273
273
|
it 'generates the correct HTML' do
|
274
274
|
with_all_2_dot_x_versions do
|
275
|
-
expect(renderer.
|
275
|
+
expect(renderer.navbar_item('/foo', class: 'pelle', id: 'fant') { 'bar' }).to have_tag(:li, with: { class: 'pelle', id: 'fant' }) do
|
276
276
|
with_tag :a, with: { href: '/foo' }, text: /bar/
|
277
277
|
end
|
278
278
|
end
|
@@ -282,7 +282,7 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
|
|
282
282
|
context 'with link options' do
|
283
283
|
it 'generates the correct HTML' do
|
284
284
|
with_all_2_dot_x_versions do
|
285
|
-
expect(renderer.
|
285
|
+
expect(renderer.navbar_item('/foo', {}, class: 'pelle', id: 'fant') { 'bar' }).to have_tag(:li) do
|
286
286
|
with_tag :a, with: { href: '/foo', class: 'pelle', id: 'fant' }, text: /bar/
|
287
287
|
end
|
288
288
|
end
|
@@ -292,7 +292,7 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
|
|
292
292
|
context 'with list item options and link options' do
|
293
293
|
it 'generates the correct HTML' do
|
294
294
|
with_all_2_dot_x_versions do
|
295
|
-
expect(renderer.
|
295
|
+
expect(renderer.navbar_item('/foo', { class: 'bar', id: 'baz' }, class: 'pelle', id: 'fant') { 'shnoo' }).to have_tag(:li, with: { class: 'bar', id: 'baz' }) do
|
296
296
|
with_tag :a, with: { href: '/foo', class: 'pelle', id: 'fant' }, text: /shnoo/
|
297
297
|
end
|
298
298
|
end
|
@@ -301,46 +301,46 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
|
|
301
301
|
end
|
302
302
|
end
|
303
303
|
|
304
|
-
context '
|
305
|
-
def
|
304
|
+
context 'dropdowns' do
|
305
|
+
def with_dropdown_menu(content = nil)
|
306
306
|
options = { with: { class: 'dropdown-menu' } }
|
307
307
|
options[:content] = content unless content.nil?
|
308
308
|
with_tag :ul, options
|
309
309
|
end
|
310
310
|
|
311
|
-
describe '#
|
311
|
+
describe '#navbar_dropdown' do
|
312
312
|
it 'generates the correct HTML' do
|
313
313
|
with_all_2_dot_x_versions do
|
314
|
-
expect(renderer.
|
314
|
+
expect(renderer.navbar_dropdown('foo')).to have_tag(:li, with: { class: 'dropdown' }) do
|
315
315
|
with_tag :a, with: { href: '#', class: 'dropdown-toggle', :'data-toggle' => 'dropdown' } do
|
316
316
|
with_text /foo/
|
317
317
|
with_tag :b, with: { class: 'caret' }
|
318
318
|
end
|
319
|
-
|
319
|
+
with_dropdown_menu
|
320
320
|
end
|
321
321
|
|
322
|
-
expect(renderer.
|
322
|
+
expect(renderer.navbar_dropdown('foo') { 'bar' }).to have_tag(:li, with: { class: 'dropdown' }) do
|
323
323
|
with_tag :a, with: { href: '#', class: 'dropdown-toggle', :'data-toggle' => 'dropdown' } do
|
324
324
|
with_text /foo/
|
325
325
|
with_tag :b, with: { class: 'caret' }
|
326
326
|
end
|
327
|
-
|
327
|
+
with_dropdown_menu('bar')
|
328
328
|
end
|
329
329
|
end
|
330
330
|
end
|
331
331
|
end
|
332
332
|
|
333
|
-
describe '#
|
333
|
+
describe '#navbar_sub_dropdown' do
|
334
334
|
it 'generates the correct HTML' do
|
335
335
|
with_all_2_dot_x_versions do
|
336
|
-
expect(renderer.
|
336
|
+
expect(renderer.navbar_sub_dropdown('foo')).to have_tag(:li, with: { class: 'dropdown-submenu' }) do
|
337
337
|
with_tag :a, with: { href: '#' }, text: /foo/
|
338
|
-
|
338
|
+
with_dropdown_menu
|
339
339
|
end
|
340
340
|
|
341
|
-
expect(renderer.
|
341
|
+
expect(renderer.navbar_sub_dropdown('foo') { 'bar' }).to have_tag(:li, with: { class: 'dropdown-submenu' }) do
|
342
342
|
with_tag :a, with: { href: '#' }, text: /foo/
|
343
|
-
|
343
|
+
with_dropdown_menu('bar')
|
344
344
|
end
|
345
345
|
end
|
346
346
|
end
|
@@ -348,7 +348,7 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
|
|
348
348
|
context 'with list item options' do
|
349
349
|
it 'generates the correct HTML' do
|
350
350
|
with_all_2_dot_x_versions do
|
351
|
-
expect(renderer.
|
351
|
+
expect(renderer.navbar_sub_dropdown('foo', class: 'bar', id: 'baz')).to have_tag(:li, with: { class: 'dropdown-submenu bar', id: 'baz' }) do
|
352
352
|
with_tag :a, with: { href: '#' }, text: /foo/
|
353
353
|
end
|
354
354
|
end
|
@@ -358,7 +358,7 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
|
|
358
358
|
context 'with link options' do
|
359
359
|
it 'generates the correct HTML' do
|
360
360
|
with_all_2_dot_x_versions do
|
361
|
-
expect(renderer.
|
361
|
+
expect(renderer.navbar_sub_dropdown('foo', {}, class: 'pelle', id: 'fant')).to have_tag(:li, with: { class: 'dropdown-submenu' }) do
|
362
362
|
with_tag :a, with: { href: '#', class: 'pelle', id: 'fant' }, text: /foo/
|
363
363
|
end
|
364
364
|
end
|
@@ -368,7 +368,7 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
|
|
368
368
|
context 'with list item options and link options' do
|
369
369
|
it 'generates the correct HTML' do
|
370
370
|
with_all_2_dot_x_versions do
|
371
|
-
expect(renderer.
|
371
|
+
expect(renderer.navbar_sub_dropdown('foo', { class: 'bar', id: 'baz' }, class: 'pelle', id: 'fant')).to have_tag(:li, with: { class: 'dropdown-submenu bar', id: 'baz' }) do
|
372
372
|
with_tag :a, with: { href: '#', class: 'pelle', id: 'fant' }, text: /foo/
|
373
373
|
end
|
374
374
|
end
|
@@ -377,46 +377,46 @@ describe BootstrapNavbar::Helpers::Bootstrap2 do
|
|
377
377
|
end
|
378
378
|
end
|
379
379
|
|
380
|
-
describe '#
|
380
|
+
describe '#navbar_dropdown_divider' do
|
381
381
|
it 'generates the correct HTML' do
|
382
382
|
with_all_2_dot_x_versions do
|
383
|
-
expect(renderer.
|
383
|
+
expect(renderer.navbar_dropdown_divider).to have_tag(:li, with: { class: 'divider' }, text: '')
|
384
384
|
end
|
385
385
|
end
|
386
386
|
end
|
387
387
|
|
388
|
-
describe '#
|
388
|
+
describe '#navbar_dropdown_header' do
|
389
389
|
it 'generates the correct HTML' do
|
390
390
|
with_all_2_dot_x_versions do
|
391
|
-
expect(renderer.
|
391
|
+
expect(renderer.navbar_dropdown_header('foo')).to have_tag(:li, with: { class: 'nav-header' }, text: /foo/)
|
392
392
|
end
|
393
393
|
end
|
394
394
|
end
|
395
395
|
|
396
|
-
describe '#
|
396
|
+
describe '#navbar_divider' do
|
397
397
|
it 'generates the correct HTML' do
|
398
398
|
with_all_2_dot_x_versions do
|
399
|
-
expect(renderer.
|
399
|
+
expect(renderer.navbar_divider).to have_tag(:li, with: { class: 'divider-vertical' }, text: '')
|
400
400
|
end
|
401
401
|
end
|
402
402
|
end
|
403
403
|
|
404
|
-
describe '#
|
404
|
+
describe '#navbar_text' do
|
405
405
|
it 'generates the correct HTML' do
|
406
406
|
with_all_2_dot_x_versions do
|
407
|
-
expect(renderer.
|
408
|
-
expect(renderer.
|
409
|
-
expect(renderer.
|
410
|
-
expect(renderer.
|
407
|
+
expect(renderer.navbar_text('foo')).to have_tag(:p, with: { class: 'navbar-text' }, text: /foo/)
|
408
|
+
expect(renderer.navbar_text { 'foo' }).to have_tag(:p, with: { class: 'navbar-text' }, text: /foo/)
|
409
|
+
expect(renderer.navbar_text('foo', 'right')).to have_tag(:p, with: { class: 'navbar-text pull-right' }, text: /foo/)
|
410
|
+
expect(renderer.navbar_text(nil, 'left') { 'foo' }).to have_tag(:p, with: { class: 'navbar-text pull-left' }, text: /foo/)
|
411
411
|
end
|
412
412
|
end
|
413
413
|
end
|
414
414
|
|
415
|
-
describe '#
|
415
|
+
describe '#navbar_brand_link' do
|
416
416
|
it 'generates the correct HTML' do
|
417
417
|
with_all_2_dot_x_versions do
|
418
|
-
expect(renderer.
|
419
|
-
expect(renderer.
|
418
|
+
expect(renderer.navbar_brand_link('foo')).to have_tag(:a, with: { class: 'brand', href: '/' }, text: /foo/)
|
419
|
+
expect(renderer.navbar_brand_link('foo', '/foo')).to have_tag(:a, with: { class: 'brand', href: '/foo' }, text: /foo/)
|
420
420
|
end
|
421
421
|
end
|
422
422
|
end
|
@@ -6,7 +6,7 @@ shared_examples 'active navbar link' do
|
|
6
6
|
paths_and_urls.each do |current_path_or_url|
|
7
7
|
paths_and_urls.each do |menu_path_or_url|
|
8
8
|
BootstrapNavbar.configuration.current_url_method = "'#{current_path_or_url}'"
|
9
|
-
expect(renderer.
|
9
|
+
expect(renderer.navbar_item('foo', menu_path_or_url)).to have_tag(:li, with: { class: 'active' }) do
|
10
10
|
with_tag :a, with: { href: menu_path_or_url }, text: /foo/
|
11
11
|
end
|
12
12
|
end
|
@@ -131,7 +131,7 @@ describe BootstrapNavbar::Helpers::Bootstrap3 do
|
|
131
131
|
end
|
132
132
|
end
|
133
133
|
|
134
|
-
describe '#
|
134
|
+
describe '#navbar_item' do
|
135
135
|
context 'with current URL or path' do
|
136
136
|
# With root URL or path
|
137
137
|
it_behaves_like 'active navbar link' do
|
@@ -182,14 +182,14 @@ describe BootstrapNavbar::Helpers::Bootstrap3 do
|
|
182
182
|
it 'generates the correct HTML' do
|
183
183
|
with_all_3_dot_x_versions do
|
184
184
|
BootstrapNavbar.configuration.current_url_method = '"/foo"'
|
185
|
-
expect(renderer.
|
185
|
+
expect(renderer.navbar_item('foo', '/')).to have_tag(:li, without: { class: 'active' }) do
|
186
186
|
with_tag :a, with: { href: '/' }, text: /foo/
|
187
187
|
end
|
188
|
-
expect(renderer.
|
188
|
+
expect(renderer.navbar_item('foo', '/bar')).to have_tag(:li, without: { class: 'active' }) do
|
189
189
|
with_tag :a, with: { href: '/bar' }, text: /foo/
|
190
190
|
end
|
191
191
|
BootstrapNavbar.configuration.current_url_method = '"/"'
|
192
|
-
expect(renderer.
|
192
|
+
expect(renderer.navbar_item('foo', '/foo')).to have_tag(:li, without: { class: 'active' }) do
|
193
193
|
with_tag :a, with: { href: '/foo' }, text: /foo/
|
194
194
|
end
|
195
195
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bootstrap-navbar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.pre3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Manuel Meurer
|
@@ -114,7 +114,6 @@ files:
|
|
114
114
|
- lib/bootstrap-navbar/version.rb
|
115
115
|
- spec/bootstrap-navbar/helpers/bootstrap2_spec.rb
|
116
116
|
- spec/bootstrap-navbar/helpers/bootstrap3_spec.rb
|
117
|
-
- spec/bootstrap-navbar/helpers_spec.rb
|
118
117
|
- spec/helpers.rb
|
119
118
|
- spec/spec_helper.rb
|
120
119
|
homepage: https://github.com/krautcomputing/bootstrap-navbar
|
@@ -144,7 +143,6 @@ summary: Helpers to generate a Twitter Bootstrap style navbar
|
|
144
143
|
test_files:
|
145
144
|
- spec/bootstrap-navbar/helpers/bootstrap2_spec.rb
|
146
145
|
- spec/bootstrap-navbar/helpers/bootstrap3_spec.rb
|
147
|
-
- spec/bootstrap-navbar/helpers_spec.rb
|
148
146
|
- spec/helpers.rb
|
149
147
|
- spec/spec_helper.rb
|
150
148
|
has_rdoc:
|
File without changes
|