From 05efee5a4ec955309880139795de2e2b583b469c Mon Sep 17 00:00:00 2001 From: Karol Janyst Date: Thu, 27 Apr 2017 23:16:54 +0900 Subject: [PATCH] Add definitions for react-transition-group (#16117) * Add definitions for react-transition-group * Change authors in header --- .../CSSTransitionGroup.d.ts | 27 +++++++ .../TransitionGroup.d.ts | 19 +++++ types/react-transition-group/index.d.ts | 29 ++++++++ .../react-transition-group-tests.tsx | 73 +++++++++++++++++++ types/react-transition-group/tsconfig.json | 25 +++++++ types/react-transition-group/tslint.json | 1 + 6 files changed, 174 insertions(+) create mode 100644 types/react-transition-group/CSSTransitionGroup.d.ts create mode 100644 types/react-transition-group/TransitionGroup.d.ts create mode 100644 types/react-transition-group/index.d.ts create mode 100644 types/react-transition-group/react-transition-group-tests.tsx create mode 100644 types/react-transition-group/tsconfig.json create mode 100644 types/react-transition-group/tslint.json diff --git a/types/react-transition-group/CSSTransitionGroup.d.ts b/types/react-transition-group/CSSTransitionGroup.d.ts new file mode 100644 index 0000000000..0069962eb9 --- /dev/null +++ b/types/react-transition-group/CSSTransitionGroup.d.ts @@ -0,0 +1,27 @@ +import { Component } from "react"; +import { HTMLTransitionGroupProps } from "./index"; + +declare namespace CSSTransitionGroup { + interface CSSTransitionGroupTransitionName { + enter: string; + enterActive?: string; + leave: string; + leaveActive?: string; + appear?: string; + appearActive?: string; + } + + interface CSSTransitionGroupProps extends HTMLTransitionGroupProps { + transitionName: string | CSSTransitionGroupTransitionName; + transitionAppear?: boolean; + transitionAppearTimeout?: number; + transitionEnter?: boolean; + transitionEnterTimeout?: number; + transitionLeave?: boolean; + transitionLeaveTimeout?: number; + } +} + +declare class CSSTransitionGroup extends Component {} + +export = CSSTransitionGroup; diff --git a/types/react-transition-group/TransitionGroup.d.ts b/types/react-transition-group/TransitionGroup.d.ts new file mode 100644 index 0000000000..04d218399c --- /dev/null +++ b/types/react-transition-group/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/index.d.ts b/types/react-transition-group/index.d.ts new file mode 100644 index 0000000000..5faf397a34 --- /dev/null +++ b/types/react-transition-group/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.1 + +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/react-transition-group-tests.tsx b/types/react-transition-group/react-transition-group-tests.tsx new file mode 100644 index 0000000000..4046adafdd --- /dev/null +++ b/types/react-transition-group/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/tsconfig.json b/types/react-transition-group/tsconfig.json new file mode 100644 index 0000000000..1fbbc5df49 --- /dev/null +++ b/types/react-transition-group/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "jsx": "react", + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "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/tslint.json b/types/react-transition-group/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/react-transition-group/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }