import type { Point, AlignType, StretchType, MobileConfig } from '../interface'; import type { ExtractPropTypes, PropType } from 'vue'; export const innerProps = { visible: Boolean, prefixCls: String, zIndex: Number, destroyPopupOnHide: Boolean, forceRender: Boolean, // Legacy Motion animation: [String, Object], transitionName: String, // Measure stretch: { type: String as PropType }, // Align align: { type: Object as PropType }, point: { type: Object as PropType }, getRootDomNode: { type: Function as PropType<() => HTMLElement> }, getClassNameFromAlign: { type: Function as PropType<(align: AlignType) => string> }, onMouseenter: { type: Function as PropType<(align: MouseEvent) => void> }, onMouseleave: { type: Function as PropType<(align: MouseEvent) => void> }, onMousedown: { type: Function as PropType<(align: MouseEvent) => void> }, onTouchstart: { type: Function as PropType<(align: MouseEvent) => void> }, }; export type PopupInnerProps = Partial> & { align?: AlignType; }; export const mobileProps = { ...innerProps, mobile: { type: Object as PropType }, }; export type MobilePopupProps = Partial> & { align?: AlignType; mobile: MobileConfig; }; export const popupProps = { ...innerProps, mask: Boolean, mobile: { type: Object as PropType }, maskAnimation: String, maskTransitionName: String, }; export type PopupProps = Partial> & { align?: AlignType; mobile: MobileConfig; };