ng-form-helper
Version:
Feature set to use in your angular form
2 lines • 5.53 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/forms")):"function"==typeof define&&define.amd?define("ng-form-helper",["exports","@angular/core","@angular/forms"],t):t(e["ng-form-helper"]={},e.ng.core,e.ng.forms)}(this,function(e,t,r){"use strict";var n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};function o(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var i=(a.prototype.ngOnInit=function(){this.oldState.value=this.element.nativeElement.value},a.prototype.onKeyDown=function(){this.oldState.cursorStart=this.element.nativeElement.selectionStart,this.oldState.cursorEnd=this.element.nativeElement.selectionEnd},a.prototype.onBlur=function(){this.onTouch()},a.prototype.writeValue=function(e){var t=null==e?"":e;this.oldState.value=t,this.onChange(e),this.renderer.setProperty(this.element.nativeElement,"value",t)},a.prototype.setDisabledState=function(e){this.renderer.setProperty(this.element.nativeElement,"disabled",e),this.isDisabled=e},a.prototype.getValueFromKeyboardEvent=function(e){var t=e.target&&e.target||null;return t&&t.value||""},a.prototype.setCursorPosition=function(e,t){void 0===t&&(t=e);var r=this.element.nativeElement,n=r.getAttribute("type");r.setAttribute("type","text"),r.selectionStart=e,r.selectionEnd=t,r.setAttribute("type",n)},a.prototype.resetField=function(){this.onChange(this.oldState.value),this.writeValue(this.oldState.value),this.setCursorPosition(this.oldState.cursorStart,this.oldState.cursorEnd)},a.prototype.updateFieldValue=function(e){this.writeValue(e),this.oldState.value=e},a.prototype.registerOnChange=function(e){this.onChange=e},a.prototype.registerOnTouched=function(e){this.onTouch=e},a.propDecorators={onKeyDown:[{type:t.HostListener,args:["keydown"]}],onBlur:[{type:t.HostListener,args:["blur"]}]},a);function a(){this.oldState={cursorStart:0,cursorEnd:0,value:""},this.isDisabled=!1,this.onChange=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t]},this.onTouch=function(){}}var s,u=(o(l,s=i),Object.defineProperty(l.prototype,"setFormFieldMask",{set:function(e){this.generatedMaskConfig=this.generateMaskConfig(e)},enumerable:!0,configurable:!0}),l.prototype.generateMaskConfig=function(e){if(this.MASK_SHOULD_NOT_HAVE_NUMBERS.test(e))throw new Error("Can't generate mask: \""+e+'". Invalid charactere found.\n You should not use numeric character to compose the field mask.');if(!this.MASK_MUST_FINISH_WITH_A_NUMBER.test(e))throw new Error("Can't generate mask: \""+e+'". Invalid format found.\n The mask must finish with a numeric character (9).');var r={},t=e.match(/(9+|[^9]+)/g);if(!t)throw new Error("Can't generate mask: \""+e+'". Invalid format found.\n You must have at least one 9 character in the mask.');var n=/^\d+$/,o="",i="",a=1,s=0;return t.forEach(function(e){if(n.test(e)){s+=e.length,o+="$"+a++;var t=i+"([0-9]{1,"+e.length+"})";return i+="([0-9]{"+e.length+"})",void(r[String(s)]={valueStructure:new RegExp(t,"g"),maskStructure:o})}o+=e}),r},l.prototype.getPartialMask=function(t){var e=Object.keys(this.generatedMaskConfig),r=e.find(function(e){return t.length<=Number(e)});r=r||e.pop()||"";var n=this.generatedMaskConfig[r];return{valueStructure:n.valueStructure,maskStructure:n.maskStructure,maxLength:Number(r)}},l.prototype.onInput=function(e){var t=this.getValueFromKeyboardEvent(e);if(t!==this.oldState.value){var r=t.replace(/[^0-9]/g,""),n=this.getPartialMask(r);if(r.length>n.maxLength)this.resetField();else{var o=r.replace(n.valueStructure,n.maskStructure);this.updateFieldValue(o)}}},l.decorators=[{type:t.Directive,args:[{selector:"[formFieldMask]",providers:[{provide:r.NG_VALUE_ACCESSOR,useExisting:t.forwardRef(function(){return l}),multi:!0}]}]}],l.ctorParameters=function(){return[{type:t.ElementRef},{type:t.Renderer2}]},l.propDecorators={setFormFieldMask:[{type:t.Input,args:["formFieldMask"]}],onInput:[{type:t.HostListener,args:["input",["$event"]]}]},l);function l(e,t){var r=s.call(this)||this;return r.element=e,r.renderer=t,r.MASK_SHOULD_NOT_HAVE_NUMBERS=/[0-8]/gi,r.MASK_MUST_FINISH_WITH_A_NUMBER=/\d$/,r.generatedMaskConfig={},r}var c,p=(o(d,c=i),Object.defineProperty(d.prototype,"setRegex",{set:function(e){this.regexRule=new RegExp(e)},enumerable:!0,configurable:!0}),d.prototype.onInput=function(e){var t=this.getValueFromKeyboardEvent(e);if(t!==this.oldState.value){if(this.regexRule.test(t)){var r=this.element.nativeElement.selectionStart;return this.updateFieldValue(t),void this.setCursorPosition(r)}this.resetField()}},d.decorators=[{type:t.Directive,args:[{selector:"[formRegexedField]",providers:[{provide:r.NG_VALUE_ACCESSOR,useExisting:t.forwardRef(function(){return d}),multi:!0}]}]}],d.ctorParameters=function(){return[{type:t.ElementRef},{type:t.Renderer2}]},d.propDecorators={setRegex:[{type:t.Input,args:["formRegexedField"]}],onInput:[{type:t.HostListener,args:["input",["$event"]]}]},d);function d(e,t){var r=c.call(this)||this;return r.element=e,r.renderer=t,r.regexRule=/(?:)/,r}var f=(h.decorators=[{type:t.NgModule,args:[{imports:[r.FormsModule],declarations:[u,p],exports:[u,p]}]}],h);function h(){}e.FieldMaskDirective=u,e.FormHelperModule=f,e.RegexedFieldDirective=p,e.ɵa=i,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=ng-form-helper.umd.min.js.map