ajaxify_rails 0.5.3 → 0.5.5

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 CHANGED
@@ -77,7 +77,18 @@ You probably like to have a loader image to be displayed to the user while conte
77
77
  This is simple. Ajaxify automatically inserts a loader div with the class `ajaxify_loader` into
78
78
  the content wrapper before starting an Ajax request. So just supply styles for `.ajaxify_loader` in your css, with an
79
79
  animated gif as a background.
80
-
80
+
81
+ ### Scrolling
82
+
83
+ By default, ajaxify scrolls to the top of the screen when you click on a link or submit a form.
84
+ You can change this default behavior by setting 'scroll_to_top' to false on init.
85
+
86
+ Ajaxify.init
87
+ scroll_to_top: false
88
+
89
+ You can also change the setting for individual links by adding classes:
90
+ = link_to "Scroll to top", scroll_to_top_path, class: 'scroll_to_top'
91
+ = link_to "Don't scroll", no_scroll_path, class: 'no_scroll_to_top'
81
92
 
82
93
  ### Page Title
83
94
 
@@ -1,3 +1,3 @@
1
1
  module AjaxifyRails
2
- VERSION = "0.5.3"
2
+ VERSION = "0.5.5"
3
3
  end
@@ -9,6 +9,8 @@ push_state_enabled = true
9
9
  ignore_hash_change = null
10
10
  load_page_from_hash = null
11
11
 
12
+ scroll_to_top = true
13
+
12
14
  initial_history_state =
13
15
  url: window.location.href
14
16
  data:
@@ -30,7 +32,6 @@ get_content_container = ->
30
32
  set_content_container = (new_content_container) ->
31
33
  content_container = new_content_container
32
34
 
33
-
34
35
  init = (options = {}) ->
35
36
  base_paths = options.base_paths if 'base_paths' of options
36
37
  flash_types = options.flash_types if 'flash_types' of options
@@ -38,6 +39,7 @@ init = (options = {}) ->
38
39
  active = options.active if 'active' of options
39
40
  content_container = options.content_container if 'content_container' of options
40
41
  correct_url() unless $('meta[name="ajaxify:dont_correct_url"]').length > 0
42
+ scroll_to_top = options.scroll_to_top if 'scroll_to_top' of options
41
43
 
42
44
 
43
45
  ajaxify = ->
@@ -50,12 +52,13 @@ ajaxify = ->
50
52
  protocol_and_hostname = "#{window.location.protocol}//#{window.location.hostname}"
51
53
 
52
54
  $('body').on 'click', "a[href^='/']:not(.no_ajaxify), a[href^='#{protocol_and_hostname}']:not(.no_ajaxify)", ->
53
-
54
55
  $this = $(this)
56
+
55
57
  load
56
58
  url: $this.attr('href')
57
59
  type: $this.data('method')
58
60
  confirm: $this.data('confirm')
61
+ scroll_to_top: set_scroll_to_top($this)
59
62
 
60
63
  false
61
64
 
@@ -65,6 +68,7 @@ ajaxify = ->
65
68
  form[action='']#{exclude_selector}", ->
66
69
 
67
70
  $this = $(this)
71
+
68
72
  form_params = $(this).serialize()
69
73
  form_params += '&ajaxified=true'
70
74
 
@@ -75,6 +79,7 @@ ajaxify = ->
75
79
  data: form_params
76
80
  type: $this.attr('method')
77
81
  confirm: $this.data('confirm')
82
+ scroll_to_top: set_scroll_to_top($this)
78
83
 
79
84
  false
80
85
 
@@ -121,9 +126,8 @@ load = (options, pop_state = false) ->
121
126
  cache: true
122
127
  beforeSend: (xhr) ->
123
128
  $("##{content_container}").html( "<div class='ajaxify_loader'></div>" )
124
- $('html, body').animate
125
- scrollTop:0
126
- , 500
129
+ options.scroll_to_top = scroll_to_top unless 'scroll_to_top' of options
130
+ scroll_page_to_top() if options.scroll_to_top
127
131
 
128
132
  success: (data, status, jqXHR) ->
129
133
  on_ajaxify_success data, status, jqXHR, pop_state, options
@@ -281,6 +285,17 @@ push_state = ->
281
285
  push_state_enabled and window.history.pushState
282
286
 
283
287
 
288
+ set_scroll_to_top = ($link_or_form) ->
289
+ scroll = $link_or_form.hasClass('scroll_to_top')
290
+ no_scroll = $link_or_form.hasClass('no_scroll_to_top')
291
+ if scroll or no_scroll then return (scroll and !no_scroll) else return scroll_to_top
292
+
293
+
294
+ scroll_page_to_top = ->
295
+ $('html, body').animate
296
+ scrollTop:0
297
+ , 500
298
+
284
299
  # --------------------------------------------------------------------------------------------------------------------
285
300
  # public interface
286
301
  # --------------------------------------------------------------------------------------------------------------------
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ajaxify_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.5.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-27 00:00:00.000000000 Z
12
+ date: 2013-03-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -260,7 +260,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
260
260
  version: '0'
261
261
  segments:
262
262
  - 0
263
- hash: 2630119006197469094
263
+ hash: -1886047311222868249
264
264
  required_rubygems_version: !ruby/object:Gem::Requirement
265
265
  none: false
266
266
  requirements:
@@ -269,7 +269,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
269
269
  version: '0'
270
270
  segments:
271
271
  - 0
272
- hash: 2630119006197469094
272
+ hash: -1886047311222868249
273
273
  requirements: []
274
274
  rubyforge_project:
275
275
  rubygems_version: 1.8.25