react-dayo
Version:
A Queue component for notification etc
59 lines (58 loc) • 1.63 kB
TypeScript
import { BlockComponent, ISeed } from '../entities/seed';
export interface DayoOptions {
to: 'top' | 'bottom';
position: 'left' | 'center' | 'right';
maxLength: number;
}
export declare type DayoProps = DayoOptions;
export interface DayoImpl<Seed> {
getOption<Key extends keyof DayoProps>(key: Key): DayoProps[Key];
getQueue(): Seed[];
setQueue(queue: Seed[]): void;
onTransitionEnd(seed: Seed): () => void;
}
export declare type IDayo<Seed> = DayoImpl<Seed>;
export interface DayoState<Seed> {
queue: Seed[];
}
export interface DayoOperatorImpl<Seed> {
/**
* Update target seed state for running re-rendering
*/
rewriteQueueItem(seed: Seed): void;
/**
* To add a seed into queue state
*/
addSeed(seed: Seed): void;
/**
* To skip a overflowed seeds in queue greater than `maxLength`
*/
skipOverflowSeeds(opts: {
maxLength: number;
}): void;
}
export interface DayoSelectorImpl {
getQueueComponentProps(): QueueComponentProps;
getBoxComponentProps(seed: ISeed): BoxComponentProps;
}
export interface QueueComponentProps {
to: DayoOptions['to'];
position: DayoOptions['position'];
}
export interface BoxComponentThemeParams {
transitionTimingFunction: string;
}
export interface BoxComponentProps {
BlockComponent: BlockComponent;
theme: BoxComponentThemeParams;
additionalProps?: object;
to: DayoOptions['to'];
isEnter: boolean;
isEntering: boolean;
isEntered: boolean;
isExit: boolean;
isExiting: boolean;
isExited: boolean;
close(): void;
onTransitionEnd(): void;
}