95 lines
4.1 KiB
JavaScript
95 lines
4.1 KiB
JavaScript
import { defineComponent, inject, computed, openBlock, createElementBlock, unref, normalizeClass, normalizeStyle, createElementVNode, renderSlot, toDisplayString, createVNode, withCtx, createBlock, resolveDynamicComponent, createCommentVNode } from 'vue';
|
|
import { ElIcon } from '../../icon/index.mjs';
|
|
import { dialogInjectionKey } from './constants.mjs';
|
|
import { dialogContentProps, dialogContentEmits } from './dialog-content.mjs';
|
|
import _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';
|
|
import { FOCUS_TRAP_INJECTION_KEY } from '../../focus-trap/src/tokens.mjs';
|
|
import { useDraggable } from '../../../hooks/use-draggable/index.mjs';
|
|
import { CloseComponents } from '../../../utils/vue/icon.mjs';
|
|
import { composeRefs } from '../../../utils/vue/refs.mjs';
|
|
import { useLocale } from '../../../hooks/use-locale/index.mjs';
|
|
|
|
const __default__ = defineComponent({ name: "ElDialogContent" });
|
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
...__default__,
|
|
props: dialogContentProps,
|
|
emits: dialogContentEmits,
|
|
setup(__props, { expose }) {
|
|
const props = __props;
|
|
const { t } = useLocale();
|
|
const { Close } = CloseComponents;
|
|
const { dialogRef, headerRef, bodyId, ns, style } = inject(dialogInjectionKey);
|
|
const { focusTrapRef } = inject(FOCUS_TRAP_INJECTION_KEY);
|
|
const composedDialogRef = composeRefs(focusTrapRef, dialogRef);
|
|
const draggable = computed(() => !!props.draggable);
|
|
const overflow = computed(() => !!props.overflow);
|
|
const { resetPosition, updatePosition, isDragging } = useDraggable(dialogRef, headerRef, draggable, overflow);
|
|
const dialogKls = computed(() => [
|
|
ns.b(),
|
|
ns.is("fullscreen", props.fullscreen),
|
|
ns.is("draggable", draggable.value),
|
|
ns.is("dragging", isDragging.value),
|
|
ns.is("align-center", !!props.alignCenter),
|
|
{ [ns.m("center")]: props.center }
|
|
]);
|
|
expose({
|
|
resetPosition,
|
|
updatePosition
|
|
});
|
|
return (_ctx, _cache) => {
|
|
return openBlock(), createElementBlock("div", {
|
|
ref: unref(composedDialogRef),
|
|
class: normalizeClass(unref(dialogKls)),
|
|
style: normalizeStyle(unref(style)),
|
|
tabindex: "-1"
|
|
}, [
|
|
createElementVNode("header", {
|
|
ref_key: "headerRef",
|
|
ref: headerRef,
|
|
class: normalizeClass([unref(ns).e("header"), _ctx.headerClass, { "show-close": _ctx.showClose }])
|
|
}, [
|
|
renderSlot(_ctx.$slots, "header", {}, () => [
|
|
createElementVNode("span", {
|
|
role: "heading",
|
|
"aria-level": _ctx.ariaLevel,
|
|
class: normalizeClass(unref(ns).e("title"))
|
|
}, toDisplayString(_ctx.title), 11, ["aria-level"])
|
|
]),
|
|
_ctx.showClose ? (openBlock(), createElementBlock("button", {
|
|
key: 0,
|
|
"aria-label": unref(t)("el.dialog.close"),
|
|
class: normalizeClass(unref(ns).e("headerbtn")),
|
|
type: "button",
|
|
onClick: ($event) => _ctx.$emit("close")
|
|
}, [
|
|
createVNode(unref(ElIcon), {
|
|
class: normalizeClass(unref(ns).e("close"))
|
|
}, {
|
|
default: withCtx(() => [
|
|
(openBlock(), createBlock(resolveDynamicComponent(_ctx.closeIcon || unref(Close))))
|
|
]),
|
|
_: 1
|
|
}, 8, ["class"])
|
|
], 10, ["aria-label", "onClick"])) : createCommentVNode("v-if", true)
|
|
], 2),
|
|
createElementVNode("div", {
|
|
id: unref(bodyId),
|
|
class: normalizeClass([unref(ns).e("body"), _ctx.bodyClass])
|
|
}, [
|
|
renderSlot(_ctx.$slots, "default")
|
|
], 10, ["id"]),
|
|
_ctx.$slots.footer ? (openBlock(), createElementBlock("footer", {
|
|
key: 0,
|
|
class: normalizeClass([unref(ns).e("footer"), _ctx.footerClass])
|
|
}, [
|
|
renderSlot(_ctx.$slots, "footer")
|
|
], 2)) : createCommentVNode("v-if", true)
|
|
], 6);
|
|
};
|
|
}
|
|
});
|
|
var ElDialogContent = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "dialog-content.vue"]]);
|
|
|
|
export { ElDialogContent as default };
|
|
//# sourceMappingURL=dialog-content2.mjs.map
|