From ff94dce8df43ae206c9c5d770a09882fdeb1a009 Mon Sep 17 00:00:00 2001 From: Karol Janyst Date: Sat, 22 Jul 2017 02:05:25 +0900 Subject: [PATCH] Fix problem with generic form inputs props on Field in redux-form (#18276) * Refactor some of the definitions for v7 * Add definitions for formValues decorator * Refactor definitions for Field, Fields, FieldArray, add tests * Add files to tsconfig * Fix immutable version of exports * Clean up the code, change some types * Add improvement to generic components * Remove accidentally added files * Remove conflicting tests file --- types/redux-form/lib/Field.d.ts | 13 +++++++++---- types/redux-form/lib/FieldArray.d.ts | 6 +++--- types/redux-form/lib/Fields.d.ts | 8 ++++---- types/redux-form/redux-form-tests.tsx | 1 + 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/types/redux-form/lib/Field.d.ts b/types/redux-form/lib/Field.d.ts index 81a3e4a517..b84954657b 100644 --- a/types/redux-form/lib/Field.d.ts +++ b/types/redux-form/lib/Field.d.ts @@ -4,7 +4,10 @@ import { ReactElement, ChangeEvent, DragEvent, - FocusEvent + FocusEvent, + InputHTMLAttributes, + SelectHTMLAttributes, + TextareaHTMLAttributes } from "react"; import { Dispatch } from "redux"; @@ -34,7 +37,7 @@ interface BaseFieldProps

extends Partial { withRef?: boolean; } -export interface GenericField

extends Component { +export interface GenericField

extends Component & P> { dirty: boolean; name: string; pristine: boolean; @@ -42,12 +45,14 @@ export interface GenericField

extends Component { getRenderedComponent(): Component; } -export class Field extends Component implements GenericField { +type GenericFieldHTMLAttributes = InputHTMLAttributes | SelectHTMLAttributes | TextareaHTMLAttributes; + +export class Field

extends Component & P> implements GenericField

{ dirty: boolean; name: string; pristine: boolean; value: any; - getRenderedComponent(): Component; + getRenderedComponent(): Component; } interface WrappedFieldProps { diff --git a/types/redux-form/lib/FieldArray.d.ts b/types/redux-form/lib/FieldArray.d.ts index 5b6e9dc73b..724f1f19c6 100644 --- a/types/redux-form/lib/FieldArray.d.ts +++ b/types/redux-form/lib/FieldArray.d.ts @@ -11,16 +11,16 @@ interface BaseFieldArrayProps

{ rerenderOnEveryChange?: boolean; } -export interface GenericFieldArray extends Component { +export interface GenericFieldArray extends Component & P> { name: string; valid: boolean; getRenderedComponent(): Component & P>; } -export class FieldArray extends Component implements GenericFieldArray { +export class FieldArray

extends Component & P> implements GenericFieldArray { name: string; valid: boolean; - getRenderedComponent(): Component>; + getRenderedComponent(): Component & P>; } interface WrappedFieldArrayProps { diff --git a/types/redux-form/lib/Fields.d.ts b/types/redux-form/lib/Fields.d.ts index 29e06a519a..d3a29dcb13 100644 --- a/types/redux-form/lib/Fields.d.ts +++ b/types/redux-form/lib/Fields.d.ts @@ -10,20 +10,20 @@ interface BaseFieldsProps

{ withRef?: boolean; } -export interface GenericFields

extends Component { +export interface GenericFields

extends Component & P> { dirty: boolean; names: string[]; pristine: boolean; values: { [name: string]: any }; - getRenderedComponent(): Component; + getRenderedComponent(): Component; } -export class Fields extends Component implements GenericFields { +export class Fields

extends Component & P> implements GenericFields

{ dirty: boolean; names: string[]; pristine: boolean; values: { [name: string]: any }; - getRenderedComponent(): Component; + getRenderedComponent(): Component; } interface WrappedFieldsProps { diff --git a/types/redux-form/redux-form-tests.tsx b/types/redux-form/redux-form-tests.tsx index 99bc239778..71ff7206da 100644 --- a/types/redux-form/redux-form-tests.tsx +++ b/types/redux-form/redux-form-tests.tsx @@ -172,6 +172,7 @@ const Test = reduxForm({