UNPKG

ngx-file-required

Version:
2 lines 3.13 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/forms")):"function"==typeof define&&define.amd?define("ngx-file-required",["exports","@angular/core","@angular/forms"],t):t(e["ngx-file-required"]={},e.ng.core,e.ng.forms)}(this,function(e,t,r){"use strict";var i=function(){function e(e){this.requiredErrorMsg="File is required",this._required=!1,this._multiple=!1,this._element=e}return Object.defineProperty(e.prototype,"required",{get:function(){return this._required||this._element.nativeElement.hasAttribute("required")},set:function(e){this._required=e||this._element.nativeElement.hasAttribute("required")},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"multiple",{get:function(){return this._element.nativeElement.hasAttribute("multiple")},set:function(e){this._multiple=""===e||!!e},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){var t=this;this._mutationObserver=new MutationObserver(function(e){t._setValidity(t._getInputValue(t._element.nativeElement))}),this._mutationObserver.observe(this._element.nativeElement,{attributes:!0,attributeOldValue:!0,attributeFilter:["required"]})},e.prototype.ngOnDestroy=function(){this._mutationObserver.disconnect()},e.prototype.ngOnChanges=function(e){this.required&&e.requiredErrorMsg&&!e.requiredErrorMsg.firstChange&&this._setValidity(this._getInputValue(this._element.nativeElement))},e.prototype.validate=function(e){if(this._control||(this._control=e),this._hasError(this._control.value))return{required:this.requiredErrorMsg}},e.prototype.onChange=function(e){var t=this._getInputValue(e);this._setValidity(t)},e.prototype._setValidity=function(e){var t=Object.assign({},this._control.errors);this._hasError(e)?t.required=this.requiredErrorMsg:this._control.hasError("required")&&delete t.required,this._control.setErrors(Object.keys(t).length?t:null)},e.prototype._hasError=function(e){return this.required&&!this._hasValue(e)},e.prototype._hasValue=function(e){return this.multiple?e instanceof FileList&&!!e.length:e instanceof File},e.prototype._getInputValue=function(e){return this.multiple?e.files:e.files.item(0)},e.decorators=[{type:t.Directive,args:[{selector:'\n input[type="file"][attr.required][formControlName],\n input[type="file"][attr.required][formControl],\n input[type="file"][attr.required][ngModel],\n input[type="file"][required][formControlName],\n input[type="file"][required][formControl],\n input[type="file"][required][ngModel]\n ',exportAs:"ngxFileRequiredDirective",providers:[{provide:r.NG_VALIDATORS,useExisting:e,multi:!0}]}]}],e.ctorParameters=function(){return[{type:t.ElementRef}]},e.propDecorators={requiredErrorMsg:[{type:t.Input}],multiple:[{type:t.Input}],onChange:[{type:t.HostListener,args:["change",["$event.target"]]}]},e}(),n=function(){function e(){}return e.decorators=[{type:t.NgModule,args:[{imports:[],declarations:[i],exports:[i]}]}],e}();e.NgxFileRequiredDirective=i,e.NgxFileRequiredModule=n,Object.defineProperty(e,"__esModule",{value:!0})}); //# sourceMappingURL=ngx-file-required.umd.min.js.map