hongluan-business-ui
Version:
Hongluan Business Component Library for Vue 3
94 lines (91 loc) • 2.54 kB
JavaScript
import { defineComponent, ref, computed, resolveComponent, openBlock, createBlock, mergeProps, withCtx, createVNode, renderSlot, createTextVNode, toDisplayString } from 'vue';
import { HlButton, HlPopover } from 'hongluan-ui';
import { usePrefix } from '../../../utils/util.mjs';
import _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';
const _sfc_main = defineComponent({
name: "ConfirmableButton",
components: {
HlButton,
HlPopover
},
props: {
tip: {
type: String,
default: ""
},
popoverProps: {
type: Object,
default: () => ({})
},
defaultState: {
type: Object,
default: () => ({
type: "link"
})
},
confirmState: {
type: Object,
default: () => ({
type: "danger"
})
}
},
emits: ["confirm"],
setup(props, { emit }) {
const { prefix } = usePrefix();
const visible = ref(false);
const state = computed(() => visible.value ? props.confirmState : props.defaultState);
const popoverShown = () => {
visible.value = true;
};
const popoverHidden = () => {
visible.value = false;
};
const handleClick = () => {
if (visible.value) {
emit("confirm");
}
};
return {
prefix,
visible,
state,
popoverShown,
popoverHidden,
handleClick
};
}
});
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_hl_button = resolveComponent("hl-button");
const _component_hl_popover = resolveComponent("hl-popover");
return openBlock(), createBlock(_component_hl_popover, mergeProps({
trigger: "click",
"show-arrow": false,
placement: "top"
}, _ctx.popoverProps, {
onAfterEnter: _ctx.popoverShown,
onAfterLeave: _ctx.popoverHidden
}), {
reference: withCtx(() => [
createVNode(_component_hl_button, mergeProps(_ctx.state, {
class: `${_ctx.prefix}-confirmable-button`,
onClick: _ctx.handleClick
}), {
default: withCtx(() => [
renderSlot(_ctx.$slots, "default")
]),
_: 3
}, 16, ["class", "onClick"])
]),
default: withCtx(() => [
renderSlot(_ctx.$slots, "tip", {}, () => [
createTextVNode(toDisplayString(_ctx.tip), 1)
])
]),
_: 3
}, 16, ["onAfterEnter", "onAfterLeave"]);
}
var ConfirmableButton = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export { ConfirmableButton as default };
//# sourceMappingURL=index.mjs.map