winbox-ui-next
Version:
We Design Vue 2.0: A Vue.js 3 UI Library
106 lines (105 loc) • 3.32 kB
JavaScript
;
var vue = require("vue");
var globalConfig = require("../../_utils/global-config.js");
var index = require("../../checkbox/index.js");
var pluginVue_exportHelper = require("../../_virtual/plugin-vue_export-helper");
const _sfc_main = vue.defineComponent({
name: "DropdownOption",
components: {
Checkbox: index["default"]
},
props: {
value: [String, Number],
label: String,
disabled: Boolean,
multiple: Boolean,
isSelected: Boolean,
isActive: Boolean,
component: {
type: String,
default: "li"
},
onClick: {
type: [Function, Array]
},
onMouseenter: {
type: [Function, Array]
},
onMouseleave: {
type: [Function, Array]
}
},
emits: ["click", "mouseenter", "mouseleave"],
setup(props, { emit }) {
const prefixCls = globalConfig.getPrefixCls("dropdown-option");
const handleClick = (e) => {
if (!props.disabled) {
emit("click", props.value, e);
}
};
const handleMouseEnter = (e) => {
if (!props.disabled) {
emit("mouseenter", props.value, e);
}
};
const handleMouseLeave = (e) => {
if (!props.disabled) {
emit("mouseleave", props.value, e);
}
};
const cls = vue.computed(() => [
prefixCls,
{
[`${prefixCls}-disabled`]: props.disabled,
[`${prefixCls}-active`]: props.isActive,
[`${prefixCls}-multiple`]: props.multiple
}
]);
return {
prefixCls,
cls,
handleClick,
handleMouseEnter,
handleMouseLeave
};
}
});
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_checkbox = vue.resolveComponent("checkbox");
return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.component), {
class: vue.normalizeClass([_ctx.cls, { [`${_ctx.prefixCls}-has-suffix`]: Boolean(_ctx.$slots.suffix) }]),
onClick: _ctx.handleClick,
onMouseenter: _ctx.handleMouseEnter,
onMouseleave: _ctx.handleMouseLeave
}, {
default: vue.withCtx(() => [
_ctx.$slots.icon ? (vue.openBlock(), vue.createElementBlock("span", {
key: 0,
class: vue.normalizeClass(`${_ctx.prefixCls}-icon`)
}, [
vue.renderSlot(_ctx.$slots, "icon")
], 2)) : vue.createCommentVNode("v-if", true),
_ctx.multiple ? (vue.openBlock(), vue.createBlock(_component_checkbox, {
key: 1,
class: vue.normalizeClass(`${_ctx.prefixCls}-checkbox`),
"model-value": _ctx.isSelected,
disabled: _ctx.disabled,
"uninject-group-context": ""
}, {
default: vue.withCtx(() => [
vue.renderSlot(_ctx.$slots, "default")
]),
_: 3
}, 8, ["class", "model-value", "disabled"])) : vue.renderSlot(_ctx.$slots, "default", { key: 2 }),
_ctx.$slots.suffix ? (vue.openBlock(), vue.createElementBlock("span", {
key: 3,
class: vue.normalizeClass(`${_ctx.prefixCls}-suffix`)
}, [
vue.renderSlot(_ctx.$slots, "suffix")
], 2)) : vue.createCommentVNode("v-if", true)
]),
_: 3
}, 8, ["class", "onClick", "onMouseenter", "onMouseleave"]);
}
var DropDownOption = /* @__PURE__ */ pluginVue_exportHelper(_sfc_main, [["render", _sfc_render]]);
module.exports = DropDownOption;