@teaui/core
Version:
A high-level terminal UI library for Node
76 lines (75 loc) • 2.4 kB
TypeScript
import type { Viewport } from '../Viewport.js';
import { type Props as ContainerProps, Container } from '../Container.js';
import { Style } from '../Style.js';
import { Rect, Size } from '../geometry.js';
import { type MouseEvent, type KeyEvent } from '../events/index.js';
import type { System } from '../System.js';
export interface Props extends ContainerProps {
/**
* If true, paints the entire screen with dimStyle before rendering children.
* Default: false
*/
dim?: boolean;
/**
* Style used for dimming. Defaults to purpose.dimTextColor fg +
* purpose.dimBackgroundColor bg.
*/
dimStyle?: Style;
/**
* If true, clicking outside the modal content dismisses it.
* Default: true
*/
dismissOnClick?: boolean;
/**
* If true, pressing Escape dismisses the modal.
* Default: false
*/
dismissOnEsc?: boolean;
/**
* Called when the modal is dismissed (via click-outside or esc).
*/
onDismiss?: () => void;
}
/**
* A modal overlay that is rendered above the main view tree.
*
* Pass a Modal instance to `viewport.requestModal(modal)` to present it.
* The ModalManager sets `presentedRect` and `windowSize` before rendering.
*
* Usage:
* const modal = new Modal({
* dim: true,
* dismissOnClick: true,
* dismissOnEsc: true,
* onDismiss: () => { ... },
* children: [myContent],
* })
* viewport.requestModal(modal)
*/
export declare class Modal extends Container {
#private;
/**
* The rect of the view that called `viewport.requestModal()`, in absolute
* screen coordinates. Set by ModalManager before rendering.
*/
presentedRect: Rect;
/**
* The full screen/window size. Set by ModalManager before rendering.
*/
windowSize: Size;
constructor(props?: Props);
update(props: Props): void;
get dim(): boolean;
set dim(value: boolean);
get dimStyle(): Style | undefined;
set dimStyle(value: Style | undefined);
get dismissOnClick(): boolean;
set dismissOnClick(value: boolean);
get dismissOnEsc(): boolean;
set dismissOnEsc(value: boolean);
get onDismiss(): (() => void) | undefined;
set onDismiss(value: (() => void) | undefined);
receiveMouse(event: MouseEvent, _system: System): void;
receiveKey(event: KeyEvent): void;
render(viewport: Viewport): void;
}