Component Library: Catnip UI
基于 Vue 封装的一个通用模态对话框组件:
- 自定义对话框标题与内容
- 自定义对话框按钮数量与类型
- 对话框入场出场动画可选
- 支持点击遮罩层关闭对话框的功能
- 实现本地包开发测试,且已打包发布到 npm
npm install catnip-ui -S
// main.js
import Vue from 'vue'
import catnip from 'catnip-ui'
import 'catnip-ui/lib/style/index.css'
Vue.use(catnip)
<cat-dialog>
<cat-button></cat-button>
</cat-dialog>
参数 | 说明 | 默认值 | 类型 | 可选值 |
---|---|---|---|---|
ref | 组件 ID | dialog | string | - |
title | 对话框标题 | Title | string | - |
content | 对话框内容 | Content | string | - |
animated | 对话框出入场动画 | opacity | string | top, bottom, left, right, scale, opacity |
maskOpacity | 遮罩层透明度 | 0.5 | number, string | [0, 1] |
maskClick | 对话框外点击关闭 | true | boolean | true, false |
方法 | 描述 |
---|---|
open | 打开对话框 |
_showDialog | 显示对话框 |
_hideDialog | 隐藏对话框 |
_maskClose | 点击遮罩层关闭对话框 |
插槽 | 说明 |
---|---|
title | 对话框标题,优先级高于 title 参数,复杂标题可用 |
content | 对话框内容,优先级高于 content 参数,复杂内容可用 |
default | 对话框按钮 |
参数 | 说明 | 默认值 | 类型 | 可选值 |
---|---|---|---|---|
type | 按钮类型 | default | string | default, confirm, danger |
text | 按钮文本 | Default | string | - |
方法 | 描述 |
---|---|
_close | 关闭对话框 |
state | 按钮点击时发出的事件 |
<template>
<div class="test">
<h3>Modal Dialog Box</h3>
<button class="btn" @click="open">点击打开</button>
<!-- 使用对话框 -->
<cat-dialog
ref="dialog"
title="提示"
content="请确认是否删除?"
animated="top"
maskOpacity="0.3"
:maskClick="true"
>
<!-- 标题 -->
<template #title></template>
<!-- 内容 -->
<template #content></template>
<!-- 按钮 -->
<template>
<cat-button @state="cancel" text="取消"></cat-button>
<cat-button type="danger" @state="danger">删除</cat-button>
<cat-button type="confirm" @state="confirm">确认</cat-button>
</template>
</cat-dialog>
</div>
</template>
<script>
export default {
name: 'Test',
methods: {
open() {
this.$refs.dialog._showDialog()
},
cancel() {
console.log('取消')
},
confirm() {
console.log('确认')
},
danger() {
console.log('删除')
},
},
}
</script>
<style scoped></style>