@ribajs/bs4
Version:
Bootstrap 4 module for Riba.js
57 lines • 4.52 kB
JavaScript
import { Component } from "@ribajs/core";
import { EventDispatcher } from "@ribajs/events";
import { hasChildNodesTrim } from "@ribajs/utils/src/dom.js";
export class Bs4NotificationContainerComponent extends Component {
static tagName = "bs4-notification-container";
autobind = true;
_debug = false;
notificationDispatcher;
static get observedAttributes() {
return ["icon-url", "position-class", "channel-name"];
}
scope = {
notifications: [],
positionClass: "absolute-bottom absolute-center",
channelName: "toast",
onItemHide: this.onItemHide,
};
constructor() {
super();
}
connectedCallback() {
super.connectedCallback();
this.init(Bs4NotificationContainerComponent.observedAttributes);
}
onItemHide(event, el, index, notification) {
if (index > -1) {
this.notifications.splice(index, 1);
}
else {
console.warn("Notification not found", notification);
}
}
onShowNotification(notification) {
this.debug("Received notification container on " + this.scope.channelName, this.scope, notification);
this.scope.notifications.push(notification);
}
async afterBind() {
this.notificationDispatcher = new EventDispatcher(this.scope.channelName);
this.notificationDispatcher.on("show-notification", this.onShowNotification, this);
await super.afterBind();
}
disconnectedCallback() {
super.disconnectedCallback();
this.notificationDispatcher.off("show-notification", this.onShowNotification, this);
}
requiredAttributes() {
return [];
}
async template() {
if (!hasChildNodesTrim(this)) {
const { default: template } = await import("./bs4-notification-container.component.html?raw");
return template;
}
return null;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnM0LW5vdGlmaWNhdGlvbi1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYnM0LW5vdGlmaWNhdGlvbi1jb250YWluZXIvYnM0LW5vdGlmaWNhdGlvbi1jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWEsTUFBTSxjQUFjLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBVzdELE1BQU0sT0FBTyxpQ0FBa0MsU0FBUSxTQUFTO0lBQ3ZELE1BQU0sQ0FBQyxPQUFPLEdBQUcsNEJBQTRCLENBQUM7SUFFM0MsUUFBUSxHQUFHLElBQUksQ0FBQztJQUNuQixNQUFNLEdBQUcsS0FBSyxDQUFDO0lBRVosc0JBQXNCLENBQW1CO0lBRW5ELE1BQU0sS0FBSyxrQkFBa0I7UUFDM0IsT0FBTyxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU0sS0FBSyxHQUFVO1FBQ3BCLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLGFBQWEsRUFBRSxpQ0FBaUM7UUFDaEQsV0FBVyxFQUFFLE9BQU87UUFDcEIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO0tBQzVCLENBQUM7SUFFRjtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztJQUVTLGlCQUFpQjtRQUN6QixLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUdNLFVBQVUsQ0FFZixLQUFZLEVBQ1osRUFBZSxFQUNmLEtBQWEsRUFDYixZQUEwQjtRQUUxQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQztJQUVTLGtCQUFrQixDQUFDLFlBQTBCO1FBQ3JELElBQUksQ0FBQyxLQUFLLENBQ1IscUNBQXFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQzlELElBQUksQ0FBQyxLQUFLLEVBQ1YsWUFBWSxDQUNiLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVTLEtBQUssQ0FBQyxTQUFTO1FBRXZCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQzVCLG1CQUFtQixFQUNuQixJQUFJLENBQUMsa0JBQWtCLEVBQ3ZCLElBQUksQ0FDTCxDQUFDO1FBQ0YsTUFBTSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVTLG9CQUFvQjtRQUM1QixLQUFLLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsc0JBQTBDLENBQUMsR0FBRyxDQUNsRCxtQkFBbUIsRUFDbkIsSUFBSSxDQUFDLGtCQUFrQixFQUN2QixJQUFJLENBQ0wsQ0FBQztJQUNKLENBQUM7SUFFUyxrQkFBa0I7UUFDMUIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRVMsS0FBSyxDQUFDLFFBQVE7UUFFdEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDN0IsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FDeEMsaURBQWlELENBQ2xELENBQUM7WUFDRixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDIn0=