@teaui/core
Version:
A high-level terminal UI library for Node
48 lines (47 loc) • 1.73 kB
TypeScript
import { Container, type Props as ContainerProps } from '../Container';
import { Size } from '../geometry';
import { View } from '../View';
import { Viewport } from '../Viewport';
import { System } from '../System';
import { type MouseEvent } from '../events';
import { Style } from '../Style';
interface Props extends ContainerProps {
multiple?: boolean;
}
interface SectionProps extends ContainerProps {
title?: string;
isOpen?: boolean;
onClick?: (section: Section, isOpen: boolean) => void;
}
export declare class Accordion extends Container {
#private;
static Section: typeof Section;
static create(sections: ([string, View] | Section)[], extraProps?: Props): Accordion;
constructor(props?: Props);
update(props: Props): void;
get sections(): Section[];
addSection(title: string, view: View): void;
addSection(section: Section): void;
add(child: View, at?: number): void;
naturalSize(available: Size): Size;
render(viewport: Viewport): void;
}
declare class Section extends Container {
#private;
onClick: ((section: Section, isOpen: boolean) => void) | undefined;
static create(title: string, child: View, extraProps?: Omit<SectionProps, 'title' | 'view'>): Section;
constructor({ title, isOpen, ...props }: SectionProps);
get title(): string;
set title(value: string);
get isOpen(): boolean;
set isOpen(value: boolean);
get titleStyle(): Style;
open(): void;
close(): void;
update(props: Omit<SectionProps, 'view'>): void;
naturalSize(available: Size): Size;
receiveMouse(event: MouseEvent, system: System): void;
receiveTick(dt: number): boolean;
render(viewport: Viewport): void;
}
export {};