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> * 默认值:无(根据传入值而定) */ content: { type: [String, Array] as PropType>> }, /** * 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('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 export type TooltipExpose = { // 打开tooltip open: () => void // 关闭tooltip close: () => void } export type TooltipInstance = ComponentPublicInstance