UNPKG

ngx-confirm-box

Version:

Library for confirm box - Angular 4/5/6

173 lines (166 loc) 15.1 kB
import { Injectable, NgModule, Component, Input, Output, EventEmitter, defineInjectable } from '@angular/core'; import { Subject } from 'rxjs'; import { CommonModule } from '@angular/common'; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ var NgxConfirmBoxService = /** @class */ (function () { function NgxConfirmBoxService() { this.confirmChange = new Subject(); } //show(bgColor:string='rgba(0,0,0,0.5)',Heading:string,Content:string,Canceltext:string,Okaytext:string) { /** * @return {?} */ NgxConfirmBoxService.prototype.show = /** * @return {?} */ function () { this.confirmChange.next(true); //this.confirmChange.next({ bgColor: bgColor,confirmHeading: Heading,confirmContent: Content,confirmCanceltext: Canceltext,confirmOkaytext: Okaytext,show:true }); }; /** * @return {?} */ NgxConfirmBoxService.prototype.hide = /** * @return {?} */ function () { this.confirmChange.next(false); }; /** * @return {?} */ NgxConfirmBoxService.prototype.getState = /** * @return {?} */ function () { return this.confirmChange.asObservable(); }; NgxConfirmBoxService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; /** @nocollapse */ NgxConfirmBoxService.ctorParameters = function () { return []; }; /** @nocollapse */ NgxConfirmBoxService.ngInjectableDef = defineInjectable({ factory: function NgxConfirmBoxService_Factory() { return new NgxConfirmBoxService(); }, token: NgxConfirmBoxService, providedIn: "root" }); return NgxConfirmBoxService; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ var NgxConfirmBoxComponent = /** @class */ (function () { function NgxConfirmBoxComponent(confirmService) { this.confirmService = confirmService; this.bgColor = 'rgba(0,0,0,0.5)'; this.confirmContent = 'Are you sure want to delete this?'; this.confirmHeading = 'Confirmation'; this.confirmCanceltext = 'Cancel'; this.confirmOkaytext = 'Okay'; //confirmHeading:string; this.showHide = false; this.returnval = false; this.confirmaray = { bgColor: 'rgba(0,0,0,0.5)', confirmHeading: '', confirmContent: 'Are you sure want to delete this?', confirmCanceltext: 'No', confirmOkaytext: 'Yes', show: this.showHide }; this.confirmEvt = new EventEmitter(); } /** * @return {?} */ NgxConfirmBoxComponent.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; this.subscription = this.confirmService.getState().subscribe(function (showHide) { _this.showHide = showHide; }); this.confirmaray.show = this.showHide; this.confirmaray.bgColor = this.bgColor; this.confirmaray.confirmHeading = this.confirmHeading; this.confirmaray.confirmContent = this.confirmContent; this.confirmaray.confirmCanceltext = this.confirmCanceltext; this.confirmaray.confirmOkaytext = this.confirmOkaytext; }; /** * @return {?} */ NgxConfirmBoxComponent.prototype.hideConfirm = /** * @return {?} */ function () { this.showHide = false; this.confirmaray.show = false; this.confirmEvt.emit(false); }; /** * @return {?} */ NgxConfirmBoxComponent.prototype.returConfirmBox = /** * @return {?} */ function () { this.confirmaray.show = false; this.showHide = false; this.confirmEvt.emit(true); }; /** * @return {?} */ NgxConfirmBoxComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { this.subscription.unsubscribe(); }; NgxConfirmBoxComponent.decorators = [ { type: Component, args: [{ selector: 'ngx-confirm-box', template: "<div class=\"overlay\" [ngStyle]=\"{'background-color':confirmaray.bgColor}\" *ngIf=\"showHide\" >\n <div class=\"confirmbox-container\">\n\t<h3 *ngIf=\"confirmaray.confirmHeading\">{{confirmaray.confirmHeading}}</h3>\n\t<p>{{confirmaray.confirmContent}}</p>\n\t<div class=\"col-md-12 btn-grp col-sm-12\">\n\t<button class=\"cancel-btn btn-default btn btn-sm\" (click)=\"hideConfirm()\">{{confirmaray.confirmCanceltext}}</button>\n\t<button class=\"btn-primary btn btn-sm confirm-btn\" (click)=\"returConfirmBox()\">{{confirmaray.confirmOkaytext}}</button></div>\n\t</div>\n</div>", styles: [".overlay{position:fixed;width:100%;height:100%;top:0;left:0;right:0;bottom:0;z-index:2}.confirmbox-container{position:absolute;top:40%;left:40%;width:300px;background:#fff;padding:15px;border-radius:6px}.confirmbox-container h3{padding:0 0 10px;margin:5px;border-bottom:1px solid #c5c5c6;font-size:18px}.confirmbox-container p{margin:0;padding:3px;text-align:center}.btn-grp{text-align:center;padding-top:10px}.confirm-btn{margin:0 10px}"] },] }, ]; /** @nocollapse */ NgxConfirmBoxComponent.ctorParameters = function () { return [ { type: NgxConfirmBoxService } ]; }; NgxConfirmBoxComponent.propDecorators = { bgColor: [{ type: Input }], confirmContent: [{ type: Input }], confirmHeading: [{ type: Input }], confirmCanceltext: [{ type: Input }], confirmOkaytext: [{ type: Input }], confirmEvt: [{ type: Output }] }; return NgxConfirmBoxComponent; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ var NgxConfirmBoxModule = /** @class */ (function () { function NgxConfirmBoxModule() { } NgxConfirmBoxModule.decorators = [ { type: NgModule, args: [{ imports: [ CommonModule ], declarations: [NgxConfirmBoxComponent], exports: [NgxConfirmBoxComponent] },] }, ]; return NgxConfirmBoxModule; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ export { NgxConfirmBoxService, NgxConfirmBoxComponent, NgxConfirmBoxModule }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWNvbmZpcm0tYm94LmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9uZ3gtY29uZmlybS1ib3gvbGliL25neC1jb25maXJtLWJveC5zZXJ2aWNlLnRzIiwibmc6Ly9uZ3gtY29uZmlybS1ib3gvbGliL25neC1jb25maXJtLWJveC5jb21wb25lbnQudHMiLCJuZzovL25neC1jb25maXJtLWJveC9saWIvbmd4LWNvbmZpcm0tYm94Lm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBOZ3hDb25maXJtQm94U2VydmljZSB7XG4gIHByaXZhdGUgY29uZmlybUNoYW5nZSA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuICAvL3Nob3coYmdDb2xvcjpzdHJpbmc9J3JnYmEoMCwwLDAsMC41KScsSGVhZGluZzpzdHJpbmcsQ29udGVudDpzdHJpbmcsQ2FuY2VsdGV4dDpzdHJpbmcsT2theXRleHQ6c3RyaW5nKSB7XG4gICAgc2hvdygpe1xuICAgICAgdGhpcy5jb25maXJtQ2hhbmdlLm5leHQodHJ1ZSk7XG4gICAgICAvL3RoaXMuY29uZmlybUNoYW5nZS5uZXh0KHsgYmdDb2xvcjogYmdDb2xvcixjb25maXJtSGVhZGluZzogSGVhZGluZyxjb25maXJtQ29udGVudDogQ29udGVudCxjb25maXJtQ2FuY2VsdGV4dDogQ2FuY2VsdGV4dCxjb25maXJtT2theXRleHQ6IE9rYXl0ZXh0LHNob3c6dHJ1ZSB9KTtcbiAgICB9XG5cbiAgaGlkZSgpe1xuICAgIHRoaXMuY29uZmlybUNoYW5nZS5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIGdldFN0YXRlKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlybUNoYW5nZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIFxufVxuIiwiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlcixPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnR7IE5neENvbmZpcm1Cb3hTZXJ2aWNlfSBmcm9tICcuL25neC1jb25maXJtLWJveC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LWNvbmZpcm0tYm94JyxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwib3ZlcmxheVwiIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1jb2xvcic6Y29uZmlybWFyYXkuYmdDb2xvcn1cIiAqbmdJZj1cInNob3dIaWRlXCIgPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbmZpcm1ib3gtY29udGFpbmVyXCI+XHJcblx0PGgzICpuZ0lmPVwiY29uZmlybWFyYXkuY29uZmlybUhlYWRpbmdcIj57e2NvbmZpcm1hcmF5LmNvbmZpcm1IZWFkaW5nfX08L2gzPlxyXG5cdDxwPnt7Y29uZmlybWFyYXkuY29uZmlybUNvbnRlbnR9fTwvcD5cclxuXHQ8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGJ0bi1ncnAgY29sLXNtLTEyXCI+XHJcblx0PGJ1dHRvbiBjbGFzcz1cImNhbmNlbC1idG4gYnRuLWRlZmF1bHQgYnRuIGJ0bi1zbVwiIChjbGljayk9XCJoaWRlQ29uZmlybSgpXCI+e3tjb25maXJtYXJheS5jb25maXJtQ2FuY2VsdGV4dH19PC9idXR0b24+XHJcblx0PGJ1dHRvbiBjbGFzcz1cImJ0bi1wcmltYXJ5IGJ0biBidG4tc20gY29uZmlybS1idG5cIiAoY2xpY2spPVwicmV0dXJDb25maXJtQm94KClcIj57e2NvbmZpcm1hcmF5LmNvbmZpcm1Pa2F5dGV4dH19PC9idXR0b24+PC9kaXY+XHJcblx0PC9kaXY+XHJcbjwvZGl2PmAsXG4gIHN0eWxlczogW2Aub3ZlcmxheXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3otaW5kZXg6Mn0uY29uZmlybWJveC1jb250YWluZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjQwJTtsZWZ0OjQwJTt3aWR0aDozMDBweDtiYWNrZ3JvdW5kOiNmZmY7cGFkZGluZzoxNXB4O2JvcmRlci1yYWRpdXM6NnB4fS5jb25maXJtYm94LWNvbnRhaW5lciBoM3twYWRkaW5nOjAgMCAxMHB4O21hcmdpbjo1cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2M1YzVjNjtmb250LXNpemU6MThweH0uY29uZmlybWJveC1jb250YWluZXIgcHttYXJnaW46MDtwYWRkaW5nOjNweDt0ZXh0LWFsaWduOmNlbnRlcn0uYnRuLWdycHt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nLXRvcDoxMHB4fS5jb25maXJtLWJ0bnttYXJnaW46MCAxMHB4fWBdXG59KVxuZXhwb3J0IGNsYXNzIE5neENvbmZpcm1Cb3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgIEBJbnB1dCgpIGJnQ29sb3IgICAgICAgICAgICA9ICdyZ2JhKDAsMCwwLDAuNSknOyAvL292ZXJsYXkgYmFja2dyb3VuZCBjb2xvclxuICAgQElucHV0KCkgY29uZmlybUNvbnRlbnQgICAgID0gJ0FyZSB5b3Ugc3VyZSB3YW50IHRvIGRlbGV0ZSB0aGlzPyc7IFxuICAgQElucHV0KCkgY29uZmlybUhlYWRpbmcgICAgID0gJ0NvbmZpcm1hdGlvbic7IFxuICAgQElucHV0KCkgY29uZmlybUNhbmNlbHRleHQgID0gJ0NhbmNlbCc7IFxuICAgQElucHV0KCkgY29uZmlybU9rYXl0ZXh0ICAgID0gJ09rYXknOyBcblxuICAvL2NvbmZpcm1IZWFkaW5nOnN0cmluZztcbiAgc2hvd0hpZGUgID0gZmFsc2U7IFxuICByZXR1cm52YWwgPSBmYWxzZTsgXG4gIGNvbmZpcm1hcmF5OmFueSA9IHtiZ0NvbG9yOidyZ2JhKDAsMCwwLDAuNSknLGNvbmZpcm1IZWFkaW5nOicnLGNvbmZpcm1Db250ZW50OidBcmUgeW91IHN1cmUgd2FudCB0byBkZWxldGUgdGhpcz8nLGNvbmZpcm1DYW5jZWx0ZXh0OidObycsY29uZmlybU9rYXl0ZXh0OidZZXMnLHNob3c6dGhpcy5zaG93SGlkZX07XG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maXJtU2VydmljZSA6IE5neENvbmZpcm1Cb3hTZXJ2aWNlKSB7IFxuICAgXG4gIH1cbiAgQE91dHB1dCgpIGNvbmZpcm1FdnQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gXG4gIG5nT25Jbml0KCkge1xuXG4gIHRoaXMuc3Vic2NyaXB0aW9uID10aGlzLmNvbmZpcm1TZXJ2aWNlLmdldFN0YXRlKCkuc3Vic2NyaWJlKCBzaG93SGlkZSA9PiB7XG4gIHRoaXMuc2hvd0hpZGUgPSBzaG93SGlkZSB9KTtcbiAgdGhpcy5jb25maXJtYXJheS5zaG93ICAgID0gdGhpcy5zaG93SGlkZTtcblxuICB0aGlzLmNvbmZpcm1hcmF5LmJnQ29sb3IgICAgICAgICAgID0gdGhpcy5iZ0NvbG9yO1xuICB0aGlzLmNvbmZpcm1hcmF5LmNvbmZpcm1IZWFkaW5nICAgID0gdGhpcy5jb25maXJtSGVhZGluZztcbiAgdGhpcy5jb25maXJtYXJheS5jb25maXJtQ29udGVudCAgICA9IHRoaXMuY29uZmlybUNvbnRlbnQ7XG4gIHRoaXMuY29uZmlybWFyYXkuY29uZmlybUNhbmNlbHRleHQgPSB0aGlzLmNvbmZpcm1DYW5jZWx0ZXh0O1xuICB0aGlzLmNvbmZpcm1hcmF5LmNvbmZpcm1Pa2F5dGV4dCAgID0gdGhpcy5jb25maXJtT2theXRleHQ7XG4gIH1cblxuICBoaWRlQ29uZmlybSgpe1xuICAgXG4gICAgdGhpcy5zaG93SGlkZSAgICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZTtcbiAgICB0aGlzLmNvbmZpcm1hcmF5LnNob3cgICAgICAgICAgICAgICA9IGZhbHNlO1xuICAgIHRoaXMuY29uZmlybUV2dC5lbWl0KGZhbHNlKTsgXG4gIH1cblxuICByZXR1ckNvbmZpcm1Cb3goKXtcbiAgICB0aGlzLmNvbmZpcm1hcmF5LnNob3cgICA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd0hpZGUgICAgICAgICAgID0gZmFsc2U7XG4gICAgdGhpcy5jb25maXJtRXZ0LmVtaXQodHJ1ZSk7ICAgXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmd4Q29uZmlybUJveENvbXBvbmVudCB9IGZyb20gJy4vbmd4LWNvbmZpcm0tYm94LmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbTmd4Q29uZmlybUJveENvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtOZ3hDb25maXJtQm94Q29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hDb25maXJtQm94TW9kdWxlIHsgfVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7SUFTRTs2QkFGd0IsSUFBSSxPQUFPLEVBQU87S0FFekI7Ozs7O0lBRWYsbUNBQUk7OztJQUFKO1FBQ0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7O0tBRS9COzs7O0lBRUgsbUNBQUk7OztJQUFKO1FBQ0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENB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