yhui-yuanhuan
Version:
A Component Library for Vue 3 based on element-plus
153 lines (148 loc) • 5.75 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
var elementPlus = require('element-plus');
var iconsVue = require('@element-plus/icons-vue');
var pluginVue_exportHelper = require('../../../_virtual/plugin-vue_export-helper.js');
const __default__ = vue.defineComponent({
name: "YhDialog"
});
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
...__default__,
props: {
dialogProps: null,
from: { default: "other" },
modelValue: { type: Boolean },
showPublish: { type: Boolean },
showFullScreen: { type: Boolean },
title: { default: "" }
},
emits: ["update:modelValue", "confirm"],
setup(__props, { emit }) {
const props = __props;
const isFullscreen = vue.ref(false);
const isFetching = vue.ref(false);
const done = (isClose = true) => {
isFetching.value = false;
if (isClose) {
emit("update:modelValue", false);
}
};
const confirm = async (type) => {
isFetching.value = true;
if (type === "cancel") {
done();
}
emit("confirm", {
type,
from: props.from || "other",
done
});
};
return (_ctx, _cache) => {
return vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElDialog), vue.mergeProps({
class: "yh-dialog",
width: "600",
draggable: "",
fullscreen: isFullscreen.value,
"close-on-click-modal": false,
"close-on-press-escape": false,
"align-center": ""
}, __props.dialogProps, {
"model-value": __props.modelValue,
"onUpdate:modalValue": ($event) => emit("update:modelValue", $event),
onClose: ($event) => emit("update:modelValue", false)
}), {
header: vue.withCtx(() => [
vue.createElementVNode("div", { class: "dialog-header" }, [
vue.createElementVNode("span", null, vue.toDisplayString(__props.title), 1),
__props.showFullScreen ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElIcon), {
key: 0,
class: "fullscreen",
onClick: ($event) => isFullscreen.value = !isFullscreen.value
}, {
default: vue.withCtx(() => [
vue.createVNode(vue.unref(iconsVue.FullScreen))
]),
_: 1
}, 8, ["onClick"])) : vue.createCommentVNode("v-if", true)
])
]),
footer: vue.withCtx(() => [
vue.createElementVNode("div", { class: "dialog-footer" }, [
["edit", "new"].includes(__props.from) && !__props.showPublish ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
vue.createVNode(vue.unref(elementPlus.ElButton), {
type: "default",
disabled: isFetching.value,
onClick: ($event) => confirm("cancel")
}, {
default: vue.withCtx(() => [
vue.createTextVNode("\u53D6\u6D88")
]),
_: 1
}, 8, ["disabled", "onClick"]),
vue.createVNode(vue.unref(elementPlus.ElButton), {
type: "primary",
loading: isFetching.value,
onClick: ($event) => confirm("ok")
}, {
default: vue.withCtx(() => [
vue.createTextVNode("\u786E\u5B9A")
]),
_: 1
}, 8, ["loading", "onClick"])
], 64)) : ["edit", "new"].includes(__props.from) && __props.showPublish ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
vue.createVNode(vue.unref(elementPlus.ElButton), {
type: "default",
disabled: isFetching.value,
onClick: ($event) => confirm("cancel")
}, {
default: vue.withCtx(() => [
vue.createTextVNode("\u53D6\u6D88")
]),
_: 1
}, 8, ["disabled", "onClick"]),
vue.createVNode(vue.unref(elementPlus.ElButton), {
type: "primary",
loading: isFetching.value,
onClick: ($event) => confirm("ok")
}, {
default: vue.withCtx(() => [
vue.createTextVNode("\u4FDD\u5B58")
]),
_: 1
}, 8, ["loading", "onClick"]),
vue.createVNode(vue.unref(elementPlus.ElButton), {
type: "primary",
loading: isFetching.value,
onClick: ($event) => confirm("publish")
}, {
default: vue.withCtx(() => [
vue.createTextVNode("\u53D1\u5E03")
]),
_: 1
}, 8, ["loading", "onClick"])
], 64)) : __props.from === "view" ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElButton), {
key: 2,
type: "default",
disabled: isFetching.value,
onClick: ($event) => confirm("cancel")
}, {
default: vue.withCtx(() => [
vue.createTextVNode("\u5173\u95ED")
]),
_: 1
}, 8, ["disabled", "onClick"])) : vue.createCommentVNode("v-if", true)
])
]),
default: vue.withCtx(() => [
vue.renderSlot(_ctx.$slots, "default")
]),
_: 3
}, 16, ["fullscreen", "model-value", "onUpdate:modalValue", "onClose"]);
};
}
});
var Dialog = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["__file", "dialog.vue"]]);
exports["default"] = Dialog;
//# sourceMappingURL=dialog.js.map