@inkline/inkline
Version:
Inkline is the intuitive UI Components library that gives you a developer-friendly foundation for building high-quality, accessible, and customizable Vue.js 3 Design Systems.
38 lines (37 loc) • 1.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ToastPlugin = void 0;
var _vue = require("vue");
var _constants = require("@inkline/inkline/constants");
var _IToastContainer = require("@inkline/inkline/components/IToastContainer");
var _plugins = require("@inkline/inkline/plugins");
const ToastPlugin = exports.ToastPlugin = {
install: (app, {
inkline
}) => {
app.config.globalProperties.$toast = _constants.toastService;
app.provide(_constants.InklineToastKey, _constants.toastService);
if (typeof window === "undefined") {
return;
}
const containerId = _constants.defaultToastContainerId;
const containerDataAttribute = `data-${containerId}`;
let container = document.querySelector(`#${containerId}`);
if (!container) {
container = document.createElement("div");
container.id = containerId;
document.body.appendChild(container);
}
if (!container.hasAttribute(containerDataAttribute)) {
const toastApp = (0, _vue.createApp)(_IToastContainer.IToastContainer, {
eventBus: _constants.toastEventBus
});
toastApp.provide(_constants.InklineKey, inkline);
toastApp.use(_plugins.IconsPlugin);
container.setAttribute(containerDataAttribute, "");
toastApp.mount(container);
}
}
};