///
import * as React from "react";
import { AutoCompleteResult } from "focus-components/autocomplete-select";
import { EntityField } from "../entity";
import { Field, FieldProps } from "./field";
/** Options communes à tous les champs. */
export interface BaseOptions {
error?: string;
isEdit?: boolean;
labelKey?: string;
name?: string;
value?: any;
ref?: (field: Field) => void;
contentCellPosition?: string;
contentOffset?: number;
contentSize?: number;
hasLabel?: boolean;
isRequired?: boolean;
label?: string;
labelCellPosition?: string;
labelOffset?: number;
labelSize?: number;
}
/** Options pour `autocompleteSelectFor`. */
export interface AutocompleteSelectOptions extends AutocompleteTextOptions {
keyResolver: (code: string | number) => Promise;
}
/** Options pour `autocompleteTextFor`. */
export interface AutocompleteTextOptions extends BaseOptions {
onChange?: (code: string) => void;
querySearcher: (text: string) => Promise;
}
/** Options pour `fieldForWith` */
export interface FieldOptions extends BaseOptions {
DisplayComponent?: ReactComponent;
FieldComponent?: ReactComponent;
InputComponent?: ReactComponent;
LabelComponent?: ReactComponent<{
domain: string;
name: string;
text: string;
}>;
}
/** Options pour `selectFor`. */
export interface SelectOptions extends BaseOptions {
onChange?: (code: T) => void;
labelKey?: string;
valueKey?: string;
values?: {
code?: T;
id?: T;
}[];
}
/** Options pour `stringFor` et `textFor`. */
export interface TextOptions {
formatter?: (data: any) => string;
labelKey?: string;
style?: React.CSSProperties;
value?: any;
valueKey?: string;
values?: {}[];
}
/** State propre à ComponentWithEntity. */
export interface CWEState {
isEdit?: boolean;
error?: {
[x: string]: string;
};
entity?: E;
}
/**
* Crée un champ de type AutocompleteSelect.
* @param field La définition de champ.
* @param options Les options du champ.
*/
export declare function autocompleteSelectFor(field: EntityField, options: AutocompleteSelectOptions): JSX.Element;
/**
* Crée un champ de type AutocompleteText.
* @param field La définition de champ.
* @param options Les options du champ.
*/
export declare function autocompleteTextFor(field: EntityField, options: AutocompleteTextOptions): JSX.Element;
/**
* Crée un champ standard en lecture seule.
* @param field La définition de champ.
* @param options Les options du champ.
*/
export declare function displayFor(field: EntityField, options?: BaseOptions & {
[key: string]: any;
}): JSX.Element;
/**
* Crée un champ standard.
* @param field La définition de champ.
* @param options Les options du champ.
*/
export declare function fieldFor(field: EntityField, options?: BaseOptions & {
[key: string]: any;
}): JSX.Element;
/**
* Crée un champ avec des composants personnalisés.
* @param field La définition de champ.
* @param options Les options du champ.
*/
export declare function fieldForWith(field: EntityField, options: FieldOptions & DisplayProps & FieldProps & InputProps): JSX.Element;
/**
* Crée un champ avec résolution de référence.
* @param field La définition de champ.
* @param listName Le nom de la liste de référence.
* @param options Les options du champ.
*/
export declare function selectFor(field: EntityField, values: {
code?: T;
id?: T;
}[], options?: SelectOptions): JSX.Element;
/**
* Récupère le texte correspondant à un champ.
* @param field La définition de champ.
* @param options Les options du champ.
*/
export declare function stringFor(field: EntityField, options?: TextOptions): string;
/**
* Affiche un champ sous format texte.
* @param field La définition de champ.
* @param options Les options du champ.
*/
export declare function textFor(field: EntityField, options?: TextOptions): JSX.Element;
export declare function buildFieldProps(field: EntityField, options?: BaseOptions): FieldProps;