/*!@license * Infragistics.Web.ClientUI Editors 19.1.20 * * Copyright (c) 2011-2019 Infragistics Inc. * * http://www.infragistics.com/ * Depends on: * jquery-1.9.1.js * jquery.ui.core.js * jquery.ui.widget.js * infragistics.util.js * infragistics.util.jquery.js * infragistics.ui.widget.js * infragistics.ui.popover.js * infragistics.ui.notifier.js * Example to use: * * */ (function(factory){if(typeof define==="function"&&define.amd){define(["./infragistics.ui.widget","./infragistics.ui.notifier"],factory)}else{return factory(jQuery)}})(function($){/*!@license * Infragistics.Web.ClientUI Validator localization resources 19.1.20 * * Copyright (c) 2011-2019 Infragistics Inc. * * http://www.infragistics.com/ * */ (function($){$.ig=$.ig||{};$.ig.Validator=$.ig.Validator||{};$.ig.locale=$.ig.locale||{};$.ig.locale.en=$.ig.locale.en||{};$.ig.locale.en.Validator={defaultMessage:"This field needs attention",selectMessage:"A value should be selected",rangeSelectMessage:"At least {0} but no more than {1} items should be selected",minSelectMessage:"At least {0} item(s) should be selected",maxSelectMessage:"No more than {0} item(s) should be selected",rangeLengthMessage:"Entry should be between {0} and {1} characters long",minLengthMessage:"Entry should be at least {0} character(s) long",maxLengthMessage:"Entry should be no more than {0} character(s) long",requiredMessage:"This field is required",patternMessage:"Entry does not match the required pattern",maskMessage:"All required positions should be filled",dateFieldsMessage:"Date field values should be entered",invalidDayMessage:"A valid day of the month should be entered",dateMessage:"A valid date should be entered",numberMessage:"A valid number should be entered",rangeValueMessage:"A value between {0} and {1} should be entered",minValueMessage:"A value of at least {0} should be entered",maxValueMessage:"A value no more than {0} should be entered",emailMessage:"A valid email address should be entered",creditCardMessage:"A valid payment card number should be entered",equalToMessage:"The two values do not match",optionalString:"(optional)"};$.ig.Validator.locale=$.ig.Validator.locale||$.ig.locale.en.Validator;return $.ig.locale.en.Validator})($);$.widget("ui.igValidator",$.ui.igWidget,{options:{onchange:false,onblur:true,onsubmit:true,required:false,number:false,date:false,email:false,lengthRange:null,valueRange:null,creditCard:false,pattern:null,executeAllRules:false,messageTarget:null,errorMessage:null,successMessage:null,threshold:-1,equalTo:null,custom:null,fields:[{selector:null}],notificationOptions:null,requiredIndication:false,optionalIndication:false},css:{target:"ui-igvalidator-target",requiredIndication:"ui-igvalidator-required-indication",optionalIndication:"ui-igvalidator-optional-indication"},events:{validating:"validating",validated:"validated",success:"success",error:"error",errorShowing:"errorShowing",errorHiding:"errorHiding",errorShown:"errorShown",errorHidden:"errorHidden",successShowing:"successShowing",successHiding:"successHiding",successShown:"successShown",successHidden:"successHidden",formValidating:"formValidating",formValidated:"formValidated",formError:"formError",formSuccess:"formSuccess"},notifierDefaults:{state:"error"},rules:[],summaryResult:false,_createWidget:function(){delete this.options.fields;$.Widget.prototype._createWidget.apply(this,arguments)},_create:function(){this._formHandleCounter=0;this._fieldOptions=this.options.fields?$.extend([],this.options.fields):null;var shouldHandleForm=false;if(this.options.fields){for(var i=0;i1?"checkboxrange":"checkbox";target=options._group}else if(target[0].type==="radio"){options._group=this._findGroupTargets(target);options._type="radio";target=options._group}else{options._type="input"}break;case"TEXTAREA":options._type="textarea";break;case"SELECT":if(target[0].multiple){options._type="selectrange"}else{options._type="select"}break;case"FORM":this._form=this._form||target[0];options._ignored=true;return;default:this._form=this._form||target.closest("form").get(0);options._ignored=true;return}this._attachFieldEvents(target)}options._ignored=false;target.addClass(this.css.target);target.data("igValidatorField",options);options.notifyTarget=this._targetFromOptions(options,true);this._evalMessageTarget(options);this._ensureNotifier(options,true);this._addFieldIndications(options)},_findGroupTargets:function(target){if(target[0].name){return $("[name="+target[0].name+"]",target[0].form||document)}return target},_attachFieldEvents:function(element){var self=this,evts={"keyup.validator":function(e){if(e.keyCode!==9&&e.keyCode<15||e.keyCode>20){self._validateInternal(element,e)}},"change.validator":function(e){self._validateInternal(element,e)},"cut.validator":function(e){setTimeout(function(){self._validateInternal(element,e)},10)},"paste.validator":function(e){setTimeout(function(){self._validateInternal(element,e)},10)},"drop.validator":function(e){setTimeout(function(){self._validateInternal(element,e)},10)},"dragend.validator":function(e){setTimeout(function(){self._validateInternal(element,e)},10)},"blur.validator":function(e){self._validateInternal(element,e,true)}};element.bind(evts)},_ensureNotifier:function(options,reinit){if(reinit&&options.notifyTarget.data("igNotifier")){options.notifyTarget.igNotifier("destroy").unbind(".validator")}if(!options.notifyTarget.data("igNotifier")){var args={owner:this,target:options.notifyTarget,fieldOptions:options===this.options?null:options};options.notifyTarget.igNotifier($.extend({},this.notifierDefaults,this.options.notificationOptions,options.notificationOptions)).bind({"ignotifiershowing.validator":function(evt,ui){return args.owner._handleNotifierEvent(evt,ui,"Showing",args)},"ignotifiershown.validator":function(evt,ui){return args.owner._handleNotifierEvent(evt,ui,"Shown",args)},"ignotifierhiding.validator":function(evt,ui){return args.owner._handleNotifierEvent(evt,ui,"Hiding",args)},"ignotifierhidden.validator":function(evt,ui){return args.owner._handleNotifierEvent(evt,ui,"Hidden",args)}})}},_updateNotifiers:function(){if(this.options.fields){for(var i=0;i1||options._control&&options._control.widgetName==="igRating"){return}if(options._control!==null&&options._control.widgetName==="igCombo"){target=target.parent()}ops=this._addGlobalSettings(options);if(ops.required&&ops.requiredIndication){options._$indicator=target.after("*").next()}if(!ops.required&&ops.optionalIndication){options._$indicator=target.after(""+this._getLocalizedMessage("optional","String")+"").next()}},_removeFieldIndications:function(options){if(options._$indicator){options._$indicator.hide();options._$indicator.remove();delete options._$indicator}},_attachToForm:function(shouldHandleForm){this._form=this._form||this.element[0].form||this.element.closest("form").get(0);if(!this._form||!shouldHandleForm){return}if(!this._form._igValidators||!this._form._igValidators.length){this._form._igValidators=[];$(this._form).bind("submit.validator",function(e){this._igErrorShown=false;var summaryResult=true,current;for(var i=0;i-1){this._form._igValidators.splice(index,1);if(!this._form._igValidators.length){$(this._form).unbind("submit.validator")}}},_validate:function(field,evt,isSubmitting){var current,i,valid=true;if(this.options.fields){if(field!==undefined&&(i=this._fieldIndexOf(field))>-1){field=this.options.fields[i];valid=field.isValid=this._validateField(field,evt,isSubmitting)}else{for(i=0;i
  • "+args.messages.join("
  • ")+"
  • "}else{args.message=args.messages[0]||null}if(evt){this._trigger(this.events.validated,evt,args);this._trigger(this.events.error,evt,args)}if(this._skipMessages||!this._errorOnSubmitAllowed()){return}this._hideSuccess(options,evt);args={owner:this,message:args.message,target:options._$messageTarget?options._$messageTarget:options.notifyTarget,fieldOptions:args.fieldOptions};if(evt&&!this._trigger(this.events.errorShowing,evt,args)){return}this._ensureNotifier(options);if(options._$messageTarget){options._$messageTarget.removeClass("field-validation-valid").addClass("field-validation-error").html(args.message).show();options.notifyTarget.data("igNotifier")._setOption("state","error");options.notifyTarget.data("igNotifier")._setTargetState()}else{options.notifyTarget.igNotifier("notify","error",args.message)}if(evt){this._trigger(this.events.errorShown,evt,args)}this._addErrorOnSubmit()},_hideError:function(options,evt){var notifier=options._$messageTarget||options.notifyTarget.data("igNotifier"),args={owner:this,target:options._$messageTarget||options.notifyTarget,message:notifier._currentText||options._$messageTarget&&options._$messageTarget.text(),fieldOptions:options===this.options?null:options};if(this._hasVisibleError(options)){if(evt&&!this._trigger(this.events.errorHiding,evt,args)){return}notifier.hide();options.notifyTarget.data("igNotifier")._setTargetState(true);if(evt){this._trigger(this.events.errorHidden,evt,args)}}},_showSuccess:function(options,args,evt){if(this._skipMessages){return}this._hideError(options,evt);if(args.message){args={owner:this,message:args.message,target:options._$messageTarget?options._$messageTarget:options.notifyTarget,fieldOptions:args.fieldOptions};if(evt&&!this._trigger(this.events.successShowing,evt,args)){return}this._ensureNotifier(options);if(options._$messageTarget){options._$messageTarget.removeClass("field-validation-error").addClass("field-validation-valid").html(args.message).show();options.notifyTarget.data("igNotifier")._setOption("state","success");options.notifyTarget.data("igNotifier")._setTargetState()}else{options.notifyTarget.igNotifier("notify","success",args.message)}if(evt){this._trigger(this.events.successShown,evt,args)}}},_hideSuccess:function(options,evt){var notifier=options._$messageTarget||options.notifyTarget.data("igNotifier"),args={owner:this,target:options._$messageTarget||options.notifyTarget,message:notifier._currentText||options._$messageTarget&&options._$messageTarget.text(),fieldOptions:options===this.options?null:options};if(this._hasVisibleSuccess(options)){if(evt&&!this._trigger(this.events.successHiding,evt,args)){return}notifier.hide();if(evt){this._trigger(this.events.successHidden,evt,args)}}},_handleNotifierEvent:function(evt,ui,type,args){var state=ui.owner.options.state;args.message=ui.owner._currentText;if(state==="error"){return args.owner._trigger(this.events["error"+type],evt,args)}else if(state==="success"){return args.owner._trigger(this.events["success"+type],evt,args)}return true},_getTargetValue:function(options){if(options._control){if(options._control.options.checked!==undefined){return options._control.options.checked}else if(options._control.refreshValue&&options._control.options.allowCustomValue){options._control.refreshValue()}return options._control.value()}var $target=this._targetFromOptions(options);if(!$target.length){return null}switch(options._type){case"textarea":return $target.val().replace(/\r?\n/g,"\r\n");case"checkbox":return $target[0].checked;case"radio":case"checkboxrange":return options._group.filter(":checked").map(function(){return this.value}).get();case"input":case"select":case"selectrange":return $target.val()}return $target.val&&$target.val()},_getLocalizedMessage:function(key,postfix){key+=postfix||"Message";var message=this._getLocaleValue(key);if(!message&&$.ig&&$.ig.Validator&&$.ig.Validator.locale){message=this._getLocaleValue(key)}return message||""},_targetFromOptions:function(options,outer){if(outer&&options._control){if(options._control.editorContainer){return options._control.editorContainer()}else if(options._control.comboWrapper){return options._control.comboWrapper().children().first()}}if(options.selector){return options.selector instanceof $?options.selector:$(options.selector)}else{return this.element}},_getEditor:function(elem){var widgets=elem.data(),controls=["Editor","Combo","Rating","DatePicker","TimePicker"],regEx=new RegExp("ig.*?("+controls.join("|")+")");for(var i in widgets){if(widgets[i].widgetName&®Ex.test(widgets[i].widgetName)){return widgets[i]}}return null},_cleanupField:function(options){var element=this._targetFromOptions(options||this.options);element.unbind(".validator");if(options.notifyTarget&&options.notifyTarget.data("igNotifier")){options.notifyTarget.igNotifier("destroy").unbind(".validator")}this._clearMessageTarget(options);if(element.data("igValidatorField")){element.removeData("igValidatorField")}this._removeFieldIndications(options);if(options._control){if(options._control._options){options._control._options.validator=null}else{options._control._validator=null}}element.removeClass(this.css.target)},_addGlobalSettings:function(options){if(options===this.options){return options}var properties=["required","threshold","number","date","lengthRange","valueRange","email","creditCard","custom","onblur","onchange","onsubmit","successMessage","errorMessage","requiredIndication","optionalIndication","executeAllRules"],extendedOptions=$.extend({},options);for(var i=0;i=this.options.fields.length){return-1}return index},validate:function(field){var valid;this._forceValidation=true;valid=this._validate(field);this._forceValidation=false;return valid},isValid:function(field){this._skipMessages=true;var valid=this.validate(field);this._skipMessages=false;return valid},hide:function(field){var i;if(this.options.fields){if(field!==undefined){if((i=this._fieldIndexOf(field))>-1){this._hideError(this.options.fields[i]);this._hideSuccess(this.options.fields[i])}return}for(i=0;i-1&&this.options.fields[i].isValid!==undefined&&!this.options.fields[i].isValid){Array.prototype.push.apply(result,this.options.fields[i]._currentMessages)}return result}for(i=0;i-1){result=!result?this._fieldMessageVisible(this.options.fields[i]):result}return result}for(i=0;i-1){notifier=this.options.fields[i].notifyTarget&&this.options.fields[i].notifyTarget.data("igNotifier")}else{notifier=this.options.notifyTarget&&this.options.notifyTarget.data("igNotifier")}return notifier||null},addField:function(field){if(!this.options.fields){return}this.options.fields.push(field);this._initializeField($(field.selector),field);var options=this._addGlobalSettings(field);if(options.onsubmit){if(!this._formHandleCounter){this._attachToForm(true)}this._formHandleCounter++}},removeField:function(field){if(!this.options.fields){return}var index=this._fieldIndexOf(field);if(index>-1){var removed=this.options.fields.splice(index,1)[0],options=this._addGlobalSettings(removed);this._cleanupField(removed);if(options.onsubmit&&!--this._formHandleCounter){this._detachFromForm()}}},updateField:function(field,fieldOptions){if(!this.options.fields){return}var index=this._fieldIndexOf(field);if(index>-1){if(!fieldOptions){this._cleanupField(this.options.fields[index]);this._initializeField($(this.options.fields[index].selector),this.options.fields[index]);return}fieldOptions=$.extend({},this.options.fields[index],fieldOptions);var current=this._addGlobalSettings(this.options.fields[index]),options=this._addGlobalSettings(fieldOptions);this._cleanupField(current);this._initializeField($(fieldOptions.selector),fieldOptions);if(current.onsubmit&&!--this._formHandleCounter){this._detachFromForm()}if(options.onsubmit){if(!this._formHandleCounter){this._attachToForm(true)}this._formHandleCounter++}this.options.fields.splice(index,1,fieldOptions)}},destroy:function(){if(!this.options.fields){this._cleanupField(this.options)}else{for(var i=0;i-1){return this.groupMessageName}else{return this.name}},shouldRun:function(options){return options[this.name]},isValid:function(options,value){var internalValue=!isNaN(parseFloat(value))?value.toString():value;if(!internalValue||value.length===0){return false}return true}});$.ig.igValidatorControlRule=$.ig.igValidatorControlRule||$.ig.igValidatorBaseRule.extend({name:"control",getMessageType:function(){return"default"},getRuleMessage:function(options){return options.errorMessage||options._control._currentMessage||""},shouldRun:function(options,value){return options._control&&typeof options._control.isValid==="function"&&value},isValid:function(options){return options._control.isValid()}});$.ig.igValidatorNumberRule=$.ig.igValidatorNumberRule||$.ig.igValidatorBaseRule.extend({name:"number",_isNumber:function(options,value){if(typeof value==="number"){return true}else if(typeof value==="string"){return this._parseNumber(value,options)!==null}return false},_parseNumber:function(value,options){if(typeof value==="number"){return value}var decimalSeparator=options.number&&options.number.decimalSeparator,thousandsSeparator=options.number&&options.number.thousandsSeparator,thousandsRegEx,result;decimalSeparator=decimalSeparator||$.ui.igValidator.defaults.decimalSeparator;thousandsSeparator=thousandsSeparator||$.ui.igValidator.defaults.thousandsSeparator;thousandsRegEx=new RegExp("\\"+thousandsSeparator,"g");value=value.split(decimalSeparator);value[0]=value[0].replace(thousandsRegEx,"");result=value.join(".");if(result.length&&!isNaN(result)){return parseFloat(result)}return null},isValid:function(options,value){var internalValue=""+value;if(internalValue){return this._isNumber(options,value)}return true}});$.ig.igValidatorDateRule=$.ig.igValidatorDateRule||$.ig.igValidatorBaseRule.extend({name:"date",isValid:function(options,value){return value instanceof Date||!isNaN(new Date(value).getSeconds())}});$.ig.igValidatorLengthRule=$.ig.igValidatorLengthRule||$.ig.igValidatorBaseRule.extend({name:"lengthRange",_lastMessageType:"rangeLength",getMessageType:function(){return this._lastMessageType},isValid:function(options,value){if(value&&value.length){var min,max,messageSuffix=value.push?"Select":"Length",minLength=options.lengthRange.push?options.lengthRange[0]:options.lengthRange.min,maxLength=options.lengthRange.push?options.lengthRange[1]:options.lengthRange.max;min=minLength&&value.lengthmaxLength;if(minLength&&maxLength&&(min||max)){this._lastMessageType="range"+messageSuffix;this.formatItems=[minLength,maxLength]}else if(min){this._lastMessageType="min"+messageSuffix;this.formatItems=[minLength]}else if(max){this._lastMessageType="max"+messageSuffix;this.formatItems=[maxLength]}if(min||max){return false}}return true}});$.ig.igValidatorValueRule=$.ig.igValidatorValueRule||$.ig.igValidatorNumberRule.extend({name:"valueRange",_lastMessageType:"rangeValue",getMessageType:function(){return this._lastMessageType},isValid:function(options,value){var min=false,max=false,minValue,maxValue,hasMin,hasMax,isNumber=this._isNumber(options,value),isDateParsable=!isNaN(new Date(value).getSeconds());if(!isDateParsable&&!isNumber){return true}minValue=options.valueRange.push?options.valueRange[0]:options.valueRange.min;maxValue=options.valueRange.push?options.valueRange[1]:options.valueRange.max;hasMin=typeof minValue==="number"||minValue;hasMax=typeof maxValue==="number"||maxValue;if(!hasMin&&!hasMax){return true}if(isNumber&&!options.date){value=this._parseNumber(value,options);if(hasMin){min=valuemaxValue}}else if(isDateParsable&&!options.number){value=new Date(value);if(hasMin){minValue=new Date(minValue);min=valuemaxValue;maxValue=maxValue.toLocaleString()}}if(hasMin&&hasMax&&(min||max)){this._lastMessageType="rangeValue";this.formatItems=[minValue,maxValue]}else if(min){this._lastMessageType="minValue";this.formatItems=[minValue]}else if(max){this._lastMessageType="maxValue";this.formatItems=[maxValue]}return!(min||max)}});$.ig.igValidatorEqualToRule=$.ig.igValidatorEqualToRule||$.ig.igValidatorBaseRule.extend({name:"equalTo",isValid:function(options,value){var selector=options.equalTo.selector||options.equalTo,targetValue=this.validator._getTargetValue({_control:this.validator._getEditor($(selector)),selector:selector});if($.ig.util.compare(value,targetValue)){return false}return true}});$.ig.igValidatorEmailRule=$.ig.igValidatorEmailRule||$.ig.igValidatorBaseRule.extend({name:"email",isValid:function(options,value){return $.ui.igValidator.defaults.emailRegEx.test(value)}});$.ig.igValidatorPatternRule=$.ig.igValidatorPatternRule||$.ig.igValidatorBaseRule.extend({name:"pattern",isValid:function(options,value){var regEx=options.pattern.expresion||options.pattern.expression||options.pattern;regEx=regEx.test?regEx:new RegExp(regEx.toString());return regEx.test(value)}});$.ig.igValidatorCustomRule=$.ig.igValidatorCustomRule||$.ig.igValidatorBaseRule.extend({name:"custom",getMessageType:function(){return"default"},shouldRun:function(options){return options[this.name]},isValid:function(options,value){var fieldOptions=options===this.validator.options?null:options,func=options.custom.method||options.custom;if(typeof func==="string"&&typeof window[func]==="function"){func=window[func]}if(typeof func==="function"&&!func.apply(this.validator,[value,fieldOptions])){ return false}return true}});$.ig.igValidatorCreditCardRule=$.ig.igValidatorCreditCardRule||$.ig.igValidatorBaseRule.extend({name:"creditCard",isValid:function(options,value){var val=value&&""+value,evenDigit=false,checksum=0;if(val){val=val.replace(/-/g,"");val=val.replace(/ /g,"");val=val.reverse();for(var i=0;i0){checksum+=digitValue%10;digitValue=Math.floor(digitValue/10)}}return checksum%10===0}return true}});return $});