ant-design/components/affix/utils.ts
lijianan 8f1d496972
refactor: remove rc-util/lib/Dom/addEventListener (#42464)
* docs: fix typo in docs

* remove rc-util/lib/Dom/addEventListener

* fix

* fix
2023-05-18 20:35:09 +08:00

27 lines
873 B
TypeScript

export type BindElement = HTMLElement | Window | null | undefined;
export function getTargetRect(target: BindElement): DOMRect {
return target !== window
? (target as HTMLElement).getBoundingClientRect()
: ({ top: 0, bottom: window.innerHeight } as DOMRect);
}
export function getFixedTop(placeholderRect: DOMRect, targetRect: DOMRect, offsetTop?: number) {
if (offsetTop !== undefined && targetRect.top > placeholderRect.top - offsetTop) {
return offsetTop + targetRect.top;
}
return undefined;
}
export function getFixedBottom(
placeholderRect: DOMRect,
targetRect: DOMRect,
offsetBottom?: number,
) {
if (offsetBottom !== undefined && targetRect.bottom < placeholderRect.bottom + offsetBottom) {
const targetBottomOffset = window.innerHeight - targetRect.bottom;
return offsetBottom + targetBottomOffset;
}
return undefined;
}