hongluan-business-ui
Version:
Hongluan Business Component Library for Vue 3
98 lines (93 loc) • 2.61 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
var hongluanUi = require('hongluan-ui');
var util = require('../../../utils/util.js');
var pluginVue_exportHelper = require('../../../_virtual/plugin-vue_export-helper.js');
const _sfc_main = vue.defineComponent({
name: "ConfirmableButton",
components: {
HlButton: hongluanUi.HlButton,
HlPopover: hongluanUi.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 } = util.usePrefix();
const visible = vue.ref(false);
const state = vue.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 = vue.resolveComponent("hl-button");
const _component_hl_popover = vue.resolveComponent("hl-popover");
return vue.openBlock(), vue.createBlock(_component_hl_popover, vue.mergeProps({
trigger: "click",
"show-arrow": false,
placement: "top"
}, _ctx.popoverProps, {
onAfterEnter: _ctx.popoverShown,
onAfterLeave: _ctx.popoverHidden
}), {
reference: vue.withCtx(() => [
vue.createVNode(_component_hl_button, vue.mergeProps(_ctx.state, {
class: `${_ctx.prefix}-confirmable-button`,
onClick: _ctx.handleClick
}), {
default: vue.withCtx(() => [
vue.renderSlot(_ctx.$slots, "default")
]),
_: 3
}, 16, ["class", "onClick"])
]),
default: vue.withCtx(() => [
vue.renderSlot(_ctx.$slots, "tip", {}, () => [
vue.createTextVNode(vue.toDisplayString(_ctx.tip), 1)
])
]),
_: 3
}, 16, ["onAfterEnter", "onAfterLeave"]);
}
var ConfirmableButton = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["render", _sfc_render]]);
exports["default"] = ConfirmableButton;
//# sourceMappingURL=index.js.map