import { ImageSizeEnum } from '../../components/Image/Image.type'; import { PopoverProps } from '../../components/Popover/Popover.type'; import { TextFieldProps } from '../../composites/TextField/TextField.type'; import { Component, StyleValue } from 'vue'; type tagType = { label: string | number; type?: 'primary' | 'success' | 'info' | 'warning' | 'danger'; size?: 'large' | 'default' | 'small'; }; export type UserBlockValue = boolean | string | number; export interface UserBlockProps extends Omit, PopoverProps { /** * 头像图片 */ avatar?: string; /** * 用户名 */ name?: string; /** * 用户名字体样式 */ nameStyle?: StyleValue; /** * 用户头像大小 */ avatarSize?: keyof typeof ImageSizeEnum; /** * 是否开启图片预览 */ preview?: boolean; /** * 点击头像弹出弹框 */ popover?: Component; /** * 标签 */ tag?: tagType; /** * 名字的交互类型 */ isButton?: boolean; } export interface UserBlockSlots { /** * 后插槽 */ after: () => any; /** * 底部插槽,当需要自定义用户详情时,可以使用该插槽,但是不能传递options参数,否则插槽会失效 */ desc: () => any; /** * 弹窗内容 */ default: () => any; } export interface UserBlockExpose { /** * 复制所有的label-value到剪切板 */ copy: () => void; } export interface UserBlockEmits { /** * 用户点击组件名称时促发 */ (e: 'detail', value?: any): void; } export {};