[新增] dropdown 组件 trigger 属性,支持 hover click 触发方式

This commit is contained in:
就眠仪式
2021-10-07 03:24:53 +08:00
parent ef543323c5
commit e92885eb9b
7 changed files with 84 additions and 30 deletions

View File

@@ -1,8 +1,29 @@
<template>
<div class="layui-dropdown" @click="open" :class="[openState?'layui-dropdown-up':'']">
<div
v-if="trigger === 'click'"
class="layui-dropdown"
@click="open"
:class="[openState ? 'layui-dropdown-up' : '']"
>
<slot></slot>
<dl class="layui-anim layui-anim-upbit">
<slot name="content"></slot>
<ul class="layui-menu layui-dropdown-menu">
<slot name="content"></slot>
</ul>
</dl>
</div>
<div
v-if="trigger === 'hover'"
class="layui-dropdown"
@mouseenter="open"
@mouseleave="open"
:class="[openState ? 'layui-dropdown-up' : '']"
>
<slot></slot>
<dl class="layui-anim layui-anim-upbit">
<ul class="layui-menu layui-dropdown-menu">
<slot name="content"></slot>
</ul>
</dl>
</div>
</template>
@@ -10,14 +31,18 @@
<script setup name="LaySelect" lang="ts">
import { defineProps, ref } from 'vue'
const props =
const props = withDefaults(
defineProps<{
trigger?: string
}>()
}>(),
{
trigger: 'click',
}
)
const openState = ref(false)
const open = function() {
openState.value = !openState.value
const open = function () {
openState.value = !openState.value
}
</script>

View File

@@ -0,0 +1,9 @@
import type { App } from 'vue'
import Component from './index.vue'
import type { IDefineComponent } from '../type/index'
Component.install = (app: App) => {
app.component(Component.name || 'LayDropdownItem', Component)
}
export default Component as IDefineComponent

View File

@@ -0,0 +1,8 @@
<template>
<li><div class="layui-menu-body-title">
<slot></slot>
</div></li>
</template>
<script setup name="LayDropdownItem" lang="ts">
</script>