@teaui/core
Version:
A high-level terminal UI library for Node
42 lines (41 loc) • 1.48 kB
TypeScript
import { Viewport } from '../Viewport.js';
import { type Props as ViewProps, View } from '../View.js';
import { Size } from '../geometry.js';
import { type KeyEvent, type MouseEvent } from '../events/index.js';
import { type LegendItem } from '../types.js';
import { System } from '../System.js';
type DisplayMode = 'days' | 'months' | 'years';
type Selection = 'single' | 'range';
interface Props extends ViewProps {
/** Selected date */
date?: Date;
/** Displayed month/year */
visibleDate?: Date;
/** Called when navigating months/years (day is always 1) */
onChangeVisible?: (date: Date) => void;
/** Called when selecting a date (date2 == date1 for single selection) */
onChange?: (date1: Date, date2: Date) => void;
/** Single date or range selection. Default: 'single' */
selection?: Selection;
/** 0=Sunday (default), 1=Monday */
firstDayOfWeek?: 0 | 1;
now?: Date;
}
export declare class Calendar extends View {
#private;
constructor(props?: Props);
update(props: Props): void;
get date(): Date;
set date(value: Date);
get cursorDate(): Date;
set cursorDate(value: Date);
get visibleDate(): Date;
set visibleDate(value: Date);
get displayMode(): DisplayMode;
naturalSize(_available: Size): Size;
receiveMouse(event: MouseEvent, system: System): void;
legendItems(): LegendItem[];
receiveKey(event: KeyEvent): void;
render(viewport: Viewport): void;
}
export {};