@altiore/form
Version:
Form helper for building powerful forms
31 lines (30 loc) • 1.59 kB
TypeScript
/// <reference types="react" />
import { FieldOptions, FieldProps, FieldResProps, FieldType } from '../@common/types';
/**
* createField принимает пользовательский компонент и возвращает {name, validate, ...props}
*
* @see https://@altiore/form'.github.io/...
* @category Components
*
* @typedef createField
* @prop {React.ReactNode} [component] [React.ReactNode] Компонент
*
* @example
* import {FieldProps, createField} from '@altiore/form';
*
* interface IField {
* label: string;
* }
* const Field = createField<CustomAdditionalFieldProps>(({error, label, name}: FieldProps<IField>)
* => { return (
* <div>
* <label>{label}</label>
* <input name={name} />
* <span>{error}</span>
* </div>
* );
* });
*/
export declare type FieldOpt = FieldOptions | FieldType;
export declare function createField<FieldCustomProps extends Record<string, any> = Record<string, any>, Input extends HTMLElement = HTMLInputElement>(options: FieldOpt, component: (props: FieldProps<FieldCustomProps, Input>) => JSX.Element): <FormState extends Record<string, any> = Record<string, any>>(props: FieldResProps<FormState, FieldCustomProps>) => JSX.Element;
export declare function createField<FieldCustomProps extends Record<string, any> = Record<string, any>, Input extends HTMLElement = HTMLInputElement>(component: (props: FieldProps<FieldCustomProps, Input>) => JSX.Element): <FormState extends Record<string, any> = Record<string, any>>(props: FieldResProps<FormState, FieldCustomProps>) => JSX.Element;