@lhn/mat-alert
Version:
Implementation of MatDialog shown as an alert message
45 lines • 5.22 kB
JavaScript
import { Component, Inject } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
import { MatAlertConfig } from './mat-alert-config.interface';
import { MAT_ALERT_DEFAULT_CONFIG } from './mat-alert-default-config.constant';
export class MatAlertComponent {
constructor(data, sanitizer, defaultConfigs) {
this.sanitizer = sanitizer;
data.message = this._handleMessage(data.message);
this.config = Object.assign({}, defaultConfigs, data);
}
/**
* Handles the message and sanitize
*/
_handleMessage(message) {
message = message.toString().replace(/(\r\n|\r|\n)/g, '<br/>');
return this.sanitizer.bypassSecurityTrustHtml(message.toString());
}
}
MatAlertComponent.decorators = [
{ type: Component, args: [{
selector: 'lhn-mat-alert',
template: `
<h1 mat-dialog-title>{{config.title}}</h1>
<mat-dialog-content class="mat-typography" *ngIf="config.message">
<h4 [innerHTML]="config.message"></h4>
</mat-dialog-content>
<mat-dialog-actions align="end">
<button [class.mat-raised-button]="config.raisedButton"
[color]="config.buttonTheme"
mat-button
mat-dialog-close
type="button">
{{config.buttonText}}
</button>
</mat-dialog-actions>
`
},] }
];
MatAlertComponent.ctorParameters = () => [
{ type: MatAlertConfig, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] },
{ type: DomSanitizer },
{ type: MatAlertConfig, decorators: [{ type: Inject, args: [MAT_ALERT_DEFAULT_CONFIG,] }] }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LWFsZXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21hdC1hbGVydC9zcmMvbGliL21hdC1hbGVydC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFxQi9FLE1BQU0sT0FBTyxpQkFBaUI7SUFJNUIsWUFBcUMsSUFBb0IsRUFDckMsU0FBdUIsRUFDRyxjQUE4QjtRQUR4RCxjQUFTLEdBQVQsU0FBUyxDQUFjO1FBRXpDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssY0FBYyxDQUFDLE9BQTBCO1FBQy9DLE9BQU8sR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQzs7O1lBcENGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7OztHQWNUO2FBRUY7OztZQXJCUSxjQUFjLHVCQTBCUixNQUFNLFNBQUMsZUFBZTtZQTdCNUIsWUFBWTtZQUdaLGNBQWMsdUJBNEJSLE1BQU0sU0FBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgTWF0QWxlcnRDb25maWcgfSBmcm9tICcuL21hdC1hbGVydC1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1BVF9BTEVSVF9ERUZBVUxUX0NPTkZJRyB9IGZyb20gJy4vbWF0LWFsZXJ0LWRlZmF1bHQtY29uZmlnLmNvbnN0YW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGhuLW1hdC1hbGVydCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGgxIG1hdC1kaWFsb2ctdGl0bGU+e3tjb25maWcudGl0bGV9fTwvaDE+XG4gICAgPG1hdC1kaWFsb2ctY29udGVudCBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCIgKm5nSWY9XCJjb25maWcubWVzc2FnZVwiPlxuICAgICAgPGg0IFtpbm5lckhUTUxdPVwiY29uZmlnLm1lc3NhZ2VcIj48L2g0PlxuICAgIDwvbWF0LWRpYWxvZy1jb250ZW50PlxuICAgIDxtYXQtZGlhbG9nLWFjdGlvbnMgYWxpZ249XCJlbmRcIj5cbiAgICAgIDxidXR0b24gW2NsYXNzLm1hdC1yYWlzZWQtYnV0dG9uXT1cImNvbmZpZy5yYWlzZWRCdXR0b25cIlxuICAgICAgICAgICAgICBbY29sb3JdPVwiY29uZmlnLmJ1dHRvblRoZW1lXCJcbiAgICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgICBtYXQtZGlhbG9nLWNsb3NlXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAge3tjb25maWcuYnV0dG9uVGV4dH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L21hdC1kaWFsb2ctYWN0aW9ucz5cbiAgYCxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgTWF0QWxlcnRDb21wb25lbnQge1xuXG4gIHB1YmxpYyBjb25maWc6IE1hdEFsZXJ0Q29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBkYXRhOiBNYXRBbGVydENvbmZpZyxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgICAgICAgQEluamVjdChNQVRfQUxFUlRfREVGQVVMVF9DT05GSUcpIGRlZmF1bHRDb25maWdzOiBNYXRBbGVydENvbmZpZykge1xuICAgIGRhdGEubWVzc2FnZSA9IHRoaXMuX2hhbmRsZU1lc3NhZ2UoZGF0YS5tZXNzYWdlKTtcbiAgICB0aGlzLmNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRDb25maWdzLCBkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBtZXNzYWdlIGFuZCBzYW5pdGl6ZVxuICAgKi9cbiAgcHJpdmF0ZSBfaGFuZGxlTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcgfCBTYWZlSHRtbCkge1xuICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnRvU3RyaW5nKCkucmVwbGFjZSgvKFxcclxcbnxcXHJ8XFxuKS9nLCAnPGJyLz4nKTtcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwobWVzc2FnZS50b1N0cmluZygpKTtcbiAgfVxuXG59XG4iXX0=