kea-react
Version:
Componentes comunes de react
48 lines (46 loc) • 2.69 kB
TypeScript
import interfaces = require("./interfaces");
/**
* Llama al metodo onModelChanged con el nuevo objeto del modelo con los datos cambiados,
* considerando que el modelo original es immutable
*/
export declare function handleModelPropertyChanged<TIn, TOut>(newValue: any, key: string, props: interfaces.ControlledValueProps<TIn, TOut>): void;
/**Llama al método props.onChange incluyendo un cambio en una propiedad de value
* @param change Objeto parcial que indica las propiedades que cambiaron de value, junto con sus nuevos valores
* @param props Propiedades del componente
*/
export declare function handleChange<TIn, TOut>(change: Partial<TOut>, props: interfaces.ControlledValueProps<TIn, TOut>): void;
export interface HandleChangeFunction<T> {
(value: T): PromiseLike<void>;
}
export interface HandleChangeNameFunction<T> {
<K extends keyof T>(key: K): HandleChangeFunction<T[K]>;
}
/**
* Devuelve una curry-function que toma el props, el nombre de una propiedad de value, y el nuevo valor a asignar en esa propiedad.
* La segunda funcion siempre devuelve la misma instancia para el mismo nombre de propiedad
* En su clase cree la funcion de cambio:
* const handleChange = handleFormChange(() => this.props);
*
* En los componentes editores:
* <Text value={this.props.text} onChange={handleChange("Nombre")} />
*
* @param propsThunk Funcion que devuelve un objeto con el valor actual y la función de cambio
* @param key Nombre de la propiedad
* @param value Nuevo valor de la propiedad.
*
*/
export declare function handleFormChange<TIn, TOut>(propsThunk: () => {
value?: TIn;
onChange?: (value: TOut) => void | PromiseLike<void>;
}): HandleChangeNameFunction<TOut>;
/**Devuelve una función que maneja el onChange de un control de una forma, donde la propiedad cambiada es una propiedad de props.value.
* Siempre devuelve la misma instancia de la función para un changeFunction equivalente.
* Esta es la manera recomendada de manejar el onChange en una forma ya que al devolver siempre la misma función para el mismo campo, evitamos redibujar el campo
*
* @param changeFunction Función que dado un nuevo valor devuelve un objecto parcial con la propiedad que se va a cambiar asignada al nuevo valor de esa propiedad. Esta función debe de ser pura
* @param propsThunk Función que devuelve el value y el onChange de la forma
* @param cache Objeto donde se va a almacenar el cache de funciones
*/
export declare function onChange<TIn, TOut>(changeFunction: (value: any) => Partial<TOut>, propsThunk: () => interfaces.ControlledValueProps<TIn, TOut>, cache: {
[name: string]: any;
}): any;