12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
- import { extend, inBrowser } from "../utils/index.mjs";
- import { mountComponent, usePopupState } from "../utils/mount-component.mjs";
- import Dialog from "./Dialog.mjs";
- let instance;
- const DEFAULT_OPTIONS = {
- title: "",
- width: "",
- theme: null,
- message: "",
- overlay: true,
- callback: null,
- teleport: "body",
- className: "",
- allowHtml: false,
- lockScroll: true,
- transition: void 0,
- beforeClose: null,
- overlayClass: "",
- overlayStyle: void 0,
- messageAlign: "",
- cancelButtonText: "",
- cancelButtonColor: null,
- cancelButtonDisabled: false,
- confirmButtonText: "",
- confirmButtonColor: null,
- confirmButtonDisabled: false,
- showConfirmButton: true,
- showCancelButton: false,
- closeOnPopstate: true,
- closeOnClickOverlay: false
- };
- let currentOptions = extend({}, DEFAULT_OPTIONS);
- function initInstance() {
- const Wrapper = {
- setup() {
- const {
- state,
- toggle
- } = usePopupState();
- return () => _createVNode(Dialog, _mergeProps(state, {
- "onUpdate:show": toggle
- }), null);
- }
- };
- ({
- instance
- } = mountComponent(Wrapper));
- }
- function showDialog(options) {
- if (!inBrowser) {
- return Promise.resolve(void 0);
- }
- return new Promise((resolve, reject) => {
- if (!instance) {
- initInstance();
- }
- instance.open(extend({}, currentOptions, options, {
- callback: (action) => {
- (action === "confirm" ? resolve : reject)(action);
- }
- }));
- });
- }
- const setDialogDefaultOptions = (options) => {
- extend(currentOptions, options);
- };
- const resetDialogDefaultOptions = () => {
- currentOptions = extend({}, DEFAULT_OPTIONS);
- };
- const showConfirmDialog = (options) => showDialog(extend({
- showCancelButton: true
- }, options));
- const closeDialog = () => {
- if (instance) {
- instance.toggle(false);
- }
- };
- export {
- closeDialog,
- resetDialogDefaultOptions,
- setDialogDefaultOptions,
- showConfirmDialog,
- showDialog
- };
|