element-plus
Version:
A Component Library for Vue3.0
73 lines (66 loc) • 2.33 kB
JavaScript
import { inject, computed, defineComponent, getCurrentInstance, openBlock, createBlock, createCommentVNode, renderSlot } from 'vue';
import { useGlobalConfig } from '../utils/util';
import '../utils/aria';
import '../utils/dom';
const useDropdown = () => {
const ELEMENT = useGlobalConfig();
const elDropdown = inject('elDropdown', {});
const _elDropdownSize = computed(() => elDropdown === null || elDropdown === void 0 ? void 0 : elDropdown.dropdownSize);
return {
ELEMENT,
elDropdown,
_elDropdownSize,
};
};
var script = defineComponent({
name: 'ElDropdownItem',
props: {
command: {
type: [Object, String, Number],
default: () => ({}),
},
disabled: Boolean,
divided: Boolean,
icon: String,
},
setup(props) {
const { elDropdown } = useDropdown();
const _instance = getCurrentInstance();
function handleClick(e) {
var _a, _b;
if (elDropdown.hideOnClick.value) {
(_a = elDropdown.handleClick) === null || _a === void 0 ? void 0 : _a.call(elDropdown);
}
(_b = elDropdown.commandHandler) === null || _b === void 0 ? void 0 : _b.call(elDropdown, props.command, _instance, e);
}
return {
handleClick,
};
},
});
function render(_ctx, _cache, $props, $setup, $data, $options) {
return (openBlock(), createBlock("li", {
class: ["el-dropdown-menu__item", {
'is-disabled': _ctx.disabled,
'el-dropdown-menu__item--divided': _ctx.divided
}],
"aria-disabled": _ctx.disabled,
tabindex: _ctx.disabled ? null : -1,
onClick: _cache[1] || (_cache[1] = (...args) => (_ctx.handleClick && _ctx.handleClick(...args)))
}, [
(_ctx.icon)
? (openBlock(), createBlock("i", {
key: 0,
class: _ctx.icon
}, null, 2 /* CLASS */))
: createCommentVNode("v-if", true),
renderSlot(_ctx.$slots, "default")
], 10 /* CLASS, PROPS */, ["aria-disabled", "tabindex"]))
}
script.render = render;
script.__file = "packages/dropdown/src/dropdown-item.vue";
script.install = (app) => {
app.component(script.name, script);
};
const _DropdownItem = script;
export default _DropdownItem;