UNPKG

@meve/ui

Version:

Argon design system components library

82 lines (74 loc) 2.54 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import DialogPlugin from './Dialog'; import Vue from 'vue'; import { inBrowser, isNumber, isString } from '../utils/shared'; import { mountComponent } from '../utils/components'; var singletonInstance; function Dialog(options) { if (!inBrowser()) { return Promise.resolve(); } return new Promise(function (resolve) { Dialog.close(); var dialogOptions = isString(options) || isNumber(options) ? { message: String(options) } : options; var _mountComponent = mountComponent(DialogPlugin, 'body', { propsData: _extends({}, dialogOptions, { beforeClose: dialogOptions.onBeforeClose }) }), instance = _mountComponent.instance, unmount = _mountComponent.unmount; instance.value = true; singletonInstance = instance; instance.$on('input', function (value) { instance.value = value; }); instance.$on('open', function () { return dialogOptions.onOpen == null ? void 0 : dialogOptions.onOpen(); }); instance.$on('opened', function () { return dialogOptions.onOpened == null ? void 0 : dialogOptions.onOpened(); }); instance.$on('click-overlay', function () { return dialogOptions.onClickOverlay == null ? void 0 : dialogOptions.onClickOverlay(); }); instance.$on('close', function () { dialogOptions.onClose == null ? void 0 : dialogOptions.onClose(); resolve('close'); }); instance.$on('closed', function () { dialogOptions.onClosed == null ? void 0 : dialogOptions.onClosed(); unmount(); singletonInstance === instance && (singletonInstance = null); }); instance.$on('confirm', function () { dialogOptions.onConfirm == null ? void 0 : dialogOptions.onConfirm(); resolve('confirm'); }); instance.$on('cancel', function () { dialogOptions.onCancel == null ? void 0 : dialogOptions.onCancel(); resolve('cancel'); }); instance.$on('route-change', function () { unmount(); singletonInstance === instance && (singletonInstance = null); }); }); } Dialog.close = function () { if (singletonInstance != null) { var prevSingletonInstance = singletonInstance; singletonInstance = null; Vue.nextTick(function () { prevSingletonInstance.show = false; }); } }; Dialog.Component = DialogPlugin; Dialog.install = function (Vue) { Vue.use(DialogPlugin); }; export var _DialogComponent = DialogPlugin; export default Dialog;