UNPKG

@ctsy/layui-vue

Version:

a component library for Vue 3 base on layui-vue

81 lines (80 loc) 2.88 kB
var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); import { defineComponent, ref, provide, openBlock, createElementBlock, normalizeClass, createElementVNode, renderSlot } from "vue"; import { o as onClickOutside } from "./index4.js"; var index = ""; const _hoisted_1 = { class: "layui-anim layui-anim-upbit" }; const __default__ = { name: "LayDropdown" }; const _sfc_main = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__), { props: { trigger: { default: "click" }, disabled: { type: Boolean, default: false } }, emits: ["open", "hide"], setup(__props, { expose, emit }) { const props = __props; const openState = ref(false); const dropdownRef = ref(null); onClickOutside(dropdownRef, (event) => { openState.value = false; }); const open = function() { if (props.disabled === false) { openState.value = true; emit("open"); } }; const hide = function() { openState.value = false; emit("hide"); }; const toggle = function() { if (props.disabled === false) if (openState.value) { hide(); } else { open(); } }; provide("openState", openState); expose({ open, hide, toggle }); return (_ctx, _cache) => { return openBlock(), createElementBlock("div", { ref_key: "dropdownRef", ref: dropdownRef, class: normalizeClass(["layui-dropdown", { "layui-dropdown-up": openState.value }]), onMouseenter: _cache[1] || (_cache[1] = ($event) => __props.trigger === "hover" && open()), onMouseleave: _cache[2] || (_cache[2] = ($event) => __props.trigger === "hover" && hide()) }, [ createElementVNode("div", { onClick: _cache[0] || (_cache[0] = ($event) => __props.trigger === "click" && toggle()) }, [ renderSlot(_ctx.$slots, "default") ]), createElementVNode("dl", _hoisted_1, [ renderSlot(_ctx.$slots, "content") ]) ], 34); }; } })); export { _sfc_main as _ };