@fmdevui/fm-dev
Version:
Page level components developed based on Element Plus.
74 lines (71 loc) • 2.13 kB
JavaScript
import { defineComponent, ref, resolveComponent, createBlock, openBlock, mergeProps, withCtx, createVNode, renderSlot } from 'vue';
var _sfc_main = /* @__PURE__ */ defineComponent({
...{
name: "FmButton"
},
__name: "index",
props: {
time: { default: 1e3 },
tip: { default: "" },
placement: { default: "top" },
tipProps: { default: () => ({}) },
isDebounce: { type: Boolean, default: true }
},
emits: ["click"],
setup(__props, { emit: __emit }) {
const props = __props;
const emits = __emit;
const record = ref(0);
const handleClick = () => {
if (!props.isDebounce) return emits("click");
const newTime = /* @__PURE__ */ new Date();
if (newTime.getTime() - record.value > props.time) {
emits("click");
}
record.value = newTime.getTime();
};
return (_ctx, _cache) => {
const _component_el_button = resolveComponent("el-button");
const _component_el_tooltip = resolveComponent("el-tooltip");
return __props.tip ? (openBlock(), createBlock(_component_el_tooltip, mergeProps({
key: 0,
content: __props.tip,
placement: __props.placement
}, __props.tipProps), {
default: withCtx(() => [
createVNode(
_component_el_button,
mergeProps(_ctx.$attrs, {
class: "fm-button-tip",
onClick: handleClick
}),
{
default: withCtx(() => [
renderSlot(_ctx.$slots, "default")
]),
_: 3
/* FORWARDED */
},
16
/* FULL_PROPS */
)
]),
_: 3
/* FORWARDED */
}, 16, ["content", "placement"])) : (openBlock(), createBlock(
_component_el_button,
mergeProps({ key: 1 }, _ctx.$attrs, { onClick: handleClick }),
{
default: withCtx(() => [
renderSlot(_ctx.$slots, "default")
]),
_: 3
/* FORWARDED */
},
16
/* FULL_PROPS */
));
};
}
});
export { _sfc_main as default };