UNPKG

semantic-ui-react

Version:
149 lines (114 loc) 4.4 kB
import * as React from 'react' import * as Popper from '@popperjs/core' import { SemanticShorthandItem } from '../../generic' import { StrictPortalProps } from '../../addons/Portal' import PopupContent, { PopupContentProps } from './PopupContent' import PopupHeader, { PopupHeaderProps } from './PopupHeader' type PopperOffsetsFunctionParams = { popper: Popper.Rect reference: Popper.Rect placement: Popper.Placement } type PopperOffsetsFunction = (params: PopperOffsetsFunctionParams) => [number?, number?] export interface PopupProps extends StrictPopupProps { [key: string]: any } export interface StrictPopupProps extends StrictPortalProps { /** An element type to render as (string or function). */ as?: any /** Display the popup without the pointing arrow */ basic?: boolean /** Primary content. */ children?: React.ReactNode /** Additional classes. */ className?: string /** Simple text content for the popover. */ content?: SemanticShorthandItem<PopupContentProps> /** Existing element the pop-up should be bound to. */ context?: Document | Window | HTMLElement | React.RefObject<HTMLElement> /** A disabled popup only renders its trigger. */ disabled?: boolean /** Enables the Popper.js event listeners. */ eventsEnabled?: boolean /** A flowing Popup has no maximum width and continues to flow to fit its content. */ flowing?: boolean /** Header displayed above the content in bold. */ header?: SemanticShorthandItem<PopupHeaderProps> /** Hide the Popup when scrolling the window. */ hideOnScroll?: boolean /** Whether the popup should not close on hover. */ hoverable?: boolean /** Invert the colors of the popup */ inverted?: boolean /** * Offset values in px unit to apply to rendered popup. The basic offset accepts an * array with two numbers in the form [skidding, distance]: * - `skidding` displaces the Popup along the reference element * - `distance` displaces the Popup away from, or toward, the reference element in the direction of its placement. A positive number displaces it further away, while a negative number lets it overlap the reference. * * @see https://popper.js.org/docs/v2/modifiers/offset/ */ offset?: [number, number?] | PopperOffsetsFunction /** Events triggering the popup. */ on?: 'hover' | 'click' | 'focus' | ('hover' | 'click' | 'focus')[] /** * Called when a close event happens. * * @param {SyntheticEvent} event - React's original SyntheticEvent. * @param {object} data - All props. */ onClose?: (event: React.MouseEvent<HTMLElement>, data: PopupProps) => void /** * Called when the portal is mounted on the DOM. * * @param {null} * @param {object} data - All props. */ onMount?: (nothing: null, data: PopupProps) => void /** * Called when an open event happens. * * @param {SyntheticEvent} event - React's original SyntheticEvent. * @param {object} data - All props. */ onOpen?: (event: React.MouseEvent<HTMLElement>, data: PopupProps) => void /** * Called when the portal is unmounted from the DOM. * * @param {null} * @param {object} data - All props. */ onUnmount?: (nothing: null, data: PopupProps) => void /** Disables automatic repositioning of the component, it will always be placed according to the position value. */ pinned?: boolean /** Position for the popover. */ position?: | 'top left' | 'top right' | 'bottom right' | 'bottom left' | 'right center' | 'left center' | 'top center' | 'bottom center' /** Tells `Popper.js` to use the `position: fixed` strategy to position the popover. */ positionFixed?: boolean /** An array containing custom settings for the Popper.js modifiers. */ popperModifiers?: any[] /** A popup can have dependencies which update will schedule a position update. */ popperDependencies?: any[] /** Popup size. */ size?: 'mini' | 'tiny' | 'small' | 'large' | 'huge' /** Custom Popup style. */ style?: React.CSSProperties /** Element to be rendered in-place where the popup is defined. */ trigger?: React.ReactNode /** Popup width. */ wide?: boolean | 'very' } interface PopupComponent extends React.ComponentClass<PopupProps> { Content: typeof PopupContent Header: typeof PopupHeader } declare const Popup: PopupComponent export default Popup