@minto-ai/mt-ui
Version:
UI组件库
218 lines (217 loc) • 4.76 kB
TypeScript
import { Options, Placement } from '@popperjs/core';
import { ExtractPropTypes, InjectionKey, PropType, Ref, StyleValue } from 'vue';
interface PopoverInstance {
hide: () => void;
show: () => void;
}
type PopoverTriggerType = 'hover' | 'click' | 'manual';
type PopoverEffect = 'light' | 'dark';
type ClassObjectType = Record<string, boolean>;
type ClassType = string | ClassObjectType | ClassType[];
declare const popoverProps: {
/**
* 触发方式
*/
trigger: {
type: PropType<PopoverTriggerType>;
default: string;
};
/**
* 显示的内容
*/
content: {
type: StringConstructor;
default: string;
};
/**
* popover 内容的宽度
*/
width: {
type: PropType<number | string>;
validator: (value: number | string) => boolean;
default: number;
};
/**
* 出现的位置
*/
placement: {
type: PropType<Placement>;
default: string;
};
/**
* 是否禁用
*/
disabled: {
type: BooleanConstructor;
default: boolean;
};
/**
* popover 内容的偏移量
*/
offset: {
type: NumberConstructor;
default: undefined;
};
/**
* 是否显示
*/
visible: {
type: PropType<boolean | null>;
default: null;
};
/**
* 切换 visible 状态的回调
*/
'onUpdate:visible': {
type: PropType<(visible: boolean) => void>;
};
/**
* 是否显示箭头
*/
showArrow: {
type: BooleanConstructor;
default: boolean;
};
/**
* popover 的参数
*/
popperOptions: {
type: PropType<Partial<Options>>;
default: () => {};
};
/**
* popover 策略
*/
strategy: {
type: PropType<"absolute" | "fixed">;
default: string;
};
/**
* popover 回退位置
*/
fallbackPlacements: {
type: PropType<Placement[]>;
default: undefined;
};
/**
* popover 是否开启 GPU 加速
*/
gpuAcceleration: {
type: BooleanConstructor;
default: boolean;
};
/**
* popover 类名
*/
popperClass: {
type: PropType<ClassType>;
default: string;
};
/**
* 延迟显示,单位毫秒
*/
showAfter: {
type: NumberConstructor;
default: number;
};
/**
* 延迟关闭,单位毫秒
*/
hideAfter: {
type: NumberConstructor;
default: number;
};
/**
* 是否自动关闭
*/
autoClose: {
type: BooleanConstructor;
default: boolean;
};
/**
* popover 样式
*/
popperStyle: {
type: PropType<StyleValue>;
default: () => {};
};
/**
* Content 挂载到哪个 DOM 元素
*/
appendTo: {
type: PropType<string | HTMLElement>;
default: string;
};
/**
* Content 主题
*/
effect: {
type: PropType<PopoverEffect>;
default: string;
};
/**
* 是否将 content 作为 HTML 字符串处理
*/
rawContent: {
type: BooleanConstructor;
default: boolean;
};
/**
* 是否虚拟触发
*/
virtualTriggering: {
type: BooleanConstructor;
default: boolean;
};
/**
* 虚拟触发的元素
*/
virtualRef: {
type: PropType<Ref<HTMLElement | null>>;
default: () => null;
};
/**
* popover 内容的 z-index
*/
zIndex: {
type: NumberConstructor;
};
/**
* 是否可进入
*/
enterable: {
type: BooleanConstructor;
default: boolean;
};
/**
* 是否启用 teleport 功能
*/
teleported: {
type: BooleanConstructor;
default: boolean;
};
};
interface PopoverEmits {
'update:visible': [boolean];
'show': [];
'hide': [];
'beforeEnter': [];
'beforeLeave': [];
}
type PopoverProps = ExtractPropTypes<typeof popoverProps>;
interface MtPopperInjectionContext {
triggerRef: Ref<HTMLElement | null>;
contentRef: Ref<HTMLElement | null>;
arrowRef: Ref<HTMLElement | null>;
contentVisible: Ref<boolean>;
onShow: () => void;
onHide: () => void;
onToggle: () => void;
}
export declare const POPPER_INJECTION_KEY: InjectionKey<MtPopperInjectionContext>;
interface MtPopperContentInjectionContext {
arrowRef: Ref<HTMLElement | null>;
}
export declare const POPPER_CONTENT_INJECTION_KEY: InjectionKey<MtPopperContentInjectionContext>;
export type { PopoverEffect, PopoverEmits, PopoverInstance, PopoverProps, PopoverTriggerType, };
export { popoverProps, };