@ohu-mobile/core
Version:
135 lines (134 loc) • 5.26 kB
TypeScript
import type { PopupTransformOrigin, PopupPosition, PopupAnimateType, PopupEvents, PopupProps } from './types';
import { ClassOptions } from '../_utils/classHelper';
import { CSSProps } from '../types';
import type { CSSProperties } from 'vue';
interface PopupData {
wrapperVisible: boolean;
documentVisible: boolean;
docEl: HTMLElement | null;
docRect: {
width: number;
height: number;
} | null;
anchorEl: HTMLElement | null;
docPos: {
top: number;
bottom: number;
left: number;
right: number;
transformOrigin: string;
} | null;
anchorRect: DOMRect | ClientRect | null;
maskZIndex: number;
documentZIndex: number;
touchData: {
scrollY: number;
pageY: number;
scrollEl: HTMLElement | null;
maxHeight: number;
};
rootStyle: CSSProps;
}
export declare const popupProps: {
visible: BooleanConstructor;
anchor: import("vue").PropOptions<HTMLElement | (() => HTMLElement) | undefined>;
transformOrigin: import("vue").PropOptions<PopupTransformOrigin | undefined>;
marginThreshold: import("vue").PropOptions<number>;
edgeDetect: import("vue").PropOptions<boolean>;
lockScroll: import("vue").PropOptions<boolean>;
position: import("vue").PropOptions<PopupPosition>;
mask: import("vue").PropOptions<boolean>;
maskFrosted: import("vue").PropOptions<boolean>;
maskClosable: import("vue").PropOptions<boolean>;
maskAnimate: import("vue").PropOptions<"none" | "mask-fade">;
partialMask: import("vue").PropOptions<"top" | "bottom" | undefined>;
closeOnMaskTouched: import("vue").PropOptions<boolean>;
fullscreen: import("vue").PropOptions<boolean>;
animate: import("vue").PropOptions<PopupAnimateType>;
targetStyle: import("vue").PropOptions<CSSProperties | undefined>;
targetClass: import("vue").PropOptions<ClassOptions | undefined>;
scrollBody: import("vue").PropOptions<boolean>;
tapThrough: import("vue").PropOptions<boolean>;
zIndex: NumberConstructor;
round: import("vue").PropOptions<boolean>;
hideOnDeactivated: import("vue").PropOptions<boolean>;
};
type PopupInnerProps = {
isAnchorMode: boolean;
documentTransition: string;
documentClass: string[];
open: () => void;
close: () => void;
startScroll: () => void;
stopScroll: () => void;
computeDocAndAnchorRect: () => void;
computeDocumentPosition: () => {
top: number;
left: number;
bottom: number;
right: number;
transformOrigin: string;
};
onMaskClick: (e: Event) => void;
onWrapperTouchstart: (e: TouchEvent) => void;
onWrapperTouchmove: (e: TouchEvent) => void;
onWrapperTouchend: (e: TouchEvent) => void;
onDocumentTouch: (e: TouchEvent) => void;
onBeforeDocumentEnter: () => void;
onAfterDocumentLeave: () => void;
onDocumentAfterEnter: () => void;
onDocumentEnter: (doc: Element) => void;
onDocumentClick: (e: Event) => void;
getDocumentStyle: () => CSSProperties;
renderMask: () => JSX.Element;
renderDocument: () => JSX.Element;
};
export declare const POPUP_EVENT = "visibleChange";
declare const Popup: import("vue-tsx-support")._TsxComponentV3<import("vue").default<Record<string, any>, Record<string, any>, never, never, (event: string, ...args: any[]) => import("vue").default<Record<string, any>, Record<string, any>, never, never, any>> & PopupInnerProps & import("../_utils/defineComponent").OhuComponentInnerProps & PopupData & {
visible: boolean;
anchor: HTMLElement | (() => HTMLElement) | undefined;
transformOrigin: PopupTransformOrigin | undefined;
marginThreshold: number;
edgeDetect: boolean;
lockScroll: boolean;
position: PopupPosition;
mask: boolean;
maskFrosted: boolean;
maskClosable: boolean;
maskAnimate: "none" | "mask-fade";
partialMask: "top" | "bottom" | undefined;
closeOnMaskTouched: boolean;
fullscreen: boolean;
animate: PopupAnimateType;
targetStyle: CSSProperties | undefined;
targetClass: ClassOptions | undefined;
scrollBody: boolean;
tapThrough: boolean;
zIndex: number;
round: boolean;
hideOnDeactivated: boolean;
}, {}, {} & {
anchor?: HTMLElement | (() => HTMLElement) | undefined;
round?: boolean | undefined;
position?: PopupPosition | undefined;
animate?: PopupAnimateType | undefined;
visible?: boolean | undefined;
transformOrigin?: PopupTransformOrigin | undefined;
marginThreshold?: number | undefined;
edgeDetect?: boolean | undefined;
lockScroll?: boolean | undefined;
mask?: boolean | undefined;
maskFrosted?: boolean | undefined;
maskClosable?: boolean | undefined;
maskAnimate?: "none" | "mask-fade" | undefined;
partialMask?: "top" | "bottom" | undefined;
closeOnMaskTouched?: boolean | undefined;
fullscreen?: boolean | undefined;
targetStyle?: CSSProperties | undefined;
targetClass?: ClassOptions | undefined;
scrollBody?: boolean | undefined;
tapThrough?: boolean | undefined;
zIndex?: number | undefined;
hideOnDeactivated?: boolean | undefined;
} & PopupProps, PopupEvents, {}, {}>;
export default Popup;