/** @module bsToastService */ kit.PluginManager.register('bsToastService', function(module, exports, require, global){ var support = require('support'); var bsToast = require('bsToast'); var Collection = require('Collection'); function Service() { this.close = true; this.option = { animation: true, autohide: true, delay: 4000, }; this.closeTemplate = ''; this.iconTemplate = ''; /** * @type {HTMLElement} */ this.container = null; this.onShow = new Collection(); } Service.prototype.setContainer = function (parentNode = document.body, opClass = 'default') { parentNode = support.getNode(parentNode); if(opClass) { opClass = 'toast-container--'+opClass; } var opClassSelector = (opClass !== '')?('.'+opClass):''; var container = parentNode.querySelector('.toast-container'+opClassSelector); if(container) { this.container = container; return; } var toastContainerTemplate = '
'; this.container = support.makeNode(toastContainerTemplate); if(support.isElement(parentNode)) { parentNode.appendChild(this.container); } }; Service.prototype.getToastNode = function (title, message, desc = '') { var closeTemplate = this.close?this.closeTemplate:''; var toastTemplate = ''; return support.makeNode(toastTemplate); }; Service.prototype.info = function (title, message, desc = '') { var toastNode = this.getToastNode(title, message, desc); var toast = new bsToast(toastNode, this.option); toast.data = { title: title, message: message, desc: desc, date: new Date() }; support.setNodeData(toastNode, 'toast', toast); this.container.appendChild(toastNode); toast.show(); this.onShow.eachCall(this, toast, toastNode); }; /** * @memberOf kit.service * @class toast **/ var toast = new Service(); toast.setContainer(); global.service.toast = toast; module.exports = toast; });