autonumeric-rails 1.9.21 → 1.9.22

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,9 @@
1
+ # 1.9.22
2
+
3
+ - Update autoNumeric v 1.9.22
4
+ - autoNumeric fields now automatically initialize after AJAX requests.
5
+ Manual DOM modification (through JavaScript) must still trigger `refresh_autonumeric` event manually
6
+
1
7
  # 1.9.21
2
8
 
3
9
  - Update autoNumeric v 1.9.21
data/README.md CHANGED
@@ -44,10 +44,15 @@ You can also pass autoNumeric configuration parameters directly with a Hash in y
44
44
 
45
45
  See autoNumeric pages (links above) for all details on configuration and options
46
46
 
47
- ## Dynamic fields (AJAX and friends)
47
+ ## AJAX
48
48
 
49
- When a new fields with autonumeric attributes are generated after the DOM is loaded, either created by JavaScript
50
- function or resulting of an AJAX call, you must manually refresh in order to initialize those new fields.
49
+ autonumeric-rails looks for `ajaxComplete` events which are trigger by jQuery every time an Ajax request finishes.
50
+ As a result, rails-ujs elements (i.e. `data-remote` elements) now automatically initialize autonumeric fields after the AJAX request is complete.
51
+
52
+ ## Javascript DOM manipulation
53
+
54
+ When a Javascript function generate and add to the DOM new fields with autonumeric attributes,
55
+ you must manually refresh in order to initialize those new fields.
51
56
 
52
57
  To do so you must trigger the `refresh_autonumeric` event on `document` after you modified the DOM:
53
58
 
@@ -56,8 +61,8 @@ To do so you must trigger the `refresh_autonumeric` event on `document` after yo
56
61
  ## Internal
57
62
 
58
63
  Autonumeric-rails creates in the DOM an hidden input with the same name as the text field.
59
- On each modification of the test field value, the hidden input is updated with the sanitized value.
60
- When validating the form the hidden form value is naturally sent to the server as it is located after the text field.
64
+ On each modification of the text field value (through the `keyup` event), the hidden input is updated with the sanitized value.
65
+ When validating the form, the hidden field value is sent to the server as it is located after the text field in the DOM.
61
66
 
62
67
  ## Contributing
63
68
 
@@ -1,5 +1,5 @@
1
1
  module Autonumeric
2
2
  module Rails
3
- VERSION = '1.9.21'
3
+ VERSION = '1.9.22'
4
4
  end
5
5
  end
@@ -101,12 +101,17 @@ describe 'Autonumeric-rails', type: :feature, js: true do
101
101
  before { wait_for_jquery }
102
102
 
103
103
  context 'Through form helper' do
104
- let(:url) { 'through_form_helper' }
104
+ let(:url) { 'static_fields' }
105
105
  it_behaves_like 'all autonumeric-rails tests'
106
106
  end
107
107
 
108
- context 'With dynamically created fields' do
109
- let(:url) { 'dynamic_field' }
108
+ context 'Javascript manually created fields' do
109
+ let(:url) { 'javascript_fields' }
110
+ it_behaves_like 'all autonumeric-rails tests'
111
+ end
112
+
113
+ context 'AJAX request created fields' do
114
+ let(:url) { 'ajax_fields' }
110
115
  it_behaves_like 'all autonumeric-rails tests'
111
116
  end
112
117
 
@@ -1,6 +1,4 @@
1
1
  class ApplicationController < ActionController::Base
2
- protect_from_forgery with: :exception
3
-
4
2
  def self.create_action(name)
5
3
  define_method(name) do
6
4
  send :without_record
@@ -1,12 +1,25 @@
1
1
  class FormsController < ApplicationController
2
- create_action :through_form_helper
3
- create_action :dynamic_field
4
2
 
5
- def without_record
6
- @record = Record.new
3
+ create_action :static_fields
4
+ create_action :javascript_fields
5
+ create_action :get_content_from_ajax
6
+
7
+ def ajax_fields
8
+ @url_prefix = ''
7
9
  end
8
10
 
9
- def with_record
10
- @record = Record.find params[:id]
11
+ def ajax_fields_with_record
12
+ @url_prefix = "/#{params[:id]}"
13
+ render action: :ajax_fields
11
14
  end
15
+
16
+ private
17
+
18
+ def without_record
19
+ @record = Record.new
20
+ end
21
+
22
+ def with_record
23
+ @record = Record.find params[:id]
24
+ end
12
25
  end
@@ -0,0 +1,10 @@
1
+ <div id="content"></div>
2
+
3
+ <script>
4
+ jQuery(function() {
5
+ $.ajax({
6
+ url: '/get_content_from_ajax<%= @url_prefix %>',
7
+ dataType: 'script'
8
+ });
9
+ });
10
+ </script>
@@ -0,0 +1 @@
1
+ $("div#content").html("<%= j render template: 'forms/static_fields.html.erb' %>");
@@ -0,0 +1,18 @@
1
+ <%= form_for @record do |f| %>
2
+ <%= f.text_field :field2, data: {autonumeric: {aSign: 'USD ', mDec: 1}} %>
3
+ <%= f.submit 'Go' %>
4
+ <% end %>
5
+
6
+ <script>
7
+ jQuery(function() {
8
+ var new_field;
9
+ new_field = $('<input>').attr('id', 'record_field1').attr('name', 'record[field1]');
10
+ new_field.attr('data-autonumeric', 'true').data('autonumeric', 'true');
11
+ <% if @record.field1 %>
12
+ new_field.val('<%= @record.field1.to_s %>');
13
+ <% end %>
14
+ $('form').prepend(new_field);
15
+
16
+ $(document).trigger('refresh_autonumeric');
17
+ });
18
+ </script>
@@ -1,9 +1,15 @@
1
1
  Dummy::Application.routes.draw do
2
2
  resources :records, only: [:create, :update]
3
3
 
4
- get '/through_form_helper', to: 'forms#through_form_helper'
5
- get '/through_form_helper/:id', to: 'forms#through_form_helper_with_record'
4
+ get '/static_fields', to: 'forms#static_fields'
5
+ get '/static_fields/:id', to: 'forms#static_fields_with_record'
6
6
 
7
- get '/dynamic_field', to: 'forms#dynamic_field'
8
- get '/dynamic_field/:id', to: 'forms#dynamic_field_with_record'
7
+ get '/javascript_fields', to: 'forms#javascript_fields'
8
+ get '/javascript_fields/:id', to: 'forms#javascript_fields_with_record'
9
+
10
+ get '/ajax_fields', to: 'forms#ajax_fields'
11
+ get '/ajax_fields/:id', to: 'forms#ajax_fields_with_record'
12
+
13
+ get '/get_content_from_ajax', to: 'forms#get_content_from_ajax'
14
+ get '/get_content_from_ajax/:id', to: 'forms#get_content_from_ajax_with_record'
9
15
  end
@@ -2,7 +2,7 @@
2
2
  * autoNumeric.js
3
3
  * @author: Bob Knothe
4
4
  * @author: Sokolov Yura
5
- * @version: 1.9.21 - 2014-04-01 GMT 9:00 AM
5
+ * @version: 1.9.22 - 2014-04-20 GMT 7:00 PM
6
6
  *
7
7
  * Created by Robert J. Knothe on 2010-10-25. Please report any bugs to https://github.com/BobKnothe/autoNumeric
8
8
  * Created by Sokolov Yura on 2010-11-07
@@ -953,7 +953,6 @@
953
953
  } else {
954
954
  return this;
955
955
  }
956
- settings.lastSetValue = '';
957
956
  settings.runOnce = false;
958
957
  var holder = getHolder($this, settings);
959
958
  if ($.inArray($this.prop('tagName'), settings.tagList) === -1 && $this.prop('tagName') !== 'INPUT') {
@@ -1154,21 +1153,21 @@
1154
1153
  $.error("You must initialize autoNumeric('init', {options}) prior to calling the 'set' method");
1155
1154
  return this;
1156
1155
  }
1157
- /** allows locale decimal separator to be a comma */
1158
- if ((testValue === $this.attr('value') || testValue === $this.text()) && settings.runOnce === false) {
1159
- value = value.replace(',', '.');
1160
- }
1161
1156
  /** routine to handle page re-load from back button */
1162
1157
  if (testValue !== $this.attr('value') && $this.prop('tagName') === 'INPUT' && settings.runOnce === false) {
1158
+ value = (settings.nBracket !== null) ? negativeBracket($this.val(), settings.nBracket, 'pageLoad') : value;
1163
1159
  value = autoStrip(value, settings);
1164
1160
  }
1161
+ /** allows locale decimal separator to be a comma */
1162
+ if ((testValue === $this.attr('value') || testValue === $this.text()) && settings.runOnce === false) {
1163
+ value = value.replace(',', '.');
1164
+ }
1165
1165
  /** returns a empty string if the value being 'set' contains non-numeric characters and or more than decimal point (full stop) and will not be formatted */
1166
1166
  if (!$.isNumeric(+value)) {
1167
1167
  return '';
1168
1168
  }
1169
1169
  value = checkValue(value, settings);
1170
1170
  settings.oEvent = 'set';
1171
- settings.lastSetValue = value; /** saves the unrounded value from the set method - $('selector').data('autoNumeric').lastSetValue; - helpful when you need to change the rounding accuracy*/
1172
1171
  value.toString();
1173
1172
  if (value !== '') {
1174
1173
  value = autoRound(value, settings);
@@ -1,2 +1,2 @@
1
- //= require autoNumeric-1.9.21.js
1
+ //= require autoNumeric-1.9.22.js
2
2
  //= require autonumeric_ujs.js
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * autonumeric_ujs.js
3
3
  * @author: randoum
4
- * @version: 1.9.18 - 2013-12-13
4
+ * @version: 1.9.22 - 2014-04-22
5
5
  *
6
6
  * Created by Randoum on 2013-08-15. Please report any bugs to https://github.com/randoum/autonumeric-rails
7
7
  *
@@ -32,9 +32,16 @@
32
32
  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
33
33
  * OTHER DEALINGS IN THE SOFTWARE.
34
34
  */
35
+
35
36
  var AutonumericRails;
36
37
 
37
38
  window.AutonumericRails = AutonumericRails = (function() {
39
+ AutonumericRails.create_autonumeric_object = function(obj) {
40
+ if (!obj.data('autonumeric-initialized')) {
41
+ return new this(obj);
42
+ }
43
+ };
44
+
38
45
  function AutonumericRails(field) {
39
46
  this.field = field;
40
47
  this.field.data('autonumeric-initialized', true);
@@ -65,15 +72,16 @@ window.AutonumericRails = AutonumericRails = (function() {
65
72
 
66
73
  window.refresh_autonumeric = function() {
67
74
  $('input[data-autonumeric]').each(function() {
68
- if (!$(this).data('autonumeric-initialized')) {
69
- new window.AutonumericRails($(this));
70
- }
75
+ AutonumericRails.create_autonumeric_object($(this));
71
76
  });
72
77
  };
73
78
 
74
79
  jQuery(function() {
75
- refresh_autonumeric();
80
+ window.refresh_autonumeric();
76
81
  $(document).on('refresh_autonumeric', function() {
77
- refresh_autonumeric();
82
+ window.refresh_autonumeric();
83
+ });
84
+ $(document).on('ajaxComplete', function() {
85
+ window.refresh_autonumeric();
78
86
  });
79
- });
87
+ });
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autonumeric-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.21
4
+ version: 1.9.22
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: 2014-04-19 00:00:00.000000000 Z
12
+ date: 2014-04-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: jquery-rails
@@ -218,13 +218,11 @@ files:
218
218
  - spec/dummy/app/controllers/concerns/.keep
219
219
  - spec/dummy/app/controllers/forms_controller.rb
220
220
  - spec/dummy/app/controllers/records_controller.rb
221
- - spec/dummy/app/helpers/application_helper.rb
222
- - spec/dummy/app/mailers/.keep
223
- - spec/dummy/app/models/.keep
224
- - spec/dummy/app/models/concerns/.keep
225
221
  - spec/dummy/app/models/record.rb
226
- - spec/dummy/app/views/forms/dynamic_field.html.erb
227
- - spec/dummy/app/views/forms/through_form_helper.html.erb
222
+ - spec/dummy/app/views/forms/ajax_fields.html.erb
223
+ - spec/dummy/app/views/forms/get_content_from_ajax.js.erb
224
+ - spec/dummy/app/views/forms/javascript_fields.html.erb
225
+ - spec/dummy/app/views/forms/static_fields.html.erb
228
226
  - spec/dummy/app/views/layouts/application.html.erb
229
227
  - spec/dummy/bin/bundle
230
228
  - spec/dummy/bin/rails
@@ -248,15 +246,14 @@ files:
248
246
  - spec/dummy/config/routes.rb
249
247
  - spec/dummy/db/migrate/20131227002328_create_records.rb
250
248
  - spec/dummy/db/schema.rb
251
- - spec/dummy/lib/assets/.keep
252
249
  - spec/dummy/log/.keep
253
250
  - spec/dummy/public/404.html
254
251
  - spec/dummy/public/422.html
255
252
  - spec/dummy/public/500.html
256
253
  - spec/dummy/public/favicon.ico
257
254
  - spec/spec_helper.rb
258
- - spec/support/general.rb
259
- - vendor/assets/javascripts/autoNumeric-1.9.21.js
255
+ - spec/support/wait_for_jquery.rb
256
+ - vendor/assets/javascripts/autoNumeric-1.9.22.js
260
257
  - vendor/assets/javascripts/autonumeric.js
261
258
  - vendor/assets/javascripts/autonumeric_ujs.js
262
259
  homepage: https://github.com/randoum/autonumeric-rails
@@ -1,2 +0,0 @@
1
- module ApplicationHelper
2
- end
File without changes
File without changes
File without changes
@@ -1,19 +0,0 @@
1
- <%= form_for @record do |f| %>
2
- <%= f.text_field :field2, data: {autonumeric: {aSign: 'USD ', mDec: 1}} %>
3
- <%= f.submit 'Go' %>
4
- <% end %>
5
-
6
- <script>
7
- jQuery(function() {
8
- var hidden;
9
- hidden = $('<input>').attr('id', 'record_field1').attr('name', 'record[field1]');
10
- hidden.attr('data-autonumeric', 'true').data('autonumeric', 'true');
11
- <% if @record.field1 %>
12
- hidden.val('<%= @record.field1.to_s %>');
13
- <% end %>
14
- $('form').prepend(hidden);
15
-
16
-
17
- $(document).trigger('refresh_autonumeric');
18
- });
19
- </script>
File without changes