kea-react
Version:
Componentes comunes de react
72 lines (71 loc) • 3.45 kB
TypeScript
/// <reference types="react" />
import React = require('react');
export interface AsyncProps<T> {
/**Promesa que al ser resuelta devuelve el valor que se utilizará para dibujar el control */
value: PromiseLike<T> | T;
/**Dibuja el componente dado el resultado de la promesa */
map: (value: T) => JSX.Element | null;
/**Componente que se va a mostrar cuando se este cargando, si no se define se usara el spinner */
cargando?: JSX.Element | null;
/**Componente que se va a mostrar cuando se este en estado de error, si no se define se usara un label rojo */
error?: (error: string | number) => JSX.Element | null;
/**Tiempo que se debe de esperar antes de poner el cargando en milisegundos. Por default son 500 ms */
delay?: number;
}
export interface AsyncState<T> {
/**Resultado del query*/
Model?: T | null;
/**True si se estan cargando los elementos */
Cargando?: boolean;
/**Si hubo un error al cargar se mostrará aqui */
Error?: string | number | null;
}
/**Muestra un componente que depende del valor de una promesa */
export declare class Async extends React.PureComponent<AsyncProps<any>, AsyncState<any>> {
constructor(props: any);
componentWillMount(): void;
updateValue(nextValue: PromiseLike<any> | any): void;
componentWillReceiveProps(nextProps: AsyncProps<any>): void;
_isMounted: boolean;
componentWillUnmount(): void;
private currentVersion;
refreshPromise: (promise: PromiseLike<any>) => Promise<void>;
readonly CargandoComponent: JSX.Element | null;
readonly ErrorComponent: JSX.Element | null;
render(): JSX.Element | null;
}
/**Muestra un componente basado en el resultado de una promesa
* @param value Promesa que se va a resolver para mostrar el componente
* @param map Función que toma el resultado de la promesa y devuelve el componente que se desea dibujar
*/
export declare function async<T>(value: T | PromiseLike<T>, map: (value: T) => JSX.Element | null, options?: {
/**Componente que se va a mostrar cuando se este cargando, si no se define se usara el spinner */
cargando?: JSX.Element | null;
/**Componente que se va a mostrar cuando se este en estado de error, si no se define se usara un label rojo */
error?: (error: string | number) => JSX.Element | null;
/**Tiempo que se debe de esperar antes de poner el cargando en milisegundos. Por default son 500 ms */
delay?: number;
}): JSX.Element;
export declare type PromiseValue<T> = {
value: T;
status: "done";
} | {
status: "pending";
} | {
status: "error";
error: any;
};
/**
* Muestra un componente basado en el resultado ya sea resuelto, pendiente o erroneo de una promesa
* @param value Promesa
* @param map Funcion que mapea el estado de la promesa a un componente de real
*/
export declare function asyncProps<T>(value: T | PromiseLike<T>, map: (value: PromiseValue<T>) => JSX.Element | null): JSX.Element;
/**Crea una nueva promesa y devuelve por separado la promesa y las funciones que resuelven y rechazan a la promesa */
export declare function splitPromise<T>(): {
promise: Promise<T>;
resolve: (value?: T | PromiseLike<T> | undefined) => void;
reject: (reason?: any) => void;
};
/**Crea una promesa que se resuelve en cierto tiempo */
export declare function delay<T>(milliseconds: number): Promise<void>;