Skip to content

Dropdown 下拉菜单

一个折叠式的列表,基于UtpTooltip组件编写,支持UtpTooltip组件部分属性 ——该组件泛用性一般,对策性极强 (大杯)

基本使用

传入一个MenuOptions对象的数组来构成菜单,MenuOptions属性请参考下方表格;
可以通过MenuOptions对象中传入divided来进行菜单分组;
可以通过MenuOptions对象中传入disabled来进行对某一选项的禁用;
菜单支持Vnode函数传入;

基本使用
基本菜单
<!-- 下拉菜单基本使用 -->
<script setup>
import { UtpDropdown, UtpIcon } from '@will1919/utopia-ui';
import { ref, h } from 'vue';

const menuOptions = ref([
  { key: 1, label: 'item-a' },
  { key: 2, label: 'item-b', disabled: true },
  { key: 3, label: h('i', { style: { fontWeight: 'bold' } }, 'item-c') },
  { key: 4, label: 'item-d', divided: true }
])

const toolTipVisible = ref(false)
const iconType = ref('')
const visibleChange = (visible) => {
  toolTipVisible.value = visible
  if(visible) {
    iconType.value = 'primary'
  } else {
    iconType.value = ''
  }
}
</script>

<template>
  <div>
    <utp-dropdown @visible-change="visibleChange" :menu-options="menuOptions">
      <div class="basic-menu" :class="{ 'basic-menu-active': toolTipVisible }">
        <span class="basic-menu-title">基本菜单</span>
        <utp-icon :type="iconType" icon="fa-caret-down"></utp-icon>
      </div>
    </utp-dropdown>
  </div>
</template>

<style scoped>
.basic-menu {
  display: flex;
  align-items: center;

  .basic-menu-title {
    margin-right: 5px;
  }
}

.basic-menu-active {
  .basic-menu-title {
    color: #F15A7C;
  }
}
</style>

属性

属性说明类型默认值
menuOptions设置菜单数组Array<MenuOptions>hover
trigger设置提示文本触发方式hover | clickhover
placement设置提示文本显示方向Placement: 参考ToolTip组件bottom
manual设置手动模式booleanfalse
popperOptionspopperJs配置项object
openDelay设置显示延迟时间number0
closeDelay设置隐藏延迟时间number0
属性说明类型默认值
label选项名称string | VNode
key选项keystring | number
disabled是否禁用选项booleanfalse
divided是否分组booleanfalse

事件

事件名称说明事件类型
visible-change切换显示状态的回调函数(visible: boolean) => void
select点击菜单选项的回调函数(item: MenuOptions) => void

Exposes

名称说明类型
show显示菜单的方法() => void
hide隐藏菜单的方法() => void