UNPKG

yhui-yuanhuan

Version:

A Component Library for Vue 3 based on element-plus

149 lines (146 loc) 5.53 kB
import { defineComponent, ref, openBlock, createBlock, unref, mergeProps, withCtx, createElementVNode, toDisplayString, createVNode, createCommentVNode, createElementBlock, Fragment, createTextVNode, renderSlot } from 'vue'; import { ElDialog, ElIcon, ElButton } from 'element-plus'; import { FullScreen } from '@element-plus/icons-vue'; import _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs'; const __default__ = defineComponent({ name: "YhDialog" }); const _sfc_main = /* @__PURE__ */ 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 = ref(false); const isFetching = 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 openBlock(), createBlock(unref(ElDialog), 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: withCtx(() => [ createElementVNode("div", { class: "dialog-header" }, [ createElementVNode("span", null, toDisplayString(__props.title), 1), __props.showFullScreen ? (openBlock(), createBlock(unref(ElIcon), { key: 0, class: "fullscreen", onClick: ($event) => isFullscreen.value = !isFullscreen.value }, { default: withCtx(() => [ createVNode(unref(FullScreen)) ]), _: 1 }, 8, ["onClick"])) : createCommentVNode("v-if", true) ]) ]), footer: withCtx(() => [ createElementVNode("div", { class: "dialog-footer" }, [ ["edit", "new"].includes(__props.from) && !__props.showPublish ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [ createVNode(unref(ElButton), { type: "default", disabled: isFetching.value, onClick: ($event) => confirm("cancel") }, { default: withCtx(() => [ createTextVNode("\u53D6\u6D88") ]), _: 1 }, 8, ["disabled", "onClick"]), createVNode(unref(ElButton), { type: "primary", loading: isFetching.value, onClick: ($event) => confirm("ok") }, { default: withCtx(() => [ createTextVNode("\u786E\u5B9A") ]), _: 1 }, 8, ["loading", "onClick"]) ], 64)) : ["edit", "new"].includes(__props.from) && __props.showPublish ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [ createVNode(unref(ElButton), { type: "default", disabled: isFetching.value, onClick: ($event) => confirm("cancel") }, { default: withCtx(() => [ createTextVNode("\u53D6\u6D88") ]), _: 1 }, 8, ["disabled", "onClick"]), createVNode(unref(ElButton), { type: "primary", loading: isFetching.value, onClick: ($event) => confirm("ok") }, { default: withCtx(() => [ createTextVNode("\u4FDD\u5B58") ]), _: 1 }, 8, ["loading", "onClick"]), createVNode(unref(ElButton), { type: "primary", loading: isFetching.value, onClick: ($event) => confirm("publish") }, { default: withCtx(() => [ createTextVNode("\u53D1\u5E03") ]), _: 1 }, 8, ["loading", "onClick"]) ], 64)) : __props.from === "view" ? (openBlock(), createBlock(unref(ElButton), { key: 2, type: "default", disabled: isFetching.value, onClick: ($event) => confirm("cancel") }, { default: withCtx(() => [ createTextVNode("\u5173\u95ED") ]), _: 1 }, 8, ["disabled", "onClick"])) : createCommentVNode("v-if", true) ]) ]), default: withCtx(() => [ renderSlot(_ctx.$slots, "default") ]), _: 3 }, 16, ["fullscreen", "model-value", "onUpdate:modalValue", "onClose"]); }; } }); var Dialog = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "dialog.vue"]]); export { Dialog as default }; //# sourceMappingURL=dialog.mjs.map