slim_breadcrumb 0.0.1 → 0.0.2
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.
- data/README.md +5 -1
- data/Rakefile +8 -2
- data/lib/assets/javascripts/slim_breadcrumb.js.coffee +27 -2
- data/lib/slim_breadcrumb/version.rb +1 -1
- data/spec/integration/slim_breadcrumb_spec.rb +22 -4
- data/test_app/Gemfile +3 -1
- data/test_app/README.md +5 -1
- data/test_app/app/assets/images/screenshot.png +0 -0
- data/test_app/app/views/root/index.html.erb +2 -0
- metadata +40 -104
data/README.md
CHANGED
@@ -1,7 +1,11 @@
|
|
1
|
-
# SlimBreadcrumb
|
1
|
+
# SlimBreadcrumb [](http://travis-ci.org/fiedl/slim_breadcrumb)
|
2
|
+
|
3
|
+
<img src="https://github.com/fiedl/slim_breadcrumb/raw/master/test_app/app/assets/images/screenshot.png" height="250" align="right" vspace="20" hspace="20" />
|
2
4
|
|
3
5
|
This is a **ruby on rails gem** to **slim out** certain elements of a **breadcrumb navigation** and show these elements only if the user's mouse dwells on the breadcrumb separator.
|
4
6
|
|
7
|
+
Clicking on a separator also shows the hidden elements near the mouse. Doubleclick anywhere in the breadcrumb area will show all hidden breadcrumb elements.
|
8
|
+
|
5
9
|
## Demo
|
6
10
|
|
7
11
|
You might want to have a look at [this demo app at heroku](http://slim-breadcrumb-test-app.herokuapp.com/).
|
data/Rakefile
CHANGED
@@ -13,6 +13,9 @@ jQuery ->
|
|
13
13
|
breadcrumb_slim_in_timer = 0
|
14
14
|
breadcrumb_slim_out_timer = 0
|
15
15
|
|
16
|
+
# status variable that knows whether an animation is currently running.
|
17
|
+
animating = false
|
18
|
+
|
16
19
|
# Time required to dwell.
|
17
20
|
time_to_dwell = 1000 # milliseconds
|
18
21
|
|
@@ -26,6 +29,22 @@ jQuery ->
|
|
26
29
|
clearTimeout( breadcrumb_slim_in_timer )
|
27
30
|
)
|
28
31
|
|
32
|
+
# Show the slim element on click as well.
|
33
|
+
$( "li.crumb.sep" ).click( ->
|
34
|
+
if not animating
|
35
|
+
show_slim_breadcrumbs( $( this ) )
|
36
|
+
)
|
37
|
+
|
38
|
+
# Show all elements on dblclick.
|
39
|
+
$( "#breadcrumb" ).dblclick( ->
|
40
|
+
delay_time = 0
|
41
|
+
delay_time = 600 if animating # because then, a click event is performing an animation
|
42
|
+
animating = true
|
43
|
+
$( "li.slim.crumb:not(:visible)" ).delay( delay_time ).show( "drop", ->
|
44
|
+
animating = false
|
45
|
+
)
|
46
|
+
)
|
47
|
+
|
29
48
|
# If the mouse leaves the breadcrumb, hide the slim elements.
|
30
49
|
$( "#breadcrumb" ).mouseout( ->
|
31
50
|
breadcrumb_slim_out_timer = setTimeout( ->
|
@@ -41,13 +60,19 @@ jQuery ->
|
|
41
60
|
elements_to_show = close_slim_elements( next_to_element )
|
42
61
|
for elem in elements_to_show
|
43
62
|
unless $( elem ).is( ":visible" )
|
44
|
-
|
63
|
+
animating = true
|
64
|
+
$( elem ).show( breadcrumb_slim_effect, ->
|
65
|
+
animating = false
|
66
|
+
)
|
45
67
|
|
46
68
|
# hide animation:
|
47
69
|
hide_slim_breadcrumbs = () ->
|
48
70
|
if $( "li.slim.crumb:visible" ).html()
|
71
|
+
animating = true
|
49
72
|
$( "li.crumb" ).hide( "fade", "fast", ->
|
50
|
-
$( "li.crumb:not(.slim)" ).show( "fade"
|
73
|
+
$( "li.crumb:not(.slim)" ).show( "fade", ->
|
74
|
+
animating = false
|
75
|
+
)
|
51
76
|
)
|
52
77
|
|
53
78
|
# helper function to find nearby slim elements
|
@@ -20,16 +20,34 @@ describe "slim_breadcrumb behaviour", js: true do
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
it "should *not* appear after hovering the separator #3" do
|
24
|
-
find( "#crumb_sep3" ).trigger( :mouseover )
|
23
|
+
# it "should *not* appear after hovering the separator #3" do
|
24
|
+
# find( "#crumb_sep3" ).trigger( :mouseover )
|
25
|
+
# sleep 1.2
|
26
|
+
# page.should_not have_selector( "#crumb1", visible: true )
|
27
|
+
# end
|
28
|
+
|
29
|
+
it "should disappear after moving out the mouse" do
|
30
|
+
find( "#crumb_sep1" ).trigger( :mouseover )
|
25
31
|
sleep 1.2
|
32
|
+
find( "#breadcrumb" ).trigger( :mouseout )
|
26
33
|
page.should_not have_selector( "#crumb1", visible: true )
|
27
34
|
end
|
28
35
|
|
29
|
-
it "should
|
30
|
-
find( "#crumb_sep1" ).trigger( :
|
36
|
+
it "should appear after clicking on the separator #1 and disappear after mouseout" do
|
37
|
+
find( "#crumb_sep1" ).trigger( :click )
|
31
38
|
sleep 1.2
|
39
|
+
page.should have_selector( "#crumb1", visible: true )
|
40
|
+
find( "#breadcrumb" ).trigger( :mouseout )
|
41
|
+
sleep 1.2
|
42
|
+
page.should_not have_selector( "#crumb1", visible: true )
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should appear after dblclick on separator #4, since all elements are shown after dblclick" do
|
46
|
+
find( "#crumb_sep4" ).trigger( :dblclick )
|
47
|
+
sleep 2.0
|
48
|
+
page.should have_selector( "#crumb1", visible: true )
|
32
49
|
find( "#breadcrumb" ).trigger( :mouseout )
|
50
|
+
sleep 2.0
|
33
51
|
page.should_not have_selector( "#crumb1", visible: true )
|
34
52
|
end
|
35
53
|
|
data/test_app/Gemfile
CHANGED
data/test_app/README.md
CHANGED
@@ -1,7 +1,11 @@
|
|
1
|
-
# SlimBreadcrumb
|
1
|
+
# SlimBreadcrumb [](http://travis-ci.org/fiedl/slim_breadcrumb)
|
2
|
+
|
3
|
+
<img src="https://github.com/fiedl/slim_breadcrumb/raw/master/test_app/app/assets/images/screenshot.png" height="250" align="right" vspace="20" hspace="20" />
|
2
4
|
|
3
5
|
This is a **ruby on rails gem** to **slim out** certain elements of a **breadcrumb navigation** and show these elements only if the user's mouse dwells on the breadcrumb separator.
|
4
6
|
|
7
|
+
Clicking on a separator also shows the hidden elements near the mouse. Doubleclick anywhere in the breadcrumb area will show all hidden breadcrumb elements.
|
8
|
+
|
5
9
|
## Demo
|
6
10
|
|
7
11
|
You might want to have a look at [this demo app at heroku](http://slim-breadcrumb-test-app.herokuapp.com/).
|
Binary file
|
@@ -27,6 +27,8 @@
|
|
27
27
|
|
28
28
|
<p>This <strong>demo app</strong> show how the ruby gem <a href="https://github.com/fiedl/slim_breadcrumb/">slim_breadcrumb</a> looks like in action.</p>
|
29
29
|
|
30
|
+
<p>Hover, click or doubleclick on the breadcrumb separators to show hidden breadcrumb elements. <strong>Hovering</strong> and <strong>clicking</strong> shows hidden elements nearby the mouse cursor, <strong>doubleclicking</strong> shows all hidden breadcrumb elements.</p>
|
31
|
+
|
30
32
|
<p>
|
31
33
|
The above breadcrumb bar has got just the following HTML code and a usual breadcrumb css file. The rest is done automatically via JavaScript.
|
32
34
|
</p>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slim_breadcrumb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-10-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirement: &74417110 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,15 +21,10 @@ dependencies:
|
|
21
21
|
version: '3.2'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ! '>='
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '3.2'
|
24
|
+
version_requirements: *74417110
|
30
25
|
- !ruby/object:Gem::Dependency
|
31
26
|
name: jquery-rails
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
27
|
+
requirement: &74416720 !ruby/object:Gem::Requirement
|
33
28
|
none: false
|
34
29
|
requirements:
|
35
30
|
- - ! '>='
|
@@ -37,15 +32,10 @@ dependencies:
|
|
37
32
|
version: '0'
|
38
33
|
type: :runtime
|
39
34
|
prerelease: false
|
40
|
-
version_requirements:
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ! '>='
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
35
|
+
version_requirements: *74416720
|
46
36
|
- !ruby/object:Gem::Dependency
|
47
37
|
name: sass-rails
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirement: &74319670 !ruby/object:Gem::Requirement
|
49
39
|
none: false
|
50
40
|
requirements:
|
51
41
|
- - ! '>='
|
@@ -53,15 +43,10 @@ dependencies:
|
|
53
43
|
version: '0'
|
54
44
|
type: :runtime
|
55
45
|
prerelease: false
|
56
|
-
version_requirements:
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
46
|
+
version_requirements: *74319670
|
62
47
|
- !ruby/object:Gem::Dependency
|
63
48
|
name: coffee-rails
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
+
requirement: &74318370 !ruby/object:Gem::Requirement
|
65
50
|
none: false
|
66
51
|
requirements:
|
67
52
|
- - ! '>='
|
@@ -69,15 +54,10 @@ dependencies:
|
|
69
54
|
version: '0'
|
70
55
|
type: :runtime
|
71
56
|
prerelease: false
|
72
|
-
version_requirements:
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ! '>='
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
57
|
+
version_requirements: *74318370
|
78
58
|
- !ruby/object:Gem::Dependency
|
79
59
|
name: rake
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirement: &74317550 !ruby/object:Gem::Requirement
|
81
61
|
none: false
|
82
62
|
requirements:
|
83
63
|
- - ! '>='
|
@@ -85,15 +65,10 @@ dependencies:
|
|
85
65
|
version: '0'
|
86
66
|
type: :development
|
87
67
|
prerelease: false
|
88
|
-
version_requirements:
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ! '>='
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '0'
|
68
|
+
version_requirements: *74317550
|
94
69
|
- !ruby/object:Gem::Dependency
|
95
70
|
name: bundler
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirement: &74316320 !ruby/object:Gem::Requirement
|
97
72
|
none: false
|
98
73
|
requirements:
|
99
74
|
- - ! '>='
|
@@ -101,15 +76,10 @@ dependencies:
|
|
101
76
|
version: '0'
|
102
77
|
type: :development
|
103
78
|
prerelease: false
|
104
|
-
version_requirements:
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
79
|
+
version_requirements: *74316320
|
110
80
|
- !ruby/object:Gem::Dependency
|
111
81
|
name: rspec-rails
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
82
|
+
requirement: &74314560 !ruby/object:Gem::Requirement
|
113
83
|
none: false
|
114
84
|
requirements:
|
115
85
|
- - ! '>='
|
@@ -117,31 +87,21 @@ dependencies:
|
|
117
87
|
version: 2.8.0
|
118
88
|
type: :development
|
119
89
|
prerelease: false
|
120
|
-
version_requirements:
|
121
|
-
none: false
|
122
|
-
requirements:
|
123
|
-
- - ! '>='
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: 2.8.0
|
90
|
+
version_requirements: *74314560
|
126
91
|
- !ruby/object:Gem::Dependency
|
127
92
|
name: guard
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
93
|
+
requirement: &74313330 !ruby/object:Gem::Requirement
|
129
94
|
none: false
|
130
95
|
requirements:
|
131
|
-
- -
|
96
|
+
- - =
|
132
97
|
- !ruby/object:Gem::Version
|
133
98
|
version: 1.0.1
|
134
99
|
type: :development
|
135
100
|
prerelease: false
|
136
|
-
version_requirements:
|
137
|
-
none: false
|
138
|
-
requirements:
|
139
|
-
- - '='
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: 1.0.1
|
101
|
+
version_requirements: *74313330
|
142
102
|
- !ruby/object:Gem::Dependency
|
143
103
|
name: nokogiri
|
144
|
-
requirement: !ruby/object:Gem::Requirement
|
104
|
+
requirement: &74312590 !ruby/object:Gem::Requirement
|
145
105
|
none: false
|
146
106
|
requirements:
|
147
107
|
- - ! '>='
|
@@ -149,15 +109,10 @@ dependencies:
|
|
149
109
|
version: 1.5.0
|
150
110
|
type: :development
|
151
111
|
prerelease: false
|
152
|
-
version_requirements:
|
153
|
-
none: false
|
154
|
-
requirements:
|
155
|
-
- - ! '>='
|
156
|
-
- !ruby/object:Gem::Version
|
157
|
-
version: 1.5.0
|
112
|
+
version_requirements: *74312590
|
158
113
|
- !ruby/object:Gem::Dependency
|
159
114
|
name: capybara
|
160
|
-
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirement: &74656170 !ruby/object:Gem::Requirement
|
161
116
|
none: false
|
162
117
|
requirements:
|
163
118
|
- - ! '>='
|
@@ -165,47 +120,32 @@ dependencies:
|
|
165
120
|
version: '0'
|
166
121
|
type: :development
|
167
122
|
prerelease: false
|
168
|
-
version_requirements:
|
169
|
-
none: false
|
170
|
-
requirements:
|
171
|
-
- - ! '>='
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '0'
|
123
|
+
version_requirements: *74656170
|
174
124
|
- !ruby/object:Gem::Dependency
|
175
125
|
name: rspec-rails
|
176
|
-
requirement: !ruby/object:Gem::Requirement
|
126
|
+
requirement: &74655220 !ruby/object:Gem::Requirement
|
177
127
|
none: false
|
178
128
|
requirements:
|
179
|
-
- -
|
129
|
+
- - =
|
180
130
|
- !ruby/object:Gem::Version
|
181
131
|
version: 2.10.0
|
182
132
|
type: :development
|
183
133
|
prerelease: false
|
184
|
-
version_requirements:
|
185
|
-
none: false
|
186
|
-
requirements:
|
187
|
-
- - '='
|
188
|
-
- !ruby/object:Gem::Version
|
189
|
-
version: 2.10.0
|
134
|
+
version_requirements: *74655220
|
190
135
|
- !ruby/object:Gem::Dependency
|
191
136
|
name: guard-rspec
|
192
|
-
requirement: !ruby/object:Gem::Requirement
|
137
|
+
requirement: &74650670 !ruby/object:Gem::Requirement
|
193
138
|
none: false
|
194
139
|
requirements:
|
195
|
-
- -
|
140
|
+
- - =
|
196
141
|
- !ruby/object:Gem::Version
|
197
142
|
version: 0.5.5
|
198
143
|
type: :development
|
199
144
|
prerelease: false
|
200
|
-
version_requirements:
|
201
|
-
none: false
|
202
|
-
requirements:
|
203
|
-
- - '='
|
204
|
-
- !ruby/object:Gem::Version
|
205
|
-
version: 0.5.5
|
145
|
+
version_requirements: *74650670
|
206
146
|
- !ruby/object:Gem::Dependency
|
207
147
|
name: execjs
|
208
|
-
requirement: !ruby/object:Gem::Requirement
|
148
|
+
requirement: &74649760 !ruby/object:Gem::Requirement
|
209
149
|
none: false
|
210
150
|
requirements:
|
211
151
|
- - ! '>='
|
@@ -213,15 +153,10 @@ dependencies:
|
|
213
153
|
version: '0'
|
214
154
|
type: :development
|
215
155
|
prerelease: false
|
216
|
-
version_requirements:
|
217
|
-
none: false
|
218
|
-
requirements:
|
219
|
-
- - ! '>='
|
220
|
-
- !ruby/object:Gem::Version
|
221
|
-
version: '0'
|
156
|
+
version_requirements: *74649760
|
222
157
|
- !ruby/object:Gem::Dependency
|
223
158
|
name: therubyracer
|
224
|
-
requirement: !ruby/object:Gem::Requirement
|
159
|
+
requirement: &74878300 !ruby/object:Gem::Requirement
|
225
160
|
none: false
|
226
161
|
requirements:
|
227
162
|
- - ! '>='
|
@@ -229,12 +164,7 @@ dependencies:
|
|
229
164
|
version: '0'
|
230
165
|
type: :development
|
231
166
|
prerelease: false
|
232
|
-
version_requirements:
|
233
|
-
none: false
|
234
|
-
requirements:
|
235
|
-
- - ! '>='
|
236
|
-
- !ruby/object:Gem::Version
|
237
|
-
version: '0'
|
167
|
+
version_requirements: *74878300
|
238
168
|
description: Slim out certain elements of a breadcrumb navigation and show these elements
|
239
169
|
only if the user\'s mouse dwellls on the breadcrumb separator.
|
240
170
|
email:
|
@@ -329,15 +259,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
329
259
|
- - ! '>='
|
330
260
|
- !ruby/object:Gem::Version
|
331
261
|
version: '0'
|
262
|
+
segments:
|
263
|
+
- 0
|
264
|
+
hash: -279479309
|
332
265
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
333
266
|
none: false
|
334
267
|
requirements:
|
335
268
|
- - ! '>='
|
336
269
|
- !ruby/object:Gem::Version
|
337
270
|
version: '0'
|
271
|
+
segments:
|
272
|
+
- 0
|
273
|
+
hash: -279479309
|
338
274
|
requirements: []
|
339
275
|
rubyforge_project:
|
340
|
-
rubygems_version: 1.8.
|
276
|
+
rubygems_version: 1.8.11
|
341
277
|
signing_key:
|
342
278
|
specification_version: 3
|
343
279
|
summary: Slim out certain elements of a breadcrumb navigation and show these elements
|