UNPKG

@enact/sandstone

Version:

Large-screen/TV support library for Enact, containing a variety of UI components.

150 lines (142 loc) 4.42 kB
// Type definitions for sandstone/Popup import * as React from "react"; type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>; type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N; export interface PopupBaseProps { /** * The contents to be displayed in the body of the popup. */ children: React.ReactNode; /** * Set the priority with which screen reader should treat updates to live regions for the Popup. */ "aria-live"?: string | object; /** * Disables transition animation. */ noAnimation?: boolean; /** * Called after the popup's "hide" transition finishes. */ onHide?: Function; /** * Called after the popup's "show" transition finishes. */ onShow?: Function; /** * Controls the visibility of the Popup. * * By default, the Popup and its contents are not rendered until `open` . */ open?: boolean; /** * Position of the Popup on the screen. */ position?: "bottom" | "center" | "fullscreen" | "left" | "right" | "top"; /** * The ARIA role for the Popup. */ role?: string | object; /** * The container id for . */ spotlightId?: string; /** * Restricts or prioritizes navigation when focus attempts to leave the popup. * * It can be either `'none'` , `'self-first'` , or `'self-only'` . * * Note: The ready-to-use component only supports `'self-first'` and `'self-only'` . */ spotlightRestrict?: "none" | "self-first" | "self-only"; } /** * The base popup component. */ export class PopupBase extends React.Component< Merge<React.HTMLProps<HTMLElement>, PopupBaseProps> > {} export interface PopupProps extends PopupBaseProps { /** * Disables transition animation. */ noAnimation?: boolean; /** * Indicates that the popup will not trigger `onClose` when the user presses the cancel/back (e.g. `ESC` ) key or taps outside of the popup. */ noAutoDismiss?: boolean; /** * Called on: * * pressing `ESC` key, * * clicking on outside the boundary of the popup, or * * moving spotlight focus outside the boundary of the popup when `spotlightRestrict` is `'self-first'` . * * Event payload: * * pressing `ESC` key, carries `detail` property containing `inputType` value of `'key'` . * * clicking outside the boundary of the popup, carries `detail` property containing `inputType` value of `'click'` . * * It is the responsibility of the callback to set the `open` property to `false` . */ onClose?: Function; /** * Called after hide transition has completed, and immediately with no transition. */ onHide?: Function; /** * Called when a key is pressed. */ onKeyDown?: Function; /** * Called after show transition has completed, and immediately with no transition. * * Note: The function does not run if Popup is initially opened and is `true` . */ onShow?: Function; /** * Controls the visibility of the Popup. * * By default, the Popup and its contents are not rendered until `open` . */ open?: boolean; /** * Position of the Popup on the screen. */ position?: "bottom" | "center" | "fullscreen" | "left" | "right" | "top"; /** * Scrim type. * * Values: `'transparent'` , `'translucent'` , or `'none'` . * * `'none'` is not compatible with `spotlightRestrict` of `'self-only'` , use a transparent scrim to prevent mouse focus when using popup. */ scrimType?: "transparent" | "translucent" | "none"; /** * Restricts or prioritizes navigation when focus attempts to leave the popup. * * Values: `'self-first'` , or `'self-only'` . * * When using `self-first` , attempts to leave the popup via 5-way will fire `onClose` based on the following values of `position` : * * `'bottom'` - When leaving via 5-way up * * `'top'` - When leaving via 5-way down * * `'left'` - When leaving via 5-way right * * `'right'` - When leaving via 5-way left * * `'center'` - When leaving via any 5-way direction * * Note: If `onClose` is not set, then this has no effect on 5-way navigation. If the popup has no spottable children, 5-way navigation will cause the Popup to fire `onClose` . */ spotlightRestrict?: "self-first" | "self-only"; } /** * A stateful component that renders a popup in a . */ export class Popup extends React.Component< Merge<React.HTMLProps<HTMLElement>, PopupProps> > {} export default Popup;