{"version":3,"file":"kendo.validator.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendovalidator","js","this","$","undefined$1","kendo","window","Widget","ui","NS","INVALIDMSG","invalidMsgRegExp","RegExp","INVALIDINPUT","VALIDINPUT","VALIDATIONSUMMARY","INVALIDLABEL","MESSAGEBOX","ARIAINVALID","emailRegExp","ALLOWED_URL_PROTOCOLS","INPUTSELECTOR","CHECKBOXSELECTOR","NUMBERINPUTSELECTOR","BLUR","NAME","FORM","NOVALIDATE","VALIDATE","CHANGE","VALIDATE_INPUT","patternMatcher","value","pattern","test","hasAttribute","input","name","length","attributes","parseHtml","text","parseHTML","searchForMessageContainer","elements","fieldName","element","containers","idx","className","getAttribute","attr","add","isLabelFor","label","nodeName","validator","rules","messages","allowSubmit","noop","validateOnInit","SUMMARYTEMPLATE","errors","result","i","field","message","Validator","extend","init","options","that","resolved","resolvers","ruleResolvers","resolve","resolveRules","validateAttributeSelector","fn","call","_errorTemplate","template","errorTemplate","_summaryTemplate","validationSummary","is","_inputSelector","_checkboxSelector","_errors","_attachEvents","_isValidated","_validateOnInit","validate","events","required","min","max","step","email","url","date","dateCompare","captcha","noNameCheckbox","quote","indexOf","namedCheckbox","find","checkbox","filter","radio","val","parseFloat","raise","decimals","split","Math","pow","floor","selector","matcher","URL","includes","protocol","parseDate","widgetInstance","isValidated","isValid","data","getCaptchaId","_validating","done","_checkElement","fail","error","console","warn","removeData","validateOnBlur","_allowSubmit","destroy","off","_submit","e","stopPropagation","stopImmediatePropagation","preventDefault","state","validateInput","trigger","on","bind","inputs","invalid","eq","showValidationSummary","valid","_checkValidity","lbl","_findMessageContainer","next","addClass","messageText","_extractMessage","key","messageLabel","replace","wasValid","isInputInner","inputWrapper","parent","removeAttr","hasClass","closest","lblId","_decorateMessageContainer","replaceWith","parentElement","get","nextElement","prevElement","prev","wrapper","insertAfter","removeClass","_inputWrapper","toggleClass","inputWrap","inputLabel","_inputLabel","errorId","_associateMessageContainer","hideMessages","_disassociateMessageContainers","reset","labels","hideValidationSummary","locators","messageLocators","getElementsByTagName","locate","container","decorate","ruleKey","nonDefaultMessage","customMessage","prototype","isFunction","format","rule","results","push","setOptions","deepExtend","_setEvents","_getInputNames","sorted","nextFocusable","getWidgetFocusableElement","toggleAttribute","addBack","_errorsByName","inputNames","_renderSummary","insertBefore","join","_summaryClick","link","target","errorsList","summary","html","plugin","jQuery"],"sources":["kendo.validator.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.core.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.core'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendovalidator = global.kendovalidator || {}, global.kendovalidator.js = factory()));\n})(this, (function () {\n let __meta__ = {\n id: \"validator\",\n name: \"Validator\",\n category: \"web\",\n description: \"The Validator offers an easy way to do a client-side form validation.\",\n depends: [ \"core\" ]\n };\n\n\n (function($, undefined$1) {\n let kendo = window.kendo,\n Widget = kendo.ui.Widget,\n NS = \".kendoValidator\",\n INVALIDMSG = \"k-invalid-msg\",\n invalidMsgRegExp = new RegExp(INVALIDMSG,'i'),\n INVALIDINPUT = \"k-invalid\",\n VALIDINPUT = \"k-valid\",\n VALIDATIONSUMMARY = \"k-validation-summary\",\n INVALIDLABEL = \"k-text-error\",\n MESSAGEBOX = \"k-messagebox k-messagebox-error\",\n INPUTINNER = \".k-input-inner\",\n INPUTWRAPPER = \".k-input\",\n ARIAINVALID = \"aria-invalid\",\n ARIADESCRIBEDBY = \"aria-describedby\",\n emailRegExp = /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/i,\n ALLOWED_URL_PROTOCOLS = [\"http:\", \"https:\", \"ftp:\", \"ftps:\"],\n INPUTSELECTOR = \":input:not(:button,[type=submit],[type=reset],[disabled],[readonly])\",\n CHECKBOXSELECTOR = \":checkbox:not([disabled],[readonly])\",\n NUMBERINPUTSELECTOR = \"[type=number],[type=range]\",\n BLUR = \"blur\",\n NAME = \"name\",\n FORM = \"form\",\n NOVALIDATE = \"novalidate\",\n //events\n VALIDATE = \"validate\",\n CHANGE = \"change\",\n VALIDATE_INPUT = \"validateInput\",\n\n patternMatcher = function(value, pattern) {\n if (typeof pattern === \"string\") {\n pattern = new RegExp('^(?:' + pattern + ')$');\n }\n return pattern.test(value);\n },\n matcher = function(input, selector, pattern) {\n var value = input.val();\n\n if (input.filter(selector).length && value !== \"\") {\n return patternMatcher(value, pattern);\n }\n return true;\n },\n hasAttribute = function(input, name) {\n if (input.length) {\n return input[0].attributes[name] != null;\n }\n return false;\n };\n\n if (!kendo.ui.validator) {\n kendo.ui.validator = { rules: {}, messages: {}, allowSubmit: $.noop, validateOnInit: $.noop };\n }\n\n function resolveRules(element) {\n var resolvers = kendo.ui.validator.ruleResolvers || {},\n rules = {},\n name;\n\n for (name in resolvers) {\n $.extend(true, rules, resolvers[name].resolve(element));\n }\n return rules;\n }\n\n function decode(value) {\n return value.replace(/&/g, '&')\n .replace(/"/g, '\"')\n .replace(/'/g, \"'\")\n .replace(/</g, '<')\n .replace(/>/g, '>');\n }\n\n function numberOfDecimalDigits(value) {\n value = (value + \"\").split('.');\n if (value.length > 1) {\n return value[1].length;\n }\n return 0;\n }\n\n function parseHtml(text) {\n if ($.parseHTML) {\n return $($.parseHTML(text));\n }\n return $(text);\n }\n\n function searchForMessageContainer(elements, fieldName) {\n var containers = $(),\n element,\n attr;\n\n for (var idx = 0, length = elements.length; idx < length; idx++) {\n element = elements[idx];\n if (invalidMsgRegExp.test(element.className)) {\n attr = element.getAttribute(kendo.attr(\"for\"));\n if (attr === fieldName) {\n containers = containers.add(element);\n }\n }\n }\n return containers;\n }\n\n function isLabelFor(label, element) {\n if (!label) {\n return false;\n }\n if (typeof label.nodeName !== 'string' || label.nodeName !== 'LABEL') {\n return false;\n }\n if (typeof label.getAttribute('for') !== 'string' || typeof element.getAttribute('id') !== 'string') {\n return false;\n }\n if (label.getAttribute('for') !== element.getAttribute('id')) {\n return false;\n }\n\n return true;\n }\n\n var SUMMARYTEMPLATE = ({ errors }) => {\n let result = '';\n return result;\n };\n\n var Validator = Widget.extend({\n init: function(element, options) {\n var that = this,\n resolved = resolveRules(element),\n validateAttributeSelector = \"[\" + kendo.attr(\"validate\") + \"!=false]\";\n\n options = options || {};\n\n options.rules = $.extend({}, kendo.ui.validator.rules, resolved.rules, options.rules);\n options.messages = $.extend({}, kendo.ui.validator.messages, resolved.messages, options.messages);\n\n Widget.fn.init.call(that, element, options);\n\n that._errorTemplate = kendo.template(that.options.errorTemplate);\n that._summaryTemplate = kendo.template(that.options.validationSummary.template || SUMMARYTEMPLATE);\n\n if (that.element.is(FORM)) {\n that.element.attr(NOVALIDATE, NOVALIDATE);\n }\n\n that._inputSelector = INPUTSELECTOR + validateAttributeSelector;\n that._checkboxSelector = CHECKBOXSELECTOR + validateAttributeSelector;\n\n that._errors = {};\n that._attachEvents();\n that._isValidated = false;\n\n if (that._validateOnInit()) {\n that.validate();\n }\n },\n\n events: [ VALIDATE, CHANGE, VALIDATE_INPUT ],\n\n options: {\n name: \"Validator\",\n errorTemplate: ({ message }) => `${message}`,\n messages: {\n required: \"{0} is required\",\n pattern: \"{0} is not valid\",\n min: \"{0} should be greater than or equal to {1}\",\n max: \"{0} should be smaller than or equal to {1}\",\n step: \"{0} is not valid\",\n email: \"{0} is not valid email\",\n url: \"{0} is not valid URL\",\n date: \"{0} is not valid date\",\n dateCompare: \"End date should be greater than or equal to the start date\",\n captcha: \"The text you entered doesn't match the image.\"\n },\n rules: {\n required: function(input) {\n var noNameCheckbox = !input.attr(\"name\") && !input.is(\":checked\"),\n name = input.attr(\"name\"),\n quote = !!name && name.indexOf(\"'\") > -1 ? '\\\"' : \"'\",\n namedCheckbox = input.attr(\"name\") && !this.element.find(\"input[name=\" + quote + input.attr(\"name\") + quote + \"]:checked\").length,\n checkbox = input.filter(\"[type=checkbox]\").length && (noNameCheckbox || namedCheckbox),\n radio = input.filter(\"[type=radio]\").length && !this.element.find(\"input[name=\" + quote + input.attr(\"name\") + quote + \"]:checked\").length,\n value = input.val();\n\n return !(hasAttribute(input, \"required\") && (!value || value === \"\" || value.length === 0 || checkbox || radio));\n },\n pattern: function(input) {\n if (input.filter(\"[type=text],[type=email],[type=url],[type=tel],[type=search],[type=password]\").filter(\"[pattern]\").length && input.val() !== \"\") {\n return patternMatcher(input.val(), input.attr(\"pattern\"));\n }\n return true;\n },\n min: function(input) {\n if (input.filter(NUMBERINPUTSELECTOR + \",[\" + kendo.attr(\"type\") + \"=number]\").filter(\"[min]\").length && input.val() !== \"\") {\n var min = parseFloat(input.attr(\"min\")) || 0,\n val = kendo.parseFloat(input.val());\n\n return min <= val;\n }\n return true;\n },\n max: function(input) {\n if (input.filter(NUMBERINPUTSELECTOR + \",[\" + kendo.attr(\"type\") + \"=number]\").filter(\"[max]\").length && input.val() !== \"\") {\n var max = parseFloat(input.attr(\"max\")) || 0,\n val = kendo.parseFloat(input.val());\n\n return max >= val;\n }\n return true;\n },\n step: function(input) {\n if (input.filter(NUMBERINPUTSELECTOR + \",[\" + kendo.attr(\"type\") + \"=number]\").filter(\"[step]\").length && input.val() !== \"\") {\n var min = parseFloat(input.attr(\"min\")) || 0,\n step = kendo.parseFloat(input.attr(\"step\")) || 1,\n val = parseFloat(input.val()),\n decimals = numberOfDecimalDigits(step),\n raise;\n\n if (decimals) {\n raise = Math.pow(10, decimals);\n return ((Math.floor((val - min) * raise)) % (step * raise)) / Math.pow(100, decimals) === 0;\n }\n return ((val - min) % step) === 0;\n }\n return true;\n },\n email: function(input) {\n return matcher(input, \"[type=email],[\" + kendo.attr(\"type\") + \"=email]\", emailRegExp);\n },\n url: function(input) {\n if (input.filter(\"[type=url],[\" + kendo.attr(\"type\") + \"=url]\").length && input.val() !== \"\") {\n try {\n const url = new URL(input.val());\n return ALLOWED_URL_PROTOCOLS.includes(url.protocol);\n } catch {\n return false;\n }\n }\n return true;\n },\n date: function(input) {\n if (input.filter(\"[type^=date],[\" + kendo.attr(\"type\") + \"=date]\").length && input.val() !== \"\") {\n return kendo.parseDate(input.val(), input.attr(kendo.attr(\"format\"))) !== null;\n }\n return true;\n },\n captcha: function(input) {\n if (input.filter(\"[\" + kendo.attr(\"role\") + \"=captcha]\").length) {\n var that = this,\n captcha = kendo.widgetInstance(input),\n isValidated = function(isValid) {\n return typeof(isValid) !== 'undefined' && isValid !== null;\n };\n\n if (!input.data(\"captcha_validating\") && !isValidated(captcha.isValid()) && !!captcha.getCaptchaId()) {\n input.data(\"captcha_validating\", true);\n that._validating = true;\n captcha.validate().done(function() {\n that._validating = false;\n that._checkElement(input);\n }).fail(function(data) {\n that._validating = false;\n if (data.error && data.error === \"handler_not_defined\") {\n window.console.warn(\"Captcha's validationHandler is not defined! You should either define a proper validation endpoint or declare a callback function to ensure the required behavior.\");\n }\n });\n }\n\n if (isValidated(captcha.isValid())) {\n input.removeData(\"captcha_validating\");\n return captcha.isValid();\n }\n }\n return true;\n }\n },\n validateOnBlur: true,\n validationSummary: false\n },\n\n _allowSubmit: function() {\n return kendo.ui.validator.allowSubmit(this.element, this.errors());\n },\n\n _validateOnInit: function() {\n return kendo.ui.validator.validateOnInit(this.element);\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n\n this.element.off(NS);\n\n if (this.validationSummary) {\n this.validationSummary.off(NS);\n this.validationSummary = null;\n }\n },\n\n value: function() {\n if (!this._isValidated) {\n return false;\n }\n\n return this.errors().length === 0;\n },\n\n _submit: function(e) {\n if ((!this.validate() && !this._allowSubmit()) || this._validating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n e.preventDefault();\n return false;\n }\n return true;\n },\n\n _checkElement: function(element) {\n var state = this.value();\n\n this.validateInput(element);\n\n if (this.value() !== state) {\n this.trigger(CHANGE);\n }\n },\n\n _attachEvents: function() {\n var that = this;\n\n if (that.element.is(FORM)) {\n that.element.on(\"submit\" + NS, that._submit.bind(that));\n }\n\n if (that.options.validateOnBlur) {\n if (!that.element.is(INPUTSELECTOR)) {\n that.element.on(BLUR + NS, that._inputSelector, function() {\n that._checkElement($(this));\n });\n\n that.element.on(\"click\" + NS, that._checkboxSelector, function() {\n that._checkElement($(this));\n });\n } else {\n that.element.on(BLUR + NS, function() {\n that._checkElement(that.element);\n });\n\n if (that.element.is(CHECKBOXSELECTOR)) {\n that.element.on(\"click\" + NS, function() {\n that._checkElement(that.element);\n });\n }\n }\n }\n },\n\n validate: function() {\n var inputs;\n var idx;\n var result = false;\n var length;\n\n var isValid = this.value();\n\n this._errors = {};\n\n if (!this.element.is(INPUTSELECTOR)) {\n var invalid = false;\n\n inputs = this.element.find(this._inputSelector);\n\n for (idx = 0, length = inputs.length; idx < length; idx++) {\n if (!this.validateInput(inputs.eq(idx))) {\n invalid = true;\n }\n }\n\n result = !invalid;\n } else {\n result = this.validateInput(this.element);\n }\n\n if (this.options.validationSummary && !isValid) {\n this.showValidationSummary();\n }\n\n this.trigger(VALIDATE, { valid: result, errors: this.errors() });\n\n if (isValid !== result) {\n this.trigger(CHANGE);\n }\n\n return result;\n },\n\n validateInput: function(input) {\n input = $(input);\n\n\n this._isValidated = true;\n\n var that = this,\n template = that._errorTemplate,\n result = that._checkValidity(input),\n valid = result.valid,\n widgetInstance,\n className = \".\" + INVALIDMSG,\n fieldName = (input.attr(NAME) || \"\"),\n lbl = that._findMessageContainer(fieldName).add(input.next(className).filter(function() {\n var element = $(this);\n if (element.filter(\"[\" + kendo.attr(\"for\") + \"]\").length) {\n return element.attr(kendo.attr(\"for\")) === fieldName;\n }\n\n return true;\n\n })).addClass(\"k-hidden\"),\n messageText = !valid ? that._extractMessage(input, result.key) : \"\",\n messageLabel = !valid ? parseHtml(template({ message: decode(messageText), field: fieldName })) : \"\",\n wasValid = !input.attr(ARIAINVALID),\n isInputInner = input.is(INPUTINNER),\n inputWrapper = input.parent(INPUTWRAPPER);\n\n input.removeAttr(ARIAINVALID);\n\n if (input.hasClass(\"k-hidden\")) {\n widgetInstance = kendo.widgetInstance(input.closest(\".k-signature\"));\n }\n\n if (input.is(\"[type=radio]\")) {\n widgetInstance = kendo.widgetInstance(input.closest(\".k-radio-list\"));\n }\n\n if (input.is(\"[type=checkbox]\")) {\n widgetInstance = kendo.widgetInstance(input.closest(\".k-checkbox-list\"));\n }\n\n if (!valid && !input.data(\"captcha_validating\")) {\n that._errors[fieldName] = messageText;\n var lblId = lbl.attr('id');\n\n that._decorateMessageContainer(messageLabel, fieldName);\n\n\n if (lblId) {\n messageLabel.attr('id', lblId);\n }\n\n if (lbl.length !== 0) {\n lbl.replaceWith(messageLabel);\n } else {\n widgetInstance = widgetInstance || kendo.widgetInstance(input);\n var parentElement = input.parent().get(0);\n var nextElement = input.next().get(0);\n var prevElement = input.prev().get(0);\n\n // Get the instance of the RadioGroup which is not initialized on the input element\n if (!widgetInstance && input.is(\"[type=radio]\")) {\n widgetInstance = kendo.widgetInstance(input.closest(\".k-radio-list\"));\n }\n\n // Get the instance of the CheckBoxGroup which is not initialized on the input element\n if (!widgetInstance && input.is(\"[type=checkbox]\")) {\n widgetInstance = kendo.widgetInstance(input.closest(\".k-checkbox-list\"));\n }\n\n if (widgetInstance && widgetInstance.wrapper && (widgetInstance.element !== widgetInstance.wrapper || [\"Signature\", \"RadioGroup\", \"CheckBoxGroup\"].indexOf(widgetInstance.options.name) > -1)) {\n messageLabel.insertAfter(widgetInstance.wrapper);\n } else if (parentElement && parentElement.nodeName === \"LABEL\") {\n // Input inside label\n messageLabel.insertAfter(parentElement);\n } else if (nextElement && isLabelFor(nextElement, input[0])) {\n // Input before label\n messageLabel.insertAfter(nextElement);\n } else if (prevElement && isLabelFor(prevElement, input[0])) {\n // Input after label\n messageLabel.insertAfter(input);\n } else if (isInputInner && inputWrapper.length) {\n // Input after input wrapper\n messageLabel.insertAfter(inputWrapper);\n } else {\n messageLabel.insertAfter(input);\n }\n }\n\n messageLabel.removeClass(\"k-hidden\");\n\n input.attr(ARIAINVALID, true);\n } else {\n delete that._errors[fieldName];\n }\n\n if (wasValid !== valid) {\n this.trigger(VALIDATE_INPUT, { valid: valid, input: input, error: messageText, field: fieldName });\n }\n\n widgetInstance = (widgetInstance && widgetInstance.options.name == \"Signature\") ? widgetInstance : kendo.widgetInstance(input);\n if (!widgetInstance || !(widgetInstance._inputWrapper || widgetInstance.wrapper) || (input.is(\"[type=checkbox]\") || input.is(\"[type=radio]\"))) {\n input.toggleClass(INVALIDINPUT, !valid);\n input.toggleClass(VALIDINPUT, valid);\n }\n\n if (widgetInstance) {\n var inputWrap = widgetInstance._inputWrapper || widgetInstance.wrapper;\n var inputLabel = widgetInstance._inputLabel;\n\n if (inputWrap && !(input.is(\"[type=checkbox]\") || input.is(\"[type=radio]\"))) {\n inputWrap.toggleClass(INVALIDINPUT, !valid);\n inputWrap.toggleClass(VALIDINPUT, valid);\n }\n if (inputLabel) {\n inputLabel.toggleClass(INVALIDLABEL, !valid);\n }\n }\n\n if (wasValid !== valid) {\n var errorId = messageLabel ? messageLabel.attr(\"id\") : lbl.attr(\"id\");\n\n that._associateMessageContainer(input, errorId);\n\n if (this.options.validationSummary && this.options.validateOnBlur) {\n this.showValidationSummary();\n }\n }\n\n return valid;\n },\n\n hideMessages: function() {\n var that = this,\n className = \".\" + INVALIDMSG,\n element = that.element;\n\n that._disassociateMessageContainers();\n\n if (!element.is(INPUTSELECTOR)) {\n element.find(className).addClass(\"k-hidden\");\n } else {\n element.next(className).addClass(\"k-hidden\");\n }\n },\n\n reset: function() {\n var that = this,\n inputs = that.element.find(\".\" + INVALIDINPUT),\n labels = that.element.find(\".\" + INVALIDLABEL);\n\n that._errors = [];\n\n that.hideMessages();\n\n that.hideValidationSummary();\n\n inputs.removeAttr(ARIAINVALID);\n inputs.removeClass(INVALIDINPUT);\n labels.removeClass(INVALIDLABEL);\n },\n\n _findMessageContainer: function(fieldName) {\n var locators = kendo.ui.validator.messageLocators,\n name,\n containers = $();\n\n for (var idx = 0, length = this.element.length; idx < length; idx++) {\n containers = containers.add(searchForMessageContainer(this.element[idx].getElementsByTagName(\"*\"), fieldName));\n }\n\n for (name in locators) {\n containers = containers.add(locators[name].locate(this.element, fieldName));\n }\n\n return containers;\n },\n\n _decorateMessageContainer: function(container, fieldName) {\n var locators = kendo.ui.validator.messageLocators,\n name;\n\n container.addClass(INVALIDMSG)\n .attr(kendo.attr(\"for\"), fieldName || \"\");\n\n if (!container.attr(\"id\")) {\n container.attr(\"id\", fieldName + \"-error\");\n }\n\n for (name in locators) {\n locators[name].decorate(container, fieldName);\n }\n },\n\n _extractMessage: function(input, ruleKey) {\n var that = this,\n customMessage = that.options.messages[ruleKey],\n fieldName = input.attr(NAME),\n nonDefaultMessage;\n\n if (!kendo.ui.Validator.prototype.options.messages[ruleKey]) {\n nonDefaultMessage = kendo.isFunction(customMessage) ? customMessage(input) : customMessage;\n }\n\n customMessage = kendo.isFunction(customMessage) ? customMessage(input) : customMessage;\n\n return kendo.format(input.attr(kendo.attr(ruleKey + \"-msg\")) || input.attr(\"validationMessage\") || nonDefaultMessage || customMessage || input.attr(\"title\") || \"\",\n fieldName,\n input.attr(ruleKey) || input.attr(kendo.attr(ruleKey)));\n },\n\n _checkValidity: function(input) {\n var rules = this.options.rules,\n rule;\n\n for (rule in rules) {\n if (!rules[rule].call(this, input)) {\n return { valid: false, key: rule };\n }\n }\n\n return { valid: true };\n },\n\n errors: function() {\n var results = [],\n errors = this._errors,\n error;\n\n for (error in errors) {\n results.push(errors[error]);\n }\n return results;\n },\n\n setOptions: function(options) {\n if (options.validationSummary) {\n this.hideValidationSummary();\n }\n\n kendo.deepExtend(this.options, options);\n\n this.destroy();\n\n this.init(this.element, this.options);\n\n this._setEvents(this.options);\n },\n\n _getInputNames: function() {\n var that = this,\n inputs = that.element.find(that._inputSelector),\n sorted = [];\n\n for (var idx = 0, length = inputs.length; idx < length; idx++) {\n var input = $(inputs[idx]);\n\n if (hasAttribute(input, NAME)) {\n // Add current name if:\n // - not present so far;\n // - present but not part of CheckBoxGroup or RadioGroup.\n if (sorted.indexOf(input.attr(NAME)) === -1 ||\n (input.closest(\".k-checkbox-list\").length === 0 &&\n input.closest(\".k-radio-list\").length === 0)) {\n sorted.push(input.attr(NAME));\n }\n }\n }\n\n return sorted;\n },\n\n _associateMessageContainer: function(input, errorId) {\n var nextFocusable = kendo.getWidgetFocusableElement(input);\n\n if (!nextFocusable || !errorId) {\n return;\n }\n\n kendo.toggleAttribute(nextFocusable, ARIADESCRIBEDBY, errorId);\n },\n\n _disassociateMessageContainers: function() {\n var that = this,\n inputs = that.element.find(\".\" + INVALIDINPUT).addBack(),\n input, errorId;\n\n for (var i = 0; i < inputs.length; i += 1) {\n input = $(inputs[i]);\n\n if (input.is(\"input\")) {\n errorId = that._findMessageContainer(input.attr(NAME))\n .add(input.next(\".\" + INVALIDMSG))\n .attr(\"id\");\n\n that._associateMessageContainer(input, errorId);\n }\n }\n },\n\n _errorsByName: function() {\n var that = this,\n inputNames = that._getInputNames(),\n sorted = [];\n\n for (var i = 0; i < inputNames.length; i += 1) {\n var name = inputNames[i];\n\n if (that._errors[name]) {\n sorted.push({\n field: name,\n message: that._errors[name]\n });\n }\n }\n\n return sorted;\n },\n\n _renderSummary: function() {\n var that = this,\n options = this.options.validationSummary,\n element = this.element,\n prevElement = element.prev(),\n container;\n\n if (options.container) {\n container = $(options.container);\n } else if (prevElement && prevElement.hasClass(VALIDATIONSUMMARY)) {\n container = prevElement;\n } else {\n container = $(\"
\").insertBefore(that.element);\n }\n\n container.addClass([VALIDATIONSUMMARY, MESSAGEBOX].join(\" \"));\n container.attr(\"role\", \"alert\");\n\n container.on(\"click\" + NS, that._summaryClick.bind(that));\n\n return container;\n },\n\n _summaryClick: function(e) {\n e.preventDefault();\n\n var that = this,\n link = $(e.target),\n target = that.element.find(\"[name='\" + link.data(\"field\") + \"']\"),\n nextFocusable;\n\n if (!target.length) {\n return;\n }\n\n nextFocusable = kendo.getWidgetFocusableElement(target);\n\n if (nextFocusable) {\n nextFocusable.trigger(\"focus\");\n }\n },\n\n showValidationSummary: function() {\n var that = this,\n summary = that.validationSummary,\n errors = that._errorsByName(),\n errorsList;\n\n if (!summary) {\n summary = that.validationSummary = that._renderSummary();\n }\n\n errorsList = parseHtml(that._summaryTemplate({\n errors: errors\n }));\n\n summary.html(errorsList);\n\n summary.toggleClass(\"k-hidden\", !errors.length);\n },\n\n hideValidationSummary: function() {\n var that = this,\n summary = that.validationSummary;\n\n if (!summary) {\n return;\n }\n\n summary.addClass(\"k-hidden\");\n }\n });\n\n kendo.ui.plugin(Validator);\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}