diff --git a/types/redux-form/immutable/index.d.ts b/types/redux-form/immutable/index.d.ts index 6e7d9f54e6..742027ccad 100644 --- a/types/redux-form/immutable/index.d.ts +++ b/types/redux-form/immutable/index.d.ts @@ -2,6 +2,9 @@ export { Field, FieldArray, Fields, + Form, + FormName, + FormSection, reduxForm, reducer, formValueSelector, @@ -19,6 +22,7 @@ export { isInvalid, isPristine, isSubmitting, + isAsyncValidating, isValid, SubmissionError } from "../"; diff --git a/types/redux-form/index.d.ts b/types/redux-form/index.d.ts index 6ba9b9e0f6..5ff24c90a0 100644 --- a/types/redux-form/index.d.ts +++ b/types/redux-form/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for redux-form 7.3 +// Type definitions for redux-form 7.4 // Project: https://github.com/erikras/redux-form // Definitions by: Carson Full // Daniel Lytkin @@ -47,6 +47,7 @@ export * from "./lib/Field"; export * from "./lib/Fields"; export * from "./lib/FieldArray"; export * from "./lib/Form"; +export * from "./lib/FormName"; export * from "./lib/FormSection"; export * from "./lib/formValues"; export * from "./lib/formValueSelector"; diff --git a/types/redux-form/lib/Field.d.ts b/types/redux-form/lib/Field.d.ts index a6c2b2e5bb..d27a10ce47 100644 --- a/types/redux-form/lib/Field.d.ts +++ b/types/redux-form/lib/Field.d.ts @@ -46,6 +46,7 @@ export interface BaseFieldProps

extends Partial { validate?: Validator | Validator[]; warn?: Validator | Validator[]; withRef?: boolean; + immutableProps?: string[]; } export interface GenericField

extends Component & P> { diff --git a/types/redux-form/lib/Form.d.ts b/types/redux-form/lib/Form.d.ts index 11ba0e2734..e708b0f965 100644 --- a/types/redux-form/lib/Form.d.ts +++ b/types/redux-form/lib/Form.d.ts @@ -1,5 +1,4 @@ import { Component, FormHTMLAttributes, FormEvent, FormEventHandler } from "react"; -import { Dispatch } from "redux"; import { FormProps, FormErrors, FormSubmitHandler, Omit } from "../index"; interface FormSubmitProp { diff --git a/types/redux-form/lib/FormName.d.ts b/types/redux-form/lib/FormName.d.ts new file mode 100644 index 0000000000..20fd50dae8 --- /dev/null +++ b/types/redux-form/lib/FormName.d.ts @@ -0,0 +1,9 @@ +import { ReactNode, StatelessComponent } from "react"; + +export interface FormNameProps { + children: (props: { form: string }) => ReactNode, +} + +export const FormName: StatelessComponent; + +export default FormName; diff --git a/types/redux-form/lib/reducer.d.ts b/types/redux-form/lib/reducer.d.ts index 6324ab92e6..f2ee374cf2 100644 --- a/types/redux-form/lib/reducer.d.ts +++ b/types/redux-form/lib/reducer.d.ts @@ -1,4 +1,4 @@ -import { Action, Reducer } from "redux"; +import { Reducer } from "redux"; import { FieldType } from "../index"; export interface FormReducer extends Reducer { @@ -8,6 +8,8 @@ export interface FormReducer extends Reducer { export const reducer: FormReducer; export interface FormReducerMapObject { + // and `` to make it compatible with redux@3 + // tslint:disable-next-line use-default-type-parameter [formName: string]: Reducer; } diff --git a/types/redux-form/lib/selectors.d.ts b/types/redux-form/lib/selectors.d.ts index eea4444275..c996388d5c 100644 --- a/types/redux-form/lib/selectors.d.ts +++ b/types/redux-form/lib/selectors.d.ts @@ -4,6 +4,7 @@ export type DataSelector = (formName: string, getForm export type ErrorSelector = (formName: string, getFormState?: GetFormState) => (state: State) => FormErrors; export type BooleanSelector = (formName: string, getFormState?: GetFormState) => (state: State) => boolean; export type NamesSelector = (getFormState?: GetFormState) => (state: State) => string[]; +export type FormOrFieldsBooleanSelector = (formName: string, getFormState?: GetFormState) => (state: State, ...fields: string[]) => boolean; export const getFormValues: DataSelector; export const getFormInitialValues: DataSelector; @@ -14,10 +15,11 @@ export const getFormSyncWarnings: ErrorSelector; export const getFormSubmitErrors: ErrorSelector; export const getFormError: ErrorSelector; export const getFormNames: NamesSelector; -export const isDirty: BooleanSelector; -export const isPristine: BooleanSelector; +export const isDirty: FormOrFieldsBooleanSelector; +export const isPristine: FormOrFieldsBooleanSelector; export const isValid: BooleanSelector; export const isInvalid: BooleanSelector; export const isSubmitting: BooleanSelector; +export const isAsyncValidating: BooleanSelector; export const hasSubmitSucceeded: BooleanSelector; export const hasSubmitFailed: BooleanSelector; diff --git a/types/redux-form/package.json b/types/redux-form/package.json index 6d68bf2f9b..998f8e9b38 100644 --- a/types/redux-form/package.json +++ b/types/redux-form/package.json @@ -1,6 +1,6 @@ { "private": true, "dependencies": { - "redux": "^3.6.0" + "redux": "^3.6.0 || ^4.0.0" } } diff --git a/types/redux-form/redux-form-tests.tsx b/types/redux-form/redux-form-tests.tsx index f4317ade87..06344b54c5 100644 --- a/types/redux-form/redux-form-tests.tsx +++ b/types/redux-form/redux-form-tests.tsx @@ -4,6 +4,7 @@ import { reduxForm, InjectedFormProps, Form, + FormName, GenericForm, FormSection, GenericFormSection, @@ -399,3 +400,13 @@ class HandleSubmitTest extends React.Component { return ; } } + +class FormNameTest extends React.Component { + render() { + return ( + + {({ form }) => Form Name is: {form}} + + ); + } +}