Skip to content
On this page

基本使用

通过 v-model 绑定是否显示

html
<uv-popover v-model="test" :list="list" key-name="name">
  <template #reference>
    <uv-button @click="test=true">
      打开
    </uv-button>
  </template>
</uv-popover>

配置渲染列表

通过 list 属性传入渲染的数组,通过 keyName 指定展示的文字,子项通过 disabled 属性设置子项禁止点击

vue
<template>
   <uv-popover v-model="test1" :list="list" key-name="name">
     <template #reference>
       <div style="margin-left: 100px;">
         <uv-button @click="test1=true">
           打开
         </uv-button>
       </div>
     </template>
   </uv-popover>
</template>

<script setup>
import { ref } from 'vue'

const list = ref([
 {
   name: '选项一'
 },
 {
   name: '选项二',
   disabled: true
 }, {
   name: '选项三'
 }

])
</script>

关闭配置

closeOnClickAction 是否在点击选项后关闭, closeOnClickOutside 是否在点击外部元素后关闭菜单

html
<uv-popover
  v-model="test2"
  :list="list"
  close-on-click-action
  :close-on-click-outside="false"
  key-name="name"
>
  <template #reference>
    <div style="margin-left: 200px;">
      <uv-button @click="test2=true">
        打开
      </uv-button>
    </div>
  </template>
</uv-popover>

自定义内容

html
<uv-popover
  v-model="test3"
>
  <template #reference>
    <div style="margin-left: 20px;">
      <uv-button @click="test3=true">
        打开
      </uv-button>
    </div>
  </template>
  <template #default>
    <div style="padding: 10px;">
      <div>无论我们能活多久,享受只有无法分割的此刻</div>
      <div>无论我们能活多久</div>
      <div>我们能够享受的只有无法分割的此刻</div>
    </div>
  </template>
</uv-popover>

props

属性含义类型默认值
modelValue双向绑定的是否显示Booleanfalse
list渲染的列表Array-
keyName关键字String-
closeOnClickAction是否在点击选项后关闭Booleanfalse
closeOnClickOutside是否在点击外部元素后关闭菜单Booleantrue

events

事件名称含义参数
change子项选中后当前的子项数据

css变量

css
--uv-popover-z-index: 2000;
  --uv-popover-color: #323233;
  --uv-popover-bg-color: #ffffff;
  --uv-popover-content-box-shadow: 0 2px 12px rgb(50 50 51 / 12%);
  --uv-popover-content-border-radius: 8px;
  --uv-popover-content-item-padding: 0 16px;
  --uv-popover-content-item-width: 128px;
  --uv-popover-content-item-height: 44px;
  --uv-popover-content-item-active-bg-color: #f2f3f5;
  --uv-popover-transition-time: 0.15s;
  --uv-popover-arrow-postion-distance: 25px;
  --uv-popover-content-item-text-border-bottom: 1px solid #f7f8f9;

Released under the MIT License.