@alifd/next
Version:
A configurable component library for web built on React.
55 lines (54 loc) • 2.18 kB
TypeScript
import type { PositionProps, PointsType } from '../types';
export default class Position {
pinElement: HTMLElement | 'viewport' | undefined;
baseElement: HTMLElement | 'viewport' | undefined;
pinFollowBaseElementWhenFixed: boolean | undefined;
container: HTMLElement;
autoFit: boolean;
align: string | boolean;
offset: Array<number>;
needAdjust: boolean;
isRtl: boolean;
constructor(props: PositionProps);
static VIEWPORT: "viewport";
static place: (props: PositionProps) => string | undefined;
setPosition(): string | undefined;
_calPinOffset: (align: string) => number[];
_getParentOffset(element: HTMLElement): {
top: number;
left: number;
offsetParent?: HTMLElement | undefined;
};
_getParentScrollOffset: (elem: HTMLElement) => {
top: number;
left: number;
};
_makeElementInViewport(pinElement: HTMLElement, number: number, type: string, isPinFixed: boolean): number;
_normalizePosition(element: HTMLElement | 'viewport', align: string, ignoreElementOffset: boolean): PointsType;
_normalizeXY(points: PointsType, align: string): PointsType;
_xyConverter(align: string, points: PointsType, type: 'width' | 'height'): number;
_getLeftTop(element: HTMLElement): {
left: number;
top: number;
};
_normalizeElement(element: HTMLElement | 'viewport', ignoreElementOffset: boolean): PointsType;
_getElementOffset(element: HTMLElement, ignoreScroll?: boolean): {
left: number;
top: number;
};
_getExpectedAlign(): string[];
_replaceAlignDir(align: string, regExp: RegExp, map: Record<string, string>): string;
_isRightAligned(align: string): boolean;
_isBottomAligned(align: string): boolean;
_isInViewport(element: HTMLElement, align: string, adjustOffset?: number[]): boolean;
_getViewportOffset(element: HTMLElement, align: string): {
top: number;
right: number;
bottom: number;
left: number;
};
_setPinElementPostion(pinElement: HTMLElement, postion: {
top: number;
left: number;
}, offset?: Array<number>): void;
}