Built files from Bizgaze WebServer
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

parsley.min.js 45KB

1234567891011121314151617181920212223
  1. /*!
  2. * Parsley.js
  3. * Version 2.4.3 - built Sat, Jun 18th 2016, 9:01 pm
  4. * http://parsleyjs.org
  5. * Guillaume Potier - <guillaume@wisembly.com>
  6. * Marc-Andre Lafortune - <petroselinum@marc-andre.ca>
  7. * MIT Licensed
  8. */
  9. function _toConsumableArray(e) { if (Array.isArray(e)) { for (var t = 0, i = Array(e.length) ; t < e.length; t++) i[t] = e[t]; return i } return Array.from(e) } var _slice = Array.prototype.slice; !function (e, t) { "object" == typeof exports && "undefined" != typeof module ? module.exports = t(require("jquery")) : "function" == typeof define && define.amd ? define(["jquery"], t) : e.parsley = t(e.jQuery) }(this, function (e) {
  10. "use strict"; function t(e, t) { return e.parsleyAdaptedCallback || (e.parsleyAdaptedCallback = function () { var i = Array.prototype.slice.call(arguments, 0); i.unshift(this), e.apply(t || R, i) }), e.parsleyAdaptedCallback } function i(e) { return 0 === e.lastIndexOf(q, 0) ? e.substr(q.length) : e }/**
  11. * inputevent - Alleviate browser bugs for input events
  12. * https://github.com/marcandre/inputevent
  13. * @version v0.0.3 - (built Thu, Apr 14th 2016, 5:58 pm)
  14. * @author Marc-Andre Lafortune <github@marc-andre.ca>
  15. * @license MIT
  16. */
  17. function n() { var t = this, i = window || global; e.extend(this, { isNativeEvent: function (e) { return e.originalEvent && e.originalEvent.isTrusted !== !1 }, fakeInputEvent: function (i) { t.isNativeEvent(i) && e(i.target).trigger("input") }, misbehaves: function (i) { t.isNativeEvent(i) && (t.behavesOk(i), e(document).on("change.inputevent", i.data.selector, t.fakeInputEvent), t.fakeInputEvent(i)) }, behavesOk: function (i) { t.isNativeEvent(i) && e(document).off("input.inputevent", i.data.selector, t.behavesOk).off("change.inputevent", i.data.selector, t.misbehaves) }, install: function () { if (!i.inputEventPatched) { i.inputEventPatched = "0.0.3"; for (var n = ["select", 'input[type="checkbox"]', 'input[type="radio"]', 'input[type="file"]'], r = 0; r < n.length; r++) { var s = n[r]; e(document).on("input.inputevent", s, { selector: s }, t.behavesOk).on("change.inputevent", s, { selector: s }, t.misbehaves) } } }, uninstall: function () { delete i.inputEventPatched, e(document).off(".inputevent") } }) } var r = 1, s = {}, a = { attr: function (e, t, i) { var n, r, s, a = new RegExp("^" + t, "i"); if ("undefined" == typeof i) i = {}; else for (n in i) i.hasOwnProperty(n) && delete i[n]; if ("undefined" == typeof e || "undefined" == typeof e[0]) return i; for (s = e[0].attributes, n = s.length; n--;) r = s[n], r && r.specified && a.test(r.name) && (i[this.camelize(r.name.slice(t.length))] = this.deserializeValue(r.value)); return i }, checkAttr: function (e, t, i) { return e.is("[" + t + i + "]") }, setAttr: function (e, t, i, n) { e[0].setAttribute(this.dasherize(t + i), String(n)) }, generateID: function () { return "" + r++ }, deserializeValue: function (t) { var i; try { return t ? "true" == t || ("false" == t ? !1 : "null" == t ? null : isNaN(i = Number(t)) ? /^[\[\{]/.test(t) ? e.parseJSON(t) : t : i) : t } catch (n) { return t } }, camelize: function (e) { return e.replace(/-+(.)?/g, function (e, t) { return t ? t.toUpperCase() : "" }) }, dasherize: function (e) { return e.replace(/::/g, "/").replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2").replace(/([a-z\d])([A-Z])/g, "$1_$2").replace(/_/g, "-").toLowerCase() }, warn: function () { var e; window.console && "function" == typeof window.console.warn && (e = window.console).warn.apply(e, arguments) }, warnOnce: function (e) { s[e] || (s[e] = !0, this.warn.apply(this, arguments)) }, _resetWarnings: function () { s = {} }, trimString: function (e) { return e.replace(/^\s+|\s+$/g, "") }, namespaceEvents: function (t, i) { return t = this.trimString(t || "").split(/\s+/), t[0] ? e.map(t, function (e) { return e + "." + i }).join(" ") : "" }, difference: function (t, i) { var n = []; return e.each(t, function (e, t) { -1 == i.indexOf(t) && n.push(t) }), n }, all: function (t) { return e.when.apply(e, _toConsumableArray(t).concat([42, 42])) }, objectCreate: Object.create || function () { var e = function () { }; return function (t) { if (arguments.length > 1) throw Error("Second argument not supported"); if ("object" != typeof t) throw TypeError("Argument must be an object"); e.prototype = t; var i = new e; return e.prototype = null, i } }() }, o = a, l = { namespace: "data-parsley-", inputs: "input, textarea, select", excluded: "input[type=button], input[type=submit], input[type=reset], input[type=hidden]", priorityEnabled: !0, multiple: null, group: null, uiEnabled: !0, validationThreshold: 3, focus: "first", trigger: !1, triggerAfterFailure: "input", errorClass: "parsley-error", successClass: "parsley-success", classHandler: function (e) { }, errorsContainer: function (e) { }, errorsWrapper: '<ul class="parsley-errors-list " style="display:none"></ul>', errorTemplate: "<li></li>" }, u = function () { this.__id__ = o.generateID() }; u.prototype = { asyncSupport: !0, _pipeAccordingToValidationResult: function () { var t = this, i = function () { var i = e.Deferred(); return !0 !== t.validationResult && i.reject(), i.resolve().promise() }; return [i, i] }, actualizeOptions: function () { return o.attr(this.$element, this.options.namespace, this.domOptions), this.parent && this.parent.actualizeOptions && this.parent.actualizeOptions(), this }, _resetOptions: function (e) { this.domOptions = o.objectCreate(this.parent.options), this.options = o.objectCreate(this.domOptions); for (var t in e) e.hasOwnProperty(t) && (this.options[t] = e[t]); this.actualizeOptions() }, _listeners: null, on: function (e, t) { this._listeners = this._listeners || {}; var i = this._listeners[e] = this._listeners[e] || []; return i.push(t), this }, subscribe: function (t, i) { e.listenTo(this, t.toLowerCase(), i) }, off: function (e, t) { var i = this._listeners && this._listeners[e]; if (i) if (t) for (var n = i.length; n--;) i[n] === t && i.splice(n, 1); else delete this._listeners[e]; return this }, unsubscribe: function (t, i) { e.unsubscribeTo(this, t.toLowerCase()) }, trigger: function (e, t, i) { t = t || this; var n, r = this._listeners && this._listeners[e]; if (r) for (var s = r.length; s--;) if (n = r[s].call(t, t, i), n === !1) return n; return this.parent ? this.parent.trigger(e, t, i) : !0 }, reset: function () { if ("ParsleyForm" !== this.__class__) return this._resetUI(), this._trigger("reset"); for (var e = 0; e < this.fields.length; e++) this.fields[e].reset(); this._trigger("reset") }, destroy: function () { if (this._destroyUI(), "ParsleyForm" !== this.__class__) return this.$element.removeData("Parsley"), this.$element.removeData("ParsleyFieldMultiple"), void this._trigger("destroy"); for (var e = 0; e < this.fields.length; e++) this.fields[e].destroy(); this.$element.removeData("Parsley"), this._trigger("destroy") }, asyncIsValid: function (e, t) { return o.warnOnce("asyncIsValid is deprecated; please use whenValid instead"), this.whenValid({ group: e, force: t }) }, _findRelated: function () { return this.options.multiple ? this.parent.$element.find("[" + this.options.namespace + 'multiple="' + this.options.multiple + '"]') : this.$element } }; var d = { string: function (e) { return e }, integer: function (e) { if (isNaN(e)) throw 'Requirement is not an integer: "' + e + '"'; return parseInt(e, 10) }, number: function (e) { if (isNaN(e)) throw 'Requirement is not a number: "' + e + '"'; return parseFloat(e) }, reference: function (t) { var i = e(t); if (0 === i.length) throw 'No such reference: "' + t + '"'; return i }, "boolean": function (e) { return "false" !== e }, object: function (e) { return o.deserializeValue(e) }, regexp: function (e) { var t = ""; return /^\/.*\/(?:[gimy]*)$/.test(e) ? (t = e.replace(/.*\/([gimy]*)$/, "$1"), e = e.replace(new RegExp("^/(.*?)/" + t + "$"), "$1")) : e = "^" + e + "$", new RegExp(e, t) } }, h = function (e, t) { var i = e.match(/^\s*\[(.*)\]\s*$/); if (!i) throw 'Requirement is not an array: "' + e + '"'; var n = i[1].split(",").map(o.trimString); if (n.length !== t) throw "Requirement has " + n.length + " values when " + t + " are needed"; return n }, p = function (e, t) { var i = d[e || "string"]; if (!i) throw 'Unknown requirement specification: "' + e + '"'; return i(t) }, c = function (e, t, i) { var n = null, r = {}; for (var s in e) if (s) { var a = i(s); "string" == typeof a && (a = p(e[s], a)), r[s] = a } else n = p(e[s], t); return [n, r] }, f = function (t) { e.extend(!0, this, t) }; f.prototype = { validate: function (t, i) { if (this.fn) return arguments.length > 3 && (i = [].slice.call(arguments, 1, -1)), this.fn.call(this, t, i); if (e.isArray(t)) { if (!this.validateMultiple) throw "Validator `" + this.name + "` does not handle multiple values"; return this.validateMultiple.apply(this, arguments) } if (this.validateNumber) return isNaN(t) ? !1 : (arguments[0] = parseFloat(arguments[0]), this.validateNumber.apply(this, arguments)); if (this.validateString) return this.validateString.apply(this, arguments); throw "Validator `" + this.name + "` only handles multiple values" }, parseRequirements: function (t, i) { if ("string" != typeof t) return e.isArray(t) ? t : [t]; var n = this.requirementType; if (e.isArray(n)) { for (var r = h(t, n.length), s = 0; s < r.length; s++) r[s] = p(n[s], r[s]); return r } return e.isPlainObject(n) ? c(n, t, i) : [p(n, t)] }, requirementType: "string", priority: 2 }; var m = function (e, t) { this.__class__ = "ParsleyValidatorRegistry", this.locale = "en", this.init(e || {}, t || {}) }, g = { email: /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i, number: /^-?(\d*\.)?\d+(e[-+]?\d+)?$/i, integer: /^-?\d+$/, digits: /^\d+$/, alphanum: /^\w+$/i, url: new RegExp("^(?:(?:https?|ftp)://)?(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:/\\S*)?$", "i") }; g.range = g.number; var v = function (e) { var t = ("" + e).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/); return t ? Math.max(0, (t[1] ? t[1].length : 0) - (t[2] ? +t[2] : 0)) : 0 }; m.prototype = { init: function (t, i) { this.catalog = i, this.validators = e.extend({}, this.validators); for (var n in t) this.addValidator(n, t[n].fn, t[n].priority); window.Parsley.trigger("parsley:validator:init") }, setLocale: function (e) { if ("undefined" == typeof this.catalog[e]) throw new Error(e + " is not available in the catalog"); return this.locale = e, this }, addCatalog: function (e, t, i) { return "object" == typeof t && (this.catalog[e] = t), !0 === i ? this.setLocale(e) : this }, addMessage: function (e, t, i) { return "undefined" == typeof this.catalog[e] && (this.catalog[e] = {}), this.catalog[e][t] = i, this }, addMessages: function (e, t) { for (var i in t) this.addMessage(e, i, t[i]); return this }, addValidator: function (e, t, i) { if (this.validators[e]) o.warn('Validator "' + e + '" is already defined.'); else if (l.hasOwnProperty(e)) return void o.warn('"' + e + '" is a restricted keyword and is not a valid validator name.'); return this._setValidator.apply(this, arguments) }, updateValidator: function (e, t, i) { return this.validators[e] ? this._setValidator.apply(this, arguments) : (o.warn('Validator "' + e + '" is not already defined.'), this.addValidator.apply(this, arguments)) }, removeValidator: function (e) { return this.validators[e] || o.warn('Validator "' + e + '" is not defined.'), delete this.validators[e], this }, _setValidator: function (e, t, i) { "object" != typeof t && (t = { fn: t, priority: i }), t.validate || (t = new f(t)), this.validators[e] = t; for (var n in t.messages || {}) this.addMessage(n, e, t.messages[n]); return this }, getErrorMessage: function (e) { var t; if ("type" === e.name) { var i = this.catalog[this.locale][e.name] || {}; t = i[e.requirements] } else t = this.formatMessage(this.catalog[this.locale][e.name], e.requirements); return t || this.catalog[this.locale].defaultMessage || this.catalog.en.defaultMessage }, formatMessage: function (e, t) { if ("object" == typeof t) { for (var i in t) e = this.formatMessage(e, t[i]); return e } return "string" == typeof e ? e.replace(/%s/i, t) : "" }, validators: { notblank: { validateString: function (e) { return /\S/.test(e) }, priority: 2 }, required: { validateMultiple: function (e) { return e.length > 0 }, validateString: function (e) { return /\S/.test(e) }, priority: 512 }, type: { validateString: function (e, t) { var i = arguments.length <= 2 || void 0 === arguments[2] ? {} : arguments[2], n = i.step, r = void 0 === n ? "1" : n, s = i.base, a = void 0 === s ? 0 : s, o = g[t]; if (!o) throw new Error("validator type `" + t + "` is not supported"); if (!o.test(e)) return !1; if ("number" === t && !/^any$/i.test(r || "")) { var l = Number(e), u = Math.max(v(r), v(a)); if (v(l) > u) return !1; var d = function (e) { return Math.round(e * Math.pow(10, u)) }; if ((d(l) - d(a)) % d(r) != 0) return !1 } return !0 }, requirementType: { "": "string", step: "string", base: "number" }, priority: 256 }, pattern: { validateString: function (e, t) { return t.test(e) }, requirementType: "regexp", priority: 64 }, minlength: { validateString: function (e, t) { return e.length >= t }, requirementType: "integer", priority: 30 }, maxlength: { validateString: function (e, t) { return e.length <= t }, requirementType: "integer", priority: 30 }, length: { validateString: function (e, t, i) { return e.length >= t && e.length <= i }, requirementType: ["integer", "integer"], priority: 30 }, mincheck: { validateMultiple: function (e, t) { return e.length >= t }, requirementType: "integer", priority: 30 }, maxcheck: { validateMultiple: function (e, t) { return e.length <= t }, requirementType: "integer", priority: 30 }, check: { validateMultiple: function (e, t, i) { return e.length >= t && e.length <= i }, requirementType: ["integer", "integer"], priority: 30 }, min: { validateNumber: function (e, t) { return e >= t }, requirementType: "number", priority: 30 }, max: { validateNumber: function (e, t) { return t >= e }, requirementType: "number", priority: 30 }, range: { validateNumber: function (e, t, i) { return e >= t && i >= e }, requirementType: ["number", "number"], priority: 30 }, equalto: { validateString: function (t, i) { var n = e(i); return n.length ? t === n.val() : t === i }, priority: 256 } } }; var y = {}, _ = function k(e, t, i) { for (var n = [], r = [], s = 0; s < e.length; s++) { for (var a = !1, o = 0; o < t.length; o++) if (e[s].assert.name === t[o].assert.name) { a = !0; break } a ? r.push(e[s]) : n.push(e[s]) } return { kept: r, added: n, removed: i ? [] : k(t, e, !0).added } }; y.Form = { _actualizeTriggers: function () { var e = this; this.$element.on("submit.Parsley", function (t) { e.onSubmitValidate(t) }), this.$element.on("click.Parsley", 'input[type="submit"], button[type="submit"]', function (t) { e.onSubmitButton(t) }), !1 !== this.options.uiEnabled && this.$element.attr("novalidate", "") }, focus: function () { if (this._focusedField = null, !0 === this.validationResult || "none" === this.options.focus) return null; for (var e = 0; e < this.fields.length; e++) { var t = this.fields[e]; if (!0 !== t.validationResult && t.validationResult.length > 0 && "undefined" == typeof t.options.noFocus && (this._focusedField = t.$element, "first" === this.options.focus)) break } return null === this._focusedField ? null : this._focusedField.focus() }, _destroyUI: function () { this.$element.off(".Parsley") } }, y.Field = { _reflowUI: function () { if (this._buildUI(), this._ui) { var e = _(this.validationResult, this._ui.lastValidationResult); this._ui.lastValidationResult = this.validationResult, this._manageStatusClass(), this._manageErrorsMessages(e), this._actualizeTriggers(), !e.kept.length && !e.added.length || this._failedOnce || (this._failedOnce = !0, this._actualizeTriggers()) } }, getErrorsMessages: function () { if (!0 === this.validationResult) return []; for (var e = [], t = 0; t < this.validationResult.length; t++) e.push(this.validationResult[t].errorMessage || this._getErrorMessage(this.validationResult[t].assert)); return e }, addError: function (e) { var t = arguments.length <= 1 || void 0 === arguments[1] ? {} : arguments[1], i = t.message, n = t.assert, r = t.updateClass, s = void 0 === r ? !0 : r; this._buildUI(), this._addError(e, { message: i, assert: n }), s && this._errorClass() }, updateError: function (e) { var t = arguments.length <= 1 || void 0 === arguments[1] ? {} : arguments[1], i = t.message, n = t.assert, r = t.updateClass, s = void 0 === r ? !0 : r; this._buildUI(), this._updateError(e, { message: i, assert: n }), s && this._errorClass() }, removeError: function (e) { var t = arguments.length <= 1 || void 0 === arguments[1] ? {} : arguments[1], i = t.updateClass, n = void 0 === i ? !0 : i; this._buildUI(), this._removeError(e), n && this._manageStatusClass() }, _manageStatusClass: function () { this.hasConstraints() && this.needsValidation() && !0 === this.validationResult ? this._successClass() : this.validationResult.length > 0 ? this._errorClass() : this._resetClass() }, _manageErrorsMessages: function (t) { if ("undefined" == typeof this.options.errorsMessagesDisabled) { if ("undefined" != typeof this.options.errorMessage) return t.added.length || t.kept.length ? (this._insertErrorWrapper(), 0 === this._ui.$errorsWrapper.find(".parsley-custom-error-message").length && this._ui.$errorsWrapper.append(e(this.options.errorTemplate).addClass("parsley-custom-error-message")), this._ui.$errorsWrapper.addClass("filled").find(".parsley-custom-error-message").html(this.options.errorMessage)) : this._ui.$errorsWrapper.removeClass("filled").find(".parsley-custom-error-message").remove(); for (var i = 0; i < t.removed.length; i++) this._removeError(t.removed[i].assert.name); for (i = 0; i < t.added.length; i++) this._addError(t.added[i].assert.name, { message: t.added[i].errorMessage, assert: t.added[i].assert }); for (i = 0; i < t.kept.length; i++) this._updateError(t.kept[i].assert.name, { message: t.kept[i].errorMessage, assert: t.kept[i].assert }) } }, _addError: function (t, i) { var n = i.message, r = i.assert; this._insertErrorWrapper(), this._ui.$errorsWrapper.addClass("filled").append(e(this.options.errorTemplate).addClass("parsley-" + t).html(n || this._getErrorMessage(r))) }, _updateError: function (e, t) { var i = t.message, n = t.assert; this._ui.$errorsWrapper.addClass("filled").find(".parsley-" + e).html(i || this._getErrorMessage(n)) }, _removeError: function (e) { this._ui.$errorsWrapper.removeClass("filled").find(".parsley-" + e).remove() }, _getErrorMessage: function (e) { var t = e.name + "Message"; return "undefined" != typeof this.options[t] ? window.Parsley.formatMessage(this.options[t], e.requirements) : window.Parsley.getErrorMessage(e) }, _buildUI: function () { if (!this._ui && !1 !== this.options.uiEnabled) { var t = {}; this.$element.attr(this.options.namespace + "id", this.__id__), t.$errorClassHandler = this._manageClassHandler(), t.errorsWrapperId = "parsley-id-" + (this.options.multiple ? "multiple-" + this.options.multiple : this.__id__), t.$errorsWrapper = e(this.options.errorsWrapper).attr("id", t.errorsWrapperId), t.lastValidationResult = [], t.validationInformationVisible = !1, this._ui = t } }, _manageClassHandler: function () { if ("string" == typeof this.options.classHandler && e(this.options.classHandler).length) return e(this.options.classHandler); var t = this.options.classHandler.call(this, this); return "undefined" != typeof t && t.length ? t : !this.options.multiple || this.$element.is("select") ? this.$element : this.$element.parent() }, _insertErrorWrapper: function () { var t; if (0 !== this._ui.$errorsWrapper.parent().length) return this._ui.$errorsWrapper.parent(); if ("string" == typeof this.options.errorsContainer) { if (e(this.options.errorsContainer).length) return e(this.options.errorsContainer).append(this._ui.$errorsWrapper); o.warn("The errors container `" + this.options.errorsContainer + "` does not exist in DOM") } else "function" == typeof this.options.errorsContainer && (t = this.options.errorsContainer.call(this, this)); if ("undefined" != typeof t && t.length) return t.append(this._ui.$errorsWrapper); var i = this.$element; return this.options.multiple && (i = i.parent()), i.after(this._ui.$errorsWrapper) }, _actualizeTriggers: function () { var e, t = this, i = this._findRelated(); i.off(".Parsley"), this._failedOnce ? i.on(o.namespaceEvents(this.options.triggerAfterFailure, "Parsley"), function () { t.validate() }) : (e = o.namespaceEvents(this.options.trigger, "Parsley")) && i.on(e, function (e) { t._eventValidate(e) }) }, _eventValidate: function (e) { !(!/key|input/.test(e.type) || this._ui && this._ui.validationInformationVisible) && this.getValue().length <= this.options.validationThreshold || this.validate() }, _resetUI: function () { this._failedOnce = !1, this._actualizeTriggers(), "undefined" != typeof this._ui && (this._ui.$errorsWrapper.removeClass("filled").children().remove(), this._resetClass(), this._ui.lastValidationResult = [], this._ui.validationInformationVisible = !1) }, _destroyUI: function () { this._resetUI(), "undefined" != typeof this._ui && this._ui.$errorsWrapper.remove(), delete this._ui }, _successClass: function () { this._ui.validationInformationVisible = !0, this._ui.$errorClassHandler.removeClass(this.options.errorClass).addClass(this.options.successClass) }, _errorClass: function () { this._ui.validationInformationVisible = !0, this._ui.$errorClassHandler.removeClass(this.options.successClass).addClass(this.options.errorClass) }, _resetClass: function () { this._ui.$errorClassHandler.removeClass(this.options.successClass).removeClass(this.options.errorClass) } }; var w = function (t, i, n) { this.__class__ = "ParsleyForm", this.$element = e(t), this.domOptions = i, this.options = n, this.parent = window.Parsley, this.fields = [], this.validationResult = null }, b = { pending: null, resolved: !0, rejected: !1 }; w.prototype = { onSubmitValidate: function (e) { var t = this; if (!0 !== e.parsley) { var i = this._$submitSource || this.$element.find('input[type="submit"], button[type="submit"]').first(); if (this._$submitSource = null, this.$element.find(".parsley-synthetic-submit-button").prop("disabled", !0), !i.is("[formnovalidate]")) { var n = this.whenValidate({ event: e }); "resolved" === n.state() && !1 !== this._trigger("submit") || (e.stopImmediatePropagation(), e.preventDefault(), "pending" === n.state() && n.done(function () { t._submit(i) })) } } }, onSubmitButton: function (t) { this._$submitSource = e(t.currentTarget) }, _submit: function (t) { if (!1 !== this._trigger("submit")) { if (t) { var i = this.$element.find(".parsley-synthetic-submit-button").prop("disabled", !1); 0 === i.length && (i = e('<input class="parsley-synthetic-submit-button" type="hidden">').appendTo(this.$element)), i.attr({ name: t.attr("name"), value: t.attr("value") }) } this.$element.trigger(e.extend(e.Event("submit"), { parsley: !0 })) } }, validate: function (t) { if (arguments.length >= 1 && !e.isPlainObject(t)) { o.warnOnce("Calling validate on a parsley form without passing arguments as an object is deprecated."); var i = _slice.call(arguments), n = i[0], r = i[1], s = i[2]; t = { group: n, force: r, event: s } } return b[this.whenValidate(t).state()] }, whenValidate: function () { var t, i = this, n = arguments.length <= 0 || void 0 === arguments[0] ? {} : arguments[0], r = n.group, s = n.force, a = n.event; this.submitEvent = a, a && (this.submitEvent = e.extend({}, a, { preventDefault: function () { o.warnOnce("Using `this.submitEvent.preventDefault()` is deprecated; instead, call `this.validationResult = false`"), i.validationResult = !1 } })), this.validationResult = !0, this._trigger("validate"), this._refreshFields(); var l = this._withoutReactualizingFormOptions(function () { return e.map(i.fields, function (e) { return e.whenValidate({ force: s, group: r }) }) }); return (t = o.all(l).done(function () { i._trigger("success") }).fail(function () { i.validationResult = !1, i.focus(), i._trigger("error") }).always(function () { i._trigger("validated") })).pipe.apply(t, _toConsumableArray(this._pipeAccordingToValidationResult())) }, isValid: function (t) { if (arguments.length >= 1 && !e.isPlainObject(t)) { o.warnOnce("Calling isValid on a parsley form without passing arguments as an object is deprecated."); var i = _slice.call(arguments), n = i[0], r = i[1]; t = { group: n, force: r } } return b[this.whenValid(t).state()] }, whenValid: function () { var t = this, i = arguments.length <= 0 || void 0 === arguments[0] ? {} : arguments[0], n = i.group, r = i.force; this._refreshFields(); var s = this._withoutReactualizingFormOptions(function () { return e.map(t.fields, function (e) { return e.whenValid({ group: n, force: r }) }) }); return o.all(s) }, _refreshFields: function () { return this.actualizeOptions()._bindFields() }, _bindFields: function () { var t = this, i = this.fields; return this.fields = [], this.fieldsMappedById = {}, this._withoutReactualizingFormOptions(function () { t.$element.find(t.options.inputs).not(t.options.excluded).each(function (e, i) { var n = new window.Parsley.Factory(i, {}, t); "ParsleyField" !== n.__class__ && "ParsleyFieldMultiple" !== n.__class__ || !0 === n.options.excluded || "undefined" == typeof t.fieldsMappedById[n.__class__ + "-" + n.__id__] && (t.fieldsMappedById[n.__class__ + "-" + n.__id__] = n, t.fields.push(n)) }), e.each(o.difference(i, t.fields), function (e, t) { t._trigger("reset") }) }), this }, _withoutReactualizingFormOptions: function (e) { var t = this.actualizeOptions; this.actualizeOptions = function () { return this }; var i = e(); return this.actualizeOptions = t, i }, _trigger: function (e) { return this.trigger("form:" + e) } }; var F = function (t, i, n, r, s) { if (!/ParsleyField/.test(t.__class__)) throw new Error("ParsleyField or ParsleyFieldMultiple instance expected"); var a = window.Parsley._validatorRegistry.validators[i], o = new f(a); e.extend(this, { validator: o, name: i, requirements: n, priority: r || t.options[i + "Priority"] || o.priority, isDomConstraint: !0 === s }), this._parseRequirements(t.options) }, C = function (e) { var t = e[0].toUpperCase(); return t + e.slice(1) }; F.prototype = { validate: function (e, t) { var i; return (i = this.validator).validate.apply(i, [e].concat(_toConsumableArray(this.requirementList), [t])) }, _parseRequirements: function (e) { var t = this; this.requirementList = this.validator.parseRequirements(this.requirements, function (i) { return e[t.name + C(i)] }) } }; var $ = function (t, i, n, r) { this.__class__ = "ParsleyField", this.$element = e(t), "undefined" != typeof r && (this.parent = r), this.options = n, this.domOptions = i, this.constraints = [], this.constraintsByName = {}, this.validationResult = !0, this._bindConstraints() }, x = { pending: null, resolved: !0, rejected: !1 }; $.prototype = { validate: function (t) { arguments.length >= 1 && !e.isPlainObject(t) && (o.warnOnce("Calling validate on a parsley field without passing arguments as an object is deprecated."), t = { options: t }); var i = this.whenValidate(t); if (!i) return !0; switch (i.state()) { case "pending": return null; case "resolved": return !0; case "rejected": return this.validationResult } }, whenValidate: function () { var e, t = this, i = arguments.length <= 0 || void 0 === arguments[0] ? {} : arguments[0], n = i.force, r = i.group; return this.refreshConstraints(), !r || this._isInGroup(r) ? (this.value = this.getValue(), this._trigger("validate"), (e = this.whenValid({ force: n, value: this.value, _refreshed: !0 }).always(function () { t._reflowUI() }).done(function () { t._trigger("success") }).fail(function () { t._trigger("error") }).always(function () { t._trigger("validated") })).pipe.apply(e, _toConsumableArray(this._pipeAccordingToValidationResult()))) : void 0 }, hasConstraints: function () { return 0 !== this.constraints.length }, needsValidation: function (e) { return "undefined" == typeof e && (e = this.getValue()), !(!e.length && !this._isRequired() && "undefined" == typeof this.options.validateIfEmpty) }, _isInGroup: function (t) { return e.isArray(this.options.group) ? -1 !== e.inArray(t, this.options.group) : this.options.group === t }, isValid: function (t) { if (arguments.length >= 1 && !e.isPlainObject(t)) { o.warnOnce("Calling isValid on a parsley field without passing arguments as an object is deprecated."); var i = _slice.call(arguments), n = i[0], r = i[1]; t = { force: n, value: r } } var s = this.whenValid(t); return s ? x[s.state()] : !0 }, whenValid: function () { var t = this, i = arguments.length <= 0 || void 0 === arguments[0] ? {} : arguments[0], n = i.force, r = void 0 === n ? !1 : n, s = i.value, a = i.group, l = i._refreshed; if (l || this.refreshConstraints(), !a || this._isInGroup(a)) { if (this.validationResult = !0, !this.hasConstraints()) return e.when(); if ("undefined" != typeof s && null !== s || (s = this.getValue()), !this.needsValidation(s) && !0 !== r) return e.when(); var u = this._getGroupedConstraints(), d = []; return e.each(u, function (i, n) { var r = o.all(e.map(n, function (e) { return t._validateConstraint(s, e) })); return d.push(r), "rejected" === r.state() ? !1 : void 0 }), o.all(d) } }, _validateConstraint: function (t, i) { var n = this, r = i.validate(t, this); return !1 === r && (r = e.Deferred().reject()), o.all([r]).fail(function (e) { n.validationResult instanceof Array || (n.validationResult = []), n.validationResult.push({ assert: i, errorMessage: "string" == typeof e && e }) }) }, getValue: function () { var e; return e = "function" == typeof this.options.value ? this.options.value(this) : "undefined" != typeof this.options.value ? this.options.value : this.$element.val(), "undefined" == typeof e || null === e ? "" : this._handleWhitespace(e) }, refreshConstraints: function () { return this.actualizeOptions()._bindConstraints() }, addConstraint: function (e, t, i, n) { if (window.Parsley._validatorRegistry.validators[e]) { var r = new F(this, e, t, i, n); "undefined" !== this.constraintsByName[r.name] && this.removeConstraint(r.name), this.constraints.push(r), this.constraintsByName[r.name] = r } return this }, removeConstraint: function (e) { for (var t = 0; t < this.constraints.length; t++) if (e === this.constraints[t].name) { this.constraints.splice(t, 1); break } return delete this.constraintsByName[e], this }, updateConstraint: function (e, t, i) { return this.removeConstraint(e).addConstraint(e, t, i) }, _bindConstraints: function () { for (var e = [], t = {}, i = 0; i < this.constraints.length; i++) !1 === this.constraints[i].isDomConstraint && (e.push(this.constraints[i]), t[this.constraints[i].name] = this.constraints[i]); this.constraints = e, this.constraintsByName = t; for (var n in this.options) this.addConstraint(n, this.options[n], void 0, !0); return this._bindHtml5Constraints() }, _bindHtml5Constraints: function () { (this.$element.hasClass("required") || this.$element.attr("required")) && this.addConstraint("required", !0, void 0, !0), "string" == typeof this.$element.attr("pattern") && this.addConstraint("pattern", this.$element.attr("pattern"), void 0, !0), "undefined" != typeof this.$element.attr("min") && "undefined" != typeof this.$element.attr("max") ? this.addConstraint("range", [this.$element.attr("min"), this.$element.attr("max")], void 0, !0) : "undefined" != typeof this.$element.attr("min") ? this.addConstraint("min", this.$element.attr("min"), void 0, !0) : "undefined" != typeof this.$element.attr("max") && this.addConstraint("max", this.$element.attr("max"), void 0, !0), "undefined" != typeof this.$element.attr("minlength") && "undefined" != typeof this.$element.attr("maxlength") ? this.addConstraint("length", [this.$element.attr("minlength"), this.$element.attr("maxlength")], void 0, !0) : "undefined" != typeof this.$element.attr("minlength") ? this.addConstraint("minlength", this.$element.attr("minlength"), void 0, !0) : "undefined" != typeof this.$element.attr("maxlength") && this.addConstraint("maxlength", this.$element.attr("maxlength"), void 0, !0); var e = this.$element.attr("type"); return "undefined" == typeof e ? this : "number" === e ? this.addConstraint("type", ["number", { step: this.$element.attr("step"), base: this.$element.attr("min") || this.$element.attr("value") }], void 0, !0) : /^(email|url|range)$/i.test(e) ? this.addConstraint("type", e, void 0, !0) : this }, _isRequired: function () { return "undefined" == typeof this.constraintsByName.required ? !1 : !1 !== this.constraintsByName.required.requirements }, _trigger: function (e) { return this.trigger("field:" + e) }, _handleWhitespace: function (e) { return !0 === this.options.trimValue && o.warnOnce('data-parsley-trim-value="true" is deprecated, please use data-parsley-whitespace="trim"'), "squish" === this.options.whitespace && (e = e.replace(/\s{2,}/g, " ")), "trim" !== this.options.whitespace && "squish" !== this.options.whitespace && !0 !== this.options.trimValue || (e = o.trimString(e)), e }, _getGroupedConstraints: function () { if (!1 === this.options.priorityEnabled) return [this.constraints]; for (var e = [], t = {}, i = 0; i < this.constraints.length; i++) { var n = this.constraints[i].priority; t[n] || e.push(t[n] = []), t[n].push(this.constraints[i]) } return e.sort(function (e, t) { return t[0].priority - e[0].priority }), e } }; var E = $, P = function () { this.__class__ = "ParsleyFieldMultiple" }; P.prototype = { addElement: function (e) { return this.$elements.push(e), this }, refreshConstraints: function () { var t; if (this.constraints = [], this.$element.is("select")) return this.actualizeOptions()._bindConstraints(), this; for (var i = 0; i < this.$elements.length; i++) if (e("html").has(this.$elements[i]).length) { t = this.$elements[i].data("ParsleyFieldMultiple").refreshConstraints().constraints; for (var n = 0; n < t.length; n++) this.addConstraint(t[n].name, t[n].requirements, t[n].priority, t[n].isDomConstraint) } else this.$elements.splice(i, 1); return this }, getValue: function () { if ("function" == typeof this.options.value) return this.options.value(this); if ("undefined" != typeof this.options.value) return this.options.value; if (this.$element.is("input[type=radio]")) return this._findRelated().filter(":checked").val() || ""; if (this.$element.is("input[type=checkbox]")) { var t = []; return this._findRelated().filter(":checked").each(function () { t.push(e(this).val()) }), t } return this.$element.is("select") && null === this.$element.val() ? [] : this.$element.val() }, _init: function () { return this.$elements = [this.$element], this } }; var V = function (t, i, n) { this.$element = e(t); var r = this.$element.data("Parsley"); if (r) return "undefined" != typeof n && r.parent === window.Parsley && (r.parent = n, r._resetOptions(r.options)), "object" == typeof i && e.extend(r.options, i), r; if (!this.$element.length) throw new Error("You must bind Parsley on an existing element."); if ("undefined" != typeof n && "ParsleyForm" !== n.__class__) throw new Error("Parent instance must be a ParsleyForm instance"); return this.parent = n || window.Parsley, this.init(i) }; V.prototype = {
  18. init: function (e) { return this.__class__ = "Parsley", this.__version__ = "2.4.3", this.__id__ = o.generateID(), this._resetOptions(e), this.$element.is("form") || o.checkAttr(this.$element, this.options.namespace, "validate") && !this.$element.is(this.options.inputs) ? this.bind("parsleyForm") : this.isMultiple() ? this.handleMultiple() : this.bind("parsleyField") }, isMultiple: function () { return this.$element.is("input[type=radio], input[type=checkbox]") || this.$element.is("select") && "undefined" != typeof this.$element.attr("multiple") }, handleMultiple: function () {
  19. var t, i, n = this; if (this.options.multiple || ("undefined" != typeof this.$element.attr("name") && this.$element.attr("name").length ? this.options.multiple = t = this.$element.attr("name") : "undefined" != typeof this.$element.attr("id") && this.$element.attr("id").length && (this.options.multiple = this.$element.attr("id"))),
  20. this.$element.is("select") && "undefined" != typeof this.$element.attr("multiple")) return this.options.multiple = this.options.multiple || this.__id__, this.bind("parsleyFieldMultiple"); if (!this.options.multiple) return o.warn("To be bound by Parsley, a radio, a checkbox and a multiple select input must have either a name or a multiple option.", this.$element), this; this.options.multiple = this.options.multiple.replace(/(:|\.|\[|\]|\{|\}|\$)/g, ""), "undefined" != typeof t && e('input[name="' + t + '"]').each(function (t, i) { e(i).is("input[type=radio], input[type=checkbox]") && e(i).attr(n.options.namespace + "multiple", n.options.multiple) }); for (var r = this._findRelated(), s = 0; s < r.length; s++) if (i = e(r.get(s)).data("Parsley"), "undefined" != typeof i) { this.$element.data("ParsleyFieldMultiple") || i.addElement(this.$element); break } return this.bind("parsleyField", !0), i || this.bind("parsleyFieldMultiple")
  21. }, bind: function (t, i) { var n; switch (t) { case "parsleyForm": n = e.extend(new w(this.$element, this.domOptions, this.options), new u, window.ParsleyExtend)._bindFields(); break; case "parsleyField": n = e.extend(new E(this.$element, this.domOptions, this.options, this.parent), new u, window.ParsleyExtend); break; case "parsleyFieldMultiple": n = e.extend(new E(this.$element, this.domOptions, this.options, this.parent), new P, new u, window.ParsleyExtend)._init(); break; default: throw new Error(t + "is not a supported Parsley type") } return this.options.multiple && o.setAttr(this.$element, this.options.namespace, "multiple", this.options.multiple), "undefined" != typeof i ? (this.$element.data("ParsleyFieldMultiple", n), n) : (this.$element.data("Parsley", n), n._actualizeTriggers(), n._trigger("init"), n) }
  22. }; var M = e.fn.jquery.split("."); if (parseInt(M[0]) <= 1 && parseInt(M[1]) < 8) throw "The loaded version of jQuery is too old. Please upgrade to 1.8.x or better."; M.forEach || o.warn("Parsley requires ES5 to run properly. Please include https://github.com/es-shims/es5-shim"); var O = e.extend(new u, { $element: e(document), actualizeOptions: null, _resetOptions: null, Factory: V, version: "2.4.3" }); e.extend(E.prototype, y.Field, u.prototype), e.extend(w.prototype, y.Form, u.prototype), e.extend(V.prototype, u.prototype), e.fn.parsley = e.fn.psly = function (t) { if (this.length > 1) { var i = []; return this.each(function () { i.push(e(this).parsley(t)) }), i } return e(this).length ? new V(this, t) : void o.warn("You must bind Parsley on an existing element.") }, "undefined" == typeof window.ParsleyExtend && (window.ParsleyExtend = {}), O.options = e.extend(o.objectCreate(l), window.ParsleyConfig), window.ParsleyConfig = O.options, window.Parsley = window.psly = O, window.ParsleyUtils = o; var A = window.Parsley._validatorRegistry = new m(window.ParsleyConfig.validators, window.ParsleyConfig.i18n); window.ParsleyValidator = {}, e.each("setLocale addCatalog addMessage addMessages getErrorMessage formatMessage addValidator updateValidator removeValidator".split(" "), function (t, i) { window.Parsley[i] = e.proxy(A, i), window.ParsleyValidator[i] = function () { var e; return o.warnOnce("Accessing the method '" + i + "' through ParsleyValidator is deprecated. Simply call 'window.Parsley." + i + "(...)'"), (e = window.Parsley)[i].apply(e, arguments) } }), window.Parsley.UI = y, window.ParsleyUI = { removeError: function (e, t, i) { var n = !0 !== i; return o.warnOnce("Accessing ParsleyUI is deprecated. Call 'removeError' on the instance directly. Please comment in issue 1073 as to your need to call this method."), e.removeError(t, { updateClass: n }) }, getErrorsMessages: function (e) { return o.warnOnce("Accessing ParsleyUI is deprecated. Call 'getErrorsMessages' on the instance directly."), e.getErrorsMessages() } }, e.each("addError updateError".split(" "), function (e, t) { window.ParsleyUI[t] = function (e, i, n, r, s) { var a = !0 !== s; return o.warnOnce("Accessing ParsleyUI is deprecated. Call '" + t + "' on the instance directly. Please comment in issue 1073 as to your need to call this method."), e[t](i, { message: n, assert: r, updateClass: a }) } }), !1 !== window.ParsleyConfig.autoBind && e(function () { e("[data-parsley-validate]").length && e("[data-parsley-validate]").parsley() }); var R = e({}), T = function () { o.warnOnce("Parsley's pubsub module is deprecated; use the 'on' and 'off' methods on parsley instances or window.Parsley") }, q = "parsley:"; e.listen = function (e, n) { var r; if (T(), "object" == typeof arguments[1] && "function" == typeof arguments[2] && (r = arguments[1], n = arguments[2]), "function" != typeof n) throw new Error("Wrong parameters"); window.Parsley.on(i(e), t(n, r)) }, e.listenTo = function (e, n, r) { if (T(), !(e instanceof E || e instanceof w)) throw new Error("Must give Parsley instance"); if ("string" != typeof n || "function" != typeof r) throw new Error("Wrong parameters"); e.on(i(n), t(r)) }, e.unsubscribe = function (e, t) { if (T(), "string" != typeof e || "function" != typeof t) throw new Error("Wrong arguments"); window.Parsley.off(i(e), t.parsleyAdaptedCallback) }, e.unsubscribeTo = function (e, t) { if (T(), !(e instanceof E || e instanceof w)) throw new Error("Must give Parsley instance"); e.off(i(t)) }, e.unsubscribeAll = function (t) { T(), window.Parsley.off(i(t)), e("form,input,textarea,select").each(function () { var n = e(this).data("Parsley"); n && n.off(i(t)) }) }, e.emit = function (e, t) { var n; T(); var r = t instanceof E || t instanceof w, s = Array.prototype.slice.call(arguments, r ? 2 : 1); s.unshift(i(e)), r || (t = window.Parsley), (n = t).trigger.apply(n, _toConsumableArray(s)) }; e.extend(!0, O, { asyncValidators: { "default": { fn: function (e) { return e.status >= 200 && e.status < 300 }, url: !1 }, reverse: { fn: function (e) { return e.status < 200 || e.status >= 300 }, url: !1 } }, addAsyncValidator: function (e, t, i, n) { return O.asyncValidators[e] = { fn: t, url: i || !1, options: n || {} }, this } }), O.addValidator("remote", { requirementType: { "": "string", validator: "string", reverse: "boolean", options: "object" }, validateString: function (t, i, n, r) { var s, a, o = {}, l = n.validator || (!0 === n.reverse ? "reverse" : "default"); if ("undefined" == typeof O.asyncValidators[l]) throw new Error("Calling an undefined async validator: `" + l + "`"); i = O.asyncValidators[l].url || i, i.indexOf("{value}") > -1 ? i = i.replace("{value}", encodeURIComponent(t)) : o[r.$element.attr("name") || r.$element.attr("id")] = t; var u = e.extend(!0, n.options || {}, O.asyncValidators[l].options); s = e.extend(!0, {}, { url: i, data: o, type: "GET" }, u), r.trigger("field:ajaxoptions", r, s), a = e.param(s), "undefined" == typeof O._remoteCache && (O._remoteCache = {}); var d = O._remoteCache[a] = O._remoteCache[a] || e.ajax(s), h = function () { var t = O.asyncValidators[l].fn.call(r, d, i, n); return t || (t = e.Deferred().reject()), e.when(t) }; return d.then(h, h) }, priority: -1 }), O.on("form:submit", function () { O._remoteCache = {} }), window.ParsleyExtend.addAsyncValidator = function () { return ParsleyUtils.warnOnce("Accessing the method `addAsyncValidator` through an instance is deprecated. Simply call `Parsley.addAsyncValidator(...)`"), O.addAsyncValidator.apply(O, arguments) }, O.addMessages("en", { defaultMessage: "This value seems to be invalid.", type: { email: "This value should be a valid email.", url: "This value should be a valid url.", number: "This value should be a valid number.", integer: "This value should be a valid integer.", digits: "This value should be digits.", alphanum: "This value should be alphanumeric." }, notblank: "This value should not be blank.", required: "This value is required.", pattern: "This value seems to be invalid.", min: "This value should be greater than or equal to %s.", max: "This value should be lower than or equal to %s.", range: "This value should be between %s and %s.", minlength: "This value is too short. It should have %s characters or more.", maxlength: "This value is too long. It should have %s characters or fewer.", length: "This value length is invalid. It should be between %s and %s characters long.", mincheck: "You must select at least %s choices.", maxcheck: "You must select %s choices or fewer.", check: "You must select between %s and %s choices.", equalto: "This value should be the same." }), O.setLocale("en"); var D = new n; D.install(); var I = O; return I
  23. });