@enact/sandstone
Version:
Large-screen/TV support library for Enact, containing a variety of UI components.
150 lines (142 loc) • 4.42 kB
TypeScript
// 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;