parsley-rails 2.0.6.0 → 2.0.7.0
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/lib/parsley-rails/version.rb +1 -1
- data/vendor/assets/javascripts/parsley.i18n.cs.extra.js +13 -0
- data/vendor/assets/javascripts/parsley.i18n.cs.js +33 -0
- data/vendor/assets/javascripts/parsley.i18n.de.extra.js +13 -0
- data/vendor/assets/javascripts/parsley.i18n.fr.js +2 -2
- data/vendor/assets/javascripts/parsley.i18n.pt-br.js +1 -1
- data/vendor/assets/javascripts/parsley.i18n.zh_tw.js +33 -0
- data/vendor/assets/javascripts/parsley.js +61 -52
- data/vendor/assets/javascripts/parsley.remote.js +67 -52
- data/vendor/assets/stylesheets/parsley.css +0 -2
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 70081a7d376d45a533ba1f42c652059d956afa82
|
4
|
+
data.tar.gz: 5617ced9800b18ed695a6e5359734dd9ca4592b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8441f912c504079239521ebd462552bc8974b559cf97b7fcd72e0f61b4f471e33b8e0d68e97985ce3ad37d48bae3ab6e602842492417b478f21f78041589dcd8
|
7
|
+
data.tar.gz: 0a27f5590c4314f0c96cba3fb2f04aedb2fe1d6d581875bc0abf15e044e295590efb6be000d76261fa02b0cd3987ec92098f958f2a44d7684118a784f3998c45
|
@@ -0,0 +1,13 @@
|
|
1
|
+
window.ParsleyConfig = window.ParsleyConfig || {};
|
2
|
+
window.ParsleyConfig.i18n = window.ParsleyConfig.i18n || {};
|
3
|
+
|
4
|
+
window.ParsleyConfig.i18n.cs = $.extend(window.ParsleyConfig.i18n.cs || {}, {
|
5
|
+
dateiso: "Tato položka musí být datum ve formátu RRRR-MM-DD.",
|
6
|
+
minwords: "Tato položka musí mít délku nejméně %s slov.",
|
7
|
+
maxwords: "Tato položka musí mít délku nejvíce %s slov.",
|
8
|
+
words: "Tato položka musí být od %s do %s slov dlouhá.",
|
9
|
+
gt: "Tato hodnota musí být větší.",
|
10
|
+
gte: "Tato hodnota musí být větší nebo rovna.",
|
11
|
+
lt: "Tato hodnota musí být menší.",
|
12
|
+
lte: "Tato hodnota musí být menší nebo rovna."
|
13
|
+
});
|
@@ -0,0 +1,33 @@
|
|
1
|
+
// ParsleyConfig definition if not already set
|
2
|
+
window.ParsleyConfig = window.ParsleyConfig || {};
|
3
|
+
window.ParsleyConfig.i18n = window.ParsleyConfig.i18n || {};
|
4
|
+
|
5
|
+
// Define then the messages
|
6
|
+
window.ParsleyConfig.i18n.cs = $.extend(window.ParsleyConfig.i18n.cs || {}, {
|
7
|
+
defaultMessage: "Tato položka je neplatná.",
|
8
|
+
type: {
|
9
|
+
email: "Tato položka musí být e-mailová adresa.",
|
10
|
+
url: "Tato položka musí být platná URL adresa.",
|
11
|
+
number: "Tato položka musí být číslo.",
|
12
|
+
integer: "Tato položka musí být celé číslo.",
|
13
|
+
digits: "Tato položka musí být kladné celé číslo.",
|
14
|
+
alphanum: "Tato položka musí být alfanumerická."
|
15
|
+
},
|
16
|
+
notblank: "Tato položka nesmí být prázdná.",
|
17
|
+
required: "Tato položka je povinná.",
|
18
|
+
pattern: "Tato položka je neplatná.",
|
19
|
+
min: "Tato položka musí být menší nebo rovna %s.",
|
20
|
+
max: "Tato položka musí být větší nebo rovna %s.",
|
21
|
+
range: "Tato položka musí být v rozsahu od %s do %s.",
|
22
|
+
minlength: "Tato položka musí mít nejméně %s znaků.",
|
23
|
+
maxlength: "Tato položka musí mít nejvíce %s znaků.",
|
24
|
+
length: "Tato položka musí mít délku od %s do %s znaků.",
|
25
|
+
mincheck: "Je nutné vybrat alespoň %s možností.",
|
26
|
+
maxcheck: "Je nutné vybrat nejvýše %s možností.",
|
27
|
+
check: "Je nutné vybrat od %s do %s možností.",
|
28
|
+
equalto: "Tato položka musí být stejná."
|
29
|
+
});
|
30
|
+
|
31
|
+
// If file is loaded after Parsley main file, auto-load locale
|
32
|
+
if ('undefined' !== typeof window.ParsleyValidator)
|
33
|
+
window.ParsleyValidator.addCatalog('cs', window.ParsleyConfig.i18n.cs, true);
|
@@ -0,0 +1,13 @@
|
|
1
|
+
window.ParsleyConfig = window.ParsleyConfig || {};
|
2
|
+
window.ParsleyConfig.i18n = window.ParsleyConfig.i18n || {};
|
3
|
+
|
4
|
+
window.ParsleyConfig.i18n.de = $.extend(window.ParsleyConfig.i18n.de || {}, {
|
5
|
+
dateiso: "Die Eingabe muss ein gültiges Datum sein (YYYY-MM-DD).",
|
6
|
+
minwords: "Die Eingabe ist zu kurz. Sie muss aus %s oder mehr Wörtern bestehen.",
|
7
|
+
maxwords: "Die Eingabe ist zu lang. Sie muss aus %s oder weniger Wörtern bestehen.",
|
8
|
+
words: "Die Länge der Eingabe ist ungültig. Sie muss zwischen %s und %s Wörter enthalten.",
|
9
|
+
gt: "Die Eingabe muss größer sein.",
|
10
|
+
gte: "Die Eingabe muss größer oder gleich sein.",
|
11
|
+
lt: "Die Eingabe muss kleiner sein.",
|
12
|
+
lte: "Die Eingabe muss kleiner oder gleich sein."
|
13
|
+
});
|
@@ -16,7 +16,7 @@ window.ParsleyConfig.i18n.fr = $.extend(window.ParsleyConfig.i18n.fr || {}, {
|
|
16
16
|
notblank: "Cette valeur ne peut pas être vide.",
|
17
17
|
required: "Ce champ est requis.",
|
18
18
|
pattern: "Cette valeur semble non valide.",
|
19
|
-
min: "Cette valeur ne doit pas être
|
19
|
+
min: "Cette valeur ne doit pas être inférieure à %s.",
|
20
20
|
max: "Cette valeur ne doit pas excéder %s.",
|
21
21
|
range: "Cette valeur doit être comprise entre %s et %s.",
|
22
22
|
minlength: "Cette chaîne est trop courte. Elle doit avoir au minimum %s caractères.",
|
@@ -25,7 +25,7 @@ window.ParsleyConfig.i18n.fr = $.extend(window.ParsleyConfig.i18n.fr || {}, {
|
|
25
25
|
mincheck: "Vous devez sélectionner au moins %s choix.",
|
26
26
|
maxcheck: "Vous devez sélectionner %s choix maximum.",
|
27
27
|
check: "Vous devez sélectionner entre %s et %s choix.",
|
28
|
-
equalto: "Cette valeur devrait être identique"
|
28
|
+
equalto: "Cette valeur devrait être identique."
|
29
29
|
});
|
30
30
|
|
31
31
|
// If file is loaded after Parsley main file, auto-load locale
|
@@ -7,7 +7,7 @@ window.ParsleyConfig.i18n['pt-br'] = $.extend(window.ParsleyConfig.i18n['pt-br']
|
|
7
7
|
defaultMessage: "Este valor parece ser inválido.",
|
8
8
|
type: {
|
9
9
|
email: "Este campo deve ser um email válido.",
|
10
|
-
url: "Este campo deve ser
|
10
|
+
url: "Este campo deve ser um URL válida.",
|
11
11
|
number: "Este campo deve ser um número válido.",
|
12
12
|
integer: "Este campo deve ser um inteiro válido.",
|
13
13
|
digits: "Este campo deve conter apenas dígitos.",
|
@@ -0,0 +1,33 @@
|
|
1
|
+
// ParsleyConfig definition if not already set
|
2
|
+
window.ParsleyConfig = window.ParsleyConfig || {};
|
3
|
+
window.ParsleyConfig.i18n = window.ParsleyConfig.i18n || {};
|
4
|
+
|
5
|
+
// Define then the messages
|
6
|
+
window.ParsleyConfig.i18n.zh_tw = $.extend(window.ParsleyConfig.i18n.zh_tw || {}, {
|
7
|
+
defaultMessage: "這個值似乎是無效的。",
|
8
|
+
type: {
|
9
|
+
email: "請輸入一個有效的email。",
|
10
|
+
url: "請輸入一個有效的網址。",
|
11
|
+
number: "這個值應該是一個數字。",
|
12
|
+
integer: "這個值應該是一個整數數字。",
|
13
|
+
digits: "這個值應該是一個號碼。",
|
14
|
+
alphanum: "這個值應該是字母或數字。"
|
15
|
+
},
|
16
|
+
notblank: "這個值不應該為空值。",
|
17
|
+
required: "這個空格必須填寫。",
|
18
|
+
pattern: "這個值似乎是無效的。",
|
19
|
+
min: "輸入的值應該大於或等於 %s",
|
20
|
+
max: "輸入的值應該小於或等於 %s",
|
21
|
+
range: "這個值應該在 %s 和 %s 之間。",
|
22
|
+
minlength: "這個值至少要 %s 字元。",
|
23
|
+
maxlength: "這個值最多要 %s 字元。",
|
24
|
+
length: "字元長度應該在 %s 和 %s",
|
25
|
+
mincheck: "你至少要選擇 %s 個項目。",
|
26
|
+
maxcheck: "你最多可選擇 %s 個項目。",
|
27
|
+
check: "你必須選擇 %s 到 %s 個項目。",
|
28
|
+
equalto: "輸入值不同"
|
29
|
+
});
|
30
|
+
|
31
|
+
// If file is loaded after Parsley main file, auto-load locale
|
32
|
+
if ('undefined' !== typeof window.ParsleyValidator)
|
33
|
+
window.ParsleyValidator.addCatalog('zh_tw', window.ParsleyConfig.i18n.zh_tw, true);
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/*!
|
2
2
|
* Parsleyjs
|
3
3
|
* Guillaume Potier - <guillaume@wisembly.com>
|
4
|
-
* Version 2.0.6 - built
|
4
|
+
* Version 2.0.6 - built Sat Jan 24 2015 14:44:37
|
5
5
|
* MIT Licensed
|
6
6
|
*
|
7
7
|
*/
|
@@ -127,7 +127,7 @@
|
|
127
127
|
validationThreshold: 3,
|
128
128
|
// Focused field on form validation error. 'fist'|'last'|'none'
|
129
129
|
focus: 'first',
|
130
|
-
// `$.Event()` that will trigger validation. eg: `keyup`, `change
|
130
|
+
// `$.Event()` that will trigger validation. eg: `keyup`, `change`...
|
131
131
|
trigger: false,
|
132
132
|
// Class that would be added on every failing validation Parsley field
|
133
133
|
errorClass: 'parsley-error',
|
@@ -154,7 +154,7 @@
|
|
154
154
|
},
|
155
155
|
// ParsleyValidator validate proxy function . Could be replaced by third party scripts
|
156
156
|
validateThroughValidator: function (value, constraints, priority) {
|
157
|
-
return window.ParsleyValidator.validate
|
157
|
+
return window.ParsleyValidator.validate(value, constraints, priority);
|
158
158
|
},
|
159
159
|
// Subscribe an event and a handler for a specific field or a specific form
|
160
160
|
// If on a ParsleyForm instance, it will be attached to form instance and also
|
@@ -197,7 +197,7 @@
|
|
197
197
|
/*!
|
198
198
|
* validator.js
|
199
199
|
* Guillaume Potier - <guillaume@wisembly.com>
|
200
|
-
* Version 1.0.
|
200
|
+
* Version 1.0.1 - built Mon Aug 25 2014 16:10:10
|
201
201
|
* MIT Licensed
|
202
202
|
*
|
203
203
|
*/
|
@@ -208,7 +208,7 @@ var Validator = ( function ( ) {
|
|
208
208
|
*/
|
209
209
|
var Validator = function ( options ) {
|
210
210
|
this.__class__ = 'Validator';
|
211
|
-
this.__version__ = '1.0.
|
211
|
+
this.__version__ = '1.0.1';
|
212
212
|
this.options = options || {};
|
213
213
|
this.bindingKey = this.options.bindingKey || '_validatorjsConstraint';
|
214
214
|
};
|
@@ -553,7 +553,7 @@ var Validator = ( function ( ) {
|
|
553
553
|
this.validate = function ( collection, group ) {
|
554
554
|
var result, validator = new Validator(), count = 0, failures = {}, groups = this.groups.length ? this.groups : group;
|
555
555
|
if ( !_isArray( collection ) )
|
556
|
-
throw new Violation( this,
|
556
|
+
throw new Violation( this, collection, { value: Validator.errorCode.must_be_an_array } );
|
557
557
|
for ( var i = 0; i < collection.length; i++ ) {
|
558
558
|
result = this.constraint ?
|
559
559
|
validator.validate( collection[ i ], this.constraint, groups ) :
|
@@ -861,7 +861,7 @@ var Validator = ( function ( ) {
|
|
861
861
|
window[ 'undefined' !== typeof validatorjs_ns ? validatorjs_ns : 'Validator' ] = exports;
|
862
862
|
}
|
863
863
|
|
864
|
-
return exports;
|
864
|
+
return exports;
|
865
865
|
} )( );
|
866
866
|
|
867
867
|
// This is needed for Browserify usage that requires Validator.js through module.exports
|
@@ -971,7 +971,7 @@ var Validator = ( function ( ) {
|
|
971
971
|
assert = new Validator.Assert().Regexp('^\\w+$', 'i');
|
972
972
|
break;
|
973
973
|
case 'url':
|
974
|
-
assert = new Validator.Assert().Regexp('(https?:\\/\\/)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,
|
974
|
+
assert = new Validator.Assert().Regexp('(https?:\\/\\/)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,24}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)', 'i');
|
975
975
|
break;
|
976
976
|
default:
|
977
977
|
throw new Error('validator type `' + type + '` is not supported');
|
@@ -1078,7 +1078,7 @@ var Validator = ( function ( ) {
|
|
1078
1078
|
var diff = this._diff(fieldInstance.validationResult, fieldInstance._ui.lastValidationResult);
|
1079
1079
|
// Then store current validation result for next reflow
|
1080
1080
|
fieldInstance._ui.lastValidationResult = fieldInstance.validationResult;
|
1081
|
-
// Field have been validated at least once if here. Useful for binded key events
|
1081
|
+
// Field have been validated at least once if here. Useful for binded key events...
|
1082
1082
|
fieldInstance._ui.validatedOnce = true;
|
1083
1083
|
// Handle valid / invalid / none field class
|
1084
1084
|
this.manageStatusClass(fieldInstance);
|
@@ -1116,8 +1116,10 @@ var Validator = ( function ( ) {
|
|
1116
1116
|
if ((diff.added.length || diff.kept.length)) {
|
1117
1117
|
if (0 === fieldInstance._ui.$errorsWrapper.find('.parsley-custom-error-message').length)
|
1118
1118
|
fieldInstance._ui.$errorsWrapper
|
1119
|
-
.append(
|
1120
|
-
|
1119
|
+
.append(
|
1120
|
+
$(fieldInstance.options.errorTemplate)
|
1121
|
+
.addClass('parsley-custom-error-message')
|
1122
|
+
);
|
1121
1123
|
return fieldInstance._ui.$errorsWrapper
|
1122
1124
|
.addClass('filled')
|
1123
1125
|
.find('.parsley-custom-error-message')
|
@@ -1137,13 +1139,15 @@ var Validator = ( function ( ) {
|
|
1137
1139
|
this.updateError(fieldInstance, diff.kept[i].assert.name, undefined, diff.kept[i].assert, true);
|
1138
1140
|
},
|
1139
1141
|
// TODO: strange API here, intuitive for manual usage with addError(pslyInstance, 'foo', 'bar')
|
1140
|
-
// but a little bit complex for above internal usage, with forced undefined
|
1142
|
+
// but a little bit complex for above internal usage, with forced undefined parameter...
|
1141
1143
|
addError: function (fieldInstance, name, message, assert, doNotUpdateClass) {
|
1142
1144
|
fieldInstance._ui.$errorsWrapper
|
1143
1145
|
.addClass('filled')
|
1144
|
-
.append(
|
1145
|
-
|
1146
|
-
|
1146
|
+
.append(
|
1147
|
+
$(fieldInstance.options.errorTemplate)
|
1148
|
+
.addClass('parsley-' + name)
|
1149
|
+
.html(message || this._getErrorMessage(fieldInstance, assert))
|
1150
|
+
);
|
1147
1151
|
if (true !== doNotUpdateClass)
|
1148
1152
|
this._errorClass(fieldInstance);
|
1149
1153
|
},
|
@@ -1256,7 +1260,7 @@ var Validator = ( function ( ) {
|
|
1256
1260
|
// If this function returned a valid existing DOM element, go for it
|
1257
1261
|
if ('undefined' !== typeof $handler && $handler.length)
|
1258
1262
|
return $handler;
|
1259
|
-
// Otherwise, if simple element (input, texatrea, select
|
1263
|
+
// Otherwise, if simple element (input, texatrea, select...) it will perfectly host the classes
|
1260
1264
|
if ('undefined' === typeof fieldInstance.options.multiple || fieldInstance.$element.is('select'))
|
1261
1265
|
return fieldInstance.$element;
|
1262
1266
|
// But if multiple element (radio, checkbox), that would be their parent
|
@@ -1277,14 +1281,11 @@ var Validator = ( function ( ) {
|
|
1277
1281
|
return 'undefined' === typeof fieldInstance.options.multiple ? fieldInstance.$element.after(fieldInstance._ui.$errorsWrapper) : fieldInstance.$element.parent().after(fieldInstance._ui.$errorsWrapper);
|
1278
1282
|
},
|
1279
1283
|
actualizeTriggers: function (fieldInstance) {
|
1280
|
-
var
|
1281
|
-
// Remove Parsley events already binded on this field
|
1284
|
+
var $toBind = fieldInstance.$element;
|
1282
1285
|
if (fieldInstance.options.multiple)
|
1283
|
-
$('[' + fieldInstance.options.namespace + 'multiple="' + fieldInstance.options.multiple + '"]')
|
1284
|
-
|
1285
|
-
|
1286
|
-
else
|
1287
|
-
fieldInstance.$element.off('.Parsley');
|
1286
|
+
$toBind = $('[' + fieldInstance.options.namespace + 'multiple="' + fieldInstance.options.multiple + '"]')
|
1287
|
+
// Remove Parsley events already binded on this field
|
1288
|
+
$toBind.off('.Parsley');
|
1288
1289
|
// If no trigger is set, all good
|
1289
1290
|
if (false === fieldInstance.options.trigger)
|
1290
1291
|
return;
|
@@ -1292,23 +1293,13 @@ var Validator = ( function ( ) {
|
|
1292
1293
|
if ('' === triggers)
|
1293
1294
|
return;
|
1294
1295
|
// Bind fieldInstance.eventValidate if exists (for parsley.ajax for example), ParsleyUI.eventValidate otherwise
|
1295
|
-
|
1296
|
-
|
1297
|
-
|
1298
|
-
triggers.split(' ').join('.Parsley ') + '.Parsley',
|
1299
|
-
false,
|
1300
|
-
$.proxy('function' === typeof fieldInstance.eventValidate ? fieldInstance.eventValidate : that.eventValidate, fieldInstance));
|
1301
|
-
});
|
1302
|
-
else
|
1303
|
-
fieldInstance.$element
|
1304
|
-
.on(
|
1305
|
-
triggers.split(' ').join('.Parsley ') + '.Parsley',
|
1306
|
-
false,
|
1307
|
-
$.proxy('function' === typeof fieldInstance.eventValidate ? fieldInstance.eventValidate : this.eventValidate, fieldInstance));
|
1296
|
+
$toBind.on(
|
1297
|
+
triggers.split(' ').join('.Parsley ') + '.Parsley',
|
1298
|
+
$.proxy('function' === typeof fieldInstance.eventValidate ? fieldInstance.eventValidate : this.eventValidate, fieldInstance));
|
1308
1299
|
},
|
1309
1300
|
// Called through $.proxy with fieldInstance. `this` context is ParsleyField
|
1310
1301
|
eventValidate: function(event) {
|
1311
|
-
// For keyup, keypress, keydown
|
1302
|
+
// For keyup, keypress, keydown... events that could be a little bit obstrusive
|
1312
1303
|
// do not validate if val length < min threshold on first validation. Once field have been validated once and info
|
1313
1304
|
// about success or failure have been displayed, always validate with this trigger to reflect every yalidation change.
|
1314
1305
|
if (new RegExp('key').test(event.type))
|
@@ -1437,9 +1428,9 @@ var Validator = ( function ( ) {
|
|
1437
1428
|
this.submitEvent = event;
|
1438
1429
|
this.validationResult = true;
|
1439
1430
|
var fieldValidationResult = [];
|
1431
|
+
$.emit('parsley:form:validate', this);
|
1440
1432
|
// Refresh form DOM options and form's fields that could have changed
|
1441
1433
|
this._refreshFields();
|
1442
|
-
$.emit('parsley:form:validate', this);
|
1443
1434
|
// loop through fields to validate them one by one
|
1444
1435
|
for (var i = 0; i < this.fields.length; i++) {
|
1445
1436
|
// do not validate a field if not the same as given validation group
|
@@ -1449,6 +1440,7 @@ var Validator = ( function ( ) {
|
|
1449
1440
|
if (true !== fieldValidationResult && fieldValidationResult.length > 0 && this.validationResult)
|
1450
1441
|
this.validationResult = false;
|
1451
1442
|
}
|
1443
|
+
$.emit('parsley:form:' + (this.validationResult ? 'success' : 'error'), this);
|
1452
1444
|
$.emit('parsley:form:validated', this);
|
1453
1445
|
return this.validationResult;
|
1454
1446
|
},
|
@@ -1490,21 +1482,26 @@ var Validator = ( function ( ) {
|
|
1490
1482
|
};
|
1491
1483
|
|
1492
1484
|
var ConstraintFactory = function (parsleyField, name, requirements, priority, isDomConstraint) {
|
1485
|
+
var assert = {};
|
1493
1486
|
if (!new RegExp('ParsleyField').test(ParsleyUtils.get(parsleyField, '__class__')))
|
1494
1487
|
throw new Error('ParsleyField or ParsleyFieldMultiple instance expected');
|
1495
|
-
if ('function'
|
1496
|
-
|
1488
|
+
if ('function' === typeof window.ParsleyValidator.validators[name])
|
1489
|
+
assert = window.ParsleyValidator.validators[name](requirements);
|
1490
|
+
if ('Assert' !== assert.__parentClass__)
|
1497
1491
|
throw new Error('Valid validator expected');
|
1498
|
-
var getPriority = function (
|
1492
|
+
var getPriority = function () {
|
1499
1493
|
if ('undefined' !== typeof parsleyField.options[name + 'Priority'])
|
1500
1494
|
return parsleyField.options[name + 'Priority'];
|
1501
|
-
return ParsleyUtils.get(
|
1495
|
+
return ParsleyUtils.get(assert, 'priority') || 2;
|
1502
1496
|
};
|
1503
|
-
priority = priority || getPriority(
|
1497
|
+
priority = priority || getPriority();
|
1504
1498
|
// If validator have a requirementsTransformer, execute it
|
1505
|
-
if ('function' === typeof
|
1506
|
-
requirements =
|
1507
|
-
|
1499
|
+
if ('function' === typeof assert.requirementsTransformer) {
|
1500
|
+
requirements = assert.requirementsTransformer();
|
1501
|
+
// rebuild assert with new requirements
|
1502
|
+
assert = window.ParsleyValidator.validators[name](requirements);
|
1503
|
+
}
|
1504
|
+
return $.extend(assert, {
|
1508
1505
|
name: name,
|
1509
1506
|
requirements: requirements,
|
1510
1507
|
priority: priority,
|
@@ -1538,9 +1535,9 @@ var Validator = ( function ( ) {
|
|
1538
1535
|
// # Public API
|
1539
1536
|
// Validate field and $.emit some events for mainly `ParsleyUI`
|
1540
1537
|
// @returns validationResult:
|
1541
|
-
// - `true` if all
|
1538
|
+
// - `true` if all constraints pass
|
1542
1539
|
// - `[]` if not required field and empty (not validated)
|
1543
|
-
// - `[Violation, [Violation
|
1540
|
+
// - `[Violation, [Violation...]]` if there were validation errors
|
1544
1541
|
validate: function (force) {
|
1545
1542
|
this.value = this.getValue();
|
1546
1543
|
// Field Validate event. `this.value` could be altered for custom needs
|
@@ -1560,7 +1557,8 @@ var Validator = ( function ( ) {
|
|
1560
1557
|
if (0 === priorities.length)
|
1561
1558
|
return this.validationResult = [];
|
1562
1559
|
// Value could be passed as argument, needed to add more power to 'parsley:field:validate'
|
1563
|
-
|
1560
|
+
if ('undefined' === typeof value || null === value)
|
1561
|
+
value = this.getValue();
|
1564
1562
|
// If a field is empty and not required, leave it alone, it's just fine
|
1565
1563
|
// Except if `data-parsley-validate-if-empty` explicitely added, useful for some custom validators
|
1566
1564
|
if (!value.length && !this._isRequired() && 'undefined' === typeof this.options.validateIfEmpty && true !== force)
|
@@ -1668,6 +1666,17 @@ var Validator = ( function ( ) {
|
|
1668
1666
|
// HTML5 max
|
1669
1667
|
else if ('undefined' !== typeof this.$element.attr('max'))
|
1670
1668
|
this.addConstraint('max', this.$element.attr('max'), undefined, true);
|
1669
|
+
|
1670
|
+
// length
|
1671
|
+
if ('undefined' !== typeof this.$element.attr('minlength') && 'undefined' !== typeof this.$element.attr('maxlength'))
|
1672
|
+
this.addConstraint('length', [this.$element.attr('minlength'), this.$element.attr('maxlength')], undefined, true);
|
1673
|
+
// HTML5 minlength
|
1674
|
+
else if ('undefined' !== typeof this.$element.attr('minlength'))
|
1675
|
+
this.addConstraint('minlength', this.$element.attr('minlength'), undefined, true);
|
1676
|
+
// HTML5 maxlength
|
1677
|
+
else if ('undefined' !== typeof this.$element.attr('maxlength'))
|
1678
|
+
this.addConstraint('maxlength', this.$element.attr('maxlength'), undefined, true);
|
1679
|
+
|
1671
1680
|
// html5 types
|
1672
1681
|
var type = this.$element.attr('type');
|
1673
1682
|
if ('undefined' === typeof type)
|
@@ -1813,7 +1822,7 @@ var Validator = ( function ( ) {
|
|
1813
1822
|
delete subscribed[name];
|
1814
1823
|
};
|
1815
1824
|
// $.emit(name [, arguments...]);
|
1816
|
-
// $.emit(name, instance [, arguments
|
1825
|
+
// $.emit(name, instance [, arguments...]);
|
1817
1826
|
$.emit = function (name, instance) {
|
1818
1827
|
if ('undefined' === typeof subscribed[name])
|
1819
1828
|
return;
|
@@ -1885,7 +1894,7 @@ if ('undefined' !== typeof window.ParsleyValidator)
|
|
1885
1894
|
this.__class__ = 'Parsley';
|
1886
1895
|
this.__version__ = '2.0.6';
|
1887
1896
|
this.__id__ = ParsleyUtils.hash(4);
|
1888
|
-
// Parsley must be
|
1897
|
+
// Parsley must be instantiated with a DOM element or jQuery $element
|
1889
1898
|
if ('undefined' === typeof element)
|
1890
1899
|
throw new Error('You must give an element');
|
1891
1900
|
if ('undefined' !== typeof parsleyFormInstance && 'ParsleyForm' !== parsleyFormInstance.__class__)
|
@@ -1920,7 +1929,7 @@ if ('undefined' !== typeof window.ParsleyValidator)
|
|
1920
1929
|
return (this.$element.is('input[type=radio], input[type=checkbox]') && 'undefined' === typeof this.options.multiple) || (this.$element.is('select') && 'undefined' !== typeof this.$element.attr('multiple'));
|
1921
1930
|
},
|
1922
1931
|
// Multiples fields are a real nightmare :(
|
1923
|
-
// Maybe some refacto would be appreciated here
|
1932
|
+
// Maybe some refacto would be appreciated here...
|
1924
1933
|
handleMultiple: function (parsleyFormInstance) {
|
1925
1934
|
var
|
1926
1935
|
that = this,
|
@@ -104,6 +104,12 @@ window.ParsleyExtend = $.extend(window.ParsleyExtend, {
|
|
104
104
|
}
|
105
105
|
|
106
106
|
return $.when.apply($, promises)
|
107
|
+
.done(function () {
|
108
|
+
$.emit('parsley:form:success', that);
|
109
|
+
})
|
110
|
+
.fail(function () {
|
111
|
+
$.emit('parsley:form:error', that);
|
112
|
+
})
|
107
113
|
.always(function () {
|
108
114
|
$.emit('parsley:form:validated', that);
|
109
115
|
});
|
@@ -259,7 +265,7 @@ window.ParsleyConfig.validators.remote = {
|
|
259
265
|
/*!
|
260
266
|
* Parsleyjs
|
261
267
|
* Guillaume Potier - <guillaume@wisembly.com>
|
262
|
-
* Version 2.0.6 - built
|
268
|
+
* Version 2.0.6 - built Sat Jan 24 2015 14:44:37
|
263
269
|
* MIT Licensed
|
264
270
|
*
|
265
271
|
*/
|
@@ -385,7 +391,7 @@ window.ParsleyConfig.validators.remote = {
|
|
385
391
|
validationThreshold: 3,
|
386
392
|
// Focused field on form validation error. 'fist'|'last'|'none'
|
387
393
|
focus: 'first',
|
388
|
-
// `$.Event()` that will trigger validation. eg: `keyup`, `change
|
394
|
+
// `$.Event()` that will trigger validation. eg: `keyup`, `change`...
|
389
395
|
trigger: false,
|
390
396
|
// Class that would be added on every failing validation Parsley field
|
391
397
|
errorClass: 'parsley-error',
|
@@ -412,7 +418,7 @@ window.ParsleyConfig.validators.remote = {
|
|
412
418
|
},
|
413
419
|
// ParsleyValidator validate proxy function . Could be replaced by third party scripts
|
414
420
|
validateThroughValidator: function (value, constraints, priority) {
|
415
|
-
return window.ParsleyValidator.validate
|
421
|
+
return window.ParsleyValidator.validate(value, constraints, priority);
|
416
422
|
},
|
417
423
|
// Subscribe an event and a handler for a specific field or a specific form
|
418
424
|
// If on a ParsleyForm instance, it will be attached to form instance and also
|
@@ -455,7 +461,7 @@ window.ParsleyConfig.validators.remote = {
|
|
455
461
|
/*!
|
456
462
|
* validator.js
|
457
463
|
* Guillaume Potier - <guillaume@wisembly.com>
|
458
|
-
* Version 1.0.
|
464
|
+
* Version 1.0.1 - built Mon Aug 25 2014 16:10:10
|
459
465
|
* MIT Licensed
|
460
466
|
*
|
461
467
|
*/
|
@@ -466,7 +472,7 @@ var Validator = ( function ( ) {
|
|
466
472
|
*/
|
467
473
|
var Validator = function ( options ) {
|
468
474
|
this.__class__ = 'Validator';
|
469
|
-
this.__version__ = '1.0.
|
475
|
+
this.__version__ = '1.0.1';
|
470
476
|
this.options = options || {};
|
471
477
|
this.bindingKey = this.options.bindingKey || '_validatorjsConstraint';
|
472
478
|
};
|
@@ -811,7 +817,7 @@ var Validator = ( function ( ) {
|
|
811
817
|
this.validate = function ( collection, group ) {
|
812
818
|
var result, validator = new Validator(), count = 0, failures = {}, groups = this.groups.length ? this.groups : group;
|
813
819
|
if ( !_isArray( collection ) )
|
814
|
-
throw new Violation( this,
|
820
|
+
throw new Violation( this, collection, { value: Validator.errorCode.must_be_an_array } );
|
815
821
|
for ( var i = 0; i < collection.length; i++ ) {
|
816
822
|
result = this.constraint ?
|
817
823
|
validator.validate( collection[ i ], this.constraint, groups ) :
|
@@ -1119,7 +1125,7 @@ var Validator = ( function ( ) {
|
|
1119
1125
|
window[ 'undefined' !== typeof validatorjs_ns ? validatorjs_ns : 'Validator' ] = exports;
|
1120
1126
|
}
|
1121
1127
|
|
1122
|
-
return exports;
|
1128
|
+
return exports;
|
1123
1129
|
} )( );
|
1124
1130
|
|
1125
1131
|
// This is needed for Browserify usage that requires Validator.js through module.exports
|
@@ -1229,7 +1235,7 @@ var Validator = ( function ( ) {
|
|
1229
1235
|
assert = new Validator.Assert().Regexp('^\\w+$', 'i');
|
1230
1236
|
break;
|
1231
1237
|
case 'url':
|
1232
|
-
assert = new Validator.Assert().Regexp('(https?:\\/\\/)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,
|
1238
|
+
assert = new Validator.Assert().Regexp('(https?:\\/\\/)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,24}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)', 'i');
|
1233
1239
|
break;
|
1234
1240
|
default:
|
1235
1241
|
throw new Error('validator type `' + type + '` is not supported');
|
@@ -1336,7 +1342,7 @@ var Validator = ( function ( ) {
|
|
1336
1342
|
var diff = this._diff(fieldInstance.validationResult, fieldInstance._ui.lastValidationResult);
|
1337
1343
|
// Then store current validation result for next reflow
|
1338
1344
|
fieldInstance._ui.lastValidationResult = fieldInstance.validationResult;
|
1339
|
-
// Field have been validated at least once if here. Useful for binded key events
|
1345
|
+
// Field have been validated at least once if here. Useful for binded key events...
|
1340
1346
|
fieldInstance._ui.validatedOnce = true;
|
1341
1347
|
// Handle valid / invalid / none field class
|
1342
1348
|
this.manageStatusClass(fieldInstance);
|
@@ -1374,8 +1380,10 @@ var Validator = ( function ( ) {
|
|
1374
1380
|
if ((diff.added.length || diff.kept.length)) {
|
1375
1381
|
if (0 === fieldInstance._ui.$errorsWrapper.find('.parsley-custom-error-message').length)
|
1376
1382
|
fieldInstance._ui.$errorsWrapper
|
1377
|
-
.append(
|
1378
|
-
|
1383
|
+
.append(
|
1384
|
+
$(fieldInstance.options.errorTemplate)
|
1385
|
+
.addClass('parsley-custom-error-message')
|
1386
|
+
);
|
1379
1387
|
return fieldInstance._ui.$errorsWrapper
|
1380
1388
|
.addClass('filled')
|
1381
1389
|
.find('.parsley-custom-error-message')
|
@@ -1395,13 +1403,15 @@ var Validator = ( function ( ) {
|
|
1395
1403
|
this.updateError(fieldInstance, diff.kept[i].assert.name, undefined, diff.kept[i].assert, true);
|
1396
1404
|
},
|
1397
1405
|
// TODO: strange API here, intuitive for manual usage with addError(pslyInstance, 'foo', 'bar')
|
1398
|
-
// but a little bit complex for above internal usage, with forced undefined
|
1406
|
+
// but a little bit complex for above internal usage, with forced undefined parameter...
|
1399
1407
|
addError: function (fieldInstance, name, message, assert, doNotUpdateClass) {
|
1400
1408
|
fieldInstance._ui.$errorsWrapper
|
1401
1409
|
.addClass('filled')
|
1402
|
-
.append(
|
1403
|
-
|
1404
|
-
|
1410
|
+
.append(
|
1411
|
+
$(fieldInstance.options.errorTemplate)
|
1412
|
+
.addClass('parsley-' + name)
|
1413
|
+
.html(message || this._getErrorMessage(fieldInstance, assert))
|
1414
|
+
);
|
1405
1415
|
if (true !== doNotUpdateClass)
|
1406
1416
|
this._errorClass(fieldInstance);
|
1407
1417
|
},
|
@@ -1514,7 +1524,7 @@ var Validator = ( function ( ) {
|
|
1514
1524
|
// If this function returned a valid existing DOM element, go for it
|
1515
1525
|
if ('undefined' !== typeof $handler && $handler.length)
|
1516
1526
|
return $handler;
|
1517
|
-
// Otherwise, if simple element (input, texatrea, select
|
1527
|
+
// Otherwise, if simple element (input, texatrea, select...) it will perfectly host the classes
|
1518
1528
|
if ('undefined' === typeof fieldInstance.options.multiple || fieldInstance.$element.is('select'))
|
1519
1529
|
return fieldInstance.$element;
|
1520
1530
|
// But if multiple element (radio, checkbox), that would be their parent
|
@@ -1535,14 +1545,11 @@ var Validator = ( function ( ) {
|
|
1535
1545
|
return 'undefined' === typeof fieldInstance.options.multiple ? fieldInstance.$element.after(fieldInstance._ui.$errorsWrapper) : fieldInstance.$element.parent().after(fieldInstance._ui.$errorsWrapper);
|
1536
1546
|
},
|
1537
1547
|
actualizeTriggers: function (fieldInstance) {
|
1538
|
-
var
|
1539
|
-
// Remove Parsley events already binded on this field
|
1548
|
+
var $toBind = fieldInstance.$element;
|
1540
1549
|
if (fieldInstance.options.multiple)
|
1541
|
-
$('[' + fieldInstance.options.namespace + 'multiple="' + fieldInstance.options.multiple + '"]')
|
1542
|
-
|
1543
|
-
|
1544
|
-
else
|
1545
|
-
fieldInstance.$element.off('.Parsley');
|
1550
|
+
$toBind = $('[' + fieldInstance.options.namespace + 'multiple="' + fieldInstance.options.multiple + '"]')
|
1551
|
+
// Remove Parsley events already binded on this field
|
1552
|
+
$toBind.off('.Parsley');
|
1546
1553
|
// If no trigger is set, all good
|
1547
1554
|
if (false === fieldInstance.options.trigger)
|
1548
1555
|
return;
|
@@ -1550,23 +1557,13 @@ var Validator = ( function ( ) {
|
|
1550
1557
|
if ('' === triggers)
|
1551
1558
|
return;
|
1552
1559
|
// Bind fieldInstance.eventValidate if exists (for parsley.ajax for example), ParsleyUI.eventValidate otherwise
|
1553
|
-
|
1554
|
-
|
1555
|
-
|
1556
|
-
triggers.split(' ').join('.Parsley ') + '.Parsley',
|
1557
|
-
false,
|
1558
|
-
$.proxy('function' === typeof fieldInstance.eventValidate ? fieldInstance.eventValidate : that.eventValidate, fieldInstance));
|
1559
|
-
});
|
1560
|
-
else
|
1561
|
-
fieldInstance.$element
|
1562
|
-
.on(
|
1563
|
-
triggers.split(' ').join('.Parsley ') + '.Parsley',
|
1564
|
-
false,
|
1565
|
-
$.proxy('function' === typeof fieldInstance.eventValidate ? fieldInstance.eventValidate : this.eventValidate, fieldInstance));
|
1560
|
+
$toBind.on(
|
1561
|
+
triggers.split(' ').join('.Parsley ') + '.Parsley',
|
1562
|
+
$.proxy('function' === typeof fieldInstance.eventValidate ? fieldInstance.eventValidate : this.eventValidate, fieldInstance));
|
1566
1563
|
},
|
1567
1564
|
// Called through $.proxy with fieldInstance. `this` context is ParsleyField
|
1568
1565
|
eventValidate: function(event) {
|
1569
|
-
// For keyup, keypress, keydown
|
1566
|
+
// For keyup, keypress, keydown... events that could be a little bit obstrusive
|
1570
1567
|
// do not validate if val length < min threshold on first validation. Once field have been validated once and info
|
1571
1568
|
// about success or failure have been displayed, always validate with this trigger to reflect every yalidation change.
|
1572
1569
|
if (new RegExp('key').test(event.type))
|
@@ -1695,9 +1692,9 @@ var Validator = ( function ( ) {
|
|
1695
1692
|
this.submitEvent = event;
|
1696
1693
|
this.validationResult = true;
|
1697
1694
|
var fieldValidationResult = [];
|
1695
|
+
$.emit('parsley:form:validate', this);
|
1698
1696
|
// Refresh form DOM options and form's fields that could have changed
|
1699
1697
|
this._refreshFields();
|
1700
|
-
$.emit('parsley:form:validate', this);
|
1701
1698
|
// loop through fields to validate them one by one
|
1702
1699
|
for (var i = 0; i < this.fields.length; i++) {
|
1703
1700
|
// do not validate a field if not the same as given validation group
|
@@ -1707,6 +1704,7 @@ var Validator = ( function ( ) {
|
|
1707
1704
|
if (true !== fieldValidationResult && fieldValidationResult.length > 0 && this.validationResult)
|
1708
1705
|
this.validationResult = false;
|
1709
1706
|
}
|
1707
|
+
$.emit('parsley:form:' + (this.validationResult ? 'success' : 'error'), this);
|
1710
1708
|
$.emit('parsley:form:validated', this);
|
1711
1709
|
return this.validationResult;
|
1712
1710
|
},
|
@@ -1748,21 +1746,26 @@ var Validator = ( function ( ) {
|
|
1748
1746
|
};
|
1749
1747
|
|
1750
1748
|
var ConstraintFactory = function (parsleyField, name, requirements, priority, isDomConstraint) {
|
1749
|
+
var assert = {};
|
1751
1750
|
if (!new RegExp('ParsleyField').test(ParsleyUtils.get(parsleyField, '__class__')))
|
1752
1751
|
throw new Error('ParsleyField or ParsleyFieldMultiple instance expected');
|
1753
|
-
if ('function'
|
1754
|
-
|
1752
|
+
if ('function' === typeof window.ParsleyValidator.validators[name])
|
1753
|
+
assert = window.ParsleyValidator.validators[name](requirements);
|
1754
|
+
if ('Assert' !== assert.__parentClass__)
|
1755
1755
|
throw new Error('Valid validator expected');
|
1756
|
-
var getPriority = function (
|
1756
|
+
var getPriority = function () {
|
1757
1757
|
if ('undefined' !== typeof parsleyField.options[name + 'Priority'])
|
1758
1758
|
return parsleyField.options[name + 'Priority'];
|
1759
|
-
return ParsleyUtils.get(
|
1759
|
+
return ParsleyUtils.get(assert, 'priority') || 2;
|
1760
1760
|
};
|
1761
|
-
priority = priority || getPriority(
|
1761
|
+
priority = priority || getPriority();
|
1762
1762
|
// If validator have a requirementsTransformer, execute it
|
1763
|
-
if ('function' === typeof
|
1764
|
-
requirements =
|
1765
|
-
|
1763
|
+
if ('function' === typeof assert.requirementsTransformer) {
|
1764
|
+
requirements = assert.requirementsTransformer();
|
1765
|
+
// rebuild assert with new requirements
|
1766
|
+
assert = window.ParsleyValidator.validators[name](requirements);
|
1767
|
+
}
|
1768
|
+
return $.extend(assert, {
|
1766
1769
|
name: name,
|
1767
1770
|
requirements: requirements,
|
1768
1771
|
priority: priority,
|
@@ -1796,9 +1799,9 @@ var Validator = ( function ( ) {
|
|
1796
1799
|
// # Public API
|
1797
1800
|
// Validate field and $.emit some events for mainly `ParsleyUI`
|
1798
1801
|
// @returns validationResult:
|
1799
|
-
// - `true` if all
|
1802
|
+
// - `true` if all constraints pass
|
1800
1803
|
// - `[]` if not required field and empty (not validated)
|
1801
|
-
// - `[Violation, [Violation
|
1804
|
+
// - `[Violation, [Violation...]]` if there were validation errors
|
1802
1805
|
validate: function (force) {
|
1803
1806
|
this.value = this.getValue();
|
1804
1807
|
// Field Validate event. `this.value` could be altered for custom needs
|
@@ -1818,7 +1821,8 @@ var Validator = ( function ( ) {
|
|
1818
1821
|
if (0 === priorities.length)
|
1819
1822
|
return this.validationResult = [];
|
1820
1823
|
// Value could be passed as argument, needed to add more power to 'parsley:field:validate'
|
1821
|
-
|
1824
|
+
if ('undefined' === typeof value || null === value)
|
1825
|
+
value = this.getValue();
|
1822
1826
|
// If a field is empty and not required, leave it alone, it's just fine
|
1823
1827
|
// Except if `data-parsley-validate-if-empty` explicitely added, useful for some custom validators
|
1824
1828
|
if (!value.length && !this._isRequired() && 'undefined' === typeof this.options.validateIfEmpty && true !== force)
|
@@ -1926,6 +1930,17 @@ var Validator = ( function ( ) {
|
|
1926
1930
|
// HTML5 max
|
1927
1931
|
else if ('undefined' !== typeof this.$element.attr('max'))
|
1928
1932
|
this.addConstraint('max', this.$element.attr('max'), undefined, true);
|
1933
|
+
|
1934
|
+
// length
|
1935
|
+
if ('undefined' !== typeof this.$element.attr('minlength') && 'undefined' !== typeof this.$element.attr('maxlength'))
|
1936
|
+
this.addConstraint('length', [this.$element.attr('minlength'), this.$element.attr('maxlength')], undefined, true);
|
1937
|
+
// HTML5 minlength
|
1938
|
+
else if ('undefined' !== typeof this.$element.attr('minlength'))
|
1939
|
+
this.addConstraint('minlength', this.$element.attr('minlength'), undefined, true);
|
1940
|
+
// HTML5 maxlength
|
1941
|
+
else if ('undefined' !== typeof this.$element.attr('maxlength'))
|
1942
|
+
this.addConstraint('maxlength', this.$element.attr('maxlength'), undefined, true);
|
1943
|
+
|
1929
1944
|
// html5 types
|
1930
1945
|
var type = this.$element.attr('type');
|
1931
1946
|
if ('undefined' === typeof type)
|
@@ -2071,7 +2086,7 @@ var Validator = ( function ( ) {
|
|
2071
2086
|
delete subscribed[name];
|
2072
2087
|
};
|
2073
2088
|
// $.emit(name [, arguments...]);
|
2074
|
-
// $.emit(name, instance [, arguments
|
2089
|
+
// $.emit(name, instance [, arguments...]);
|
2075
2090
|
$.emit = function (name, instance) {
|
2076
2091
|
if ('undefined' === typeof subscribed[name])
|
2077
2092
|
return;
|
@@ -2143,7 +2158,7 @@ if ('undefined' !== typeof window.ParsleyValidator)
|
|
2143
2158
|
this.__class__ = 'Parsley';
|
2144
2159
|
this.__version__ = '2.0.6';
|
2145
2160
|
this.__id__ = ParsleyUtils.hash(4);
|
2146
|
-
// Parsley must be
|
2161
|
+
// Parsley must be instantiated with a DOM element or jQuery $element
|
2147
2162
|
if ('undefined' === typeof element)
|
2148
2163
|
throw new Error('You must give an element');
|
2149
2164
|
if ('undefined' !== typeof parsleyFormInstance && 'ParsleyForm' !== parsleyFormInstance.__class__)
|
@@ -2178,7 +2193,7 @@ if ('undefined' !== typeof window.ParsleyValidator)
|
|
2178
2193
|
return (this.$element.is('input[type=radio], input[type=checkbox]') && 'undefined' === typeof this.options.multiple) || (this.$element.is('select') && 'undefined' !== typeof this.$element.attr('multiple'));
|
2179
2194
|
},
|
2180
2195
|
// Multiples fields are a real nightmare :(
|
2181
|
-
// Maybe some refacto would be appreciated here
|
2196
|
+
// Maybe some refacto would be appreciated here...
|
2182
2197
|
handleMultiple: function (parsleyFormInstance) {
|
2183
2198
|
var
|
2184
2199
|
that = this,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parsley-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jiri Pospisil
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -42,7 +42,10 @@ files:
|
|
42
42
|
- update.sh
|
43
43
|
- vendor/assets/javascripts/parsley.i18n.ar.js
|
44
44
|
- vendor/assets/javascripts/parsley.i18n.bg.js
|
45
|
+
- vendor/assets/javascripts/parsley.i18n.cs.extra.js
|
46
|
+
- vendor/assets/javascripts/parsley.i18n.cs.js
|
45
47
|
- vendor/assets/javascripts/parsley.i18n.da.js
|
48
|
+
- vendor/assets/javascripts/parsley.i18n.de.extra.js
|
46
49
|
- vendor/assets/javascripts/parsley.i18n.de.js
|
47
50
|
- vendor/assets/javascripts/parsley.i18n.en.extra.js
|
48
51
|
- vendor/assets/javascripts/parsley.i18n.en.js
|
@@ -74,6 +77,7 @@ files:
|
|
74
77
|
- vendor/assets/javascripts/parsley.i18n.tr.js
|
75
78
|
- vendor/assets/javascripts/parsley.i18n.zh_cn.extra.js
|
76
79
|
- vendor/assets/javascripts/parsley.i18n.zh_cn.js
|
80
|
+
- vendor/assets/javascripts/parsley.i18n.zh_tw.js
|
77
81
|
- vendor/assets/javascripts/parsley.js
|
78
82
|
- vendor/assets/javascripts/parsley.remote.js
|
79
83
|
- vendor/assets/stylesheets/parsley.css
|
@@ -97,8 +101,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
101
|
version: '0'
|
98
102
|
requirements: []
|
99
103
|
rubyforge_project:
|
100
|
-
rubygems_version: 2.
|
104
|
+
rubygems_version: 2.4.5
|
101
105
|
signing_key:
|
102
106
|
specification_version: 4
|
103
107
|
summary: Parsley.js bundled for Rails Asset Pipeline
|
104
108
|
test_files: []
|
109
|
+
has_rdoc:
|