Socket
Socket
Sign inDemoInstall

angular-form-for

Package Overview
Dependencies
Maintainers
1
Versions
61
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

angular-form-for - npm Package Compare versions

Comparing version 4.1.9 to 4.1.10

2

bower.json
{
"name": "angular-form-for",
"version": "4.1.9",
"version": "4.1.10",
"main": [

@@ -5,0 +5,0 @@ "./dist/form-for.css",

# Changelog
## 4.1.10
Validation now properly handles `minimum` and `maximum` values of 0 instead of filtering them out as falsy.
## 4.1.9

@@ -4,0 +7,0 @@ Multiple formForBuilders can now be used within a form. This enables automatic rendering for parts of the form and manual rendering for others. (Or automatic rendering for separate subections of the form.)

@@ -1,3 +0,3 @@

angular.module("formFor",[]);var formFor;!function(e){var t=function(){function e(){this.restrict="A"}return e.prototype.link=function(e,t,i){e.$watch("model.uid",function(e){i.$set("ariaDescribedby",e+"-error"),i.$set("ariaLabelledby",e+"-label")}),e.$watch("model.error",function(e){i.$set("ariaInvalid",!!e)})},e.prototype.link.$inject=["$scope","$element","$attributes"],e}();e.AriaManager=t,angular.module("formFor").directive("ariaManager",function(){return new t})}(formFor||(formFor={}));var formFor;!function(e){var t=function(){function t(){this.autoGenerateLabels=!1,this.autoTrimValues=!1,this.defaultDebounceDuration=500,this.defaultSubmitComplete=angular.noop,this.defaultSubmitError=angular.noop,this.defaultValidationFailed=angular.noop,this.defaultSelectEmptyOptionValue=void 0,this.helpIcon=null,this.labelClass=null,this.requiredLabel=null,this.validationFailedForCustomMessage_="Failed custom validation",this.validationFailedForEmailTypeMessage_="Invalid email format",this.validationFailedForIncrementMessage_="Value must be in increments of {{num}}",this.validationFailedForIntegerTypeMessage_="Must be an integer",this.validationFailedForMaxCollectionSizeMessage_="Must be fewer than {{num}} items",this.validationFailedForMaximumMessage_="Must be no more than {{num}}",this.validationFailedForMaxLengthMessage_="Must be fewer than {{num}} characters",this.validationFailedForMinimumMessage_="Must be at least {{num}}",this.validationFailedForMinCollectionSizeMessage_="Must at least {{num}} items",this.validationFailedForMinLengthMessage_="Must be at least {{num}} characters",this.validationFailedForNegativeTypeMessage_="Must be negative",this.validationFailedForNonNegativeTypeMessage_="Must be non-negative",this.validationFailedForNumericTypeMessage_="Must be numeric",this.validationFailedForPatternMessage_="Invalid format",this.validationFailedForPositiveTypeMessage_="Must be positive",this.validationFailedForRequiredMessage_="Required field"}return t.prototype.disableAutoLabels=function(){this.autoGenerateLabels=!1},t.prototype.enableAutoLabels=function(){this.autoGenerateLabels=!0},t.prototype.disableAutoTrimValues=function(){this.autoTrimValues=!1},t.prototype.enableAutoTrimValues=function(){this.autoTrimValues=!0},t.prototype.getFailedValidationMessage=function(t){switch(t){case e.ValidationFailureType.CUSTOM:return this.validationFailedForCustomMessage_;case e.ValidationFailureType.COLLECTION_MAX_SIZE:return this.validationFailedForMaxCollectionSizeMessage_;case e.ValidationFailureType.COLLECTION_MIN_SIZE:return this.validationFailedForMinCollectionSizeMessage_;case e.ValidationFailureType.INCREMENT:return this.validationFailedForIncrementMessage_;case e.ValidationFailureType.MINIMUM:return this.validationFailedForMinimumMessage_;case e.ValidationFailureType.MAX_LENGTH:return this.validationFailedForMaxLengthMessage_;case e.ValidationFailureType.MAXIMUM:return this.validationFailedForMaximumMessage_;case e.ValidationFailureType.MIN_LENGTH:return this.validationFailedForMinLengthMessage_;case e.ValidationFailureType.PATTERN:return this.validationFailedForPatternMessage_;case e.ValidationFailureType.REQUIRED:return this.validationFailedForRequiredMessage_;case e.ValidationFailureType.TYPE_EMAIL:return this.validationFailedForEmailTypeMessage_;case e.ValidationFailureType.TYPE_INTEGER:return this.validationFailedForIntegerTypeMessage_;case e.ValidationFailureType.TYPE_NEGATIVE:return this.validationFailedForNegativeTypeMessage_;case e.ValidationFailureType.TYPE_NON_NEGATIVE:return this.validationFailedForNonNegativeTypeMessage_;case e.ValidationFailureType.TYPE_NUMERIC:return this.validationFailedForNumericTypeMessage_;case e.ValidationFailureType.TYPE_POSITIVE:return this.validationFailedForPositiveTypeMessage_}},t.prototype.setDefaultDebounceDuration=function(e){this.defaultDebounceDuration=e},t.prototype.setDefaultSubmitComplete=function(e){this.defaultSubmitComplete=e},t.prototype.setDefaultSubmitError=function(e){this.defaultSubmitError=e},t.prototype.setDefaultValidationFailed=function(e){this.defaultValidationFailed=e},t.prototype.setDefaultSelectEmptyOptionValue=function(e){this.defaultSelectEmptyOptionValue=e},t.prototype.setHelpIcon=function(e){this.helpIcon=e},t.prototype.setLabelClass=function(e){this.labelClass=e},t.prototype.setRequiredLabel=function(e){this.requiredLabel=e},t.prototype.setValidationFailedForCustomMessage=function(e){this.validationFailedForCustomMessage_=e},t.prototype.setValidationFailedForIncrementMessage=function(e){this.validationFailedForIncrementMessage_=e},t.prototype.setValidationFailedForMaxCollectionSizeMessage=function(e){this.validationFailedForMaxCollectionSizeMessage_=e},t.prototype.setValidationFailedForMaximumMessage=function(e){this.validationFailedForMaximumMessage_=e},t.prototype.setValidationFailedForMaxLengthMessage=function(e){this.validationFailedForMaxLengthMessage_=e},t.prototype.setValidationFailedForMinCollectionSizeMessage=function(e){this.validationFailedForMaxCollectionSizeMessage_=e},t.prototype.setValidationFailedForMinimumMessage=function(e){this.validationFailedForMinimumMessage_=e},t.prototype.setValidationFailedForMinLengthMessage=function(e){this.validationFailedForMinLengthMessage_=e},t.prototype.setValidationFailedForPatternMessage=function(e){this.validationFailedForPatternMessage_=e},t.prototype.setValidationFailedForRequiredMessage=function(e){this.validationFailedForRequiredMessage_=e},t.prototype.setValidationFailedForEmailTypeMessage=function(e){this.validationFailedForEmailTypeMessage_=e},t.prototype.setValidationFailedForIntegerTypeMessage=function(e){this.validationFailedForIntegerTypeMessage_=e},t.prototype.setValidationFailedForNegativeTypeMessage=function(e){this.validationFailedForNegativeTypeMessage_=e},t.prototype.setValidationFailedForNonNegativeTypeMessage=function(e){this.validationFailedForNonNegativeTypeMessage_=e},t.prototype.setValidationFailedForNumericTypeMessage=function(e){this.validationFailedForNumericTypeMessage_=e},t.prototype.setValidationFailedForPositiveTypeMessage=function(e){this.validationFailedForPositiveTypeMessage_=e},t}();e.FormForConfiguration=t,angular.module("formFor").service("FormForConfiguration",function(){return new t})}(formFor||(formFor={}));var formFor;!function(e){var t=function(){function t(e){this.formForConfiguration_=e}return t.prototype.manageLabel=function(t,i,r){this.formForConfiguration_.autoGenerateLabels&&(t.label=e.StringUtil.humanize(r?t.value:t.attribute)),this.formForConfiguration_.labelClass&&(t.labelClass=this.formForConfiguration_.labelClass),i.hasOwnProperty("label")&&i.$observe("label",function(e){t.label=e}),i.hasOwnProperty("labelClass")&&i.$observe("labelClass",function(e){t.labelClass=e})},t.prototype.manageFieldRegistration=function(e,t,i){e.$watch("attribute",function(r,o){e.model&&i.unregisterFormField(o),e.model=i.registerFormField(e.attribute),t.uid&&(e.model.uid=t.uid)}),e.$on("$destroy",function(){i.unregisterFormField(e.attribute)})},t}();e.FieldHelper=t,angular.module("formFor").service("FieldHelper",["FormForConfiguration",function(e){return new t(e)}])}(formFor||(formFor={}));var formFor;!function(e){var t,i,r=function(){function e(e,r){this.require="^formFor",this.restrict="EA",this.templateUrl=function(e,t){return t.template||"form-for/templates/checkbox-field.html"},this.scope={attribute:"@",disable:"=",help:"@?",changed:"&?"},t=e,i=r}return e.$inject=["$log","fieldHelper"],e.prototype.link=function(e,r,o,n){return e.attribute?(e.attributes=o,e.tabIndex=o.tabIndex||0,e.toggle=function(){e.disable||e.model.disabled||(e.model.bindable=!e.model.bindable)},e.$watch("model.bindable",function(t){e.model&&(e.model.bindable=e.model.required?t||void 0:!!t)}),i.manageLabel(e,o,!1),void i.manageFieldRegistration(e,o,n)):void t.error('Missing required field "attribute"')},e.prototype.link.$inject=["$scope","$element","$attributes","formForController"],e}();e.CheckboxFieldDirective=r,angular.module("formFor").directive("checkboxField",["$log","FieldHelper",function(e,t){return new r(e,t)}])}(formFor||(formFor={}));var formFor;!function(e){var t,i=function(){function e(e){this.require="^formFor",this.restrict="EA",this.templateUrl=function(e,t){return t.template||"form-for/templates/collection-label.html"},this.scope={attribute:"@",help:"@?",label:"@"},t=e}return e.$inject=["$sce"],e.prototype.link=function(e,i,r,o){e.$watch("label",function(i){e.bindableLabel=t.trustAsHtml(i)}),e.model=o.registerCollectionLabel(e.attribute)},e.prototype.link.$inject=["$scope","$element","$attributes","formForController"],e}();e.CollectionLabelDirective=i,angular.module("formFor").directive("collectionLabel",["$sce",function(e){return new i(e)}])}(formFor||(formFor={}));var formFor;!function(e){var t=function(){function e(){this.restrict="EA",this.templateUrl=function(e,t){return t.template||"form-for/templates/field-error.html"},this.scope={error:"=",leftAligned:"@?",uid:"@"}}return e.prototype.link=function(){},e.prototype.link.$inject=["$scope"],e}();e.FieldErrorDirective=t,angular.module("formFor").directive("fieldError",function(){return new t})}(formFor||(formFor={}));var formFor;!function(e){var t,i,r=function(){function e(e,r){this.replace=!0,this.restrict="EA",this.templateUrl=function(e,t){return t.template||"form-for/templates/field-label.html"},this.scope={inputUid:"@",help:"@?",label:"@",labelClass:"@?",required:"@?",uid:"@"},t=e,i=r}return e.$inject=["$sce","formForConfiguration"],e.prototype.link=function(e,r,o){e.attributes=o,e.helpIcon=i.helpIcon,e.$watch("label",function(i){e.bindableLabel=t.trustAsHtml(i)}),e.$watch("required",function(t){e.requiredLabel=e.$eval(t)?i.requiredLabel:null})},e.prototype.link.$inject=["$scope","$element","$attributes"],e}();e.FieldLabelDirective=r,angular.module("formFor").directive("fieldLabel",["$sce","FormForConfiguration",function(e,t){return new r(e,t)}])}(formFor||(formFor={}));var formFor;!function(e){var t,i,r=function(){function r(r,o){this.require="^formFor",this.restrict="A",t=r,i=new e.NestedObjectHelper(o)}return r.$inject=["$compile","$parse"],r.prototype.link=function(r,o,n,a){var l;n.formForBuilder?l=r.$eval(n.formForBuilder):n.validationRules?l=r.$eval(n.validationRules):n.$service&&(l=r.$eval(n.$service.validationRules));for(var s=i.flattenObjectKeys(l),u="",d=0,c=s.length;c>d;d++){var f=s[d],p=i.readAttribute(l,f);if(p&&p.hasOwnProperty("inputType")){var m,F=p.help||"",b=p.label||"",h="",v=p.template||"",g=p.uid||"",y=b?'label="'+b+'"':"";switch(p.hasOwnProperty("placeholder")&&(h='placeholder="'+p.placeholder+'"'),p.inputType){case e.BuilderFieldType.CHECKBOX:u+='<checkbox-field attribute="'+f+'"\n help="'+F+'"\n '+y+'\n template="'+v+'"\n uid="'+g+'">\n </checkbox-field>';break;case e.BuilderFieldType.RADIO:m=JSON.stringify(p.values).replace(/"/g,"&quot;"),u+='<radio-field attribute="'+f+'"\n '+y+'\n options="'+m+'"\n template="'+v+'"\n uid="'+g+'">\n </radio-field>';break;case e.BuilderFieldType.SELECT:m=JSON.stringify(p.values).replace(/"/g,"&quot;"),u+='<select-field attribute="'+f+'"\n '+(p.allowBlank?"allow-blank":"")+"\n "+(p.enableFiltering?"enable-filtering":"")+'\n help="'+F+'"\n '+y+'\n multiple="'+!!p.multipleSelection+'"\n options="'+m+'"\n '+h+'\n template="'+v+'"\n uid="'+g+'"\n value-attribute="'+(p.valueAttribute||"")+'">\n </select-field>';break;case e.BuilderFieldType.NUMBER:case e.BuilderFieldType.PASSWORD:case e.BuilderFieldType.TEXT:default:var h;p.hasOwnProperty("placeholder")&&(h='placeholder="'+p.placeholder+'"'),u+='<text-field attribute="'+f+'"\n '+y+'\n help="'+F+'"\n ng-attr-multiline="'+!!p.multiline+'"\n '+h+'\n rows="'+(p.rows||"")+'"\n type="'+p.inputType+'"\n template="'+v+'"\n uid="'+g+'">\n </text-field>'}}}0===o.find("input[type=button], button, submit-button").length&&(u+='<submit-button label="Submit"></submit-button>');var E=t(u),_=E(r,void 0,{transcludeControllers:a});o.prepend(_)},r.prototype.link.$inject=["$scope","$element","$attributes","formForController"],r}();e.FormForBuilderDirective=r,angular.module("formFor").directive("formForBuilder",["$compile","$parse",function(e,t){return new r(e,t)}])}(formFor||(formFor={}));var formFor;!function(e){var t,i,r,o,n=function(){function e(e,n,a,l){this.priority=99,this.require="ngModel",this.restrict="A",this.scope={formForDebounce:"@"},t=e,i=n,r=a,o=l}return e.$inject=["$log","$sniffer","$timeout","formForConfiguration"],e.prototype.link=function(e,n,a,l){if("radio"===a.type||"checkbox"===a.type)return void t.warn("formForDebounce should only be used with <input type=text> and <textarea> elements");var s=a.formForDebounce,u=o.defaultDebounceDuration;void 0!==s&&("false"===s.toString()?u=!1:(s=parseInt(s),angular.isNumber(s)&&!isNaN(s)&&(u=s))),i.hasEvent("input")?n.off("input"):(n.off("keydown"),i.hasEvent("paste")&&n.off("paste"));var d;if(u!==!1){var c=function(){r.cancel(d),d=r(function(){e.$apply(function(){l.$setViewValue(n.val())})},u)};i.hasEvent("input")?n.on("input",c):(n.on("keydown",c),i.hasEvent("paste")&&n.on("paste",c))}n.on("blur",function(){e.$apply(function(){l.$setViewValue(n.val())})}),e.$on("$destroy",function(){d&&r.cancel(d)})},e.prototype.link.$inject=["$scope","$element","$attributes","ngModelController"],e}();e.FormForDebounceDirective=n,angular.module("formFor").directive("formForDebounce",["$log","$sniffer","$timeout","FormForConfiguration",function(e,t,i,r){return new n(e,t,i,r)}])}(formFor||(formFor={}));var formFor;!function(e){var t=function(){function e(e){this.$parse_=e}return e.prototype.flattenAttribute=function(e){return e.replace(/\[([^\]]+)\]\.{0,1}/g,"___$1___").replace(/\./g,"___")},e.prototype.flattenObjectKeys=function(e){for(var t=[],i=[{object:e,prefix:null}];;){if(0===i.length)break;var r=i.pop(),o=Array.isArray(r.object),n=r.prefix?r.prefix+(o?"[":"."):"",a=o?"]":"";if("object"==typeof r.object)for(var l in r.object){var s=n+l+a,u=r.object[l];t.push(s),i.push({object:u,prefix:s})}}return t},e.prototype.readAttribute=function(e,t){return this.$parse_(t)(e)},e.prototype.writeAttribute=function(e,t,i){this.initializeArraysAndObjectsForParse_(e,t),this.$parse_(t).assign(e,i)},e.prototype.initializeArraysAndObjectsForParse_=function(e,t){for(var i=0;;){if(i=t.indexOf("[",i),0>i)break;var r=t.substr(0,i),o=this.readAttribute(e,r);o||(o=[],this.writeAttribute(e,r,o));var n=t.substr(i).match(/([0-9]+)\]\./);if(n){var a=parseInt(n[1]);o[a]||(o[a]={})}i++}},e}();e.NestedObjectHelper=t}(formFor||(formFor={}));var formFor;!function(e){var t=function(){function e(e){this.$q_=e}return e.prototype.all=function(e){return this.$q_.all(e)},e.prototype.defer=function(){return this.$q_.defer()},e.prototype.resolve=function(e){var t=this.$q_.defer();return t.resolve(e),t.promise},e.prototype.reject=function(e){return this.$q_.reject(e)},e.prototype.waitForAll=function(e){function t(e,t){o.hasOwnProperty(e)||(o[e]=t,n--),i()}function i(){0===n&&(a?r.reject(o):r.resolve(o))}var r=this.$q_.defer(),o={},n=0,a=!1;return angular.forEach(e,function(e,i){n++,e.then(function(e){t(i,e)},function(e){a=!0,t(i,e)})}),i(),r.promise},e.prototype.when=function(e){return this.$q_.when(e)},e}();e.PromiseUtils=t}(formFor||(formFor={}));var formFor;!function(e){function t(t,i,r,o,n,a){var l=new e.NestedObjectHelper(i),s=new e.PromiseUtils(r);return t.getValidationRulesForAttribute=function(e){return n.getRulesForField(e,o.$validationRuleset)},t.registerCollectionLabel=function(e){var t=l.flattenAttribute(e),i={error:null,required:n.isCollectionRequired(e,o.$validationRuleset)};o.collectionLabels[t]=i;var r=!1;return o.$watch("formFor."+e+".length",function(){r?o.validateOn&&"change"!==o.validateOn||n.validateCollection(o.formFor,e,o.$validationRuleset).then(function(){o.formForStateHelper.setFieldError(t,null)},function(e){o.formForStateHelper.setFieldError(t,e)}):r=!0}),i},t.registerFormField=function(r){if(!r)throw Error('Invalid field name "'+r+'" provided.');var s=l.flattenAttribute(r);if(o.fields.hasOwnProperty(s))throw Error('Field "'+r+'" has already been registered. Field names must be unique.');var u={bindable:null,disabled:o.disable,error:null,pristine:!0,required:n.isFieldRequired(r,o.$validationRuleset),uid:e.FormForGUID.create()},d={bindableWrapper:u,fieldName:r,formForStateHelper:o.formForStateHelper,unwatchers:[]};o.fields[s]=d;var c=i(r),f=c.assign;d.unwatchers.push(o.$watch("fields."+s+".bindableWrapper.bindable",function(e,t){(e||e!=t)&&(a.autoTrimValues&&"string"==typeof e&&(e=e.trim()),f(o.formFor,e))}));var p;return d.unwatchers.push(o.$watch("formFor."+r,function(e,i){(e!==d.bindableWrapper.bindable||void 0===i&&""===e||void 0===e)&&(p=!1),d.bindableWrapper.bindable=e,o.validateOn&&"change"!==o.validateOn||t.validateField(r),p||(p=!0,o.formForStateHelper.setFieldHasBeenModified(s,!1)),d.bindableWrapper.pristine=!o.formForStateHelper.hasFieldBeenModified(s)})),u},t.registerSubmitButton=function(){var e={disabled:!1};return o.buttons.push(e),e},t.resetErrors=function(){for(var e in o.fields)o.formForStateHelper.getFieldError(e)&&(o.formForStateHelper.setFieldHasBeenModified(e,!1),o.fields[e].bindableWrapper.pristine=!0);o.formForStateHelper.setFormSubmitted(!1),o.formForStateHelper.resetFieldErrors()},t.resetField=function(e){var t=l.flattenAttribute(e);o.formForStateHelper.getFieldError(t)&&(o.formForStateHelper.setFieldHasBeenModified(t,!1),o.fields[t].bindableWrapper.pristine=!0),o.formForStateHelper.setFieldError(t,null)},t.resetFields=function(){t.resetErrors()},t.setFieldError=function(e,t){var i=l.flattenAttribute(e);o.formForStateHelper.setFieldHasBeenModified(i,!0),o.formForStateHelper.setFieldError(i,t)},t.unregisterFormField=function(e){var t=l.flattenAttribute(e);angular.forEach(o.fields[t].unwatchers,function(e){e()}),delete o.fields[t]},t.updateCollectionErrors=function(e){angular.forEach(o.collectionLabels,function(t,i){var r=l.readAttribute(e,i);o.formForStateHelper.setFieldError(i,r)})},t.updateFieldErrors=function(e){angular.forEach(o.fields,function(t,i){var r=l.readAttribute(e,t.fieldName);o.formForStateHelper.setFieldError(i,r)})},t.validateField=function(e){var t=l.flattenAttribute(e);o.formForStateHelper.setFieldHasBeenModified(t,!0),o.$validationRuleset&&n.validateField(o.formFor,e,o.$validationRuleset).then(function(){o.formForStateHelper.setFieldError(t,null)},function(e){o.formForStateHelper.setFieldError(t,e)})},t.validateForm=function(e){t.updateCollectionErrors({}),t.updateFieldErrors({});var i,r;if(o.$validationRuleset){var a=[];angular.forEach(o.fields,function(e){a.push(e.fieldName)}),r=n.validateFields(o.formFor,a,o.$validationRuleset),r.then(angular.noop,t.updateFieldErrors),a=[],angular.forEach(o.collectionLabels,function(e,t){a.push(t)}),i=n.validateFields(o.formFor,a,o.$validationRuleset),i.then(angular.noop,t.updateCollectionErrors)}else i=s.resolve(),r=s.resolve();var u=s.defer();return s.waitForAll([i,r]).then(u.resolve,function(t){angular.isArray(t[0])&&0===t[0].length&&t.splice(0,1),e&&angular.forEach(t,function(e){var t=l.flattenObjectKeys(e);angular.forEach(t,function(t){var i=l.readAttribute(e,t);if(i){var r=l.flattenAttribute(t);o.formForStateHelper.setFieldHasBeenModified(r,!0)}})}),u.reject(t)}),u.promise},t}e.createFormForController=t}(formFor||(formFor={}));var formFor;!function(e){var t,i,r,o,n,a,l,s=function(){function s(s){this.require="form",this.restrict="A",this.scope={controller:"=?",disable:"=?",formFor:"=",service:"@",submitComplete:"&?",submitError:"&?",submitWith:"&?",valid:"=?",validateOn:"=?",validationFailed:"&?",validationRules:"=?"},t=s,i=s.get("$log"),r=s.get("$parse"),o=s.get("$sce"),n=s.get("FormForConfiguration"),a=s.get("ModelValidator"),l=new e.PromiseUtils(s.get("$q"))}return s.$inject=["$injector"],s.prototype.controller=function(s){s.formFor||i.error('The form data object specified by <form form-for=""> is null or undefined.'),s.fields={},s.collectionLabels={},s.buttons=[],s.controller=s.controller||{},s.service&&(s.$service=t.get(s.service)),s.validationRules?s.$validationRuleset=s.validationRules:s.$service&&(s.$validationRuleset=s.$service.validationRules),e.createFormForController(this,r,l,s,a,n),s.controller&&angular.copy(this,s.controller),s.$watch("disable",function(e){angular.forEach(s.fields,function(t){t.bindableWrapper.disabled=e}),angular.forEach(s.buttons,function(t){t.disabled=e})}),s.formForStateHelper=new e.FormForStateHelper(r,s),s.$watch("formForStateHelper.watchable",function(){var e=s.formForStateHelper.hasFormBeenSubmitted();angular.forEach(s.fields,function(t,i){if(e||s.formForStateHelper.hasFieldBeenModified(i)){var r=s.formForStateHelper.getFieldError(i);t.bindableWrapper.error=r?o.trustAsHtml(r):null}else t.bindableWrapper.error=null}),angular.forEach(s.collectionLabels,function(e,t){var i=s.formForStateHelper.getFieldError(t);e.error=i?o.trustAsHtml(i):null})})},s.prototype.controller.$inject=["$scope"],s.prototype.link=function(e,t,i){t.on("submit",function(){e.formForStateHelper.setFormSubmitted(!0),e.disable=!0;var t;return t="manual"===e.validateOn?l.resolve():e.controller.validateForm(),t.then(function(){var t;t=i.submitWith?e.submitWith({data:e.formFor}):e.$service&&e.$service.submit?e.$service.submit(e.formFor):l.reject("No submit function provided"),t||(t=l.reject("Submit function did not return a promise")),t.then(function(t){i.submitComplete?e.submitComplete({data:t}):n.defaultSubmitComplete(t,e.controller)},function(t){angular.isObject(t)&&"manual"!==e.validateOn&&(e.controller.updateCollectionErrors(t),e.controller.updateFieldErrors(t)),i.submitError?e.submitError({error:t}):n.defaultSubmitError(t,e.controller)}),t["finally"](function(){e.disable=!1})},function(t){e.disable=!1,i.validationFailed?e.validationFailed():n.defaultValidationFailed(t)}),!1})},s.prototype.link.$inject=["$scope","$element","$attributes"],s}();e.FormForDirective=s,angular.module("formFor").directive("formFor",["$injector",function(e){return new s(e)}])}(formFor||(formFor={}));var formFor;!function(e){var t=function(){function e(){}return e.create=function(){return("0000"+(Math.random()*Math.pow(36,4)<<0).toString(36)).slice(-4)},e}();e.FormForGUID=t}(formFor||(formFor={}));var formFor;!function(e){var t,i,r,o=function(){function o(o,n,a){this.require="^formFor",this.restrict="EA",this.templateUrl=function(e,t){return t.template||"form-for/templates/radio-field.html"},this.scope={attribute:"@",disable:"=",help:"@?",options:"=",value:"@"},r=new e.FieldHelper(a),t=o,i=n}return o.$inject=["$sce","$log","FormForConfiguration"],o.prototype.link=function(o,n,a,l){return o.attribute?(o.labelAttribute=a.labelAttribute||"label",o.valueAttribute=a.valueAttribute||"value",r.manageFieldRegistration(o,a,l),o.uid=a.uid||e.FormForGUID.create(),r.manageLabel(o,a,!0),o.tabIndex=a.tabIndex||0,o.click=function(){!o.disable&&!o.model.disabled},o.$watch("options",function(e){e.forEach(function(e){angular.isObject(e[o.labelAttribute])||(e[o.labelAttribute]=t.trustAsHtml(e[o.labelAttribute]))})},!0),o.$watch("model",function(e){o.model=e}),o.$watch("disable",function(e){o.disable=e}),void o.$watch("model.disabled",function(e){o.model&&(o.model.disabled=e)})):void i.error('Missing required field "attribute"')},o.prototype.link.$inject=["$scope","$element","$attributes","formForController"],o}();e.RadioFieldDirective=o,angular.module("formFor").directive("radioField",["$sce","$log","FormForConfiguration",function(e,t,i){return new o(e,t,i)}])}(formFor||(formFor={}));var formFor;!function(e){var t,i,r,o,n,a=10,l=function(){function e(e,a,l,s,u){this.require="^formFor",this.restrict="EA",this.templateUrl=function(e,t){return t.template||"form-for/templates/select-field.html"},this.scope={attribute:"@",disable:"=",help:"@?",multiple:"=?",options:"="},t=e,i=a,r=l,o=s,n=u}return e.$inject=["$document","$log","$timeout","fieldHelper","formForConfiguration"],e.prototype.link=function(e,l,s,u){if(!e.attribute)return void i.error('Missing required field "attribute"');e.allowBlank=s.hasOwnProperty("allowBlank"),e.preventDefaultOption=s.hasOwnProperty("preventDefaultOption"),e.labelAttribute=s.labelAttribute||"label",e.valueAttribute=s.valueAttribute||"value",e.placeholder=s.hasOwnProperty("placeholder")?s.placeholder:"Select",e.tabIndex=s.tabIndex||0,e.scopeBuster={},o.manageLabel(e,s,!1),o.manageFieldRegistration(e,s,u),e.close=function(){r(function(){e.isOpen=!1})},e.open=function(){e.disable||e.model.disabled||r(function(){e.isOpen=!0})},e.bindableOptions=[],e.emptyOption={},e.emptyOption[e.labelAttribute]=e.placeholder,e.emptyOption[e.valueAttribute]=n.defaultSelectEmptyOptionValue,e.selectOption=function(t){e.model.bindable=t&&t[e.valueAttribute]};var d=function(){var t=e.options&&e.options.length;e.model.bindable||e.allowBlank||e.preventDefaultOption||!t||e.selectOption(e.options[0]),(null===e.model.bindable||void 0===e.model.bindable||""===e.model.bindable)&&(e.model.bindable=n.defaultSelectEmptyOptionValue,e.emptyOption[e.valueAttribute]=e.model.bindable),e.bindableOptions.splice(0),(!e.model.bindable||e.allowBlank)&&e.bindableOptions.push(e.emptyOption),e.bindableOptions.push.apply(e.bindableOptions,e.options),e.model.bindable&&(e.emptyOption[e.labelAttribute]="")};r(function(){e.$watch("model.bindable",d),e.$watch("options.length",d)});var c,f=function(){e.close()};e.$watch("isOpen",function(){c&&r.cancel(c),c=r(function(){c=null,e.isOpen?t.on("click",f):t.off("click",f)},a)}),e.$on("$destroy",function(){t.off("click",f)}),e.mouseOver=function(t){e.mouseOverIndex=t,e.mouseOverOption=t>=0?e.options[t]:null},e.keyDown=function(t){switch(t.keyCode){case 27:e.close();break;case 13:e.isOpen?(e.selectOption(e.mouseOverOption),e.close()):e.open(),t.preventDefault();break;case 38:e.isOpen?e.mouseOver(e.mouseOverIndex>0?e.mouseOverIndex-1:e.options.length-1):e.open();break;case 40:e.isOpen?e.mouseOver(e.mouseOverIndex<e.options.length-1?e.mouseOverIndex+1:0):e.open();break;case 9:case 16:e.close();break;default:e.open()}}},e.prototype.link.$inject=["$scope","$element","$attributes","formForController"],e}();e.SelectFieldDirective=l,angular.module("formFor").directive("selectField",["$document","$log","$timeout","FieldHelper","FormForConfiguration",function(e,t,i,r,o){return new l(e,t,i,r,o)}])}(formFor||(formFor={}));var formFor;!function(e){var t,i=function(){function e(e){this.require="^formFor",this.restrict="EA",this.templateUrl=function(e,t){return t.template||"form-for/templates/submit-button.html"},this.scope={disable:"=",buttonClass:"@",icon:"@",label:"@"},t=e}return e.$inject=["$sce"],e.prototype.link=function(e,i,r,o){e.tabIndex=r.tabIndex||0,e.$watch("label",function(i){e.bindableLabel=t.trustAsHtml(i)}),e.model=o.registerSubmitButton(e)},e.prototype.link.$inject=["$scope","$element","$attributes","formForController"],e}();e.SubmitButtonDirective=i,angular.module("formFor").directive("submitButton",["$sce",function(e){return new i(e)}])}(formFor||(formFor={}));var formFor;!function(e){!function(e){e[e.EMAIL="email"]="EMAIL",e[e.INTEGER="integer"]="INTEGER",e[e.NEGATIVE="negative"]="NEGATIVE",e[e.NON_NEGATIVE="nonNegative"]="NON_NEGATIVE",e[e.NUMBER="number"]="NUMBER",e[e.POSITIVE="positive"]="POSITIVE"}(e.ValidationFieldType||(e.ValidationFieldType={}));e.ValidationFieldType}(formFor||(formFor={}));var formFor;!function(e){var t,i,r,o=function(){function e(e,o,n){this.require="^formFor",this.restrict="EA",this.templateUrl=function(e,t){return t.template||"form-for/templates/text-field.html"},this.scope={attribute:"@",debounce:"@?",disable:"=",focused:"&?",blurred:"&?",help:"@?",iconAfterClicked:"&?",iconBeforeClicked:"&?",placeholder:"@?",rows:"=?",controller:"=?"},t=e,i=o,r=n}return e.$inject=["$log","$timeout","fieldHelper"],e.prototype.link=function(e,o,n,a){if(!e.attribute)return void t.error('Missing required field "attribute"');e.attributes=n,e.rows=e.rows||3,e.type=n.type||"text",e.multiline=n.hasOwnProperty("multiline")&&"false"!==n.multiline,e.tabIndex=n.tabIndex||0,i(function(){e.controller=o.find(e.multiline?"textarea":"input").controller("ngModel")}),n.hasOwnProperty("autofocus")&&i(function(){o.find(e.multiline?"textarea":"input")[0].focus()}),r.manageLabel(e,n,!1),r.manageFieldRegistration(e,n,a);var l=a.getValidationRulesForAttribute(e.attribute);if(l&&(e.validationRules={increment:l.increment,maximum:l.maximum,minimum:l.minimum}),n.iconAfter){var s=function(){if(e.model){var t="{"===n.iconAfter.charAt(0)?e.$eval(n.iconAfter):n.iconAfter;e.iconAfter=angular.isObject(t)?e.model.error?t.invalid:e.model.pristine?t.pristine:t.valid:t}};n.$observe("iconAfter",s),e.$watch("model.error",s),e.$watch("model.pristine",s)}if(n.iconBefore){var u=function(){if(e.model){var t="{"===n.iconBefore.charAt(0)?e.$eval(n.iconBefore):n.iconBefore;e.iconBefore=angular.isObject(t)?e.model.error?t.invalid:e.model.pristine?t.pristine:t.valid:t}};n.$observe("iconBefore",u),e.$watch("model.error",u),e.$watch("model.pristine",u)}e.onIconAfterClick=function(){e.hasOwnProperty("iconAfterClicked")&&e.iconAfterClicked()},e.onIconBeforeClick=function(){e.hasOwnProperty("iconBeforeClicked")&&e.iconBeforeClicked()},e.onFocus=function(){e.hasOwnProperty("focused")&&e.focused()},e.onBlur=function(){e.hasOwnProperty("blurred")&&e.blurred()}},e}();e.TextFieldDirective=o,angular.module("formFor").directive("textField",["$log","$timeout","FieldHelper",function(e,t,i){return new o(e,t,i)}])}(formFor||(formFor={}));var formFor;!function(e){var t,i,r,o,n=10,a=function(){function e(e,n,a,l){this.require="^formFor",this.restrict="EA",this.templateUrl=function(e,t){return t.template||"form-for/templates/type-ahead-field.html"},this.scope={attribute:"@",debounce:"@?",disable:"=",filterDebounce:"@?",filterTextChanged:"&?",help:"@?",options:"="},t=e,i=n,r=a,o=l}return e.$inject=["$document","$log","$timeout","fieldHelper"],e.prototype.link=function(e,a,l,s){if(!e.attribute)return void i.error('Missing required field "attribute"');e.labelAttribute=l.labelAttribute||"label",e.valueAttribute=l.valueAttribute||"value",e.placeholder=l.hasOwnProperty("placeholder")?l.placeholder:"Select",e.tabIndex=l.tabIndex||0,e.scopeBuster={filter:""},o.manageLabel(e,l,!1),o.manageFieldRegistration(e,l,s);var u,d=function(){if(!u){var e=a.find("input");e.length&&(u=e[0])}u&&r(u.focus.bind(u))};e.close=function(){r(function(){e.isOpen=!1})},e.open=function(){e.disable||e.model.disabled||r(function(){e.isOpen=!0})},e.filteredOptions=[];var c=function(e){return"string"==typeof e?e.toLowerCase():""},f=function(){var t=e.options||[];if(e.filteredOptions.splice(0),e.scopeBuster.filter){var i=c(e.scopeBuster.filter);angular.forEach(t,function(t){var r=c(t[e.labelAttribute]).indexOf(i);r>=0&&e.filteredOptions.push(t)})}else angular.copy(t,e.filteredOptions)};e.searchTextChange=function(){},e.$watch("scopeBuster.filter",f),
e.$watch("options.length",f);var p=function(t){t.ignoreFor!==e.model.uid&&e.close()};e.filterTextClick=function(t){e.isOpen&&(t.ignoreFor=e.model.uid)};var m;e.$watch("isOpen",function(){m&&r.cancel(m),m=r(function(){m=null,e.isOpen?t.on("click",p):t.off("click",p)},n)}),e.$on("$destroy",function(){t.off("click",p)}),e.setFilterFocus=function(){d()},e.mouseOver=function(t){e.mouseOverIndex=t,e.mouseOverOption=t>=0?e.filteredOptions[t]:null},e.selectOption=function(t){e.model.bindable=t&&t[e.valueAttribute],e.scopeBuster.filter=t&&t[e.labelAttribute]};var F=function(){e.model.bindable&&e.options&&e.options.forEach(function(t){e.model.bindable===t[e.valueAttribute]&&(e.scopeBuster.filter=t[e.labelAttribute])})};e.$watch("model.bindable",F),e.$watch("options.length",F),e.keyDown=function(t){switch(t.keyCode){case 27:e.close();break;case 13:e.isOpen?(e.selectOption(e.mouseOverOption),e.close()):e.open(),t.preventDefault();break;case 38:e.isOpen?e.mouseOver(e.mouseOverIndex>0?e.mouseOverIndex-1:e.filteredOptions.length-1):e.open();break;case 40:e.isOpen?e.mouseOver(e.mouseOverIndex<e.filteredOptions.length-1?e.mouseOverIndex+1:0):e.open();break;case 9:case 16:e.close();break;default:e.open()}},e.$watchCollection("[isOpen, filteredOptions.length]",function(){e.mouseOver(-1),e.isOpen&&d()}),e.filterTextChanged instanceof Function&&e.$watch("scopeBuster.filter",function(t){e.filterTextChanged({text:t})})},e.prototype.link.$inject=["$scope","$element","$attributes","formForController"],e}();e.TypeAheadFieldDirective=a,angular.module("formFor").directive("typeAheadField",["$document","$log","$timeout","FieldHelper",function(e,t,i,r){return new a(e,t,i,r)}])}(formFor||(formFor={}));var formFor;!function(e){!function(e){e[e.CHECKBOX="checkbox"]="CHECKBOX",e[e.NUMBER="number"]="NUMBER",e[e.PASSWORD="password"]="PASSWORD",e[e.RADIO="radio"]="RADIO",e[e.SELECT="select"]="SELECT",e[e.TEXT="text"]="TEXT"}(e.BuilderFieldType||(e.BuilderFieldType={}));e.BuilderFieldType}(formFor||(formFor={}));var formFor;!function(e){!function(e){e[e.COLLECTION_MAX_SIZE="COLLECTION_MAX_SIZE"]="COLLECTION_MAX_SIZE",e[e.COLLECTION_MIN_SIZE="COLLECTION_MIN_SIZE"]="COLLECTION_MIN_SIZE",e[e.CUSTOM="CUSTOM"]="CUSTOM",e[e.INCREMENT="INCREMENT"]="INCREMENT",e[e.MAXIMUM="MAXIMUM"]="MAXIMUM",e[e.MAX_LENGTH="MAX_LENGTH"]="MAX_LENGTH",e[e.MINIMUM="MINIMUM"]="MINIMUM",e[e.MIN_LENGTH="MIN_LENGTH"]="MIN_LENGTH",e[e.PATTERN="PATTERN"]="PATTERN",e[e.REQUIRED="REQUIRED_FIELD"]="REQUIRED",e[e.TYPE_EMAIL="TYPE_EMAIL"]="TYPE_EMAIL",e[e.TYPE_INTEGER="TYPE_INTEGER"]="TYPE_INTEGER",e[e.TYPE_NEGATIVE="TYPE_NEGATIVE"]="TYPE_NEGATIVE",e[e.TYPE_NON_NEGATIVE="TYPE_NON_NEGATIVE"]="TYPE_NON_NEGATIVE",e[e.TYPE_NUMERIC="TYPE_NUMERIC"]="TYPE_NUMERIC",e[e.TYPE_POSITIVE="TYPE_POSITIVE"]="TYPE_POSITIVE"}(e.ValidationFailureType||(e.ValidationFailureType={}));e.ValidationFailureType}(formFor||(formFor={}));var formFor;!function(e){var t=function(){function t(t,i,r,o){this.$interpolate_=t,this.formForConfiguration_=o,this.nestedObjectHelper_=new e.NestedObjectHelper(i),this.promiseUtils_=new e.PromiseUtils(r)}return t.prototype.isCollectionRequired=function(e,t){var i=this.getRulesForField(e,t);return i&&i.collection&&i.collection.min?angular.isObject(i.collection.min)?i.collection.min.rule>0:i.collection.min>0:!1},t.prototype.isFieldRequired=function(e,t){var i=this.getRulesForField(e,t);return i&&i.required?angular.isObject(i.required)?i.required.rule:!!i.required:!1},t.prototype.validateAll=function(e,t){var i=this.nestedObjectHelper_.flattenObjectKeys(e);return this.validateFields(e,i,t)},t.prototype.validateCollection=function(e,t,i){var r=this.getRulesForField(t,i),o=this.nestedObjectHelper_.readAttribute(e,t);return r&&r.collection?(o=o||[],this.validateCollectionMinLength_(o,r.collection)||this.validateCollectionMaxLength_(o,r.collection)||this.promiseUtils_.resolve()):this.promiseUtils_.resolve()},t.prototype.validateField=function(e,t,i){var r=this.getRulesForField(t,i),o=this.nestedObjectHelper_.readAttribute(e,t);return r?((void 0===o||null===o)&&(o=""),this.validateFieldRequired_(o,r)||this.validateFieldMinimum_(o,r)||this.validateFieldMinLength_(o,r)||this.validateFieldIncrement_(o,r)||this.validateFieldMaximum_(o,r)||this.validateFieldMaxLength_(o,r)||this.validateFieldType_(o,r)||this.validateFieldPattern_(o,r)||this.validateFieldCustom_(o,e,r,t)||this.promiseUtils_.resolve()):this.promiseUtils_.resolve()},t.prototype.validateFields=function(e,t,i){var r=this,o=this.promiseUtils_.defer(),n=[],a={};return angular.forEach(t,function(t){var o=r.getRulesForField(t,i);if(o){var l;l=o.collection?r.validateCollection(e,t,i):r.validateField(e,t,i),l.then(angular.noop,function(e){r.nestedObjectHelper_.writeAttribute(a,t,e)}),n.push(l)}},this),this.promiseUtils_.waitForAll(n).then(o.resolve,function(){o.reject(a)}),o.promise},t.prototype.getRulesForField=function(e,t){var i=e.replace(/\[[^\]]+\]/g,".collection.fields");return this.nestedObjectHelper_.readAttribute(t,i)},t.prototype.getFieldTypeFailureMessage_=function(e,t){return angular.isObject(e.type)?e.type.message:this.formForConfiguration_.getFailedValidationMessage(t)},t.isConsideredNumeric_=function(e,t){return e&&!isNaN(t)},t.prototype.validateCollectionMinLength_=function(t,i){if(i.min){var r=angular.isObject(i.min)?i.min.rule:i.min;if(t.length<r){var o;return o=angular.isObject(i.min)?i.min.message:this.$interpolate_(this.formForConfiguration_.getFailedValidationMessage(e.ValidationFailureType.COLLECTION_MIN_SIZE))({num:r}),this.promiseUtils_.reject(o)}}return null},t.prototype.validateCollectionMaxLength_=function(t,i){if(i.max){var r=angular.isObject(i.max)?i.max.rule:i.max;if(t.length>r){var o;return o=angular.isObject(i.max)?i.max.message:this.$interpolate_(this.formForConfiguration_.getFailedValidationMessage(e.ValidationFailureType.COLLECTION_MAX_SIZE))({num:r}),this.promiseUtils_.reject(o)}}return null},t.prototype.validateFieldCustom_=function(t,i,r,o){var n=this;if(r.custom){var a,l;angular.isFunction(r.custom)?(a=this.formForConfiguration_.getFailedValidationMessage(e.ValidationFailureType.CUSTOM),l=r.custom):(a=r.custom.message,l=r.custom.rule);try{var s=l(t,i,o)}catch(u){return this.promiseUtils_.reject(u.message||a)}return angular.isObject(s)&&angular.isFunction(s.then)?s.then(function(e){return n.promiseUtils_.resolve(e)},function(e){return n.promiseUtils_.reject(e||a)}):s?this.promiseUtils_.resolve(s):this.promiseUtils_.reject(a)}return null},t.prototype.validateFieldIncrement_=function(t,i){if(i.increment){var r=t.toString(),o=Number(t),n=angular.isObject(i.increment)?i.increment.rule:angular.isFunction(i.increment)?i.increment.call(this,t):i.increment;if(r&&!isNaN(o)){if(i.increment<1){var a=i.increment/1;o/=a,n/=a}if(o%n>0){var l;return l=angular.isObject(i.increment)?i.increment.message:this.$interpolate_(this.formForConfiguration_.getFailedValidationMessage(e.ValidationFailureType.INCREMENT))({num:n}),this.promiseUtils_.reject(l)}}}return null},t.prototype.validateFieldMaximum_=function(t,i){if(i.maximum){var r=t.toString(),o=Number(t),n=angular.isObject(i.maximum)?i.maximum.rule:angular.isFunction(i.maximum)?i.maximum.call(this,t):i.maximum;if(r&&!isNaN(o)&&o>n){var a;return a=angular.isObject(i.maximum)?i.maximum.message:this.$interpolate_(this.formForConfiguration_.getFailedValidationMessage(e.ValidationFailureType.MAXIMUM))({num:n}),this.promiseUtils_.reject(a)}}return null},t.prototype.validateFieldMaxLength_=function(t,i){if(i.maxlength){var r=angular.isObject(i.maxlength)?i.maxlength.rule:i.maxlength;if(t.length>r){var o;return o=angular.isObject(i.maxlength)?i.maxlength.message:this.$interpolate_(this.formForConfiguration_.getFailedValidationMessage(e.ValidationFailureType.MAX_LENGTH))({num:r}),this.promiseUtils_.reject(o)}}return null},t.prototype.validateFieldMinimum_=function(t,i){if(i.minimum){var r=t.toString(),o=Number(t),n=angular.isObject(i.minimum)?i.minimum.rule:angular.isFunction(i.minimum)?i.minimum.call(this,t):i.minimum;if(r&&!isNaN(o)&&n>o){var a;return a=angular.isObject(i.minimum)?i.minimum.message:this.$interpolate_(this.formForConfiguration_.getFailedValidationMessage(e.ValidationFailureType.MINIMUM))({num:n}),this.promiseUtils_.reject(a)}}return null},t.prototype.validateFieldMinLength_=function(t,i){if(i.minlength){var r=angular.isObject(i.minlength)?i.minlength.rule:i.minlength;if(t&&t.length<r){var o;return o=angular.isObject(i.minlength)?i.minlength.message:this.$interpolate_(this.formForConfiguration_.getFailedValidationMessage(e.ValidationFailureType.MIN_LENGTH))({num:r}),this.promiseUtils_.reject(o)}}return null},t.prototype.validateFieldRequired_=function(t,i){if(i.required){var r=angular.isObject(i.required)?i.required.rule:angular.isFunction(i.required)?i.required.call(this,t):i.required,o=t.toString().replace(/\s+$/,""),n=Number(t);if(r&&!o&&!n){var a;return a=angular.isObject(i.required)?i.required.message:this.formForConfiguration_.getFailedValidationMessage(e.ValidationFailureType.REQUIRED),this.promiseUtils_.reject(a)}}return null},t.prototype.validateFieldPattern_=function(t,i){if(i.pattern){var r=i.pattern instanceof RegExp,o=r?i.pattern:i.pattern.rule;if(t&&!o.exec(t)){var n=r?this.formForConfiguration_.getFailedValidationMessage(e.ValidationFailureType.PATTERN):i.pattern.message;return this.promiseUtils_.reject(n)}}return null},t.prototype.validateFieldType_=function(i,r){if(r.type){var o=angular.isObject(r.type)?r.type.rule:r.type,n=i.toString(),a=Number(i);if(o)for(var l=o.split(" "),s=0,u=l.length;u>s;s++){var d=l[s];switch(d){case e.ValidationFieldType.INTEGER:if(n&&(isNaN(a)||a%1!==0))return this.promiseUtils_.reject(this.getFieldTypeFailureMessage_(r,e.ValidationFailureType.TYPE_INTEGER));break;case e.ValidationFieldType.NUMBER:if(n&&isNaN(a))return this.promiseUtils_.reject(this.getFieldTypeFailureMessage_(r,e.ValidationFailureType.TYPE_NUMERIC));break;case e.ValidationFieldType.NEGATIVE:if(t.isConsideredNumeric_(n,a)&&a>=0)return this.promiseUtils_.reject(this.getFieldTypeFailureMessage_(r,e.ValidationFailureType.TYPE_NEGATIVE));break;case e.ValidationFieldType.NON_NEGATIVE:if(t.isConsideredNumeric_(n,a)&&0>a)return this.promiseUtils_.reject(this.getFieldTypeFailureMessage_(r,e.ValidationFailureType.TYPE_NON_NEGATIVE));break;case e.ValidationFieldType.POSITIVE:if(t.isConsideredNumeric_(n,a)&&0>=a)return this.promiseUtils_.reject(this.getFieldTypeFailureMessage_(r,e.ValidationFailureType.TYPE_POSITIVE));break;case e.ValidationFieldType.EMAIL:if(n&&!n.match(/^.+@.+\..+$/))return this.promiseUtils_.reject(this.getFieldTypeFailureMessage_(r,e.ValidationFailureType.TYPE_EMAIL))}}}return null},t}();e.ModelValidator=t,angular.module("formFor").service("ModelValidator",["$interpolate","$parse","$q","FormForConfiguration",function(e,i,r,o){return new t(e,i,r,o)}])}(formFor||(formFor={}));var formFor;!function(e){var t=function(){function t(t,i){this.formForScope_=i,this.nestedObjectHelper_=new e.NestedObjectHelper(t),this.formForScope_.fieldNameToErrorMap=i.fieldNameToErrorMap||{},this.formForScope_.valid=!0,this.fieldNameToModifiedStateMap_={},this.formSubmitted_=!1,this.fieldNameToErrorMap_={},this.watchable=0}return t.prototype.getFieldError=function(e){return this.nestedObjectHelper_.readAttribute(this.formForScope_.fieldNameToErrorMap,e)},t.prototype.hasFieldBeenModified=function(e){return this.nestedObjectHelper_.readAttribute(this.fieldNameToModifiedStateMap_,e)},t.prototype.hasFormBeenSubmitted=function(){return this.formSubmitted_},t.prototype.isFormInvalid=function(){return!this.isFormValid()},t.prototype.isFormValid=function(){for(var e in this.fieldNameToErrorMap_)return!1;return!0},t.prototype.resetFieldErrors=function(){this.formForScope_.fieldNameToErrorMap={}},t.prototype.setFieldError=function(e,t){var i=this.nestedObjectHelper_.flattenAttribute(e);this.nestedObjectHelper_.writeAttribute(this.formForScope_.fieldNameToErrorMap,e,t),t?this.fieldNameToErrorMap_[i]=t:delete this.fieldNameToErrorMap_[i],this.formForScope_.valid=this.isFormValid(),this.watchable++},t.prototype.setFieldHasBeenModified=function(e,t){this.nestedObjectHelper_.writeAttribute(this.fieldNameToModifiedStateMap_,e,t),this.watchable++},t.prototype.setFormSubmitted=function(e){this.formSubmitted_=e,this.watchable++},t}();e.FormForStateHelper=t}(formFor||(formFor={}));var formFor;!function(e){var t=function(){function e(){}return e.humanize=function(e){return e?(e=e.replace(/[A-Z]/g,function(e){return" "+e}),e=e.replace(/_([a-z])/g,function(e,t){return" "+t.toUpperCase()}),e=e.replace(/\s+/g," "),e=e.trim(),e=e.charAt(0).toUpperCase()+e.slice(1)):""},e}();e.StringUtil=t}(formFor||(formFor={}));var formFor;!function(e){var t=function(){function e(){}return e}();e.BindableFieldWrapper=t}(formFor||(formFor={}));
angular.module("formFor",[]);var formFor;!function(e){var t=function(){function e(){this.restrict="A"}return e.prototype.link=function(e,t,i){e.$watch("model.uid",function(e){i.$set("ariaDescribedby",e+"-error"),i.$set("ariaLabelledby",e+"-label")}),e.$watch("model.error",function(e){i.$set("ariaInvalid",!!e)})},e.prototype.link.$inject=["$scope","$element","$attributes"],e}();e.AriaManager=t,angular.module("formFor").directive("ariaManager",function(){return new t})}(formFor||(formFor={}));var formFor;!function(e){var t=function(){function t(){this.autoGenerateLabels=!1,this.autoTrimValues=!1,this.defaultDebounceDuration=500,this.defaultSubmitComplete=angular.noop,this.defaultSubmitError=angular.noop,this.defaultValidationFailed=angular.noop,this.defaultSelectEmptyOptionValue=void 0,this.helpIcon=null,this.labelClass=null,this.requiredLabel=null,this.validationFailedForCustomMessage_="Failed custom validation",this.validationFailedForEmailTypeMessage_="Invalid email format",this.validationFailedForIncrementMessage_="Value must be in increments of {{num}}",this.validationFailedForIntegerTypeMessage_="Must be an integer",this.validationFailedForMaxCollectionSizeMessage_="Must be fewer than {{num}} items",this.validationFailedForMaximumMessage_="Must be no more than {{num}}",this.validationFailedForMaxLengthMessage_="Must be fewer than {{num}} characters",this.validationFailedForMinimumMessage_="Must be at least {{num}}",this.validationFailedForMinCollectionSizeMessage_="Must at least {{num}} items",this.validationFailedForMinLengthMessage_="Must be at least {{num}} characters",this.validationFailedForNegativeTypeMessage_="Must be negative",this.validationFailedForNonNegativeTypeMessage_="Must be non-negative",this.validationFailedForNumericTypeMessage_="Must be numeric",this.validationFailedForPatternMessage_="Invalid format",this.validationFailedForPositiveTypeMessage_="Must be positive",this.validationFailedForRequiredMessage_="Required field"}return t.prototype.disableAutoLabels=function(){this.autoGenerateLabels=!1},t.prototype.enableAutoLabels=function(){this.autoGenerateLabels=!0},t.prototype.disableAutoTrimValues=function(){this.autoTrimValues=!1},t.prototype.enableAutoTrimValues=function(){this.autoTrimValues=!0},t.prototype.getFailedValidationMessage=function(t){switch(t){case e.ValidationFailureType.CUSTOM:return this.validationFailedForCustomMessage_;case e.ValidationFailureType.COLLECTION_MAX_SIZE:return this.validationFailedForMaxCollectionSizeMessage_;case e.ValidationFailureType.COLLECTION_MIN_SIZE:return this.validationFailedForMinCollectionSizeMessage_;case e.ValidationFailureType.INCREMENT:return this.validationFailedForIncrementMessage_;case e.ValidationFailureType.MINIMUM:return this.validationFailedForMinimumMessage_;case e.ValidationFailureType.MAX_LENGTH:return this.validationFailedForMaxLengthMessage_;case e.ValidationFailureType.MAXIMUM:return this.validationFailedForMaximumMessage_;case e.ValidationFailureType.MIN_LENGTH:return this.validationFailedForMinLengthMessage_;case e.ValidationFailureType.PATTERN:return this.validationFailedForPatternMessage_;case e.ValidationFailureType.REQUIRED:return this.validationFailedForRequiredMessage_;case e.ValidationFailureType.TYPE_EMAIL:return this.validationFailedForEmailTypeMessage_;case e.ValidationFailureType.TYPE_INTEGER:return this.validationFailedForIntegerTypeMessage_;case e.ValidationFailureType.TYPE_NEGATIVE:return this.validationFailedForNegativeTypeMessage_;case e.ValidationFailureType.TYPE_NON_NEGATIVE:return this.validationFailedForNonNegativeTypeMessage_;case e.ValidationFailureType.TYPE_NUMERIC:return this.validationFailedForNumericTypeMessage_;case e.ValidationFailureType.TYPE_POSITIVE:return this.validationFailedForPositiveTypeMessage_}},t.prototype.setDefaultDebounceDuration=function(e){this.defaultDebounceDuration=e},t.prototype.setDefaultSubmitComplete=function(e){this.defaultSubmitComplete=e},t.prototype.setDefaultSubmitError=function(e){this.defaultSubmitError=e},t.prototype.setDefaultValidationFailed=function(e){this.defaultValidationFailed=e},t.prototype.setDefaultSelectEmptyOptionValue=function(e){this.defaultSelectEmptyOptionValue=e},t.prototype.setHelpIcon=function(e){this.helpIcon=e},t.prototype.setLabelClass=function(e){this.labelClass=e},t.prototype.setRequiredLabel=function(e){this.requiredLabel=e},t.prototype.setValidationFailedForCustomMessage=function(e){this.validationFailedForCustomMessage_=e},t.prototype.setValidationFailedForIncrementMessage=function(e){this.validationFailedForIncrementMessage_=e},t.prototype.setValidationFailedForMaxCollectionSizeMessage=function(e){this.validationFailedForMaxCollectionSizeMessage_=e},t.prototype.setValidationFailedForMaximumMessage=function(e){this.validationFailedForMaximumMessage_=e},t.prototype.setValidationFailedForMaxLengthMessage=function(e){this.validationFailedForMaxLengthMessage_=e},t.prototype.setValidationFailedForMinCollectionSizeMessage=function(e){this.validationFailedForMaxCollectionSizeMessage_=e},t.prototype.setValidationFailedForMinimumMessage=function(e){this.validationFailedForMinimumMessage_=e},t.prototype.setValidationFailedForMinLengthMessage=function(e){this.validationFailedForMinLengthMessage_=e},t.prototype.setValidationFailedForPatternMessage=function(e){this.validationFailedForPatternMessage_=e},t.prototype.setValidationFailedForRequiredMessage=function(e){this.validationFailedForRequiredMessage_=e},t.prototype.setValidationFailedForEmailTypeMessage=function(e){this.validationFailedForEmailTypeMessage_=e},t.prototype.setValidationFailedForIntegerTypeMessage=function(e){this.validationFailedForIntegerTypeMessage_=e},t.prototype.setValidationFailedForNegativeTypeMessage=function(e){this.validationFailedForNegativeTypeMessage_=e},t.prototype.setValidationFailedForNonNegativeTypeMessage=function(e){this.validationFailedForNonNegativeTypeMessage_=e},t.prototype.setValidationFailedForNumericTypeMessage=function(e){this.validationFailedForNumericTypeMessage_=e},t.prototype.setValidationFailedForPositiveTypeMessage=function(e){this.validationFailedForPositiveTypeMessage_=e},t}();e.FormForConfiguration=t,angular.module("formFor").service("FormForConfiguration",function(){return new t})}(formFor||(formFor={}));var formFor;!function(e){var t=function(){function t(e){this.formForConfiguration_=e}return t.prototype.manageLabel=function(t,i,r){this.formForConfiguration_.autoGenerateLabels&&(t.label=r?e.StringUtil.humanize(t.value):e.StringUtil.humanize(t.attribute)),this.formForConfiguration_.labelClass&&(t.labelClass=this.formForConfiguration_.labelClass),i.hasOwnProperty("label")&&i.$observe("label",function(e){t.label=e}),i.hasOwnProperty("labelClass")&&i.$observe("labelClass",function(e){t.labelClass=e})},t.prototype.manageFieldRegistration=function(e,t,i){e.$watch("attribute",function(r,o){e.model&&i.unregisterFormField(o),e.model=i.registerFormField(e.attribute),t.uid&&(e.model.uid=t.uid)}),e.$on("$destroy",function(){i.unregisterFormField(e.attribute)})},t}();e.FieldHelper=t,angular.module("formFor").service("FieldHelper",["FormForConfiguration",function(e){return new t(e)}])}(formFor||(formFor={}));var formFor;!function(e){var t,i,r=function(){function e(e,r){this.require="^formFor",this.restrict="EA",this.templateUrl=function(e,t){return t.template||"form-for/templates/checkbox-field.html"},this.scope={attribute:"@",disable:"=",help:"@?",changed:"&?"},t=e,i=r}return e.$inject=["$log","fieldHelper"],e.prototype.link=function(e,r,o,n){return e.attribute?(e.attributes=o,e.tabIndex=o.tabIndex||0,e.toggle=function(){e.disable||e.model.disabled||(e.model.bindable=!e.model.bindable)},e.$watch("model.bindable",function(t){e.model&&(e.model.bindable=e.model.required?t||void 0:!!t)}),i.manageLabel(e,o,!1),void i.manageFieldRegistration(e,o,n)):void t.error('Missing required field "attribute"')},e.prototype.link.$inject=["$scope","$element","$attributes","formForController"],e}();e.CheckboxFieldDirective=r,angular.module("formFor").directive("checkboxField",["$log","FieldHelper",function(e,t){return new r(e,t)}])}(formFor||(formFor={}));var formFor;!function(e){var t,i=function(){function e(e){this.require="^formFor",this.restrict="EA",this.templateUrl=function(e,t){return t.template||"form-for/templates/collection-label.html"},this.scope={attribute:"@",help:"@?",label:"@"},t=e}return e.$inject=["$sce"],e.prototype.link=function(e,i,r,o){e.$watch("label",function(i){e.bindableLabel=t.trustAsHtml(i)}),e.model=o.registerCollectionLabel(e.attribute)},e.prototype.link.$inject=["$scope","$element","$attributes","formForController"],e}();e.CollectionLabelDirective=i,angular.module("formFor").directive("collectionLabel",["$sce",function(e){return new i(e)}])}(formFor||(formFor={}));var formFor;!function(e){var t=function(){function e(){this.restrict="EA",this.templateUrl=function(e,t){return t.template||"form-for/templates/field-error.html"},this.scope={error:"=",leftAligned:"@?",uid:"@"}}return e.prototype.link=function(e){},e.prototype.link.$inject=["$scope"],e}();e.FieldErrorDirective=t,angular.module("formFor").directive("fieldError",function(){return new t})}(formFor||(formFor={}));var formFor;!function(e){var t,i,r=function(){function e(e,r){this.replace=!0,this.restrict="EA",this.templateUrl=function(e,t){return t.template||"form-for/templates/field-label.html"},this.scope={inputUid:"@",help:"@?",label:"@",labelClass:"@?",required:"@?",uid:"@"},t=e,i=r}return e.$inject=["$sce","formForConfiguration"],e.prototype.link=function(e,r,o){e.attributes=o,e.helpIcon=i.helpIcon,e.$watch("label",function(i){e.bindableLabel=t.trustAsHtml(i)}),e.$watch("required",function(t){e.requiredLabel=e.$eval(t)?i.requiredLabel:null})},e.prototype.link.$inject=["$scope","$element","$attributes"],e}();e.FieldLabelDirective=r,angular.module("formFor").directive("fieldLabel",["$sce","FormForConfiguration",function(e,t){return new r(e,t)}])}(formFor||(formFor={}));var formFor;!function(e){var t,i,r=function(){function r(r,o){this.require="^formFor",this.restrict="A",t=r,i=new e.NestedObjectHelper(o)}return r.$inject=["$compile","$parse"],r.prototype.link=function(r,o,n,a){var l;n.formForBuilder?l=r.$eval(n.formForBuilder):n.validationRules?l=r.$eval(n.validationRules):n.$service&&(l=r.$eval(n.$service.validationRules));for(var s=i.flattenObjectKeys(l),u="",d=0,c=s.length;c>d;d++){var f=s[d],p=i.readAttribute(l,f);if(p&&p.hasOwnProperty("inputType")){var m,F=p.help||"",b=p.label||"",h="",v=p.template||"",g=p.uid||"",y=b?'label="'+b+'"':"";switch(p.hasOwnProperty("placeholder")&&(h='placeholder="'+p.placeholder+'"'),p.inputType){case e.BuilderFieldType.CHECKBOX:u+='<checkbox-field attribute="'+f+'"\n help="'+F+'"\n '+y+'\n template="'+v+'"\n uid="'+g+'">\n </checkbox-field>';break;case e.BuilderFieldType.RADIO:m=JSON.stringify(p.values).replace(/"/g,"&quot;"),u+='<radio-field attribute="'+f+'"\n '+y+'\n options="'+m+'"\n template="'+v+'"\n uid="'+g+'">\n </radio-field>';break;case e.BuilderFieldType.SELECT:m=JSON.stringify(p.values).replace(/"/g,"&quot;"),u+='<select-field attribute="'+f+'"\n '+(p.allowBlank?"allow-blank":"")+"\n "+(p.enableFiltering?"enable-filtering":"")+'\n help="'+F+'"\n '+y+'\n multiple="'+!!p.multipleSelection+'"\n options="'+m+'"\n '+h+'\n template="'+v+'"\n uid="'+g+'"\n value-attribute="'+(p.valueAttribute||"")+'">\n </select-field>';break;case e.BuilderFieldType.NUMBER:case e.BuilderFieldType.PASSWORD:case e.BuilderFieldType.TEXT:default:var h;p.hasOwnProperty("placeholder")&&(h='placeholder="'+p.placeholder+'"'),u+='<text-field attribute="'+f+'"\n '+y+'\n help="'+F+'"\n ng-attr-multiline="'+!!p.multiline+'"\n '+h+'\n rows="'+(p.rows||"")+'"\n type="'+p.inputType+'"\n template="'+v+'"\n uid="'+g+'">\n </text-field>'}}}0===o.find("input[type=button], button, submit-button").length&&(u+='<submit-button label="Submit"></submit-button>');var E=t(u),_=E(r,void 0,{transcludeControllers:a});o.prepend(_)},r.prototype.link.$inject=["$scope","$element","$attributes","formForController"],r}();e.FormForBuilderDirective=r,angular.module("formFor").directive("formForBuilder",["$compile","$parse",function(e,t){return new r(e,t)}])}(formFor||(formFor={}));var formFor;!function(e){var t,i,r,o,n=function(){function e(e,n,a,l){this.priority=99,this.require="ngModel",this.restrict="A",this.scope={formForDebounce:"@"},t=e,i=n,r=a,o=l}return e.$inject=["$log","$sniffer","$timeout","formForConfiguration"],e.prototype.link=function(e,n,a,l){if("radio"===a.type||"checkbox"===a.type)return void t.warn("formForDebounce should only be used with <input type=text> and <textarea> elements");var s=a.formForDebounce,u=o.defaultDebounceDuration;void 0!==s&&("false"===s.toString()?u=!1:(s=parseInt(s),angular.isNumber(s)&&!isNaN(s)&&(u=s))),i.hasEvent("input")?n.off("input"):(n.off("keydown"),i.hasEvent("paste")&&n.off("paste"));var d;if(u!==!1){var c=function(){r.cancel(d),d=r(function(){e.$apply(function(){l.$setViewValue(n.val())})},u)};i.hasEvent("input")?n.on("input",c):(n.on("keydown",c),i.hasEvent("paste")&&n.on("paste",c))}n.on("blur",function(){e.$apply(function(){l.$setViewValue(n.val())})}),e.$on("$destroy",function(){d&&r.cancel(d)})},e.prototype.link.$inject=["$scope","$element","$attributes","ngModelController"],e}();e.FormForDebounceDirective=n,angular.module("formFor").directive("formForDebounce",["$log","$sniffer","$timeout","FormForConfiguration",function(e,t,i,r){return new n(e,t,i,r)}])}(formFor||(formFor={}));var formFor;!function(e){var t=function(){function e(e){this.$parse_=e}return e.prototype.flattenAttribute=function(e){return e.replace(/\[([^\]]+)\]\.{0,1}/g,"___$1___").replace(/\./g,"___")},e.prototype.flattenObjectKeys=function(e){for(var t=[],i=[{object:e,prefix:null}];;){if(0===i.length)break;var r=i.pop(),o=Array.isArray(r.object),n=r.prefix?r.prefix+(o?"[":"."):"",a=o?"]":"";if("object"==typeof r.object)for(var l in r.object){var s=n+l+a,u=r.object[l];t.push(s),i.push({object:u,prefix:s})}}return t},e.prototype.readAttribute=function(e,t){return this.$parse_(t)(e)},e.prototype.writeAttribute=function(e,t,i){this.initializeArraysAndObjectsForParse_(e,t),this.$parse_(t).assign(e,i)},e.prototype.initializeArraysAndObjectsForParse_=function(e,t){for(var i=0;;){if(i=t.indexOf("[",i),0>i)break;var r=t.substr(0,i),o=this.readAttribute(e,r);o||(o=[],this.writeAttribute(e,r,o));var n=t.substr(i).match(/([0-9]+)\]\./);if(n){var a=parseInt(n[1]);o[a]||(o[a]={})}i++}},e}();e.NestedObjectHelper=t}(formFor||(formFor={}));var formFor;!function(e){var t=function(){function e(e){this.$q_=e}return e.prototype.all=function(e){return this.$q_.all(e)},e.prototype.defer=function(){return this.$q_.defer()},e.prototype.resolve=function(e){var t=this.$q_.defer();return t.resolve(e),t.promise},e.prototype.reject=function(e){return this.$q_.reject(e)},e.prototype.waitForAll=function(e){function t(e,t){o.hasOwnProperty(e)||(o[e]=t,n--),i()}function i(){0===n&&(a?r.reject(o):r.resolve(o))}var r=this.$q_.defer(),o={},n=0,a=!1;return angular.forEach(e,function(e,i){n++,e.then(function(e){t(i,e)},function(e){a=!0,t(i,e)})}),i(),r.promise},e.prototype.when=function(e){return this.$q_.when(e)},e}();e.PromiseUtils=t}(formFor||(formFor={}));var formFor;!function(e){function t(t,i,r,o,n,a){var l=new e.NestedObjectHelper(i),s=new e.PromiseUtils(r);return t.getValidationRulesForAttribute=function(e){return n.getRulesForField(e,o.$validationRuleset)},t.registerCollectionLabel=function(e){var t=l.flattenAttribute(e),i={error:null,required:n.isCollectionRequired(e,o.$validationRuleset)};o.collectionLabels[t]=i;var r=!1;return o.$watch("formFor."+e+".length",function(){r?o.validateOn&&"change"!==o.validateOn||n.validateCollection(o.formFor,e,o.$validationRuleset).then(function(){o.formForStateHelper.setFieldError(t,null)},function(e){o.formForStateHelper.setFieldError(t,e)}):r=!0}),i},t.registerFormField=function(r){if(!r)throw Error('Invalid field name "'+r+'" provided.');var s=l.flattenAttribute(r);if(o.fields.hasOwnProperty(s))throw Error('Field "'+r+'" has already been registered. Field names must be unique.');var u={bindable:null,disabled:o.disable,error:null,pristine:!0,required:n.isFieldRequired(r,o.$validationRuleset),uid:e.FormForGUID.create()},d={bindableWrapper:u,fieldName:r,formForStateHelper:o.formForStateHelper,unwatchers:[]};o.fields[s]=d;var c=i(r),f=c.assign;d.unwatchers.push(o.$watch("fields."+s+".bindableWrapper.bindable",function(e,t){(e||e!=t)&&(a.autoTrimValues&&"string"==typeof e&&(e=e.trim()),f(o.formFor,e))}));var p;return d.unwatchers.push(o.$watch("formFor."+r,function(e,i){(e!==d.bindableWrapper.bindable||void 0===i&&""===e||void 0===e)&&(p=!1),d.bindableWrapper.bindable=e,o.validateOn&&"change"!==o.validateOn||t.validateField(r),p||(p=!0,o.formForStateHelper.setFieldHasBeenModified(s,!1)),d.bindableWrapper.pristine=!o.formForStateHelper.hasFieldBeenModified(s)})),u},t.registerSubmitButton=function(e){var t={disabled:!1};return o.buttons.push(t),t},t.resetErrors=function(){for(var e in o.fields)o.formForStateHelper.getFieldError(e)&&(o.formForStateHelper.setFieldHasBeenModified(e,!1),o.fields[e].bindableWrapper.pristine=!0);o.formForStateHelper.setFormSubmitted(!1),o.formForStateHelper.resetFieldErrors()},t.resetField=function(e){var t=l.flattenAttribute(e);o.formForStateHelper.getFieldError(t)&&(o.formForStateHelper.setFieldHasBeenModified(t,!1),o.fields[t].bindableWrapper.pristine=!0),o.formForStateHelper.setFieldError(t,null)},t.resetFields=function(){t.resetErrors()},t.setFieldError=function(e,t){var i=l.flattenAttribute(e);o.formForStateHelper.setFieldHasBeenModified(i,!0),o.formForStateHelper.setFieldError(i,t)},t.unregisterFormField=function(e){var t=l.flattenAttribute(e);angular.forEach(o.fields[t].unwatchers,function(e){e()}),delete o.fields[t]},t.updateCollectionErrors=function(e){angular.forEach(o.collectionLabels,function(t,i){var r=l.readAttribute(e,i);o.formForStateHelper.setFieldError(i,r)})},t.updateFieldErrors=function(e){angular.forEach(o.fields,function(t,i){var r=l.readAttribute(e,t.fieldName);o.formForStateHelper.setFieldError(i,r)})},t.validateField=function(e){var t=l.flattenAttribute(e);o.formForStateHelper.setFieldHasBeenModified(t,!0),o.$validationRuleset&&n.validateField(o.formFor,e,o.$validationRuleset).then(function(){o.formForStateHelper.setFieldError(t,null)},function(e){o.formForStateHelper.setFieldError(t,e)})},t.validateForm=function(e){t.updateCollectionErrors({}),t.updateFieldErrors({});var i,r;if(o.$validationRuleset){var a=[];angular.forEach(o.fields,function(e){a.push(e.fieldName)}),r=n.validateFields(o.formFor,a,o.$validationRuleset),r.then(angular.noop,t.updateFieldErrors),a=[],angular.forEach(o.collectionLabels,function(e,t){a.push(t)}),i=n.validateFields(o.formFor,a,o.$validationRuleset),i.then(angular.noop,t.updateCollectionErrors)}else i=s.resolve(),r=s.resolve();var u=s.defer();return s.waitForAll([i,r]).then(u.resolve,function(t){angular.isArray(t[0])&&0===t[0].length&&t.splice(0,1),e&&angular.forEach(t,function(e){var t=l.flattenObjectKeys(e);angular.forEach(t,function(t){var i=l.readAttribute(e,t);if(i){var r=l.flattenAttribute(t);o.formForStateHelper.setFieldHasBeenModified(r,!0)}})}),u.reject(t)}),u.promise},t}e.createFormForController=t}(formFor||(formFor={}));var formFor;!function(e){var t,i,r,o,n,a,l,s=function(){function s(s){this.require="form",this.restrict="A",this.scope={controller:"=?",disable:"=?",formFor:"=",service:"@",submitComplete:"&?",submitError:"&?",submitWith:"&?",valid:"=?",validateOn:"=?",validationFailed:"&?",validationRules:"=?"},t=s,i=s.get("$log"),r=s.get("$parse"),o=s.get("$sce"),n=s.get("FormForConfiguration"),a=s.get("ModelValidator"),l=new e.PromiseUtils(s.get("$q"))}return s.$inject=["$injector"],s.prototype.controller=function(s){s.formFor||i.error('The form data object specified by <form form-for=""> is null or undefined.'),s.fields={},s.collectionLabels={},s.buttons=[],s.controller=s.controller||{},s.service&&(s.$service=t.get(s.service)),s.validationRules?s.$validationRuleset=s.validationRules:s.$service&&(s.$validationRuleset=s.$service.validationRules),e.createFormForController(this,r,l,s,a,n),s.controller&&angular.copy(this,s.controller),s.$watch("disable",function(e){angular.forEach(s.fields,function(t){t.bindableWrapper.disabled=e}),angular.forEach(s.buttons,function(t){t.disabled=e})}),s.formForStateHelper=new e.FormForStateHelper(r,s),s.$watch("formForStateHelper.watchable",function(){var e=s.formForStateHelper.hasFormBeenSubmitted();angular.forEach(s.fields,function(t,i){if(e||s.formForStateHelper.hasFieldBeenModified(i)){var r=s.formForStateHelper.getFieldError(i);t.bindableWrapper.error=r?o.trustAsHtml(r):null}else t.bindableWrapper.error=null}),angular.forEach(s.collectionLabels,function(e,t){var i=s.formForStateHelper.getFieldError(t);e.error=i?o.trustAsHtml(i):null})})},s.prototype.controller.$inject=["$scope"],s.prototype.link=function(e,t,i){t.on("submit",function(){e.formForStateHelper.setFormSubmitted(!0),e.disable=!0;var t;return t="manual"===e.validateOn?l.resolve():e.controller.validateForm(),t.then(function(){var t;t=i.submitWith?e.submitWith({data:e.formFor}):e.$service&&e.$service.submit?e.$service.submit(e.formFor):l.reject("No submit function provided"),t||(t=l.reject("Submit function did not return a promise")),t.then(function(t){i.submitComplete?e.submitComplete({data:t}):n.defaultSubmitComplete(t,e.controller)},function(t){angular.isObject(t)&&"manual"!==e.validateOn&&(e.controller.updateCollectionErrors(t),e.controller.updateFieldErrors(t)),i.submitError?e.submitError({error:t}):n.defaultSubmitError(t,e.controller)}),t["finally"](function(){e.disable=!1})},function(t){e.disable=!1,i.validationFailed?e.validationFailed():n.defaultValidationFailed(t)}),!1})},s.prototype.link.$inject=["$scope","$element","$attributes"],s}();e.FormForDirective=s,angular.module("formFor").directive("formFor",["$injector",function(e){return new s(e)}])}(formFor||(formFor={}));var formFor;!function(e){var t=function(){function e(){}return e.create=function(){return("0000"+(Math.random()*Math.pow(36,4)<<0).toString(36)).slice(-4)},e}();e.FormForGUID=t}(formFor||(formFor={}));var formFor;!function(e){var t,i,r,o=function(){function o(o,n,a){this.require="^formFor",this.restrict="EA",this.templateUrl=function(e,t){return t.template||"form-for/templates/radio-field.html"},this.scope={attribute:"@",disable:"=",help:"@?",options:"=",value:"@"},r=new e.FieldHelper(a),t=o,i=n}return o.$inject=["$sce","$log","FormForConfiguration"],o.prototype.link=function(o,n,a,l){return o.attribute?(o.labelAttribute=a.labelAttribute||"label",o.valueAttribute=a.valueAttribute||"value",r.manageFieldRegistration(o,a,l),o.uid=a.uid||e.FormForGUID.create(),r.manageLabel(o,a,!0),o.tabIndex=a.tabIndex||0,o.click=function(){!o.disable&&!o.model.disabled},o.$watch("options",function(e){e.forEach(function(e){angular.isObject(e[o.labelAttribute])||(e[o.labelAttribute]=t.trustAsHtml(e[o.labelAttribute]))})},!0),o.$watch("model",function(e){o.model=e}),o.$watch("disable",function(e){o.disable=e}),void o.$watch("model.disabled",function(e){o.model&&(o.model.disabled=e)})):void i.error('Missing required field "attribute"')},o.prototype.link.$inject=["$scope","$element","$attributes","formForController"],o}();e.RadioFieldDirective=o,angular.module("formFor").directive("radioField",["$sce","$log","FormForConfiguration",function(e,t,i){return new o(e,t,i)}])}(formFor||(formFor={}));var formFor;!function(e){var t,i,r,o,n,a=10,l=function(){function e(e,a,l,s,u){this.require="^formFor",this.restrict="EA",this.templateUrl=function(e,t){return t.template||"form-for/templates/select-field.html"},this.scope={attribute:"@",disable:"=",help:"@?",multiple:"=?",options:"="},t=e,i=a,r=l,o=s,n=u}return e.$inject=["$document","$log","$timeout","fieldHelper","formForConfiguration"],e.prototype.link=function(e,l,s,u){if(!e.attribute)return void i.error('Missing required field "attribute"');e.allowBlank=s.hasOwnProperty("allowBlank"),e.preventDefaultOption=s.hasOwnProperty("preventDefaultOption"),e.labelAttribute=s.labelAttribute||"label",e.valueAttribute=s.valueAttribute||"value",e.placeholder=s.hasOwnProperty("placeholder")?s.placeholder:"Select",e.tabIndex=s.tabIndex||0,e.scopeBuster={},o.manageLabel(e,s,!1),o.manageFieldRegistration(e,s,u),e.close=function(){r(function(){e.isOpen=!1})},e.open=function(){e.disable||e.model.disabled||r(function(){e.isOpen=!0})},e.bindableOptions=[],e.emptyOption={},e.emptyOption[e.labelAttribute]=e.placeholder,e.emptyOption[e.valueAttribute]=n.defaultSelectEmptyOptionValue,e.selectOption=function(t){e.model.bindable=t&&t[e.valueAttribute]};var d=function(){var t=e.options&&e.options.length;e.model.bindable||e.allowBlank||e.preventDefaultOption||!t||e.selectOption(e.options[0]),(null===e.model.bindable||void 0===e.model.bindable||""===e.model.bindable)&&(e.model.bindable=n.defaultSelectEmptyOptionValue,e.emptyOption[e.valueAttribute]=e.model.bindable),e.bindableOptions.splice(0),(!e.model.bindable||e.allowBlank)&&e.bindableOptions.push(e.emptyOption),e.bindableOptions.push.apply(e.bindableOptions,e.options),e.model.bindable&&(e.emptyOption[e.labelAttribute]="")};r(function(){e.$watch("model.bindable",d),e.$watch("options.length",d)});var c,f=function(t){e.close()};e.$watch("isOpen",function(){c&&r.cancel(c),c=r(function(){c=null,e.isOpen?t.on("click",f):t.off("click",f)},a)}),e.$on("$destroy",function(){t.off("click",f)}),e.mouseOver=function(t){e.mouseOverIndex=t,e.mouseOverOption=t>=0?e.options[t]:null},e.keyDown=function(t){switch(t.keyCode){case 27:e.close();break;case 13:e.isOpen?(e.selectOption(e.mouseOverOption),e.close()):e.open(),t.preventDefault();break;case 38:e.isOpen?e.mouseOver(e.mouseOverIndex>0?e.mouseOverIndex-1:e.options.length-1):e.open();break;case 40:e.isOpen?e.mouseOver(e.mouseOverIndex<e.options.length-1?e.mouseOverIndex+1:0):e.open();break;case 9:case 16:e.close();break;default:e.open()}}},e.prototype.link.$inject=["$scope","$element","$attributes","formForController"],e}();e.SelectFieldDirective=l,angular.module("formFor").directive("selectField",["$document","$log","$timeout","FieldHelper","FormForConfiguration",function(e,t,i,r,o){return new l(e,t,i,r,o)}])}(formFor||(formFor={}));var formFor;!function(e){var t,i=function(){function e(e){this.require="^formFor",this.restrict="EA",this.templateUrl=function(e,t){return t.template||"form-for/templates/submit-button.html"},this.scope={disable:"=",buttonClass:"@",icon:"@",label:"@"},t=e}return e.$inject=["$sce"],e.prototype.link=function(e,i,r,o){e.tabIndex=r.tabIndex||0,e.$watch("label",function(i){e.bindableLabel=t.trustAsHtml(i)}),e.model=o.registerSubmitButton(e)},e.prototype.link.$inject=["$scope","$element","$attributes","formForController"],e}();e.SubmitButtonDirective=i,angular.module("formFor").directive("submitButton",["$sce",function(e){return new i(e)}])}(formFor||(formFor={}));var formFor;!function(e){!function(e){e[e.EMAIL="email"]="EMAIL",e[e.INTEGER="integer"]="INTEGER",e[e.NEGATIVE="negative"]="NEGATIVE",e[e.NON_NEGATIVE="nonNegative"]="NON_NEGATIVE",e[e.NUMBER="number"]="NUMBER",e[e.POSITIVE="positive"]="POSITIVE"}(e.ValidationFieldType||(e.ValidationFieldType={}));e.ValidationFieldType}(formFor||(formFor={}));var formFor;!function(e){var t,i,r,o=function(){function e(e,o,n){this.require="^formFor",this.restrict="EA",this.templateUrl=function(e,t){return t.template||"form-for/templates/text-field.html"},this.scope={attribute:"@",debounce:"@?",disable:"=",focused:"&?",blurred:"&?",help:"@?",iconAfterClicked:"&?",iconBeforeClicked:"&?",placeholder:"@?",rows:"=?",controller:"=?"},t=e,i=o,r=n}return e.$inject=["$log","$timeout","fieldHelper"],e.prototype.link=function(e,o,n,a){if(!e.attribute)return void t.error('Missing required field "attribute"');e.attributes=n,e.rows=e.rows||3,e.type=n.type||"text",e.multiline=n.hasOwnProperty("multiline")&&"false"!==n.multiline,e.tabIndex=n.tabIndex||0,i(function(){e.controller=o.find(e.multiline?"textarea":"input").controller("ngModel")}),n.hasOwnProperty("autofocus")&&i(function(){o.find(e.multiline?"textarea":"input")[0].focus()}),r.manageLabel(e,n,!1),r.manageFieldRegistration(e,n,a);var l=a.getValidationRulesForAttribute(e.attribute);if(l&&(e.validationRules={increment:l.increment,maximum:l.maximum,minimum:l.minimum}),n.iconAfter){var s=function(){if(e.model){var t="{"===n.iconAfter.charAt(0)?e.$eval(n.iconAfter):n.iconAfter;angular.isObject(t)?e.model.error?e.iconAfter=t.invalid:e.model.pristine?e.iconAfter=t.pristine:e.iconAfter=t.valid:e.iconAfter=t}};n.$observe("iconAfter",s),e.$watch("model.error",s),e.$watch("model.pristine",s)}if(n.iconBefore){var u=function(){if(e.model){var t="{"===n.iconBefore.charAt(0)?e.$eval(n.iconBefore):n.iconBefore;angular.isObject(t)?e.model.error?e.iconBefore=t.invalid:e.model.pristine?e.iconBefore=t.pristine:e.iconBefore=t.valid:e.iconBefore=t}};n.$observe("iconBefore",u),e.$watch("model.error",u),e.$watch("model.pristine",u)}e.onIconAfterClick=function(){e.hasOwnProperty("iconAfterClicked")&&e.iconAfterClicked()},e.onIconBeforeClick=function(){e.hasOwnProperty("iconBeforeClicked")&&e.iconBeforeClicked()},e.onFocus=function(){e.hasOwnProperty("focused")&&e.focused()},e.onBlur=function(){e.hasOwnProperty("blurred")&&e.blurred()}},e}();e.TextFieldDirective=o,angular.module("formFor").directive("textField",["$log","$timeout","FieldHelper",function(e,t,i){return new o(e,t,i)}])}(formFor||(formFor={}));var formFor;!function(e){var t,i,r,o,n=10,a=function(){function e(e,n,a,l){this.require="^formFor",this.restrict="EA",this.templateUrl=function(e,t){return t.template||"form-for/templates/type-ahead-field.html"},this.scope={attribute:"@",debounce:"@?",disable:"=",filterDebounce:"@?",filterTextChanged:"&?",help:"@?",options:"="},t=e,i=n,r=a,o=l}return e.$inject=["$document","$log","$timeout","fieldHelper"],e.prototype.link=function(e,a,l,s){if(!e.attribute)return void i.error('Missing required field "attribute"');e.labelAttribute=l.labelAttribute||"label",e.valueAttribute=l.valueAttribute||"value",e.placeholder=l.hasOwnProperty("placeholder")?l.placeholder:"Select",e.tabIndex=l.tabIndex||0,e.scopeBuster={filter:""},o.manageLabel(e,l,!1),o.manageFieldRegistration(e,l,s);var u,d=function(){if(!u){var e=a.find("input");e.length&&(u=e[0])}u&&r(u.focus.bind(u))};e.close=function(){r(function(){e.isOpen=!1})},e.open=function(){e.disable||e.model.disabled||r(function(){e.isOpen=!0})},e.filteredOptions=[];var c=function(e){return"string"==typeof e?e.toLowerCase():""},f=function(){var t=e.options||[];if(e.filteredOptions.splice(0),e.scopeBuster.filter){var i=c(e.scopeBuster.filter);angular.forEach(t,function(t){var r=c(t[e.labelAttribute]).indexOf(i);r>=0&&e.filteredOptions.push(t);
})}else angular.copy(t,e.filteredOptions)};e.searchTextChange=function(e){},e.$watch("scopeBuster.filter",f),e.$watch("options.length",f);var p=function(t){t.ignoreFor!==e.model.uid&&e.close()};e.filterTextClick=function(t){e.isOpen&&(t.ignoreFor=e.model.uid)};var m;e.$watch("isOpen",function(){m&&r.cancel(m),m=r(function(){m=null,e.isOpen?t.on("click",p):t.off("click",p)},n)}),e.$on("$destroy",function(){t.off("click",p)}),e.setFilterFocus=function(){d()},e.mouseOver=function(t){e.mouseOverIndex=t,e.mouseOverOption=t>=0?e.filteredOptions[t]:null},e.selectOption=function(t){e.model.bindable=t&&t[e.valueAttribute],e.scopeBuster.filter=t&&t[e.labelAttribute]};var F=function(){e.model.bindable&&e.options&&e.options.forEach(function(t){e.model.bindable===t[e.valueAttribute]&&(e.scopeBuster.filter=t[e.labelAttribute])})};e.$watch("model.bindable",F),e.$watch("options.length",F),e.keyDown=function(t){switch(t.keyCode){case 27:e.close();break;case 13:e.isOpen?(e.selectOption(e.mouseOverOption),e.close()):e.open(),t.preventDefault();break;case 38:e.isOpen?e.mouseOver(e.mouseOverIndex>0?e.mouseOverIndex-1:e.filteredOptions.length-1):e.open();break;case 40:e.isOpen?e.mouseOver(e.mouseOverIndex<e.filteredOptions.length-1?e.mouseOverIndex+1:0):e.open();break;case 9:case 16:e.close();break;default:e.open()}},e.$watchCollection("[isOpen, filteredOptions.length]",function(){e.mouseOver(-1),e.isOpen&&d()}),e.filterTextChanged instanceof Function&&e.$watch("scopeBuster.filter",function(t){e.filterTextChanged({text:t})})},e.prototype.link.$inject=["$scope","$element","$attributes","formForController"],e}();e.TypeAheadFieldDirective=a,angular.module("formFor").directive("typeAheadField",["$document","$log","$timeout","FieldHelper",function(e,t,i,r){return new a(e,t,i,r)}])}(formFor||(formFor={}));var formFor;!function(e){!function(e){e[e.CHECKBOX="checkbox"]="CHECKBOX",e[e.NUMBER="number"]="NUMBER",e[e.PASSWORD="password"]="PASSWORD",e[e.RADIO="radio"]="RADIO",e[e.SELECT="select"]="SELECT",e[e.TEXT="text"]="TEXT"}(e.BuilderFieldType||(e.BuilderFieldType={}));e.BuilderFieldType}(formFor||(formFor={}));var formFor;!function(e){!function(e){e[e.COLLECTION_MAX_SIZE="COLLECTION_MAX_SIZE"]="COLLECTION_MAX_SIZE",e[e.COLLECTION_MIN_SIZE="COLLECTION_MIN_SIZE"]="COLLECTION_MIN_SIZE",e[e.CUSTOM="CUSTOM"]="CUSTOM",e[e.INCREMENT="INCREMENT"]="INCREMENT",e[e.MAXIMUM="MAXIMUM"]="MAXIMUM",e[e.MAX_LENGTH="MAX_LENGTH"]="MAX_LENGTH",e[e.MINIMUM="MINIMUM"]="MINIMUM",e[e.MIN_LENGTH="MIN_LENGTH"]="MIN_LENGTH",e[e.PATTERN="PATTERN"]="PATTERN",e[e.REQUIRED="REQUIRED_FIELD"]="REQUIRED",e[e.TYPE_EMAIL="TYPE_EMAIL"]="TYPE_EMAIL",e[e.TYPE_INTEGER="TYPE_INTEGER"]="TYPE_INTEGER",e[e.TYPE_NEGATIVE="TYPE_NEGATIVE"]="TYPE_NEGATIVE",e[e.TYPE_NON_NEGATIVE="TYPE_NON_NEGATIVE"]="TYPE_NON_NEGATIVE",e[e.TYPE_NUMERIC="TYPE_NUMERIC"]="TYPE_NUMERIC",e[e.TYPE_POSITIVE="TYPE_POSITIVE"]="TYPE_POSITIVE"}(e.ValidationFailureType||(e.ValidationFailureType={}));e.ValidationFailureType}(formFor||(formFor={}));var formFor;!function(e){var t=function(){function e(){}return e}();e.BindableFieldWrapper=t}(formFor||(formFor={}));var formFor;!function(e){var t=function(){function t(t,i,r,o){this.$interpolate_=t,this.formForConfiguration_=o,this.nestedObjectHelper_=new e.NestedObjectHelper(i),this.promiseUtils_=new e.PromiseUtils(r)}return t.prototype.isCollectionRequired=function(e,t){var i=this.getRulesForField(e,t);return i&&i.collection&&i.collection.min?angular.isObject(i.collection.min)?i.collection.min.rule>0:i.collection.min>0:!1},t.prototype.isFieldRequired=function(e,t){var i=this.getRulesForField(e,t);return i&&i.required?angular.isObject(i.required)?i.required.rule:!!i.required:!1},t.prototype.validateAll=function(e,t){var i=this.nestedObjectHelper_.flattenObjectKeys(e);return this.validateFields(e,i,t)},t.prototype.validateCollection=function(e,t,i){var r=this.getRulesForField(t,i),o=this.nestedObjectHelper_.readAttribute(e,t);return r&&r.collection?(o=o||[],this.validateCollectionMinLength_(o,r.collection)||this.validateCollectionMaxLength_(o,r.collection)||this.promiseUtils_.resolve()):this.promiseUtils_.resolve()},t.prototype.validateField=function(e,t,i){var r=this.getRulesForField(t,i),o=this.nestedObjectHelper_.readAttribute(e,t);return r?((void 0===o||null===o)&&(o=""),this.validateFieldRequired_(o,r)||this.validateFieldMinimum_(o,r)||this.validateFieldMinLength_(o,r)||this.validateFieldIncrement_(o,r)||this.validateFieldMaximum_(o,r)||this.validateFieldMaxLength_(o,r)||this.validateFieldType_(o,r)||this.validateFieldPattern_(o,r)||this.validateFieldCustom_(o,e,r,t)||this.promiseUtils_.resolve()):this.promiseUtils_.resolve()},t.prototype.validateFields=function(e,t,i){var r=this,o=this.promiseUtils_.defer(),n=[],a={};return angular.forEach(t,function(t){var o=r.getRulesForField(t,i);if(o){var l;l=o.collection?r.validateCollection(e,t,i):r.validateField(e,t,i),l.then(angular.noop,function(e){r.nestedObjectHelper_.writeAttribute(a,t,e)}),n.push(l)}},this),this.promiseUtils_.waitForAll(n).then(o.resolve,function(){o.reject(a)}),o.promise},t.prototype.getRulesForField=function(e,t){var i=e.replace(/\[[^\]]+\]/g,".collection.fields");return this.nestedObjectHelper_.readAttribute(t,i)},t.prototype.getFieldTypeFailureMessage_=function(e,t){return angular.isObject(e.type)?e.type.message:this.formForConfiguration_.getFailedValidationMessage(t)},t.isConsideredNumeric_=function(e,t){return e&&!isNaN(t)},t.prototype.validateCollectionMinLength_=function(t,i){if(i.min){var r=angular.isObject(i.min)?i.min.rule:i.min;if(t.length<r){var o;return o=angular.isObject(i.min)?i.min.message:this.$interpolate_(this.formForConfiguration_.getFailedValidationMessage(e.ValidationFailureType.COLLECTION_MIN_SIZE))({num:r}),this.promiseUtils_.reject(o)}}return null},t.prototype.validateCollectionMaxLength_=function(t,i){if(i.max){var r=angular.isObject(i.max)?i.max.rule:i.max;if(t.length>r){var o;return o=angular.isObject(i.max)?i.max.message:this.$interpolate_(this.formForConfiguration_.getFailedValidationMessage(e.ValidationFailureType.COLLECTION_MAX_SIZE))({num:r}),this.promiseUtils_.reject(o)}}return null},t.prototype.validateFieldCustom_=function(t,i,r,o){var n=this;if(r.custom){var a,l;angular.isFunction(r.custom)?(a=this.formForConfiguration_.getFailedValidationMessage(e.ValidationFailureType.CUSTOM),l=r.custom):(a=r.custom.message,l=r.custom.rule);try{var s=l(t,i,o)}catch(u){return this.promiseUtils_.reject(u.message||a)}return angular.isObject(s)&&angular.isFunction(s.then)?s.then(function(e){return n.promiseUtils_.resolve(e)},function(e){return n.promiseUtils_.reject(e||a)}):s?this.promiseUtils_.resolve(s):this.promiseUtils_.reject(a)}return null},t.prototype.validateFieldIncrement_=function(t,i){if(i.increment){var r=t.toString(),o=Number(t),n=angular.isObject(i.increment)?i.increment.rule:angular.isFunction(i.increment)?i.increment.call(this,t):i.increment;if(r&&!isNaN(o)){if(i.increment<1){var a=i.increment/1;o/=a,n/=a}if(o%n>0){var l;return l=angular.isObject(i.increment)?i.increment.message:this.$interpolate_(this.formForConfiguration_.getFailedValidationMessage(e.ValidationFailureType.INCREMENT))({num:n}),this.promiseUtils_.reject(l)}}}return null},t.prototype.validateFieldMaximum_=function(t,i){if(i.maximum||0===i.maximum){var r=t.toString(),o=Number(t),n=angular.isObject(i.maximum)?i.maximum.rule:angular.isFunction(i.maximum)?i.maximum.call(this,t):i.maximum;if(r&&!isNaN(o)&&o>n){var a;return a=angular.isObject(i.maximum)?i.maximum.message:this.$interpolate_(this.formForConfiguration_.getFailedValidationMessage(e.ValidationFailureType.MAXIMUM))({num:n}),this.promiseUtils_.reject(a)}}return null},t.prototype.validateFieldMaxLength_=function(t,i){if(i.maxlength){var r=angular.isObject(i.maxlength)?i.maxlength.rule:i.maxlength;if(t.length>r){var o;return o=angular.isObject(i.maxlength)?i.maxlength.message:this.$interpolate_(this.formForConfiguration_.getFailedValidationMessage(e.ValidationFailureType.MAX_LENGTH))({num:r}),this.promiseUtils_.reject(o)}}return null},t.prototype.validateFieldMinimum_=function(t,i){if(i.minimum||0===i.minimum){var r=t.toString(),o=Number(t),n=angular.isObject(i.minimum)?i.minimum.rule:angular.isFunction(i.minimum)?i.minimum.call(this,t):i.minimum;if(r&&!isNaN(o)&&n>o){var a;return a=angular.isObject(i.minimum)?i.minimum.message:this.$interpolate_(this.formForConfiguration_.getFailedValidationMessage(e.ValidationFailureType.MINIMUM))({num:n}),this.promiseUtils_.reject(a)}}return null},t.prototype.validateFieldMinLength_=function(t,i){if(i.minlength){var r=angular.isObject(i.minlength)?i.minlength.rule:i.minlength;if(t&&t.length<r){var o;return o=angular.isObject(i.minlength)?i.minlength.message:this.$interpolate_(this.formForConfiguration_.getFailedValidationMessage(e.ValidationFailureType.MIN_LENGTH))({num:r}),this.promiseUtils_.reject(o)}}return null},t.prototype.validateFieldRequired_=function(t,i){if(i.required){var r=angular.isObject(i.required)?i.required.rule:angular.isFunction(i.required)?i.required.call(this,t):i.required,o=t.toString().replace(/\s+$/,""),n=Number(t);if(r&&!o&&!n){var a;return a=angular.isObject(i.required)?i.required.message:this.formForConfiguration_.getFailedValidationMessage(e.ValidationFailureType.REQUIRED),this.promiseUtils_.reject(a)}}return null},t.prototype.validateFieldPattern_=function(t,i){if(i.pattern){var r=i.pattern instanceof RegExp,o=r?i.pattern:i.pattern.rule;if(t&&!o.exec(t)){var n=r?this.formForConfiguration_.getFailedValidationMessage(e.ValidationFailureType.PATTERN):i.pattern.message;return this.promiseUtils_.reject(n)}}return null},t.prototype.validateFieldType_=function(i,r){if(r.type){var o=angular.isObject(r.type)?r.type.rule:r.type,n=i.toString(),a=Number(i);if(o)for(var l=o.split(" "),s=0,u=l.length;u>s;s++){var d=l[s];switch(d){case e.ValidationFieldType.INTEGER:if(n&&(isNaN(a)||a%1!==0))return this.promiseUtils_.reject(this.getFieldTypeFailureMessage_(r,e.ValidationFailureType.TYPE_INTEGER));break;case e.ValidationFieldType.NUMBER:if(n&&isNaN(a))return this.promiseUtils_.reject(this.getFieldTypeFailureMessage_(r,e.ValidationFailureType.TYPE_NUMERIC));break;case e.ValidationFieldType.NEGATIVE:if(t.isConsideredNumeric_(n,a)&&a>=0)return this.promiseUtils_.reject(this.getFieldTypeFailureMessage_(r,e.ValidationFailureType.TYPE_NEGATIVE));break;case e.ValidationFieldType.NON_NEGATIVE:if(t.isConsideredNumeric_(n,a)&&0>a)return this.promiseUtils_.reject(this.getFieldTypeFailureMessage_(r,e.ValidationFailureType.TYPE_NON_NEGATIVE));break;case e.ValidationFieldType.POSITIVE:if(t.isConsideredNumeric_(n,a)&&0>=a)return this.promiseUtils_.reject(this.getFieldTypeFailureMessage_(r,e.ValidationFailureType.TYPE_POSITIVE));break;case e.ValidationFieldType.EMAIL:if(n&&!n.match(/^.+@.+\..+$/))return this.promiseUtils_.reject(this.getFieldTypeFailureMessage_(r,e.ValidationFailureType.TYPE_EMAIL))}}}return null},t}();e.ModelValidator=t,angular.module("formFor").service("ModelValidator",["$interpolate","$parse","$q","FormForConfiguration",function(e,i,r,o){return new t(e,i,r,o)}])}(formFor||(formFor={}));var formFor;!function(e){var t=function(){function t(t,i){this.formForScope_=i,this.nestedObjectHelper_=new e.NestedObjectHelper(t),this.formForScope_.fieldNameToErrorMap=i.fieldNameToErrorMap||{},this.formForScope_.valid=!0,this.fieldNameToModifiedStateMap_={},this.formSubmitted_=!1,this.fieldNameToErrorMap_={},this.watchable=0}return t.prototype.getFieldError=function(e){return this.nestedObjectHelper_.readAttribute(this.formForScope_.fieldNameToErrorMap,e)},t.prototype.hasFieldBeenModified=function(e){return this.nestedObjectHelper_.readAttribute(this.fieldNameToModifiedStateMap_,e)},t.prototype.hasFormBeenSubmitted=function(){return this.formSubmitted_},t.prototype.isFormInvalid=function(){return!this.isFormValid()},t.prototype.isFormValid=function(){for(var e in this.fieldNameToErrorMap_)return!1;return!0},t.prototype.resetFieldErrors=function(){this.formForScope_.fieldNameToErrorMap={}},t.prototype.setFieldError=function(e,t){var i=this.nestedObjectHelper_.flattenAttribute(e);this.nestedObjectHelper_.writeAttribute(this.formForScope_.fieldNameToErrorMap,e,t),t?this.fieldNameToErrorMap_[i]=t:delete this.fieldNameToErrorMap_[i],this.formForScope_.valid=this.isFormValid(),this.watchable++},t.prototype.setFieldHasBeenModified=function(e,t){this.nestedObjectHelper_.writeAttribute(this.fieldNameToModifiedStateMap_,e,t),this.watchable++},t.prototype.setFormSubmitted=function(e){this.formSubmitted_=e,this.watchable++},t}();e.FormForStateHelper=t}(formFor||(formFor={}));var formFor;!function(e){var t=function(){function e(){}return e.humanize=function(e){return e?(e=e.replace(/[A-Z]/g,function(e){return" "+e}),e=e.replace(/_([a-z])/g,function(e,t){return" "+t.toUpperCase()}),e=e.replace(/\s+/g," "),e=e.trim(),e=e.charAt(0).toUpperCase()+e.slice(1)):""},e}();e.StringUtil=t}(formFor||(formFor={}));
//# sourceMappingURL=form-for.min.js.map
{
"name": "angular-form-for",
"version": "4.1.9",
"version": "4.1.10",
"description": "Set of Angular directives to simplify creating and validating HTML forms.",

@@ -5,0 +5,0 @@ "keywords": [

@@ -366,3 +366,3 @@ /// <reference path="../../definitions/angular.d.ts" />

private validateFieldMaximum_(value:any, validationRules:ValidationRules):any {
if (validationRules.maximum) {
if (validationRules.maximum || validationRules.maximum === 0) {
var stringValue:string = value.toString();

@@ -422,3 +422,3 @@ var numericValue:number = Number(value);

private validateFieldMinimum_(value:any, validationRules:ValidationRules):any {
if (validationRules.minimum) {
if (validationRules.minimum || validationRules.minimum === 0) {
var stringValue:string = value.toString();

@@ -425,0 +425,0 @@ var numericValue:number = Number(value);

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc