autotab-rails 0.0.2 → 0.0.3
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/.gitignore +0 -0
- data/Gemfile +1 -3
- data/LICENSE +0 -0
- data/README.md +12 -1
- data/Rakefile +1 -1
- data/autotab-rails.gemspec +10 -3
- data/lib/autotab-rails.rb +2 -0
- data/lib/autotab-rails/engine.rb +0 -0
- data/lib/autotab-rails/engine3.rb +0 -0
- data/lib/autotab-rails/railtie.rb +0 -0
- data/lib/autotab-rails/source_file.rb +4 -4
- data/lib/autotab-rails/tasks.rake +0 -0
- data/lib/autotab-rails/version.rb +2 -2
- data/vendor/assets/bower.json +21 -0
- data/vendor/assets/javascripts/autotab-jquery.js +105 -45
- data/vendor/assets/javascripts/autotab-jquery.min.js +14 -13
- metadata +39 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7bb40cdb63fcdad2e1c9e826bc7525453138fc28
|
4
|
+
data.tar.gz: 582abdf750ecb6740c1c68455b9956d6393a8def
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4b524d2788305422e743c454b367ac47a11d4941fc44c6eeb47741c8d6e56f680138052fe8fae3e10011dfca7f2a0ffe4d5b4b6848cb8b8b69ef9f3ce3806d4
|
7
|
+
data.tar.gz: e2e85e60d178d8ed4fa8bf903f468a3fbeb765dd9c9e4f3bdf4445c7c26152c7b59898a31e138cd7e6f4c825bacd46e92e568b38e40fffbd02898f432f816013
|
data/.gitignore
CHANGED
File without changes
|
data/Gemfile
CHANGED
data/LICENSE
CHANGED
File without changes
|
data/README.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# AutoTab for rails asset pipeline
|
2
2
|
|
3
|
+
[](http://badge.fury.io/rb/autotab-rails)
|
4
|
+
[](https://codeclimate.com/github/sachin87/autotab-rails)
|
5
|
+
[](http://opensource.org/licenses/MIT)
|
6
|
+
|
3
7
|
[Autotab](https://github.com/Mathachew/jquery-autotab) is a jQuery plugin that provides auto tabbing and filtering on text fields in a form. Once the maximum number of characters has been reached within a text field, the focus is automatically set to a defined element. Likewise, clearing out the text field's content by pressing backspace eventually places the focus on a previous element.
|
4
8
|
|
5
9
|
The `autotab-rails` gem integrates the `AutoTab` with the Rails asset pipeline.
|
@@ -45,6 +49,9 @@ And this file must be included in `application.js`
|
|
45
49
|
//= require autotab-jquery
|
46
50
|
//= require custom
|
47
51
|
|
52
|
+
## Limitations
|
53
|
+
|
54
|
+
jquery-autotab does not supports iphone.[READ MORE](https://github.com/Mathachew/jquery-autotab/issues/45)
|
48
55
|
|
49
56
|
## Gem maintenance
|
50
57
|
|
@@ -58,6 +65,10 @@ Publish gem.
|
|
58
65
|
|
59
66
|
rake release
|
60
67
|
|
68
|
+
## Contributing to jquery-autotab
|
69
|
+
|
70
|
+
Fork, fix, then send me a pull request.
|
71
|
+
|
61
72
|
## License
|
62
73
|
|
63
|
-
|
74
|
+
MIT license.
|
data/Rakefile
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
require 'bundler/gem_tasks'
|
5
5
|
require File.expand_path('../lib/autotab-rails/source_file', __FILE__)
|
6
6
|
|
7
|
-
desc "Update with
|
7
|
+
desc "Update with Matthew's AutoTab Library"
|
8
8
|
task 'update-autotab', 'repository_url', 'branch' do |task, args|
|
9
9
|
remote = args['repository_url'] || 'https://github.com/Mathachew/jquery-autotab'
|
10
10
|
branch = args['branch'] || 'master'
|
data/autotab-rails.gemspec
CHANGED
@@ -3,22 +3,29 @@
|
|
3
3
|
require File.expand_path('../lib/autotab-rails/version', __FILE__)
|
4
4
|
|
5
5
|
Gem::Specification.new do |gem|
|
6
|
+
gem.platform = Gem::Platform::RUBY
|
7
|
+
gem.name = 'autotab-rails'
|
6
8
|
gem.authors = ['Sachin Singh']
|
7
9
|
gem.email = ['sachin.y87@hmail.com']
|
8
10
|
gem.description = %q{AutoTab is a is a jQuery plugin that provides auto tabbing and filtering on text fields in a form.}
|
9
11
|
gem.summary = %q{Integrate AutoTab javascript library with Rails asset pipeline}
|
10
12
|
gem.homepage = 'https://github.com/sachin87/autotab-rails'
|
13
|
+
gem.version = AutoTab::Rails::VERSION
|
14
|
+
|
15
|
+
gem.required_ruby_version = '>= 1.9.3'
|
16
|
+
gem.required_rubygems_version = '>= 2.2.2'
|
17
|
+
|
18
|
+
gem.license = 'MIT'
|
11
19
|
|
12
20
|
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
13
21
|
gem.files = `git ls-files`.split("\n")
|
14
22
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
15
|
-
gem.name = 'autotab-rails'
|
16
23
|
gem.require_paths = ['lib']
|
17
|
-
gem.version = AutoTab::Rails::VERSION
|
18
24
|
|
19
25
|
gem.add_dependency 'railties', '>= 3.0'
|
26
|
+
gem.add_dependency 'rails', '>= 3.0'
|
20
27
|
|
21
28
|
gem.add_development_dependency 'bundler', '>= 1.0'
|
22
|
-
gem.add_development_dependency 'rails', '>= 3.0'
|
23
29
|
gem.add_development_dependency 'thor', '>= 0.14'
|
30
|
+
gem.add_development_dependency 'debugger'
|
24
31
|
end
|
data/lib/autotab-rails.rb
CHANGED
data/lib/autotab-rails/engine.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
@@ -7,25 +7,25 @@ class SourceFile < Thor
|
|
7
7
|
include Thor::Actions
|
8
8
|
|
9
9
|
desc 'fetch source files', 'fetch source files from GitHub'
|
10
|
-
def fetch
|
10
|
+
def fetch(remote, branch)
|
11
11
|
self.destination_root = 'vendor/assets'
|
12
12
|
get "#{remote}/raw/#{branch}/js/jquery.autotab.js", 'javascripts/autotab-jquery.js'
|
13
13
|
get "#{remote}/raw/#{branch}/js/jquery.autotab.min.js", 'javascripts/autotab-jquery.min.js'
|
14
|
-
get "#{remote}/raw/#{branch}/
|
14
|
+
get "#{remote}/raw/#{branch}/bower.json", 'bower.json'
|
15
15
|
bump_version
|
16
16
|
end
|
17
17
|
|
18
18
|
desc 'clean up useless files', 'clean up useless files'
|
19
19
|
def cleanup
|
20
20
|
self.destination_root = 'vendor/assets'
|
21
|
-
remove_file '
|
21
|
+
remove_file 'bower.json'
|
22
22
|
end
|
23
23
|
|
24
24
|
protected
|
25
25
|
|
26
26
|
def bump_version
|
27
27
|
inside destination_root do
|
28
|
-
component_json = JSON.load(File.open('
|
28
|
+
component_json = JSON.load(File.open('bower.json'))
|
29
29
|
version = component_json['version']
|
30
30
|
gsub_file '../../lib/autotab-rails/version.rb', /AUTO_TAB_VERSION\s=\s'(\d|\.)+'$/ do |match|
|
31
31
|
%Q{AUTO_TAB_VERSION = '#{version}'}
|
File without changes
|
@@ -0,0 +1,21 @@
|
|
1
|
+
{
|
2
|
+
"name": "jquery.autotab",
|
3
|
+
"version": "1.7.0",
|
4
|
+
"description": "A jQuery plugin that provides auto-tabbing and filtering on text fields in a form.",
|
5
|
+
"main": [ "./js/jquery.autotab.min.js" ],
|
6
|
+
"homepage": "https://github.com/Mathachew/jquery-autotab",
|
7
|
+
"dependencies" : {
|
8
|
+
"jquery" : ">= 1.7"
|
9
|
+
},
|
10
|
+
"keywords": [
|
11
|
+
"autotab",
|
12
|
+
"filter"
|
13
|
+
],
|
14
|
+
"author" : {
|
15
|
+
"name" : "Matthew Miller",
|
16
|
+
"web" : "https://github.com/Mathachew"
|
17
|
+
},
|
18
|
+
"license": [
|
19
|
+
"http://www.opensource.org/licenses/mit-license.php"
|
20
|
+
]
|
21
|
+
}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* Autotab - jQuery plugin 1.
|
2
|
+
* Autotab - jQuery plugin 1.7
|
3
3
|
* https://github.com/Mathachew/jquery-autotab
|
4
4
|
*
|
5
5
|
* Copyright (c) 2008, 2014 Matthew Miller
|
@@ -17,8 +17,6 @@
|
|
17
17
|
firefox: (typeof InstallTrigger !== 'undefined')
|
18
18
|
};
|
19
19
|
|
20
|
-
// Native get/setAttribute methods are much faster than $.data, so $.data is used for objects only: http://jsperf.com/dataset-vs-jquery-data/4
|
21
|
-
// When removing then resetting auto tab, storing an object resulted in overwritten values, leading to this implementation
|
22
20
|
var setSettings = function (e, settings) {
|
23
21
|
if (settings === null || typeof settings === 'undefined') {
|
24
22
|
return;
|
@@ -43,11 +41,15 @@
|
|
43
41
|
previous: null,
|
44
42
|
trigger: null,
|
45
43
|
originalValue: '',
|
46
|
-
changed: false
|
44
|
+
changed: false,
|
45
|
+
editable: (e.type == 'text' || e.type == 'password' || e.type == 'textarea'),
|
46
|
+
tabOnSelect: false
|
47
47
|
};
|
48
48
|
|
49
49
|
for (var key in settings) {
|
50
|
-
|
50
|
+
if (typeof $(e).data('autotab-' + key) !== 'undefined') {
|
51
|
+
settings[key] = $(e).data('autotab-' + key);
|
52
|
+
}
|
51
53
|
}
|
52
54
|
|
53
55
|
// Save settings on first run
|
@@ -62,38 +64,60 @@
|
|
62
64
|
return settings;
|
63
65
|
};
|
64
66
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
next: function () {
|
69
|
-
var e = $(document.activeElement);
|
67
|
+
var queryObject = function (e) {
|
68
|
+
return (typeof e !== 'undefined' && (typeof e === 'string' || !(e instanceof jQuery)));
|
69
|
+
};
|
70
70
|
|
71
|
-
|
72
|
-
|
73
|
-
}
|
74
|
-
}
|
75
|
-
previous: function () {
|
76
|
-
var e = $(document.activeElement);
|
71
|
+
$.autotab = function (options) {
|
72
|
+
if (typeof options !== 'object') {
|
73
|
+
options = {};
|
74
|
+
}
|
77
75
|
|
78
|
-
|
79
|
-
|
80
|
-
|
76
|
+
$(':input').autotab(options);
|
77
|
+
};
|
78
|
+
|
79
|
+
$.autotab.next = function () {
|
80
|
+
var e = $(document.activeElement);
|
81
|
+
|
82
|
+
if (e.length) {
|
83
|
+
e.trigger('autotab-next');
|
81
84
|
}
|
82
85
|
};
|
83
86
|
|
87
|
+
$.autotab.previous = function () {
|
88
|
+
var e = $(document.activeElement);
|
89
|
+
|
90
|
+
if (e.length) {
|
91
|
+
e.trigger('autotab-previous');
|
92
|
+
}
|
93
|
+
};
|
94
|
+
|
95
|
+
$.autotab.remove = function (e) {
|
96
|
+
queryObject(e) ? $(e).autotab('remove') : $(':input').autotab('remove');
|
97
|
+
};
|
98
|
+
|
99
|
+
$.autotab.restore = function (e) {
|
100
|
+
queryObject(e) ? $(e).autotab('restore') : $(':input').autotab('restore');
|
101
|
+
};
|
102
|
+
|
84
103
|
$.fn.autotab = function (method, options) {
|
85
104
|
if (!this.length) {
|
86
105
|
return this;
|
87
106
|
}
|
88
107
|
|
108
|
+
// Remove hidden fields since tabbing backwards is supported on different form elements
|
109
|
+
var filtered = $.grep(this, function (e, i) {
|
110
|
+
return e.type != 'hidden';
|
111
|
+
});
|
112
|
+
|
89
113
|
// Apply filter options
|
90
114
|
if (method == 'filter') {
|
91
115
|
if (typeof options === 'string' || typeof options === 'function') {
|
92
116
|
options = { format: options };
|
93
117
|
}
|
94
118
|
|
95
|
-
for (var i = 0, length =
|
96
|
-
var defaults = getSettings(
|
119
|
+
for (var i = 0, length = filtered.length; i < length; i++) {
|
120
|
+
var defaults = getSettings(filtered[i]),
|
97
121
|
newOptions = options;
|
98
122
|
|
99
123
|
// Retain the established target/previous values as this area is for filtering only
|
@@ -104,31 +128,31 @@
|
|
104
128
|
|
105
129
|
if (!defaults.loaded) {
|
106
130
|
defaults.disabled = true;
|
107
|
-
autotabBind(
|
131
|
+
autotabBind(filtered[i], newOptions);
|
108
132
|
}
|
109
133
|
else {
|
110
|
-
setSettings(
|
134
|
+
setSettings(filtered[i], defaults);
|
111
135
|
}
|
112
136
|
}
|
113
137
|
}
|
114
138
|
// Disable auto tab and filtering
|
115
139
|
else if (method == 'remove' || method == 'destroy' || method == 'disable') {
|
116
|
-
for (var i = 0, length =
|
117
|
-
var defaults = getSettings(
|
140
|
+
for (var i = 0, length = filtered.length; i < length; i++) {
|
141
|
+
var defaults = getSettings(filtered[i]);
|
118
142
|
|
119
143
|
defaults.disabled = true;
|
120
144
|
|
121
|
-
setSettings(
|
145
|
+
setSettings(filtered[i], defaults);
|
122
146
|
}
|
123
147
|
}
|
124
148
|
// Re-enable auto tab and filtering
|
125
149
|
else if (method == 'restore' || method == 'enable') {
|
126
|
-
for (var i = 0, length =
|
127
|
-
var defaults = getSettings(
|
150
|
+
for (var i = 0, length = filtered.length; i < length; i++) {
|
151
|
+
var defaults = getSettings(filtered[i]);
|
128
152
|
|
129
153
|
defaults.disabled = false;
|
130
154
|
|
131
|
-
setSettings(
|
155
|
+
setSettings(filtered[i], defaults);
|
132
156
|
}
|
133
157
|
}
|
134
158
|
else {
|
@@ -143,30 +167,30 @@
|
|
143
167
|
}
|
144
168
|
|
145
169
|
// Bind key events to element(s) passed
|
146
|
-
if (
|
147
|
-
for (var i = 0, length =
|
170
|
+
if (filtered.length > 1) {
|
171
|
+
for (var i = 0, length = filtered.length; i < length; i++) {
|
148
172
|
var n = i + 1,
|
149
173
|
p = i - 1,
|
150
174
|
newOptions = options;
|
151
175
|
|
152
176
|
if (i > 0 && n < length) {
|
153
|
-
newOptions.target =
|
154
|
-
newOptions.previous =
|
177
|
+
newOptions.target = filtered[n];
|
178
|
+
newOptions.previous = filtered[p];
|
155
179
|
}
|
156
180
|
else if (i > 0) {
|
157
181
|
newOptions.target = null;
|
158
|
-
newOptions.previous =
|
182
|
+
newOptions.previous = filtered[p];
|
159
183
|
}
|
160
184
|
else {
|
161
|
-
newOptions.target =
|
185
|
+
newOptions.target = filtered[n];
|
162
186
|
newOptions.previous = null;
|
163
187
|
}
|
164
188
|
|
165
|
-
autotabBind(
|
189
|
+
autotabBind(filtered[i], newOptions);
|
166
190
|
}
|
167
191
|
}
|
168
192
|
else {
|
169
|
-
autotabBind(
|
193
|
+
autotabBind(filtered[0], options);
|
170
194
|
}
|
171
195
|
}
|
172
196
|
|
@@ -244,16 +268,20 @@
|
|
244
268
|
$.extend(defaults, options);
|
245
269
|
|
246
270
|
// Sets targets to element based on the name or ID passed if they are not currently objects
|
247
|
-
if (
|
271
|
+
if (queryObject(defaults.target)) {
|
248
272
|
defaults.target = $(defaults.target);
|
249
273
|
}
|
250
274
|
|
251
|
-
if (
|
275
|
+
if (queryObject(defaults.previous)) {
|
252
276
|
defaults.previous = $(defaults.previous);
|
253
277
|
}
|
254
278
|
|
255
279
|
var oldMaxlength = element.maxLength;
|
256
280
|
|
281
|
+
if (typeof element.maxLength === 'undefined' && element.type == 'textarea') {
|
282
|
+
oldMaxlength = element.maxLength = element.getAttribute('maxlength');
|
283
|
+
}
|
284
|
+
|
257
285
|
// defaults.maxlength has not changed and maxlength was specified
|
258
286
|
if (defaults.maxlength == 2147483647 && oldMaxlength != 2147483647 && oldMaxlength != -1) {
|
259
287
|
defaults.maxlength = oldMaxlength;
|
@@ -277,6 +305,19 @@
|
|
277
305
|
return;
|
278
306
|
}
|
279
307
|
|
308
|
+
// Add a change event to select lists only so that we can auto tab when a value is selected
|
309
|
+
if (element.type == 'select-one') {
|
310
|
+
$(element).on('change', function (e) {
|
311
|
+
var defaults = getSettings(this);
|
312
|
+
|
313
|
+
if (defaults.tabOnSelect) {
|
314
|
+
$(this).trigger('autotab-next');
|
315
|
+
}
|
316
|
+
});
|
317
|
+
}
|
318
|
+
|
319
|
+
// The 1ms timeouts allow for keypress events to complete in case a
|
320
|
+
// custom function or exterior method calls for a manual auto tab
|
280
321
|
$(element).on('autotab-next', function (event, defaults) {
|
281
322
|
var self = this;
|
282
323
|
setTimeout(function () {
|
@@ -284,10 +325,20 @@
|
|
284
325
|
defaults = getSettings(self);
|
285
326
|
}
|
286
327
|
|
287
|
-
|
328
|
+
var target = defaults.target;
|
329
|
+
|
330
|
+
if (!defaults.disabled && target.length) {
|
288
331
|
// Using focus on iOS devices is a pain, so use the browser's next/previous buttons to proceed
|
289
332
|
if (!settings.iOS) {
|
290
|
-
|
333
|
+
|
334
|
+
// Field is disabled, so tab to next element
|
335
|
+
if (target.prop('disabled')) {
|
336
|
+
target.trigger('autotab-next');
|
337
|
+
}
|
338
|
+
else {
|
339
|
+
target.focus().select();
|
340
|
+
}
|
341
|
+
|
291
342
|
settings.focusChange = new Date();
|
292
343
|
}
|
293
344
|
}
|
@@ -304,7 +355,11 @@
|
|
304
355
|
if (!defaults.disabled && previous.length) {
|
305
356
|
var value = previous.val();
|
306
357
|
|
307
|
-
|
358
|
+
// Field is disabled, so tab to previous element
|
359
|
+
if (previous.prop('disabled')) {
|
360
|
+
previous.trigger('autotab-previous');
|
361
|
+
}
|
362
|
+
else if (value.length && previous.data('autotab-editable')) {
|
308
363
|
previous.focus().val(value.substring(0, value.length - 1));
|
309
364
|
setSettings(previous, { changed: true });
|
310
365
|
}
|
@@ -336,8 +391,13 @@
|
|
336
391
|
// Go to the previous element when backspace
|
337
392
|
// is pressed in an empty input field
|
338
393
|
if (keyCode == 8) {
|
339
|
-
if (this.value.length === 0
|
394
|
+
if (!defaults.editable || this.value.length === 0) {
|
340
395
|
$(this).trigger('autotab-previous', defaults);
|
396
|
+
|
397
|
+
// Prevent the browser from of navigating to the previous page
|
398
|
+
if (!defaults.editable) {
|
399
|
+
return false;
|
400
|
+
}
|
341
401
|
}
|
342
402
|
else {
|
343
403
|
setSettings(this, { changed: (this.value != defaults.originalValue) });
|
@@ -360,7 +420,7 @@
|
|
360
420
|
keyCode = e.which || e.keyCode;
|
361
421
|
|
362
422
|
// e.charCode == 0 indicates a special key has been pressed, which only Firefox triggers
|
363
|
-
if (!defaults || defaults.disabled || (settings.firefox && e.charCode === 0) || e.ctrlKey || e.altKey || keyCode == 13 || (this.type != 'text' && this.type != 'password')) {
|
423
|
+
if (!defaults || defaults.disabled || (settings.firefox && e.charCode === 0) || e.ctrlKey || e.altKey || keyCode == 13 || (this.type != 'text' && this.type != 'password' && this.type != 'textarea') || this.disabled) {
|
364
424
|
return true;
|
365
425
|
}
|
366
426
|
|
@@ -511,7 +571,7 @@
|
|
511
571
|
});
|
512
572
|
};
|
513
573
|
|
514
|
-
//
|
574
|
+
// Deprecated, here for backwards compatibility
|
515
575
|
$.fn.autotab_magic = function (focus) {
|
516
576
|
$(this).autotab();
|
517
577
|
};
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* Autotab - jQuery plugin 1.
|
2
|
+
* Autotab - jQuery plugin 1.7
|
3
3
|
* https://github.com/Mathachew/jquery-autotab
|
4
4
|
*
|
5
5
|
* Copyright (c) 2008, 2014 Matthew Miller
|
@@ -8,15 +8,16 @@
|
|
8
8
|
* http://www.opensource.org/licenses/mit-license.php
|
9
9
|
*/
|
10
10
|
|
11
|
-
(function(
|
12
|
-
typeof c.trigger&&(c.trigger=c.trigger.toString()),
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
11
|
+
(function(e){var q=navigator.platform,k=null,r="iPad"===q||"iPhone"===q||"iPod"===q,v="undefined"!==typeof InstallTrigger,g=function(a,c){if(null!==c&&"undefined"!==typeof c)for(var b in c)e(a).data("autotab-"+b,c[b])},l=function(a){var c={format:"all",loaded:!1,disabled:!1,pattern:null,uppercase:!1,lowercase:!1,nospace:!1,maxlength:2147483647,target:null,previous:null,trigger:null,originalValue:"",changed:!1,editable:"text"==a.type||"password"==a.type||"textarea"==a.type,tabOnSelect:!1},b;for(b in c)"undefined"!==
|
12
|
+
typeof e(a).data("autotab-"+b)&&(c[b]=e(a).data("autotab-"+b));c.loaded||(null!==c.trigger&&"string"===typeof c.trigger&&(c.trigger=c.trigger.toString()),g(a,c));return c},p=function(a){return"undefined"!==typeof a&&("string"===typeof a||!(a instanceof jQuery))};e.autotab=function(a){"object"!==typeof a&&(a={});e(":input").autotab(a)};e.autotab.next=function(){var a=e(document.activeElement);a.length&&a.trigger("autotab-next")};e.autotab.previous=function(){var a=e(document.activeElement);a.length&&
|
13
|
+
a.trigger("autotab-previous")};e.autotab.remove=function(a){p(a)?e(a).autotab("remove"):e(":input").autotab("remove")};e.autotab.restore=function(a){p(a)?e(a).autotab("restore"):e(":input").autotab("restore")};e.fn.autotab=function(a,c){if(!this.length)return this;var b=e.grep(this,function(a,b){return"hidden"!=a.type});if("filter"==a){if("string"===typeof c||"function"===typeof c)c={format:c};for(var d=0,n=b.length;d<n;d++){var f=l(b[d]),h=c;h.target=f.target;h.previous=f.previous;e.extend(f,h);
|
14
|
+
f.loaded?g(b[d],f):(f.disabled=!0,s(b[d],h))}}else if("remove"==a||"destroy"==a||"disable"==a)for(d=0,n=b.length;d<n;d++)f=l(b[d]),f.disabled=!0,g(b[d],f);else if("restore"==a||"enable"==a)for(d=0,n=b.length;d<n;d++)f=l(b[d]),f.disabled=!1,g(b[d],f);else if(null===a||"undefined"===typeof a?c={}:"string"===typeof a||"function"===typeof a?c={format:a}:"object"===typeof a&&(c=a),1<b.length)for(d=0,n=b.length;d<n;d++){var f=d+1,u=d-1,h=c;0<d&&f<n?(h.target=b[f],h.previous=b[u]):0<d?(h.target=null,h.previous=
|
15
|
+
b[u]):(h.target=b[f],h.previous=null);s(b[d],h)}else s(b[0],c);return this};var t=function(a,c,b){if("function"===typeof b.format)return b.format(c,a);a=null;switch(b.format){case "text":a=RegExp("[0-9]+","g");break;case "alpha":a=RegExp("[^a-zA-Z]+","g");break;case "number":case "numeric":a=RegExp("[^0-9]+","g");break;case "alphanumeric":a=RegExp("[^0-9a-zA-Z]+","g");break;case "hex":case "hexadecimal":a=RegExp("[^0-9A-Fa-f]+","g");break;case "custom":a=new RegExp(b.pattern,"g")}null!==a&&(c=c.replace(a,
|
16
|
+
""));b.nospace&&(a=RegExp("[ ]+","g"),c=c.replace(a,""));b.uppercase&&(c=c.toUpperCase());b.lowercase&&(c=c.toLowerCase());return c},s=function(a,c){var b=l(a);b.disabled&&(b.disabled=!1,b.target=null,b.previous=null);e.extend(b,c);p(b.target)&&(b.target=e(b.target));p(b.previous)&&(b.previous=e(b.previous));var d=a.maxLength;"undefined"===typeof a.maxLength&&"textarea"==a.type&&(d=a.maxLength=a.getAttribute("maxlength"));2147483647==b.maxlength&&2147483647!=d&&-1!=d?b.maxlength=d:0<b.maxlength?a.maxLength=
|
17
|
+
b.maxlength:b.target=null;if(b.loaded)g(a,b);else{b.loaded=!0;g(a,b);if("select-one"==a.type)e(a).on("change",function(a){l(this).tabOnSelect&&e(this).trigger("autotab-next")});e(a).on("autotab-next",function(a,b){var h=this;setTimeout(function(){b||(b=l(h));var a=b.target;b.disabled||!a.length||r||(a.prop("disabled")?a.trigger("autotab-next"):a.focus().select(),k=new Date)},1)}).on("autotab-previous",function(a,b){var h=this;setTimeout(function(){b||(b=l(h));var a=b.previous;if(!b.disabled&&a.length){var c=
|
18
|
+
a.val();a.prop("disabled")?a.trigger("autotab-previous"):c.length&&a.data("autotab-editable")?(a.focus().val(c.substring(0,c.length-1)),g(a,{changed:!0})):a.focus();k=null}},1)}).on("focus",function(){g(this,{originalValue:this.value})}).on("blur",function(){var a=l(this);a.changed&&this.value!=a.originalValue&&(g(this,{changed:!1}),e(this).change())}).on("keydown",function(a){var b=l(this);if(!b||b.disabled)return!0;var c=a.which||a.charCode;if(8==c)if(b.editable&&0!==this.value.length)g(this,{changed:this.value!=
|
19
|
+
b.originalValue});else{if(e(this).trigger("autotab-previous",b),!b.editable)return!1}else if(9==c&&null!==k)if(a.shiftKey)k=null;else if(800>(new Date).getTime()-k.getTime())return k=null,!1}).on("keypress",function(a){var b=l(this),c=a.which||a.keyCode;if(!b||b.disabled||v&&0===a.charCode||a.ctrlKey||a.altKey||13==c||"text"!=this.type&&"password"!=this.type&&"textarea"!=this.type||this.disabled)return!0;c=String.fromCharCode(c);if(null!==b.trigger&&0<=b.trigger.indexOf(c))return null!==k&&800>(new Date).getTime()-
|
20
|
+
k.getTime()?k=null:e(this).trigger("autotab-next",b),!1;k=null;a=document.selection&&document.selection.createRange?!0:0<a.charCode;c=t(this,c,b);if(a&&(null===c||""===c))return!1;if(a&&this.value.length<=this.maxLength){var d,m;a=0;if("number"===typeof this.selectionStart&&"number"===typeof this.selectionEnd)d=this.selectionStart,m=this.selectionEnd,a=1;else if(document.selection&&document.selection.createRange){m=document.selection.createRange();d=this.createTextRange();a=this.createTextRange();
|
21
|
+
var w=m.getBookmark();d.moveToBookmark(w);a.setEndPoint("EndToStart",d);d=a.text.length;m=d+m.text.length;a=2}if(0===d&&m==this.value.length)this.value=c;else{if(this.value.length==this.maxLength&&d===m)return e(this).trigger("autotab-next",b),!1;this.value=this.value.slice(0,d)+c+this.value.slice(m)}g(this,{changed:this.value!=b.originalValue});this.value.length!=b.maxlength&&(d++,1==a?this.selectionStart=this.selectionEnd=d:2==a&&(c=this.createTextRange(),c.collapse(!0),c.moveEnd("character",d),
|
22
|
+
c.moveStart("character",d),c.select()))}this.value.length==b.maxlength&&e(this).trigger("autotab-next",b);return!1}).on("paste",function(a){var b=l(this);if(!b)return!0;this.maxLength=2147483647;(function(a,c){setTimeout(function(){var d=-1,g=document.createElement("input");g.type="hidden";g.value=a.value.toLowerCase();a.maxLength=c.maxlength;a.value=t(a,a.value,c).substr(0,c.maxlength);var k=function(a,b){if(a){for(var c=0,f=b.length;c<f;c++)d=g.value.indexOf(b.charAt(c),d)+1;c=l(a);f=g.value.substr(d);
|
23
|
+
(f=t(a,f,c).substr(0,c.maxlength))?(a.value=f,f.length==c.maxlength&&(e(a).trigger("autotab-next",c),r||k(c.target[0],f))):a.value=""}};a.value.length==c.maxlength&&(e(a).trigger("autotab-next",b),r||k(c.target[0],a.value.toLowerCase()))},1)})(this,b)})}};e.fn.autotab_magic=function(a){e(this).autotab()};e.fn.autotab_filter=function(a){var c={};"string"===typeof a||"function"===typeof a?c.format=a:e.extend(c,a);e(this).autotab("filter",c)}})(jQuery);
|
metadata
CHANGED
@@ -1,71 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: autotab-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sachin Singh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rails
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
25
39
|
- !ruby/object:Gem::Version
|
26
40
|
version: '3.0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
|
-
- -
|
45
|
+
- - ">="
|
32
46
|
- !ruby/object:Gem::Version
|
33
47
|
version: '1.0'
|
34
48
|
type: :development
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
|
-
- -
|
52
|
+
- - ">="
|
39
53
|
- !ruby/object:Gem::Version
|
40
54
|
version: '1.0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
56
|
+
name: thor
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
|
-
- -
|
59
|
+
- - ">="
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
61
|
+
version: '0.14'
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
|
-
- -
|
66
|
+
- - ">="
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
68
|
+
version: '0.14'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
70
|
+
name: debugger
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
|
-
- -
|
73
|
+
- - ">="
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0
|
75
|
+
version: '0'
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
|
-
- -
|
80
|
+
- - ">="
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0
|
82
|
+
version: '0'
|
69
83
|
description: AutoTab is a is a jQuery plugin that provides auto tabbing and filtering
|
70
84
|
on text fields in a form.
|
71
85
|
email:
|
@@ -74,7 +88,7 @@ executables: []
|
|
74
88
|
extensions: []
|
75
89
|
extra_rdoc_files: []
|
76
90
|
files:
|
77
|
-
- .gitignore
|
91
|
+
- ".gitignore"
|
78
92
|
- Gemfile
|
79
93
|
- LICENSE
|
80
94
|
- README.md
|
@@ -87,10 +101,12 @@ files:
|
|
87
101
|
- lib/autotab-rails/source_file.rb
|
88
102
|
- lib/autotab-rails/tasks.rake
|
89
103
|
- lib/autotab-rails/version.rb
|
104
|
+
- vendor/assets/bower.json
|
90
105
|
- vendor/assets/javascripts/autotab-jquery.js
|
91
106
|
- vendor/assets/javascripts/autotab-jquery.min.js
|
92
107
|
homepage: https://github.com/sachin87/autotab-rails
|
93
|
-
licenses:
|
108
|
+
licenses:
|
109
|
+
- MIT
|
94
110
|
metadata: {}
|
95
111
|
post_install_message:
|
96
112
|
rdoc_options: []
|
@@ -98,17 +114,17 @@ require_paths:
|
|
98
114
|
- lib
|
99
115
|
required_ruby_version: !ruby/object:Gem::Requirement
|
100
116
|
requirements:
|
101
|
-
- -
|
117
|
+
- - ">="
|
102
118
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
119
|
+
version: 1.9.3
|
104
120
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
121
|
requirements:
|
106
|
-
- -
|
122
|
+
- - ">="
|
107
123
|
- !ruby/object:Gem::Version
|
108
|
-
version:
|
124
|
+
version: 2.2.2
|
109
125
|
requirements: []
|
110
126
|
rubyforge_project:
|
111
|
-
rubygems_version: 2.
|
127
|
+
rubygems_version: 2.2.2
|
112
128
|
signing_key:
|
113
129
|
specification_version: 4
|
114
130
|
summary: Integrate AutoTab javascript library with Rails asset pipeline
|