@primer/react
Version:
An implementation of GitHub's Primer Design System using React
27 lines (26 loc) • 1.26 kB
TypeScript
import React from "react";
import { AnchorPosition, PositionSettings } from "@primer/behaviors";
//#region src/hooks/useAnchoredPosition.d.ts
interface AnchoredPositionHookSettings extends Partial<PositionSettings> {
floatingElementRef?: React.RefObject<Element | null>;
anchorElementRef?: React.RefObject<Element | null>;
pinPosition?: boolean;
onPositionChange?: (position: AnchorPosition | undefined) => void;
enabled?: boolean;
}
/**
* Calculates the top and left values for an absolutely-positioned floating element
* to be anchored to some anchor element. Returns refs for the floating element
* and the anchor element, along with the position.
* @param settings Settings for calculating the anchored position.
* @param dependencies Dependencies to determine when to re-calculate the position.
* @returns An object of {top: number, left: number} to absolutely-position the
* floating element.
*/
declare function useAnchoredPosition(settings?: AnchoredPositionHookSettings, dependencies?: React.DependencyList): {
floatingElementRef: React.RefObject<Element | null>;
anchorElementRef: React.RefObject<Element | null>;
position: AnchorPosition | undefined;
};
//#endregion
export { AnchoredPositionHookSettings, useAnchoredPosition };