import { FC, ReactElement, ReactNode, PropsWithChildren, MutableRefObject } from 'react'; import { InfoPlacement, InfoTheme, InfoPlacementValue, InfoLayer } from './constants'; export interface InfoProps { /** Предпочтительное положение info, доступны в статическом свойстве [placements](#info-placements). */ placement?: InfoPlacementValue; /** Class z-index-а, варианты доступны в статическом свойстве [layers](#info-layers) */ layer?: InfoLayer; /** Возможные темы info доступны в статическом свойстве [themes](#info-themes)*/ theme?: InfoTheme; /** DOM нода хоста в рамках которого нужно рендерить info, по дефолту рендер будет в document.body */ host?: HTMLElement | null; /** Флаг отвечает за показ info, `true` - показать, `false` - скрыть */ show?: boolean; /** Элемент инициатор, относительно которого показывать всплывающую подсказку */ children: ReactElement; /** Метод-рендер контента info */ render: () => ReactNode; /** Колбек вызываемый при закрытии компонента. Срабатывает в случае клика на крестик или клика вне компонента */ onClose?: () => void; /** Флаг — рисовать ли крестик */ showCloseButton?: boolean; /** Флаг — закрывать ли info по клику извне */ closeByClickOutside?: boolean; /** Метка, использовать ли тянущийся info. * Тянущийся info будет растягивать по контенту, ограничиваясь только размерами экрана */ flexible?: boolean; /** dataQa='bloko-drop-info' Data-qa активного info */ dataQa?: string; /** Элемент активатор, относительно которого показывать дроп */ activatorRef: MutableRefObject; } export type DropInfoComponent = FC; declare const DropInfo: DropInfoComponent; export default DropInfo; export { InfoLayer, InfoPlacement, InfoTheme };