From ed17ae55a75afee306a3e9730665fe71676dfd6d Mon Sep 17 00:00:00 2001 From: Karol Janyst Date: Fri, 7 Jul 2017 12:51:17 +0900 Subject: [PATCH] Add definitions for react-transition-group v2 --- .../react-transition-group/CSSTransition.d.ts | 20 +++ types/react-transition-group/Transition.d.ts | 24 ++++ .../TransitionGroup.d.ts | 21 +-- types/react-transition-group/index.d.ts | 30 ++-- .../react-transition-group-tests.tsx | 130 ++++++++++-------- types/react-transition-group/tsconfig.json | 8 +- .../{ => v1}/CSSTransitionGroup.d.ts | 0 .../v1/TransitionGroup.d.ts | 19 +++ types/react-transition-group/v1/index.d.ts | 29 ++++ .../v1/react-transition-group-tests.tsx | 73 ++++++++++ types/react-transition-group/v1/tsconfig.json | 27 ++++ types/react-transition-group/v1/tslint.json | 1 + 12 files changed, 282 insertions(+), 100 deletions(-) create mode 100644 types/react-transition-group/CSSTransition.d.ts create mode 100644 types/react-transition-group/Transition.d.ts rename types/react-transition-group/{ => v1}/CSSTransitionGroup.d.ts (100%) create mode 100644 types/react-transition-group/v1/TransitionGroup.d.ts create mode 100644 types/react-transition-group/v1/index.d.ts create mode 100644 types/react-transition-group/v1/react-transition-group-tests.tsx create mode 100644 types/react-transition-group/v1/tsconfig.json create mode 100644 types/react-transition-group/v1/tslint.json diff --git a/types/react-transition-group/CSSTransition.d.ts b/types/react-transition-group/CSSTransition.d.ts new file mode 100644 index 0000000000..49d9bde183 --- /dev/null +++ b/types/react-transition-group/CSSTransition.d.ts @@ -0,0 +1,20 @@ +import { Component } from "react"; +import { TransitionActions } from "react-transition-group"; +import { TransitionProps } from "react-transition-group/Transition"; + +export interface CSSTransitionClassNames { + appear?: string; + appearActive?: string; + enter?: string; + enterActive?: string; + exit?: string; + exitActive?: string; +} + +export interface CSSTransitionProps extends TransitionProps { + classNames: string | CSSTransitionClassNames; +} + +declare class CSSTransition extends Component {} + +export default CSSTransition; diff --git a/types/react-transition-group/Transition.d.ts b/types/react-transition-group/Transition.d.ts new file mode 100644 index 0000000000..29387be19c --- /dev/null +++ b/types/react-transition-group/Transition.d.ts @@ -0,0 +1,24 @@ +import { Component, HTMLProps } from "react"; +import { TransitionActions } from "react-transition-group"; + +export type EndHandler = (node: HTMLElement, done: () => void) => void; +export type EnterHandler = (node: HTMLElement, isAppearing: boolean) => void; +export type ExitHandler = (node: HTMLElement) => void; + +export interface TransitionProps extends TransitionActions, HTMLProps { + in?: boolean; + mountOnEnter?: boolean; + unmountOnExit?: boolean; + timeout: number | { enter?: number, exit?: number }; + addEndListener?: EndHandler; + onEnter?: EnterHandler; + onEntering?: EnterHandler; + onEntered?: EnterHandler; + onExit?: ExitHandler; + onExiting?: ExitHandler; + onExited?: ExitHandler; +} + +declare class Transition extends Component {} + +export default Transition; diff --git a/types/react-transition-group/TransitionGroup.d.ts b/types/react-transition-group/TransitionGroup.d.ts index 44d9100889..fb169c2d8f 100644 --- a/types/react-transition-group/TransitionGroup.d.ts +++ b/types/react-transition-group/TransitionGroup.d.ts @@ -1,19 +1,10 @@ -import { Component, HTMLAttributes, ReactElement, ReactType } from "react"; -import { HTMLTransitionGroupProps } from "./index"; +import { Component, ReactType, HTMLProps } from "react"; +import { TransitionActions } from "react-transition-group"; -declare namespace TransitionGroup { - interface TransitionGroupChildLifecycle { - componentWillAppear?(callback: () => void): void; - componentDidAppear?(): void; - componentWillEnter?(callback: () => void): void; - componentDidEnter?(): void; - componentWillLeave?(callback: () => void): void; - componentDidLeave?(): void; - } - - type TransitionGroupProps = HTMLTransitionGroupProps; +export interface TransitionGroupProps extends TransitionActions, HTMLProps { + component?: ReactType; } -declare class TransitionGroup extends Component {} +declare class TransitionGroup extends Component {} -export = TransitionGroup; +export default TransitionGroup; diff --git a/types/react-transition-group/index.d.ts b/types/react-transition-group/index.d.ts index 3c82827b46..62136d8ea4 100644 --- a/types/react-transition-group/index.d.ts +++ b/types/react-transition-group/index.d.ts @@ -1,29 +1,15 @@ -// Type definitions for react-transition-group 1.1 +// Type definitions for react-transition-group 2.0 // Project: https://github.com/reactjs/react-transition-group // Definitions by: Karol Janyst // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 -import { HTMLAttributes, ReactElement, ReactType } from "react"; +export { default as CSSTransition, CSSTransitionProps, CSSTransitionClassNames } from "react-transition-group/CSSTransition"; +export { default as Transition, TransitionProps } from "react-transition-group/Transition"; +export { default as TransitionGroup, TransitionGroupProps } from "react-transition-group/TransitionGroup"; -export interface HTMLTransitionGroupProps extends HTMLAttributes { - component?: ReactType; - childFactory?(child: ReactElement): ReactElement; +export interface TransitionActions { + appear?: boolean; + enter?: boolean; + exit?: boolean; } - -import * as TransitionGroup from "./TransitionGroup"; -export { - TransitionGroupProps, - TransitionGroupChildLifecycle -} from "./TransitionGroup"; - -import * as CSSTransitionGroup from "./CSSTransitionGroup"; -export { - CSSTransitionGroupProps, - CSSTransitionGroupTransitionName -} from "./CSSTransitionGroup"; - -export { - TransitionGroup, - CSSTransitionGroup -}; diff --git a/types/react-transition-group/react-transition-group-tests.tsx b/types/react-transition-group/react-transition-group-tests.tsx index 346fe9989a..53d3e9b22e 100644 --- a/types/react-transition-group/react-transition-group-tests.tsx +++ b/types/react-transition-group/react-transition-group-tests.tsx @@ -1,73 +1,81 @@ import * as React from "react"; -import * as TransitionGroup from "react-transition-group/TransitionGroup"; -import * as CSSTransitionGroup from "react-transition-group/CSSTransitionGroup"; -import { CSSTransitionGroupProps, TransitionGroupProps, TransitionGroupChildLifecycle } from "react-transition-group"; - -class TestChild extends React.Component implements TransitionGroupChildLifecycle { - componentWillAppear(callback: () => void) { - callback(); - } - - componentDidAppear() {} - - componentWillEnter(callback: () => void) { - callback(); - } - - componentDidEnter() {} - - componentWillLeave(callback: () => void) { - callback(); - } - - componentDidLeave() {} - - render() { - return (
  • { "Test" }
  • ); - } -} +import CSSTransition from "react-transition-group/CSSTransition"; +import Transition from "react-transition-group/Transition"; +import TransitionGroup from "react-transition-group/TransitionGroup"; +import { CSSTransitionProps, TransitionProps, TransitionGroupProps } from "react-transition-group"; const Test: React.StatelessComponent = () => { + function handleEnter(node: HTMLElement, isAppearing: boolean) {} + + function handleExit(node: HTMLElement) {} + + function handleEndListener(node: HTMLElement, done: () => void) { + node.addEventListener("transitionend", done, false); + } + return ( -
    - - - - - +
    { "test" }
    -
    + - +
    { "test" }
    + + + +
    { "test" }
    +
    + +
    { "test" }
    -
    - - -
    { "test" }
    -
    -
    + +
    ); }; diff --git a/types/react-transition-group/tsconfig.json b/types/react-transition-group/tsconfig.json index 1fbbc5df49..305822cd04 100644 --- a/types/react-transition-group/tsconfig.json +++ b/types/react-transition-group/tsconfig.json @@ -1,9 +1,12 @@ { "compilerOptions": { + "target": "es5", "module": "commonjs", + "moduleResolution": "node", "lib": [ - "es6" + "es6", "dom" ], + "strict": true, "noImplicitAny": true, "noImplicitThis": true, "strictNullChecks": true, @@ -18,7 +21,8 @@ }, "files": [ "index.d.ts", - "CSSTransitionGroup.d.ts", + "CSSTransition.d.ts", + "Transition.d.ts", "TransitionGroup.d.ts", "react-transition-group-tests.tsx" ] diff --git a/types/react-transition-group/CSSTransitionGroup.d.ts b/types/react-transition-group/v1/CSSTransitionGroup.d.ts similarity index 100% rename from types/react-transition-group/CSSTransitionGroup.d.ts rename to types/react-transition-group/v1/CSSTransitionGroup.d.ts diff --git a/types/react-transition-group/v1/TransitionGroup.d.ts b/types/react-transition-group/v1/TransitionGroup.d.ts new file mode 100644 index 0000000000..44d9100889 --- /dev/null +++ b/types/react-transition-group/v1/TransitionGroup.d.ts @@ -0,0 +1,19 @@ +import { Component, HTMLAttributes, ReactElement, ReactType } from "react"; +import { HTMLTransitionGroupProps } from "./index"; + +declare namespace TransitionGroup { + interface TransitionGroupChildLifecycle { + componentWillAppear?(callback: () => void): void; + componentDidAppear?(): void; + componentWillEnter?(callback: () => void): void; + componentDidEnter?(): void; + componentWillLeave?(callback: () => void): void; + componentDidLeave?(): void; + } + + type TransitionGroupProps = HTMLTransitionGroupProps; +} + +declare class TransitionGroup extends Component {} + +export = TransitionGroup; diff --git a/types/react-transition-group/v1/index.d.ts b/types/react-transition-group/v1/index.d.ts new file mode 100644 index 0000000000..3c82827b46 --- /dev/null +++ b/types/react-transition-group/v1/index.d.ts @@ -0,0 +1,29 @@ +// Type definitions for react-transition-group 1.1 +// Project: https://github.com/reactjs/react-transition-group +// Definitions by: Karol Janyst +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.3 + +import { HTMLAttributes, ReactElement, ReactType } from "react"; + +export interface HTMLTransitionGroupProps extends HTMLAttributes { + component?: ReactType; + childFactory?(child: ReactElement): ReactElement; +} + +import * as TransitionGroup from "./TransitionGroup"; +export { + TransitionGroupProps, + TransitionGroupChildLifecycle +} from "./TransitionGroup"; + +import * as CSSTransitionGroup from "./CSSTransitionGroup"; +export { + CSSTransitionGroupProps, + CSSTransitionGroupTransitionName +} from "./CSSTransitionGroup"; + +export { + TransitionGroup, + CSSTransitionGroup +}; diff --git a/types/react-transition-group/v1/react-transition-group-tests.tsx b/types/react-transition-group/v1/react-transition-group-tests.tsx new file mode 100644 index 0000000000..346fe9989a --- /dev/null +++ b/types/react-transition-group/v1/react-transition-group-tests.tsx @@ -0,0 +1,73 @@ +import * as React from "react"; +import * as TransitionGroup from "react-transition-group/TransitionGroup"; +import * as CSSTransitionGroup from "react-transition-group/CSSTransitionGroup"; +import { CSSTransitionGroupProps, TransitionGroupProps, TransitionGroupChildLifecycle } from "react-transition-group"; + +class TestChild extends React.Component implements TransitionGroupChildLifecycle { + componentWillAppear(callback: () => void) { + callback(); + } + + componentDidAppear() {} + + componentWillEnter(callback: () => void) { + callback(); + } + + componentDidEnter() {} + + componentWillLeave(callback: () => void) { + callback(); + } + + componentDidLeave() {} + + render() { + return (
  • { "Test" }
  • ); + } +} + +const Test: React.StatelessComponent = () => { + return ( +
    + + + + + +
    { "test" }
    +
    + + +
    { "test" }
    +
    + + +
    { "test" }
    +
    +
    + ); +}; diff --git a/types/react-transition-group/v1/tsconfig.json b/types/react-transition-group/v1/tsconfig.json new file mode 100644 index 0000000000..b7b4bfd758 --- /dev/null +++ b/types/react-transition-group/v1/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "jsx": "react", + "baseUrl": "../../", + "typeRoots": ["../../"], + "paths": { + "react-transition-group": ["react-transition-group/v1"], + "react-transition-group/*": ["react-transition-group/v1/*"] + }, + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "CSSTransitionGroup.d.ts", + "TransitionGroup.d.ts", + "react-transition-group-tests.tsx" + ] +} diff --git a/types/react-transition-group/v1/tslint.json b/types/react-transition-group/v1/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/react-transition-group/v1/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }