@tplc/wot
Version:
103 lines (87 loc) • 2.2 kB
text/typescript
import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue'
import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props'
export type PlacementType =
| 'top'
| 'top-start'
| 'top-end'
| 'bottom'
| 'bottom-start'
| 'bottom-end'
| 'left'
| 'left-start'
| 'left-end'
| 'right'
| 'right-start'
| 'right-end'
export const tooltipProps = {
...baseProps,
/**
* 自定义箭头内容
* 类型:string
*/
customArrow: makeStringProp(''),
/**
* 自定义弹出内容
* 类型:string
*/
customPop: makeStringProp(''),
/**
* 是否显示Tooltip箭头
* 类型:boolean
* 默认值:true
*/
visibleArrow: makeBooleanProp(true),
/**
* 显示的内容,也可以通过`slot#content`传入
* 类型:string | Array<Record<string, any>>
* 默认值:无(根据传入值而定)
*/
content: {
type: [String, Array] as PropType<string | Array<Record<string, any>>>,
},
/**
* Tooltip的出现位置
* 类型:string
* 可选值:top/top-start/top-end/bottom/bottom-start/bottom-end/left/left-start/left-end/right/right-start/right-end
* 默认值:'bottom'
*/
placement: makeStringProp<PlacementType>('bottom'),
/**
* 出现位置的偏移量
* 类型:number
* 默认值:0
*/
offset: makeNumberProp(0),
/**
* 是否使用slot来传入content内容
* 类型:boolean
* 默认值:false
*/
useContentSlot: makeBooleanProp(false),
/**
* Tooltip是否可用
* 类型:boolean
* 默认值:false
*/
disabled: makeBooleanProp(false),
/**
* 是否显示Tooltip内部的关闭按钮
* 类型:boolean
* 默认值:false
*/
showClose: makeBooleanProp(false),
/**
* Tooltip的状态是否可见,通过v-model绑定
* 类型:boolean
* 默认值:false
*/
modelValue: makeBooleanProp(false),
}
export type TooltipProps = ExtractPropTypes<typeof tooltipProps>
export type TooltipExpose = {
// 打开tooltip
open: () => void
// 关闭tooltip
close: () => void
}
export type TooltipInstance = ComponentPublicInstance<TooltipProps, TooltipExpose>