yuang-framework-ui-pc
Version:
yuang-framework-ui-pc Library
106 lines (105 loc) • 3.43 kB
JavaScript
import { defineComponent, ref, shallowReactive, provide, resolveComponent, createElementBlock, openBlock, normalizeClass, createCommentVNode, createElementVNode, createVNode, normalizeStyle, createBlock, mergeProps, withCtx, createTextVNode, toDisplayString, renderSlot } from "vue";
import EleTooltip from "../ele-tooltip/index";
import EleText from "../ele-text/index";
import { toolbarProps, TOOLBAR_KEY } from "./props";
const _sfc_main = defineComponent({
name: "EleToolbar",
components: { EleTooltip, EleText },
props: toolbarProps,
setup() {
const tooltipRef = ref(null);
const virtualRef = ref();
const tooltipContent = ref("");
const tooltipProps = ref({});
const showTooltip = (text, el, options) => {
virtualRef.value = el;
tooltipContent.value = text ?? "";
tooltipProps.value = options || {};
};
const hideTooltip = () => {
tooltipRef.value && tooltipRef.value.hide();
};
const toolbarProvide = shallowReactive({
showTooltip,
hideTooltip
});
provide(TOOLBAR_KEY, toolbarProvide);
return {
tooltipRef,
virtualRef,
tooltipContent,
tooltipProps,
showTooltip,
hideTooltip
};
}
});
const _export_sfc = (sfc, props) => {
const target = sfc.__vccOpts || sfc;
for (const [key, val] of props) {
target[key] = val;
}
return target;
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_EleText = resolveComponent("EleText");
const _component_EleTooltip = resolveComponent("EleTooltip");
return openBlock(), createElementBlock("div", {
class: normalizeClass([
"ele-toolbar",
{ "is-default": "plain" !== _ctx.theme },
{ "is-plain": "plain" === _ctx.theme }
])
}, [
_ctx.title || _ctx.subtitle ? (openBlock(), createElementBlock("div", {
key: 0,
class: "ele-toolbar-title",
style: normalizeStyle(_ctx.titleStyle)
}, [
_ctx.title ? (openBlock(), createBlock(_component_EleText, mergeProps({
key: 0,
type: "heading"
}, _ctx.titleProps || {}), {
default: withCtx(() => [
createTextVNode(toDisplayString(_ctx.title), 1)
]),
_: 1
}, 16)) : createCommentVNode("", true),
_ctx.subtitle ? (openBlock(), createBlock(_component_EleText, mergeProps({
key: 1,
size: "xs"
}, _ctx.subtitleProps || {}), {
default: withCtx(() => [
createTextVNode(toDisplayString(_ctx.subtitle), 1)
]),
_: 1
}, 16)) : createCommentVNode("", true)
], 4)) : createCommentVNode("", true),
createElementVNode("div", {
class: "ele-toolbar-body",
style: normalizeStyle(_ctx.bodyStyle)
}, [
renderSlot(_ctx.$slots, "default")
], 4),
createElementVNode("div", {
class: "ele-toolbar-tools",
style: normalizeStyle(_ctx.toolsStyle)
}, [
renderSlot(_ctx.$slots, "tools")
], 4),
createVNode(_component_EleTooltip, mergeProps({
trigger: "hover",
placement: "top",
persistent: false,
content: _ctx.tooltipContent
}, _ctx.tooltipProps || {}, {
virtualTriggering: true,
virtualRef: _ctx.virtualRef,
ref: "tooltipRef"
}), null, 16, ["content", "virtualRef"])
], 2);
}
const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
index as default
};