!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@angular/core"),require("browser-database"),require("@angular/router"),require("@angular/forms"),require("@angular/common")):"function"==typeof define&&define.amd?define("contact-manage",["exports","@angular/core","browser-database","@angular/router","@angular/forms","@angular/common"],r):r(t["contact-manage"]={},t.ng.core,t.browserDatabase,t.ng.router,t.ng.forms,t.ng.common)}(this,function(t,e,r,n,o,a){"use strict";var s=function(){function t(){this.contactModel="contact",this.contactFilterModel="contact-filter",this.contactFilterId="contact",this.browserDatabase=new r.BrowserDatabase}return t.prototype.insert=function(t){return this.browserDatabase.insert(this.contactModel,t)},t.prototype.update=function(t,r){return this.browserDatabase.update(this.contactModel,t,r)},t.prototype.getById=function(t){return this.browserDatabase.getById(this.contactModel,t)},t.prototype.getAll=function(){return this.browserDatabase.getAll(this.contactModel)},t.prototype.loadFilter=function(){var t=this;return this.browserDatabase.getById(this.contactFilterModel,this.contactFilterId)["catch"](function(){return t.createDefaultFilter()})},t.prototype.createDefaultFilter=function(){return this.browserDatabase.insert(this.contactFilterModel,{id:this.contactFilterId,sortBy:"id",sortDir:!0,filter:{id:"",firstName:"",lastName:""}})},t.prototype.saveFilter=function(t){return this.browserDatabase.update(this.contactFilterModel,this.contactFilterId,t)},t.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],t.ngInjectableDef=e.defineInjectable({factory:function(){return new t},token:t,providedIn:"root"}),t}(),i=function(){function t(t){this.databaseService=t}return t.prototype.submit=function(t){this.databaseService.insert(t)},t.decorators=[{type:e.Component,args:[{selector:"app-contact-add",template:'<h3 class="mb-4">Add Contact</h3>\n<app-contact-form\n        (save)="submit($event)"\n></app-contact-form>'}]}],t.ctorParameters=function(){return[{type:s}]},t}(),c=function(){function t(t,r){this.databaseService=t,this.router=r,this.contactId=null,this.backUrl=["/"],this.contact=null}return t.prototype.ngOnInit=function(){var r=this;this.databaseService.getById(this.contactId).then(function(t){return r.contact=t},function(){return r.router.navigate(r.backUrl)})},t.prototype.submit=function(t){var r=this;this.databaseService.update(this.contactId,t).then(function(){return r.router.navigate(r.backUrl)})},t.decorators=[{type:e.Component,args:[{selector:"app-contact-edit",template:'<div *ngIf="contact">\n    <h3 class="mb-4">Edit Contact {{ contact.id | slice: 0: 5 }}</h3>\n    <app-contact-form\n            [backUrl]="backUrl"\n            [model]="contact"\n            (save)="submit($event)"\n    ></app-contact-form>\n</div>'}]}],t.ctorParameters=function(){return[{type:s},{type:n.Router}]},t.propDecorators={contactId:[{type:e.Input}],backUrl:[{type:e.Input}]},t}();function d(t){var r="function"==typeof Symbol&&t[Symbol.iterator],e=0;return r?r.call(t):{next:function(){return t&&e>=t.length&&(t=void 0),{value:t&&t[e++],done:!t}}}}var l=function(){function t(t,r){this.zone=t,this.formBuilder=r,this.backUrl=[],this.model={firstName:"",lastName:"",company:""},this.save=new e.EventEmitter,this.formErrors={firstName:"",lastName:"",company:""},this.errors={required:"Field is required"},this.createForm(),this.form.setValue(this.model)}return t.prototype.ngOnInit=function(){this.form.setValue({firstName:this.model.firstName,lastName:this.model.lastName,company:this.model.company})},t.prototype.createForm=function(){var t=this;this.form=this.formBuilder.group({firstName:["",[o.Validators.required]],lastName:["",[o.Validators.required]],company:[""]}),this.form.valueChanges.subscribe(function(){return t.onValueChanged()}),this.onValueChanged()},t.prototype.onValueChanged=function(){try{for(var t=d(Object.keys(this.formErrors)),r=t.next();!r.done;r=t.next()){var e=r.value;this.formErrors[e]="";var n=this.form.get(e);if(n&&n.dirty&&!n.valid)try{for(var o=d(Object.keys(n.errors)),a=o.next();!a.done;a=o.next()){var s=a.value;this.formErrors[e]=this.errors[s];break}}catch(m){l={error:m}}finally{try{a&&!a.done&&(u=o["return"])&&u.call(o)}finally{if(l)throw l.error}}}}catch(f){i={error:f}}finally{try{r&&!r.done&&(c=t["return"])&&c.call(t)}finally{if(i)throw i.error}}var i,c,l,u},t.prototype.onSubmit=function(){var s=this;this.form.invalid?this.zone.run(function(){try{for(var t=d(Object.keys(s.form.controls)),r=t.next();!r.done;r=t.next()){var e=r.value;s.form.controls[e].markAsDirty()}}catch(a){n={error:a}}finally{try{r&&!r.done&&(o=t["return"])&&o.call(t)}finally{if(n)throw n.error}}var n,o;s.onValueChanged()}):(this.save.emit(this.form.value),this.form.reset())},t.decorators=[{type:e.Component,args:[{selector:"app-contact-form",template:'<form\n        novalidate\n        [formGroup]="form"\n        (ngSubmit)="onSubmit()"\n>\n\n    <div\n            [class.has-error]="formErrors.firstName"\n            class="form-group"\n    >\n        <label for="firstName">First Name</label>\n        <input\n                class="form-control"\n                formControlName="firstName"\n                type="text"\n                name="firstName"\n                id="firstName"\n        >\n        <small\n                class="alert alert-warning d-inline-block mt-2 mb-0 py-1 px-2"\n                *ngIf="formErrors.firstName"\n        >{{ formErrors.firstName }}\n        </small>\n    </div>\n\n    <div\n            [class.has-error]="formErrors.lastName"\n            class="form-group"\n    >\n        <label for="lastName">Last Name</label>\n        <input\n                class="form-control"\n                formControlName="lastName"\n                type="text"\n                name="lastName"\n                id="lastName"\n        >\n        <small\n                class="alert alert-warning d-inline-block mt-2 mb-0 py-1 px-2"\n                *ngIf="formErrors.lastName"\n        >{{ formErrors.lastName }}\n        </small>\n    </div>\n\n    <div\n            [class.has-error]="formErrors.company"\n            class="form-group"\n    >\n        <label for="company">Company</label>\n        <input\n                class="form-control"\n                formControlName="company"\n                type="text"\n                name="company"\n                id="company"\n        >\n    </div>\n\n    <div\n            class="form-group"\n    >\n        <button class="btn btn-primary mr-3">Save</button>\n        <button class="btn btn-secondary" *ngIf="backUrl.length">Cancel</button>\n    </div>\n</form>'}]}],t.ctorParameters=function(){return[{type:e.NgZone},{type:o.FormBuilder}]},t.propDecorators={backUrl:[{type:e.Input}],model:[{type:e.Input}],save:[{type:e.Output}]},t}(),u=function(){function t(){}return t.decorators=[{type:e.NgModule,args:[{declarations:[i,c,l],imports:[a.CommonModule,o.FormsModule,o.ReactiveFormsModule],exports:[i,c,l],providers:[s]}]}],t}();t.ContactManageModule=u,t.ContactAddComponent=i,t.ContactEditComponent=c,t.ɵb=l,t.ɵa=s,Object.defineProperty(t,"__esModule",{value:!0})});
//# sourceMappingURL=contact-manage.umd.min.js.map