UNPKG

ngx-gem-spaas

Version:

This library contains services, components, images and styles to provide a unified look and way-of-working throughout GEM SPaaS.

114 lines 15.7 kB
import { Injectable } from '@angular/core'; import { MatSnackBarConfig } from '@angular/material/snack-bar'; import { BehaviorSubject } from 'rxjs'; import * as i0 from "@angular/core"; import * as i1 from "@angular/material/snack-bar"; export class SnackbarService { static getConfirmId(type) { return type + '_' + performance.now(); } constructor(snackbar, zone) { this.snackbar = snackbar; this.zone = zone; this.DEF_DURATION = 6000; this.duration = this.DEF_DURATION; this.confirm$ = new BehaviorSubject(''); this.sbConfig = new MatSnackBarConfig(); } /** * Shows a Material snackbar. * * @param message the message to show in the snackbar * @param action (optional) the message to show in the snackbar action button. When no action is provided, the button * will not show * @param append (optional, default true) specifies whether to append the new snackbar message to the previous one * if a previous snackbar is still active * @param duration (optional) set a one-time specific duration in milliseconds, just for this snackbar instance */ message(message, action = '', append = true, duration = this.duration) { this.open(message, action, append, duration, false); } /** * Shows a Material snackbar as an error (red background). * * @param message the message to show in the snackbar * @param action (optional) the message to show in the snackbar action button. When no action is provided, the button * will not show * @param append (optional, default true) specifies whether to append the new snackbar message to the previous one * if a previous snackbar is still active * @param duration (optional) set a one-time specific duration in milliseconds, just for this snackbar instance */ error(message, action = '', append = true, duration = this.duration) { this.open(message, action, append, duration, true); } open(message, action, append, duration, isError) { this.zone.run(() => { if (append && this.snackbar._openedSnackBarRef?.instance?.data?.message) { message = this.snackbar._openedSnackBarRef.instance.data.message + '\n------\n' + message; } // reset panelClass in case the previous snackbar was an error this.sbConfig.panelClass = isError ? 'bg-error' : ''; this.sbConfig.duration = duration; this.snackbar.open(message, action, this.sbConfig); }); } /** * Shows a Material snackbar which awaits confirmation. * * @param message the message to show in the snackbar * @param action the message to show in the snackbar action button. When no action is provided, the button * will show "Got it" * @param confirmId a unique identifier by which you can recognise the confirmation response * that you get when listening to "onNewConfirm". Use static method "SnackbarService.getConfirmId" to get a unique id. * @param duration (optional) set a one-time specific duration in milliseconds, just for this snackbar instance */ confirm(message, action = 'Got it', confirmId, duration = this.duration) { this.zone.run(() => { // reset panelClass in case the previous snackbar was an error this.sbConfig.panelClass = ''; this.sbConfig.duration = duration; const snack = this.snackbar.open(message, action, this.sbConfig); snack.onAction() .subscribe(() => { this.newConfirm(confirmId); }); }); } /** * Set the global duration for all snackbars * * @param ms duration in milliseconds */ setDuration(ms) { this.duration = ms; } /** * Reset the global duration for all snackbars to default (6000) */ resetDuration() { this.duration = this.DEF_DURATION; } // ******************************************************************************************************** // BROADCAST DATA // ******************************************************************************************************** newConfirm(newConfirm) { this.confirm$.next(newConfirm); } onNewConfirm() { return this.confirm$.asObservable(); } close() { this.zone.run(() => { this.snackbar.dismiss(); }); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SnackbarService, deps: [{ token: i1.MatSnackBar }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SnackbarService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SnackbarService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.MatSnackBar }, { type: i0.NgZone }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1nZW0tc3BhYXMvc3JjL19zZXJ2aWNlcy9zbmFja2Jhci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFjLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDM0UsT0FBTyxFQUFDLGVBQWUsRUFBYSxNQUFNLE1BQU0sQ0FBQzs7O0FBS2pELE1BQU0sT0FBTyxlQUFlO0lBUTFCLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBWTtRQUM5QixPQUFPLElBQUksR0FBRyxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxZQUNTLFFBQXFCLEVBQ3BCLElBQVk7UUFEYixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3BCLFNBQUksR0FBSixJQUFJLENBQVE7UUFUTCxpQkFBWSxHQUFHLElBQUksQ0FBQztRQUM3QixhQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQVVuQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxPQUFPLENBQ0wsT0FBZSxFQUNmLE1BQU0sR0FBRyxFQUFFLEVBQ1gsTUFBTSxHQUFHLElBQUksRUFDYixRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVE7UUFFeEIsSUFBSSxDQUFDLElBQUksQ0FDUCxPQUFPLEVBQ1AsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxDQUNOLENBQUE7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsS0FBSyxDQUNILE9B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b3J0IHtJbmplY3RhYmxlLCBOZ1pvbmV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge01hdFNuYWNrQmFyLCBNYXRTbmFja0JhckNvbmZpZ30gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcclxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU25hY2tiYXJTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBjb25maXJtJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz47XHJcbiAgcHJpdmF0ZSByZWFkb25seSBzYkNvbmZpZzogTWF0U25hY2tCYXJDb25maWc7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgREVGX0RVUkFUSU9OID0gNjAwMDtcclxuICBwcml2YXRlIGR1cmF0aW9uID0gdGhpcy5ERUZfRFVSQVRJT047XHJcblxyXG4gIHN0YXRpYyBnZXRDb25maXJtSWQodHlwZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0eXBlICsgJ18nICsgcGVyZm9ybWFuY2Uubm93KCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBzbmFja2JhcjogTWF0U25hY2tCYXIsXHJcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcclxuICApIHtcclxuICAgIHRoaXMuY29uZmlybSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xyXG4gICAgdGhpcy5zYkNvbmZpZyA9IG5ldyBNYXRTbmFja0JhckNvbmZpZygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2hvd3MgYSBNYXRlcmlhbCBzbmFja2Jhci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBtZXNzYWdlIHRoZSBtZXNzYWdlIHRvIHNob3cgaW4gdGhlIHNuYWNrYmFyXHJcbiAgICogQHBhcmFtIGFjdGlvbiAob3B0aW9uYWwpIHRoZSBtZXNzYWdlIHRvIHNob3cgaW4gdGhlIHNuYWNrYmFyIGFjdGlvbiBidXR0b24uIFdoZW4gbm8gYWN0aW9uIGlzIHByb3ZpZGVkLCB0aGUgYnV0dG9uXHJcbiAgICogd2lsbCBub3Qgc2hvd1xyXG4gICAqIEBwYXJhbSBhcHBlbmQgKG9wdGlvbmFsLCBkZWZhdWx0IHRydWUpIHNwZWNpZmllcyB3aGV0aGVyIHRvIGFwcGVuZCB0aGUgbmV3IHNuYWNrYmFyIG1lc3NhZ2UgdG8gdGhlIHByZXZpb3VzIG9uZVxyXG4gICAqIGlmIGEgcHJldmlvdXMgc25hY2tiYXIgaXMgc3RpbGwgYWN0aXZlXHJcbiAgICogQHBhcmFtIGR1cmF0aW9uIChvcHRpb25hbCkgc2V0IGEgb25lLXRpbWUgc3BlY2lmaWMgZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzLCBqdXN0IGZvciB0aGlzIHNuYWNrYmFyIGluc3RhbmNlXHJcbiAgICovXHJcbiAgbWVzc2FnZShcclxuICAgIG1lc3NhZ2U6IHN0cmluZyxcclxuICAgIGFjdGlvbiA9ICcnLFxyXG4gICAgYXBwZW5kID0gdHJ1ZSxcclxuICAgIGR1cmF0aW9uID0gdGhpcy5kdXJhdGlvbixcclxuICApIHtcclxuICAgIHRoaXMub3BlbihcclxuICAgICAgbWVzc2FnZSxcclxuICAgICAgYWN0aW9uLFxyXG4gICAgICBhcHBlbmQsXHJcbiAgICAgIGR1cmF0aW9uLFxyXG4gICAgICBmYWxzZSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3dzIGEgTWF0ZXJpYWwgc25hY2tiYXIgYXMgYW4gZXJyb3IgKHJlZCBiYWNrZ3JvdW5kKS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBtZXNzYWdlIHRoZSBtZXNzYWdlIHRvIHNob3cgaW4gdGhlIHNuYWNrYmFyXHJcbiAgICogQHBhcmFtIGFjdGlvbiAob3B0aW9uYWwpIHRoZSBtZXNzYWdlIHRvIHNob3cgaW4gdGhlIHNuYWNrYmFyIGFjdGlvbiBidXR0b24uIFdoZW4gbm8gYWN0aW9uIGlzIHByb3ZpZGVkLCB0aGUgYnV0dG9uXHJcbiAgICogd2lsbCBub3Qgc2hvd1xyXG4gICAqIEBwYXJhbSBhcHBlbmQgKG9wdGlvbmFsLCBkZWZhdWx0IHRydWUpIHNwZWNpZmllcyB3aGV0aGVyIHRvIGFwcGVuZCB0aGUgbmV3IHNuYWNrYmFyIG1lc3NhZ2UgdG8gdGhlIHByZXZpb3VzIG9uZVxyXG4gICAqIGlmIGEgcHJldmlvdXMgc25hY2tiYXIgaXMgc3RpbGwgYWN0aXZlXHJcbiAgICogQHBhcmFtIGR1cmF0aW9uIChvcHRpb25hbCkgc2V0IGEgb25lLXRpbWUgc3BlY2lmaWMgZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzLCBqdXN0IGZvciB0aGlzIHNuYWNrYmFyIGluc3RhbmNlXHJcbiAgICovXHJcbiAgZXJyb3IoXHJcbiAgICBtZXNzYWdlOiBzdHJpbmcsXHJcbiAgICBhY3Rpb24gPSAnJyxcclxuICAgIGFwcGVuZCA9IHRydWUsXHJcbiAgICBkdXJhdGlvbiA9IHRoaXMuZHVyYXRpb24sXHJcbiAgKSB7XHJcbiAgICB0aGlzLm9wZW4oXHJcbiAgICAgIG1lc3NhZ2UsXHJcbiAgICAgIGFjdGlvbixcclxuICAgICAgYXBwZW5kLFxyXG4gICAgICBkdXJhdGlvbixcclxuICAgICAgdHJ1ZSxcclxuICAgIClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb3BlbihcclxuICAgIG1lc3NhZ2U6IHN0cmluZyxcclxuICAgIGFjdGlvbjogc3RyaW5nLFxyXG4gICAgYXBwZW5kOiBib29sZWFuLFxyXG4gICAgZHVyYXRpb246IG51bWJlcixcclxuICAgIGlzRXJyb3I6IGJvb2xlYW4sXHJcbiAgKSB7XHJcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgaWYgKGFwcGVuZCAmJiB0aGlzLnNuYWNrYmFyLl9vcGVuZWRTbmFja0JhclJlZj8uaW5zdGFuY2U/LmRhdGE/Lm1lc3NhZ2UpIHtcclxuICAgICAgICBtZXNzYWdlID0gdGhpcy5zbmFja2Jhci5fb3BlbmVkU25hY2tCYXJSZWYuaW5zdGFuY2UuZGF0YS5tZXNzYWdlICsgJ1xcbi0tLS0tLVxcbicgKyBtZXNzYWdlO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIHJlc2V0IHBhbmVsQ2xhc3MgaW4gY2FzZSB0aGUgcHJldmlvdXMgc25hY2tiYXIgd2FzIGFuIGVycm9yXHJcbiAgICAgIHRoaXMuc2JDb25maWcucGFuZWxDbGFzcyA9IGlzRXJyb3IgPyAnYmctZXJyb3InIDogJyc7XHJcbiAgICAgIHRoaXMuc2JDb25maWcuZHVyYXRpb24gPSBkdXJhdGlvbjtcclxuICAgICAgdGhpcy5zbmFja2Jhci5vcGVuKG1lc3NhZ2UsIGFjdGlvbiwgdGhpcy5zYkNvbmZpZyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3dzIGEgTWF0ZXJpYWwgc25hY2tiYXIgd2hpY2ggYXdhaXRzIGNvbmZpcm1hdGlvbi5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBtZXNzYWdlIHRoZSBtZXNzYWdlIHRvIHNob3cgaW4gdGhlIHNuYWNrYmFyXHJcbiAgICogQHBhcmFtIGFjdGlvbiB0aGUgbWVzc2FnZSB0byBzaG93IGluIHRoZSBzbmFja2JhciBhY3Rpb24gYnV0dG9uLiBXaGVuIG5vIGFjdGlvbiBpcyBwcm92aWRlZCwgdGhlIGJ1dHRvblxyXG4gICAqIHdpbGwgc2hvdyBcIkdvdCBpdFwiXHJcbiAgICogQHBhcmFtIGNvbmZpcm1JZCBhIHVuaXF1ZSBpZGVudGlmaWVyIGJ5IHdoaWNoIHlvdSBjYW4gcmVjb2duaXNlIHRoZSBjb25maXJtYXRpb24gcmVzcG9uc2VcclxuICAgKiB0aGF0IHlvdSBnZXQgd2hlbiBsaXN0ZW5pbmcgdG8gXCJvbk5ld0NvbmZpcm1cIi4gVXNlIHN0YXRpYyBtZXRob2QgXCJTbmFja2JhclNlcnZpY2UuZ2V0Q29uZmlybUlkXCIgdG8gZ2V0IGEgdW5pcXVlIGlkLlxyXG4gICAqIEBwYXJhbSBkdXJhdGlvbiAob3B0aW9uYWwpIHNldCBhIG9uZS10aW1lIHNwZWNpZmljIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcywganVzdCBmb3IgdGhpcyBzbmFja2JhciBpbnN0YW5jZVxyXG4gICAqL1xyXG4gIGNvbmZpcm0oXHJcbiAgICBtZXNzYWdlOiBzdHJpbmcsXHJcbiAgICBhY3Rpb246IHN0cmluZyA9ICdHb3QgaXQnLFxyXG4gICAgY29uZmlybUlkOiBzdHJpbmcsXHJcbiAgICBkdXJhdGlvbiA9IHRoaXMuZHVyYXRpb24sXHJcbiAgKSB7XHJcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgLy8gcmVzZXQgcGFuZWxDbGFzcyBpbiBjYXNlIHRoZSBwcmV2aW91cyBzbmFja2JhciB3YXMgYW4gZXJyb3JcclxuICAgICAgdGhpcy5zYkNvbmZpZy5wYW5lbENsYXNzID0gJyc7XHJcbiAgICAgIHRoaXMuc2JDb25maWcuZHVyYXRpb24gPSBkdXJhdGlvbjtcclxuICAgICAgY29uc3Qgc25hY2sgPSB0aGlzLnNuYWNrYmFyLm9wZW4obWVzc2FnZSwgYWN0aW9uLCB0aGlzLnNiQ29uZmlnKTtcclxuICAgICAgc25hY2sub25BY3Rpb24oKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubmV3Q29uZmlybShjb25maXJtSWQpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0aGUgZ2xvYmFsIGR1cmF0aW9uIGZvciBhbGwgc25hY2tiYXJzXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbXMgZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzXHJcbiAgICovXHJcbiAgc2V0RHVyYXRpb24oXHJcbiAgICBtczogbnVtYmVyLFxyXG4gICk6IHZvaWQge1xyXG4gICAgdGhpcy5kdXJhdGlvbiA9IG1zO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzZXQgdGhlIGdsb2JhbCBkdXJhdGlvbiBmb3IgYWxsIHNuYWNrYmFycyB0byBkZWZhdWx0ICg2MDAwKVxyXG4gICAqL1xyXG4gIHJlc2V0RHVyYXRpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLmR1cmF0aW9uID0gdGhpcy5ERUZfRFVSQVRJT047XHJcbiAgfVxyXG5cclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vIEJST0FEQ0FTVCBEQVRBXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbiAgcHJpdmF0ZSBuZXdDb25maXJtKG5ld0NvbmZpcm06IHN0cmluZykge1xyXG4gICAgdGhpcy5jb25maXJtJC5uZXh0KG5ld0NvbmZpcm0pO1xyXG4gIH1cclxuXHJcbiAgb25OZXdDb25maXJtKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maXJtJC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgIHRoaXMuc25hY2tiYXIuZGlzbWlzcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=