UNPKG

@teaui/core

Version:

A high-level terminal UI library for Node

76 lines (75 loc) 2.4 kB
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; }