UNPKG

yhui-yuanhuan

Version:

A Component Library for Vue 3 based on element-plus

153 lines (148 loc) 5.75 kB
'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