Notify 消息提示
vue
<template>
<ta-group title="基础用法">
<ta-cell label="主要" isLink @click="show({ title: '通知文本' })"></ta-cell>
<ta-cell label="成功" isLink @click="show({ title: '成功文本', type: 'success' })"></ta-cell>
<ta-cell label="警告" isLink @click="show({ title: '警告文本', type: 'warning' })"></ta-cell>
<ta-cell label="危险" isLink @click="show({ title: '危险文本', type: 'danger' })"></ta-cell>
</ta-group>
<ta-group title="自定义图标">
<ta-cell
label="成功"
isLink
@click="
show({
title: '成功文本',
type: 'success',
icon: 'CheckCircleOutlined'
})
"
></ta-cell>
<ta-cell
label="警告"
isLink
@click="
show({
title: '警告文本',
type: 'warning',
icon: 'ExclamationCircleOutlined'
})
"
></ta-cell>
<ta-cell
label="危险"
isLink
@click="
show({
title: '危险文本',
type: 'danger',
icon: 'CloseCircleOutlined'
})
"
></ta-cell>
</ta-group>
<ta-group title="其他">
<ta-cell
label="自定义时长"
isLink
@click="show({ title: '5秒后消失', duration: 5000 })"
></ta-cell>
<ta-cell
label="自定义颜色"
isLink
@click="
show({
title: '深色调',
icon: 'InfoCircleOutlined',
backgroundColor: '#ff4d4f',
color: '#ffffff'
})
"
></ta-cell>
<ta-cell
label="手动关闭"
isLink
@click="show({ title: '常驻可手动关闭', duration: 0, closable: true })"
></ta-cell>
</ta-group>
<ta-group title="API">
<ta-cell label="showNotify" isLink @click="callShowApi"></ta-cell>
<ta-cell label="hideNotify" isLink @click="callHideApi"></ta-cell>
</ta-group>
<ta-notify
v-model:visible="visible"
:title="title"
:type="type"
:backgroundColor="backgroundColor"
:color="color"
:icon="icon"
:duration="duration"
:closable="closable"
@cancel="onCancel"
></ta-notify>
</template>
<script lang="ts">
import { defineComponent, ref } from 'vue'
import { showNotify, hideNotify, type StateType, type PopupOnCancel } from '@/index'
interface showArgs {
icon?: any
title?: string
backgroundColor?: string
color?: string
type?: StateType
closable?: boolean
duration?: number
}
export default defineComponent({
name: 'ExpNotify',
setup() {
const visible = ref(false)
const title = ref('浅色调')
const icon = ref('InfoCircleOutlined')
const backgroundColor = ref('#8bc7ff')
const color = ref('#292e36')
const duration = ref(0)
const type = ref<StateType>('primary')
const closable = ref(false)
function callShowApi() {
showNotify({
title: '通知文本',
duration: 5000,
closable: true,
success(res) {
console.log('success', res)
}
})
}
function callHideApi() {
hideNotify({
success(res) {
console.log('success', res)
}
})
}
function show(args: showArgs) {
icon.value = args.icon || null
title.value = args.title || ''
backgroundColor.value = args.backgroundColor || ''
color.value = args.color || ''
type.value = args.type || 'primary'
closable.value = args.closable || false
duration.value = args.duration ?? 1500
visible.value = true
}
const onCancel: PopupOnCancel = res => {
console.log('cancel', res)
}
return {
visible,
title,
icon,
backgroundColor,
color,
duration,
type,
closable,
callShowApi,
callHideApi,
show,
onCancel
}
}
})
</script>
Import
js
import { TaNotify } from 'tantalum-ui-mobile'
具体的引入方式可以参考引入组件。
Import Type
组件导出的类型定义:
ts
import type { VisibleState, PopupOnVisibleStateChange, StateType } from 'tantalum-ui-mobile'
Props
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
v-model:visible | boolean | false | 否 | 是否显示 |
title | string | 否 | 提示内容 | |
closable | boolean | false | 否 | 是否显示关闭按钮 |
icon | string | 否 | 图标,使用 Icon 组件,图标优先级高于 type | |
type | StateType | 'default' | 否 | 提示类型 |
duration | number | 0 | 否 | visible=true 展示后,duration 毫秒后消失,0 为不消失,在 v-model:visible 下生效 |
color | string | 否 | 自定义色彩,支持 hex rgb hsl 等写法,详细效果查看 |
StateType 的合法值
值 | 说明 |
---|---|
default | 警告,同 warning |
primary | 提示 |
success | 成功 |
warning | 警告 |
danger | 强烈警告 |
Events
事件 | 描述 | 回调函数参数 | TypeScript 函数 |
---|---|---|---|
visible-state-change | 展示隐藏时触发 | payload: { state: VisibleState } | PopupOnVisibleStateChange |
VisibleState 值说明
值 | 说明 | 备注 |
---|---|---|
show | 展示时触发 | |
shown | 展示且动画结束后触发 | |
hide | 隐藏时触发 | 可能携带其他参数 cancel, maskClick, closeClick 等 |
hidden | 隐藏且动画结束后触发 | 可能携带其他参数 cancel, maskClick, closeClick 等 |
showNotify(object)
显示消息提示。
注:Notify 接口目前仅支持单例模式。
object
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
title | string | 否 | 提示内容 | |
type | StateType | 'default' | 否 | 提示类型 |
icon | string | 否 | 图标,使用 Icon 组件,图标优先级高于 type | |
duration | number | 1500 | 否 | 展示时长(单位 ms),值为 0 时,notify 不会消失 |
color | string | 否 | 自定义色彩,支持 hex rgb hsl 等写法,详细效果查看 | |
closable | boolean | false | 否 | 是否显示关闭按钮 |
success | () => void | 否 | 接口调用成功的回调函数 | |
fail | (e: Error) => void | 否 | 接口调用失败的回调函数(不传入 fail 遇错误直接抛出) | |
complete | () => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
Usage
具体调用方式可以参考API 调用。
js
showNotify({
title: '提示内容',
duration: 2000
})
hideNotify([object])
隐藏消息提示框。
object
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
success | () => void | 否 | 接口调用成功的回调函数 | |
fail | (e: Error) => void | 否 | 接口调用失败的回调函数(不传入 fail 遇错误直接抛出) | |
complete | () => void | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
Usage
具体调用方式可以参考API 调用。
js
hideNotify()