ascii-ui
Version:
Graphic terminal emulator for HTML canvas elements
64 lines (63 loc) • 2.38 kB
TypeScript
import { CharStyle, Terminal } from '../Terminal';
import { Widget, WidgetOptions } from '../Widget';
import { WidgetContainer } from '../WidgetContainer';
import { TokenizerFunction } from '../util/tokenizer';
export declare const SELECT_INDEX_NONE = -1;
export interface SelectOption<T> {
text: string;
value?: T;
disabled?: boolean;
}
export interface SelectOptionStyle extends CharStyle {
prefix?: string;
suffix?: string;
}
export interface SelectOptions<T> extends WidgetOptions {
options: Array<SelectOption<T>>;
loop?: boolean;
multiple?: boolean;
allowUnselect?: boolean;
baseStyle?: SelectOptionStyle;
baseFocusedStyle?: SelectOptionStyle;
selectedStyle?: SelectOptionStyle;
selectedFocusedStyle?: SelectOptionStyle;
disabledStyle?: SelectOptionStyle;
disabledSelectedStyle?: SelectOptionStyle;
tokenizer?: TokenizerFunction;
}
export declare class Select<T> extends Widget<SelectOptions<T>> {
static defaultOptions: SelectOptions<any>;
private focusedIndex;
private selectOptions;
private firstLine;
constructor(terminal: Terminal, options: SelectOptions<T>, parent?: WidgetContainer);
render(): void;
getOptionFromIndex(index: number): SelectOption<T>;
getValueFromIndex(index: number): T;
getIndexFromOption(option: SelectOption<T>): number;
getIndexFromValue(value: T): number;
getSelectedIndexes(): number[];
getSelectedOptions(): SelectOption<T>[];
getSelectedValues(): T[];
getFocusedIndex(): number;
getFocusedOption(): SelectOption<T>;
getFocusedValue(): T;
getIndexAt(column: number, line: number): number;
getOptionAt(column: number, line: number): SelectOption<T>;
getValueAt(column: number, line: number): T;
isIndexSelected(index: number): boolean;
isOptionSelected(option: SelectOption<T>): boolean;
isValueSelected(value: T): boolean;
toggleIndex(index: number, selected?: boolean): boolean;
selectOption(option: SelectOption<T>): boolean;
selectValue(value: T): boolean;
focusIndex(index: number): boolean;
focusOption(option: SelectOption<T>): boolean;
focusValue(value: T): boolean;
focusPrev(): boolean;
focusNext(): boolean;
protected updateOptions(changes: SelectOptions<T>): void;
private moveFocus;
private getOptionStyle;
private getOptionText;
}