1.0.2 • Published 6 months ago
@tanzhenxing/zx-popover v1.0.2
zx-popover 弹出框
弹出框是在元素旁边显示浮层,支持不同的触发方式和位置,常用于展示详细信息或操作菜单。
基础用法
弹出框组件基于 slot 插槽和 reference 插槽实现,通过 trigger 属性指定触发方式,支持 hover、click、focus、contextmenu 和 manual 五种触发方式。
<zx-popover content="这是弹出框内容" title="标题" placement="top">
<template #reference>
<button>hover触发</button>
</template>
</zx-popover>
<zx-popover content="这是弹出框内容" title="标题" placement="bottom" trigger="click">
<template #reference>
<button>click触发</button>
</template>
</zx-popover>弹出位置
通过 placement 属性控制弹出位置,支持12个不同方向:
top、top-start、top-endbottom、bottom-start、bottom-endleft、left-start、left-endright、right-start、right-end
<zx-popover content="top-start" placement="top-start">
<template #reference>
<button>top-start</button>
</template>
</zx-popover>主题
通过 effect 属性控制主题,支持 light 和 dark 两种主题:
<zx-popover content="浅色主题" title="Light" effect="light">
<template #reference>
<button>浅色主题</button>
</template>
</zx-popover>
<zx-popover content="深色主题" title="Dark" effect="dark">
<template #reference>
<button>深色主题</button>
</template>
</zx-popover>自定义内容
除了使用 content 属性设置简单文本内容外,还可以使用默认插槽自定义复杂内容:
<zx-popover placement="right" trigger="click" width="400">
<template #reference>
<button>自定义内容</button>
</template>
<view class="custom-content">
<view class="custom-title">自定义标题</view>
<view class="custom-body">
<view class="custom-item">
<text>可以自定义任意内容</text>
</view>
<view class="custom-footer">
<button @click="handleConfirm">确认</button>
<button @click="handleCancel">取消</button>
</view>
</view>
</view>
</zx-popover>API
Props
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| show | 是否显示弹出框 | Boolean | false |
| trigger | 触发方式 | String | hover |
| title | 标题 | String | - |
| content | 显示的内容 | String | - |
| placement | 出现位置 | String | top |
| showArrow | 是否显示箭头 | Boolean | true |
| width | 宽度 | Number/String | 300 |
| disabled | 是否禁用 | Boolean | false |
| offset | 出现位置的偏移量 | Number/String | 0 |
| zIndex | 层级 | Number/String | 10090 |
| closeOnClickOutside | 点击外部是否关闭 | Boolean | true |
| closeOnClickOverlay | 点击遮罩是否关闭 | Boolean | true |
| showAfter | 延迟出现,单位毫秒 | Number/String | 0 |
| hideAfter | 延迟消失,单位毫秒 | Number/String | 200 |
| effect | 主题 | String | light |
| overlay | 是否显示遮罩 | Boolean | false |
| duration | 动画时长,单位ms | Number/String | 300 |
Events
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| show | 显示时触发 | - |
| hide | 隐藏时触发 | - |
| beforeEnter | 显示动画播放前触发 | - |
| afterEnter | 显示动画播放完毕后触发 | - |
| beforeLeave | 隐藏动画播放前触发 | - |
| afterLeave | 隐藏动画播放完毕后触发 | - |
Slots
| 插槽名 | 说明 |
|---|---|
| default | 弹出框内容 |
| reference | 触发弹出框显示的元素 |
方法
通过ref调用实例方法:
| 方法名 | 说明 | 参数 |
|---|---|---|
| show | 显示弹出框 | - |
| hide | 隐藏弹出框 | - |
<template>
<zx-popover ref="popoverRef">
<!-- 内容 -->
</zx-popover>
</template>
<script setup>
import { ref } from 'vue';
const popoverRef = ref(null);
function showPopover() {
popoverRef.value.show();
}
function hidePopover() {
popoverRef.value.hide();
}
</script>1.0.2
6 months ago