upjs-rails 0.2.1 → 0.2.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.
- checksums.yaml +4 -4
- data/README.md +3 -45
- data/Rakefile +3 -0
- data/bower.json +6 -1
- data/dist/up.css +27 -4
- data/dist/up.js +197 -60
- data/dist/up.min.css +1 -1
- data/dist/up.min.js +1 -1
- data/lib/assets/javascripts/up/bus.js.coffee +16 -6
- data/lib/assets/javascripts/up/flow.js.coffee +30 -13
- data/lib/assets/javascripts/up/form.js.coffee +40 -10
- data/lib/assets/javascripts/up/history.js.coffee +8 -1
- data/lib/assets/javascripts/up/magic.js.coffee +17 -5
- data/lib/assets/javascripts/up/modal.js.coffee +16 -2
- data/lib/assets/javascripts/up/motion.js.coffee +14 -1
- data/lib/assets/javascripts/up/navigation.js.coffee +15 -6
- data/lib/assets/javascripts/up/popup.js.coffee +21 -3
- data/lib/assets/javascripts/up/tooltip.js.coffee +15 -1
- data/lib/assets/javascripts/up/util.js.coffee +24 -8
- data/lib/assets/stylesheets/up/tooltip.css.sass +30 -5
- data/lib/upjs/rails/current_location.rb +19 -0
- data/lib/upjs/rails/version.rb +1 -1
- data/lib/upjs-rails.rb +1 -4
- data/spec_app/Gemfile.lock +11 -11
- data/spec_app/app/assets/stylesheets/application.css +2 -0
- data/spec_app/app/assets/stylesheets/jasmine_specs.css +5 -0
- data/spec_app/app/views/pages/home.html.haml +8 -1
- data/spec_app/spec/javascripts/support/jasmine.yml +1 -0
- data/spec_app/spec/javascripts/up/bus_spec.js.coffee +12 -0
- data/spec_app/spec/javascripts/up/flow_spec.js.coffee +92 -68
- data/spec_app/spec/javascripts/up/form_spec.js.coffee +100 -0
- data/spec_app/spec/javascripts/up/history_spec.js.coffee +12 -0
- data/spec_app/spec/javascripts/up/link_spec.js.coffee +47 -0
- data/spec_app/spec/javascripts/up/magic_spec.js.coffee +49 -0
- data/spec_app/spec/javascripts/up/marker_spec.js.coffee +14 -12
- data/spec_app/spec/javascripts/up/modal_spec.js.coffee +30 -0
- data/spec_app/spec/javascripts/up/motion_spec.js.coffee +25 -0
- data/spec_app/spec/javascripts/up/navigation_spec.js.coffee +60 -24
- data/spec_app/spec/javascripts/up/popup_spec.js.coffee +30 -0
- data/spec_app/spec/javascripts/up/tooltip_spec.js.coffee +46 -0
- data/spec_app/spec/javascripts/up/util_spec.js.coffee +27 -25
- metadata +13 -3
- data/lib/upjs/rails/redirection.rb +0 -26
@@ -1,27 +1,63 @@
|
|
1
1
|
describe 'up.navigation', ->
|
2
|
+
|
3
|
+
describe 'unobtrusive behavior', ->
|
2
4
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
it 'marks a link as .up-current iff it links to the current URL', ->
|
6
|
+
spyOn(up.browser, 'url').and.returnValue('/foo')
|
7
|
+
$currentLink = up.ready(affix('a[href="/foo"]'))
|
8
|
+
$otherLink = up.ready(affix('a[href="/bar"]'))
|
9
|
+
expect($currentLink).toHaveClass('up-current')
|
10
|
+
expect($otherLink).not.toHaveClass('up-current')
|
11
|
+
|
12
|
+
it 'marks a link as .up-current if it links to the current URL, but is missing a trailing slash', ->
|
13
|
+
$link = affix('a[href="/foo"][up-target=".main"]')
|
14
|
+
affix('.main')
|
15
|
+
jasmine.Ajax.install()
|
16
|
+
$link.click()
|
17
|
+
jasmine.Ajax.requests.mostRecent().respondWith
|
18
|
+
status: 200
|
19
|
+
contentType: 'text/html'
|
20
|
+
responseHeaders: { 'X-Up-Current-Location': '/foo/' }
|
21
|
+
responseText: '<div class="main">new-text</div>'
|
22
|
+
expect($link).toHaveClass('up-current')
|
9
23
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
24
|
+
it 'marks a link as .up-current if it links to the current URL, but has an extra trailing slash', ->
|
25
|
+
$link = affix('a[href="/foo/"][up-target=".main"]')
|
26
|
+
affix('.main')
|
27
|
+
jasmine.Ajax.install()
|
28
|
+
$link.click()
|
29
|
+
jasmine.Ajax.requests.mostRecent().respondWith
|
30
|
+
status: 200
|
31
|
+
contentType: 'text/html'
|
32
|
+
responseHeaders: { 'X-Up-Current-Location': '/foo' }
|
33
|
+
responseText: '<div class="main">new-text</div>'
|
34
|
+
expect($link).toHaveClass('up-current')
|
35
|
+
|
36
|
+
it 'changes .up-current marks as the URL changes'
|
37
|
+
|
38
|
+
it 'marks clicked linked as .up-active until the request finishes', ->
|
39
|
+
$link = affix('a[href="/foo"][up-target=".main"]')
|
40
|
+
affix('.main')
|
41
|
+
jasmine.Ajax.install()
|
42
|
+
$link.click()
|
43
|
+
expect($link).toHaveClass('up-active')
|
44
|
+
jasmine.Ajax.requests.mostRecent().respondWith
|
45
|
+
status: 200
|
46
|
+
contentType: 'text/html'
|
47
|
+
responseText: '<div class="main">new-text</div>'
|
48
|
+
expect($link).not.toHaveClass('up-active')
|
49
|
+
expect($link).toHaveClass('up-current')
|
50
|
+
|
51
|
+
it 'prefers to mark an enclosing [up-follow] click area', ->
|
52
|
+
$area = affix('div[up-follow] a[href="/foo"][up-target=".main"]')
|
53
|
+
$link = $area.find('a')
|
54
|
+
affix('.main')
|
55
|
+
jasmine.Ajax.install()
|
56
|
+
$link.click()
|
57
|
+
expect($area).toHaveClass('up-active')
|
58
|
+
jasmine.Ajax.requests.mostRecent().respondWith
|
59
|
+
status: 200
|
60
|
+
contentType: 'text/html'
|
61
|
+
responseText: '<div class="main">new-text</div>'
|
62
|
+
expect($area).toHaveClass('up-current')
|
63
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
describe 'up.popup', ->
|
2
|
+
|
3
|
+
describe 'Javascript functions', ->
|
4
|
+
|
5
|
+
describe 'up.popup.defaults', ->
|
6
|
+
|
7
|
+
it 'should have tests'
|
8
|
+
|
9
|
+
describe 'up.popup.open', ->
|
10
|
+
|
11
|
+
it 'should have tests'
|
12
|
+
|
13
|
+
describe 'up.popup.close', ->
|
14
|
+
|
15
|
+
it 'should have tests'
|
16
|
+
|
17
|
+
describe 'up.popup.source', ->
|
18
|
+
|
19
|
+
it 'should have tests'
|
20
|
+
|
21
|
+
describe 'unobtrusive behavior', ->
|
22
|
+
|
23
|
+
describe 'a[up-popup]', ->
|
24
|
+
|
25
|
+
it 'should have tests'
|
26
|
+
|
27
|
+
describe '[up-close]', ->
|
28
|
+
|
29
|
+
it 'should have tests'
|
30
|
+
|
@@ -0,0 +1,46 @@
|
|
1
|
+
describe 'up.tooltip', ->
|
2
|
+
|
3
|
+
describe 'Javascript functions', ->
|
4
|
+
|
5
|
+
describe 'up.tooltip.open', ->
|
6
|
+
|
7
|
+
it 'opens a tooltop above the center of the given element', ->
|
8
|
+
$link = affix('span').text('button label')
|
9
|
+
$link.css(
|
10
|
+
position: 'absolute'
|
11
|
+
left: '200px'
|
12
|
+
top: '200px'
|
13
|
+
width: '50px'
|
14
|
+
height: '50px'
|
15
|
+
)
|
16
|
+
up.tooltip.open($link, html: 'tooltip text')
|
17
|
+
$tooltip = $('.up-tooltip')
|
18
|
+
expect($tooltip).toBeInDOM()
|
19
|
+
expect($tooltip).toHaveText('tooltip text')
|
20
|
+
tooltipBox = up.util.measure($tooltip, relative: true)
|
21
|
+
linkBox = up.util.measure($link, relative: true)
|
22
|
+
expect(tooltipBox.top).toBeCloseTo(linkBox.top - tooltipBox.height, 15)
|
23
|
+
expect(tooltipBox.left).toBeCloseTo(linkBox.left + 0.5 * (linkBox.width - tooltipBox.width), 15)
|
24
|
+
|
25
|
+
it 'allows HTML for the tooltip text'
|
26
|
+
|
27
|
+
it 'closes an existing tooltip'
|
28
|
+
|
29
|
+
describe 'with origin option', ->
|
30
|
+
|
31
|
+
it 'anchors the tooltip at a different edge of the element'
|
32
|
+
|
33
|
+
describe 'up.tooltip.close', ->
|
34
|
+
|
35
|
+
it 'should have tests'
|
36
|
+
|
37
|
+
describe 'unobtrusive behavior', ->
|
38
|
+
|
39
|
+
describe '[up-tooltip]', ->
|
40
|
+
|
41
|
+
it 'should have tests'
|
42
|
+
|
43
|
+
describe 'body', ->
|
44
|
+
|
45
|
+
it 'closes a tooltip when clicked'
|
46
|
+
|
@@ -1,27 +1,29 @@
|
|
1
1
|
describe 'up.util', ->
|
2
|
+
|
3
|
+
describe 'Javascript functions', ->
|
2
4
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
5
|
+
describe '.isBlank', ->
|
6
|
+
|
7
|
+
it 'returns false for false', ->
|
8
|
+
expect(up.util.isBlank(false)).toBe(false)
|
9
|
+
|
10
|
+
it 'returns false for true', ->
|
11
|
+
expect(up.util.isBlank(true)).toBe(false)
|
12
|
+
|
13
|
+
it 'returns true for null', ->
|
14
|
+
expect(up.util.isBlank(null)).toBe(true)
|
15
|
+
|
16
|
+
it 'returns true for undefined', ->
|
17
|
+
expect(up.util.isBlank(undefined)).toBe(true)
|
18
|
+
|
19
|
+
it 'returns true for an empty String', ->
|
20
|
+
expect(up.util.isBlank('')).toBe(true)
|
21
|
+
|
22
|
+
it 'returns false for a String with at least one character', ->
|
23
|
+
expect(up.util.isBlank('string')).toBe(false)
|
24
|
+
|
25
|
+
it 'returns true for an empty array', ->
|
26
|
+
expect(up.util.isBlank([])).toBe(true)
|
27
|
+
|
28
|
+
it 'returns false for an array with at least one element', ->
|
29
|
+
expect(up.util.isBlank(['element'])).toBe(false)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: upjs-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henning Koch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -140,8 +140,8 @@ files:
|
|
140
140
|
- lib/assets/stylesheets/up/popup.css.sass
|
141
141
|
- lib/assets/stylesheets/up/tooltip.css.sass
|
142
142
|
- lib/upjs-rails.rb
|
143
|
+
- lib/upjs/rails/current_location.rb
|
143
144
|
- lib/upjs/rails/engine.rb
|
144
|
-
- lib/upjs/rails/redirection.rb
|
145
145
|
- lib/upjs/rails/request.rb
|
146
146
|
- lib/upjs/rails/version.rb
|
147
147
|
- spec_app/.firefox-version
|
@@ -158,6 +158,7 @@ files:
|
|
158
158
|
- spec_app/app/assets/stylesheets/blocks/controls.css.sass
|
159
159
|
- spec_app/app/assets/stylesheets/blocks/menu.css.sass
|
160
160
|
- spec_app/app/assets/stylesheets/blocks/panel.css.sass
|
161
|
+
- spec_app/app/assets/stylesheets/jasmine_specs.css
|
161
162
|
- spec_app/app/controllers/application_controller.rb
|
162
163
|
- spec_app/app/controllers/cards_controller.rb
|
163
164
|
- spec_app/app/controllers/concerns/.keep
|
@@ -224,9 +225,18 @@ files:
|
|
224
225
|
- spec_app/spec/javascripts/helpers/reset_path.js.coffee
|
225
226
|
- spec_app/spec/javascripts/helpers/reset_up.js.coffee
|
226
227
|
- spec_app/spec/javascripts/support/jasmine.yml
|
228
|
+
- spec_app/spec/javascripts/up/bus_spec.js.coffee
|
227
229
|
- spec_app/spec/javascripts/up/flow_spec.js.coffee
|
230
|
+
- spec_app/spec/javascripts/up/form_spec.js.coffee
|
231
|
+
- spec_app/spec/javascripts/up/history_spec.js.coffee
|
232
|
+
- spec_app/spec/javascripts/up/link_spec.js.coffee
|
233
|
+
- spec_app/spec/javascripts/up/magic_spec.js.coffee
|
228
234
|
- spec_app/spec/javascripts/up/marker_spec.js.coffee
|
235
|
+
- spec_app/spec/javascripts/up/modal_spec.js.coffee
|
236
|
+
- spec_app/spec/javascripts/up/motion_spec.js.coffee
|
229
237
|
- spec_app/spec/javascripts/up/navigation_spec.js.coffee
|
238
|
+
- spec_app/spec/javascripts/up/popup_spec.js.coffee
|
239
|
+
- spec_app/spec/javascripts/up/tooltip_spec.js.coffee
|
230
240
|
- spec_app/spec/javascripts/up/util_spec.js.coffee
|
231
241
|
- spec_app/test/controllers/.keep
|
232
242
|
- spec_app/test/fixtures/.keep
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module Upjs
|
2
|
-
module Rails
|
3
|
-
module Redirection
|
4
|
-
|
5
|
-
def redirect_to(*args)
|
6
|
-
super
|
7
|
-
flash[:redirected_to] = self.location if request.up?
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.included(base)
|
11
|
-
base.before_filter :extract_redirect_location
|
12
|
-
end
|
13
|
-
|
14
|
-
private
|
15
|
-
|
16
|
-
def extract_redirect_location
|
17
|
-
if location = flash[:redirected_to]
|
18
|
-
headers['X-Up-Previous-Redirect-Location'] = location
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
ActionController::Base.include(self)
|
23
|
-
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|