carbon-components-angular
Version:
Next generation components
87 lines • 8.95 kB
JavaScript
import { Output, EventEmitter, HostBinding, Component } from "@angular/core";
import { isObservable } from "rxjs";
import * as i0 from "@angular/core";
import * as i1 from "./notification-display.service";
import * as i2 from "carbon-components-angular/i18n";
/**
* Base class for `Notification`, `ActionableNotification`, & `Toast`
* consisting of common functionality
*
* Get started with importing the module:
*
* ```typescript
* import { NotificationModule } from 'carbon-components-angular';
* ```
*
* [See demo](../../?path=/story/components-notification--inline-notification)
*/
export class BaseNotification {
constructor(notificationDisplayService, i18n) {
this.notificationDisplayService = notificationDisplayService;
this.i18n = i18n;
/**
* Emits on close.
*/
this.close = new EventEmitter();
// Get icon name(value) for service based on the notification type (key)
this.iconDictionary = {
"error": "error--filled",
"info": "information--filled",
"info-square": "information--square--filled",
"success": "checkmark--filled",
"warning": "warning--filled",
"warning-alt": "warning--alt--filled"
};
this.defaultNotificationObj = {
title: "",
message: "",
type: "info",
showClose: true,
closeLabel: this.i18n.get("NOTIFICATION.CLOSE_BUTTON"),
role: "status"
};
this._notificationObj = Object.assign({}, this.defaultNotificationObj);
}
/**
* Set role attribute for component
* `Status` is default for inline-notification & toast component
* `alertdialog` is default for actionable-notification
*/
get roleAttr() {
return this._notificationObj.role;
}
/**
* Emits close event.
*/
onClose() {
this.close.emit();
}
onClick(action, event) {
if (!action.click) {
return;
}
if (isObservable(action.click)) {
action.click.next({ event, action });
}
else {
action.click({ event, action });
}
}
destroy() {
this.notificationDisplayService.close(this);
}
}
BaseNotification.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BaseNotification, deps: [{ token: i1.NotificationDisplayService }, { token: i2.I18n }], target: i0.ɵɵFactoryTarget.Component });
BaseNotification.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: BaseNotification, selector: "ng-component", outputs: { close: "close" }, host: { properties: { "attr.role": "this.roleAttr" } }, ngImport: i0, template: "", isInline: true });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BaseNotification, decorators: [{
type: Component,
args: [{
template: ""
}]
}], ctorParameters: function () { return [{ type: i1.NotificationDisplayService }, { type: i2.I18n }]; }, propDecorators: { roleAttr: [{
type: HostBinding,
args: ["attr.role"]
}], close: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1ub3RpZmljYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25vdGlmaWNhdGlvbi9iYXNlLW5vdGlmaWNhdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLE1BQU0sRUFDTixZQUFZLEVBQ1osV0FBVyxFQUNYLFNBQVMsRUFFVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFXLE1BQU0sTUFBTSxDQUFDOzs7O0FBSzdDOzs7Ozs7Ozs7OztHQVdHO0FBSUgsTUFBTSxPQUFPLGdCQUFnQjtJQXVDNUIsWUFDVywwQkFBc0QsRUFDdEQsSUFBVTtRQURWLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBNEI7UUFDdEQsU0FBSSxHQUFKLElBQUksQ0FBTTtRQS9CckI7O1dBRUc7UUFDTyxVQUFLLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFLeEQsd0VBQXdFO1FBQy9ELG1CQUFjLEdBQUc7WUFDekIsT0FBTyxFQUFFLGVBQWU7WUFDeEIsTUFBTSxFQUFFLHFCQUFxQjtZQUM3QixhQUFhLEVBQUUsNkJBQTZCO1lBQzVDLFNBQVMsRUFBRSxtQkFBbUI7WUFDOUIsU0FBUyxFQUFFLGlCQUFpQjtZQUM1QixhQUFhLEVBQUUsc0JBQXNCO1NBQ3JDLENBQUM7UUFFUSwyQkFBc0IsR0FBd0I7WUFDdkQsS0FBSyxFQUFFLEVBQUU7WUFDVCxPQUFPLEVBQUUsRUFBRTtZQUNYLElBQUksRUFBRSxNQUEwQjtZQUNoQyxTQUFTLEVBQUUsSUFBSTtZQUNmLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQztZQUN0RCxJQUFJLEVBQUUsUUFBUTtTQUNkLENBQUM7UUFFUSxxQkFBZ0IsR0FBd0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFLN0YsQ0FBQztJQXpDTDs7OztPQUlHO0lBQ0gsSUFBOEIsUUFBUTtRQUNyQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7SUFDbkMsQ0FBQztJQW9DRDs7T0FFRztJQUNILE9BQU87UUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUs7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDbEIsT0FBTztTQUNQO1FBQ0QsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzlCLE1BQU0sQ0FBQyxLQUFnRCxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ2pGO2FBQU07WUFDTixNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDaEM7SUFDRixDQUFDO0lBRUQsT0FBTztRQUNOLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7NkdBaEVXLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLHlJQUZsQixFQUFFOzJGQUVBLGdCQUFnQjtrQkFINUIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsRUFBRTtpQkFDWjtvSUFPOEIsUUFBUTtzQkFBckMsV0FBVzt1QkFBQyxXQUFXO2dCQU9kLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdE91dHB1dCxcblx0RXZlbnRFbWl0dGVyLFxuXHRIb3N0QmluZGluZyxcblx0Q29tcG9uZW50LFxuXHRDb21wb25lbnRSZWZcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBJMThuIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvaTE4blwiO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uQ29udGVudCwgTm90aWZpY2F0aW9uVHlwZSB9IGZyb20gXCIuL25vdGlmaWNhdGlvbi1jb250ZW50LmludGVyZmFjZVwiO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uRGlzcGxheVNlcnZpY2UgfSBmcm9tIFwiLi9ub3RpZmljYXRpb24tZGlzcGxheS5zZXJ2aWNlXCI7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgYE5vdGlmaWNhdGlvbmAsIGBBY3Rpb25hYmxlTm90aWZpY2F0aW9uYCwgJiBgVG9hc3RgXG4gKiBjb25zaXN0aW5nIG9mIGNvbW1vbiBmdW5jdGlvbmFsaXR5XG4gKlxuICogR2V0IHN0YXJ0ZWQgd2l0aCBpbXBvcnRpbmcgdGhlIG1vZHVsZTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBOb3RpZmljYXRpb25Nb2R1bGUgfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbiAqIGBgYFxuICpcbiAqIFtTZWUgZGVtb10oLi4vLi4vP3BhdGg9L3N0b3J5L2NvbXBvbmVudHMtbm90aWZpY2F0aW9uLS1pbmxpbmUtbm90aWZpY2F0aW9uKVxuICovXG5AQ29tcG9uZW50KHtcblx0dGVtcGxhdGU6IFwiXCJcbn0pXG5leHBvcnQgY2xhc3MgQmFzZU5vdGlmaWNhdGlvbiB7XG5cdC8qKlxuXHQgKiBTZXQgcm9sZSBhdHRyaWJ1dGUgZm9yIGNvbXBvbmVudFxuXHQgKiBgU3RhdHVzYCBpcyBkZWZhdWx0IGZvciBpbmxpbmUtbm90aWZpY2F0aW9uICYgdG9hc3QgY29tcG9uZW50XG5cdCAqIGBhbGVydGRpYWxvZ2AgaXMgZGVmYXVsdCBmb3IgYWN0aW9uYWJsZS1ub3RpZmljYXRpb25cblx0ICovXG5cdEBIb3N0QmluZGluZyhcImF0dHIucm9sZVwiKSBnZXQgcm9sZUF0dHIoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5fbm90aWZpY2F0aW9uT2JqLnJvbGU7XG5cdH1cblxuXHQvKipcblx0ICogRW1pdHMgb24gY2xvc2UuXG5cdCAqL1xuXHRAT3V0cHV0KCkgY2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cdC8vIFByb3ZpZGVzIGFjY2VzcyB0byB0aGUgY29tcG9uZW50IGluc3RhbmNlXG5cdGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPEJhc2VOb3RpZmljYXRpb24+O1xuXG5cdC8vIEdldCBpY29uIG5hbWUodmFsdWUpIGZvciBzZXJ2aWNlIGJhc2VkIG9uIHRoZSBub3RpZmljYXRpb24gdHlwZSAoa2V5KVxuXHRyZWFkb25seSBpY29uRGljdGlvbmFyeSA9IHtcblx0XHRcImVycm9yXCI6IFwiZXJyb3ItLWZpbGxlZFwiLFxuXHRcdFwiaW5mb1wiOiBcImluZm9ybWF0aW9uLS1maWxsZWRcIixcblx0XHRcImluZm8tc3F1YXJlXCI6IFwiaW5mb3JtYXRpb24tLXNxdWFyZS0tZmlsbGVkXCIsXG5cdFx0XCJzdWNjZXNzXCI6IFwiY2hlY2ttYXJrLS1maWxsZWRcIixcblx0XHRcIndhcm5pbmdcIjogXCJ3YXJuaW5nLS1maWxsZWRcIixcblx0XHRcIndhcm5pbmctYWx0XCI6IFwid2FybmluZy0tYWx0LS1maWxsZWRcIlxuXHR9O1xuXG5cdHByb3RlY3RlZCBkZWZhdWx0Tm90aWZpY2F0aW9uT2JqOiBOb3RpZmljYXRpb25Db250ZW50ID0ge1xuXHRcdHRpdGxlOiBcIlwiLFxuXHRcdG1lc3NhZ2U6IFwiXCIsXG5cdFx0dHlwZTogXCJpbmZvXCIgYXMgTm90aWZpY2F0aW9uVHlwZSxcblx0XHRzaG93Q2xvc2U6IHRydWUsXG5cdFx0Y2xvc2VMYWJlbDogdGhpcy5pMThuLmdldChcIk5PVElGSUNBVElPTi5DTE9TRV9CVVRUT05cIiksXG5cdFx0cm9sZTogXCJzdGF0dXNcIlxuXHR9O1xuXG5cdHByb3RlY3RlZCBfbm90aWZpY2F0aW9uT2JqOiBOb3RpZmljYXRpb25Db250ZW50ID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5kZWZhdWx0Tm90aWZpY2F0aW9uT2JqKTtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcm90ZWN0ZWQgbm90aWZpY2F0aW9uRGlzcGxheVNlcnZpY2U6IE5vdGlmaWNhdGlvbkRpc3BsYXlTZXJ2aWNlLFxuXHRcdHByb3RlY3RlZCBpMThuOiBJMThuXG5cdCkgeyB9XG5cblx0LyoqXG5cdCAqIEVtaXRzIGNsb3NlIGV2ZW50LlxuXHQgKi9cblx0b25DbG9zZSgpIHtcblx0XHR0aGlzLmNsb3NlLmVtaXQoKTtcblx0fVxuXG5cdG9uQ2xpY2soYWN0aW9uLCBldmVudCkge1xuXHRcdGlmICghYWN0aW9uLmNsaWNrKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmIChpc09ic2VydmFibGUoYWN0aW9uLmNsaWNrKSkge1xuXHRcdFx0KGFjdGlvbi5jbGljayBhcyBTdWJqZWN0PHsgZXZlbnQ6IEV2ZW50LCBhY3Rpb246IGFueSB9PikubmV4dCh7IGV2ZW50LCBhY3Rpb24gfSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGFjdGlvbi5jbGljayh7IGV2ZW50LCBhY3Rpb24gfSk7XG5cdFx0fVxuXHR9XG5cblx0ZGVzdHJveSgpIHtcblx0XHR0aGlzLm5vdGlmaWNhdGlvbkRpc3BsYXlTZXJ2aWNlLmNsb3NlKHRoaXMpO1xuXHR9XG59XG4iXX0=