From 1240929245ca5c59e57673ce2d0d6d0ca6882588 Mon Sep 17 00:00:00 2001 From: Vincent Pizzo Date: Tue, 5 Mar 2019 13:29:46 -0800 Subject: [PATCH 1/4] Add types for react-csv --- .../react-csv/components/CommonPropTypes.d.ts | 22 ++++++ types/react-csv/components/Download.d.ts | 9 +++ types/react-csv/components/Link.d.ts | 5 ++ types/react-csv/index.d.ts | 8 ++ types/react-csv/react-csv-tests.tsx | 78 +++++++++++++++++++ types/react-csv/tsconfig.json | 30 +++++++ types/react-csv/tslint.json | 7 ++ 7 files changed, 159 insertions(+) create mode 100644 types/react-csv/components/CommonPropTypes.d.ts create mode 100644 types/react-csv/components/Download.d.ts create mode 100644 types/react-csv/components/Link.d.ts create mode 100644 types/react-csv/index.d.ts create mode 100644 types/react-csv/react-csv-tests.tsx create mode 100644 types/react-csv/tsconfig.json create mode 100644 types/react-csv/tslint.json diff --git a/types/react-csv/components/CommonPropTypes.d.ts b/types/react-csv/components/CommonPropTypes.d.ts new file mode 100644 index 0000000000..4bad3dd766 --- /dev/null +++ b/types/react-csv/components/CommonPropTypes.d.ts @@ -0,0 +1,22 @@ +import { MouseEventHandler } from "react"; + +export interface LabelKeyObject { + label: string; + key: string; +} + +export type Data = object[]; +export type Headers = LabelKeyObject[] | string[]; +export type SyncClickHandler = (event: MouseEventHandler) => boolean | void; +export type AsyncClickHandler = (event: MouseEventHandler, done: (proceed?: boolean) => void) => void; + +export interface CommonPropTypes { + data: string | Data; + headers?: Headers; + enclosingCharacter?: string; + separator?: string; + filename?: string; + uFEFF?: boolean; + onClick?: SyncClickHandler | AsyncClickHandler; + asyncOnClick?: boolean; +} diff --git a/types/react-csv/components/Download.d.ts b/types/react-csv/components/Download.d.ts new file mode 100644 index 0000000000..282f41596a --- /dev/null +++ b/types/react-csv/components/Download.d.ts @@ -0,0 +1,9 @@ +import { Component } from "react"; +import { CommonPropTypes } from "./CommonPropTypes"; + +export interface DownloadPropTypes extends CommonPropTypes { + target?: string; +} + +export default class Download extends Component { +} diff --git a/types/react-csv/components/Link.d.ts b/types/react-csv/components/Link.d.ts new file mode 100644 index 0000000000..3e133095de --- /dev/null +++ b/types/react-csv/components/Link.d.ts @@ -0,0 +1,5 @@ +import { Component } from "react"; +import { CommonPropTypes } from "./CommonPropTypes"; + +export default class Link extends Component { +} diff --git a/types/react-csv/index.d.ts b/types/react-csv/index.d.ts new file mode 100644 index 0000000000..2fe767d3e7 --- /dev/null +++ b/types/react-csv/index.d.ts @@ -0,0 +1,8 @@ +// Type definitions for react-csv 1.1.1 +// Project: https://github.com/react-csv/react-csv +// Definitions by: Vincent Pizzo +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.8 + +export { default as CSVLink } from "./components/Link"; +export { default as CSVDownload } from "./components/Download"; diff --git a/types/react-csv/react-csv-tests.tsx b/types/react-csv/react-csv-tests.tsx new file mode 100644 index 0000000000..a075b8161f --- /dev/null +++ b/types/react-csv/react-csv-tests.tsx @@ -0,0 +1,78 @@ +import * as React from "react"; +import { MouseEventHandler } from "react"; +import { render } from "react-dom"; +import { CSVLink, CSVDownload } from "react-csv"; + +const headers = [ + {label: 'First Name', key: 'details.firstName'}, + {label: 'Last Name', key: 'details.lastName'}, + {label: 'Job', key: 'job'}, +]; + +const headersStrings = ['foo', 'bar']; + +const data = [ + {details: {firstName: 'Ahmed', lastName: 'Tomi'}, job: 'manager'}, + {details: {firstName: 'John', lastName: 'Jones'}, job: 'developer'}, +]; + +const dataString = `firstname,lastname +Ahmed,Tomi +Raed,Labes +Yezzi,Min l3b +`; + +const syncOnClickReturn = (event: MouseEventHandler) => { + window.console.log(event); + return true; +}; +const syncOnClickVoid = (event: MouseEventHandler) => window.console.log(event); +const asyncOnClickReturn = (event: MouseEventHandler, done: (proceed?: boolean) => void) => { + window.console.log(event); + done(true); +}; +const asyncOnClickVoid = (event: MouseEventHandler, done: (proceed?: boolean) => void) => { + window.console.log(event); + done(); +}; + +const node = document.getElementById("main"); + +render(, node); +render(, node); +render(, node); +render(, node); +render(, node); +render(, node); +render(, node); +render(, node); +render(, node); +render(, node); +render(, node); +render(, node); +render(, node); + +render(, node); +render(, node); +render(, node); +render(, node); +render(, node); +render(, node); +render(, node); +render(, node); +render(, node); +render(, node); +render(, node); +render(, node); +render(, node); diff --git a/types/react-csv/tsconfig.json b/types/react-csv/tsconfig.json new file mode 100644 index 0000000000..cc91fd7689 --- /dev/null +++ b/types/react-csv/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6", + "dom" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true, + "jsx": "react", + "noUnusedParameters": true, + "noUnusedLocals": true + }, + "files": [ + "index.d.ts", + "components/CommonPropTypes.d.ts", + "components/Download.d.ts", + "components/Link.d.ts", + "react-csv-tests.tsx" + ] +} diff --git a/types/react-csv/tslint.json b/types/react-csv/tslint.json new file mode 100644 index 0000000000..b2ecae2fd2 --- /dev/null +++ b/types/react-csv/tslint.json @@ -0,0 +1,7 @@ +{ + "extends": "dtslint/dt.json", + "rules": { + // TODO + "no-duplicate-imports": false + } +} From 7059ba1e9f54c3c439d522b7234e2a7dde8103a0 Mon Sep 17 00:00:00 2001 From: Vincent Pizzo Date: Tue, 5 Mar 2019 14:31:36 -0800 Subject: [PATCH 2/4] Don't use patch in version --- types/react-csv/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/react-csv/index.d.ts b/types/react-csv/index.d.ts index 2fe767d3e7..1390ce1361 100644 --- a/types/react-csv/index.d.ts +++ b/types/react-csv/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for react-csv 1.1.1 +// Type definitions for react-csv 1.1 // Project: https://github.com/react-csv/react-csv // Definitions by: Vincent Pizzo // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped From 8ec4c20c30ccb36178cc9b400a2a0b1ac010e939 Mon Sep 17 00:00:00 2001 From: Vincent Pizzo Date: Fri, 8 Mar 2019 11:46:26 -0800 Subject: [PATCH 3/4] Remove no-duplicate-imports from lint --- types/react-csv/tslint.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/types/react-csv/tslint.json b/types/react-csv/tslint.json index b2ecae2fd2..310959b38e 100644 --- a/types/react-csv/tslint.json +++ b/types/react-csv/tslint.json @@ -1,7 +1,4 @@ { "extends": "dtslint/dt.json", - "rules": { - // TODO - "no-duplicate-imports": false - } + "rules": { } } From 1b904ad0eff3ba61a81848fb4eb7afaafc4227f0 Mon Sep 17 00:00:00 2001 From: Vincent Pizzo Date: Fri, 8 Mar 2019 11:56:58 -0800 Subject: [PATCH 4/4] Combine imports into one --- types/react-csv/react-csv-tests.tsx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/types/react-csv/react-csv-tests.tsx b/types/react-csv/react-csv-tests.tsx index a075b8161f..a099d60626 100644 --- a/types/react-csv/react-csv-tests.tsx +++ b/types/react-csv/react-csv-tests.tsx @@ -1,5 +1,4 @@ import * as React from "react"; -import { MouseEventHandler } from "react"; import { render } from "react-dom"; import { CSVLink, CSVDownload } from "react-csv"; @@ -22,16 +21,16 @@ Raed,Labes Yezzi,Min l3b `; -const syncOnClickReturn = (event: MouseEventHandler) => { +const syncOnClickReturn = (event: React.MouseEventHandler) => { window.console.log(event); return true; }; -const syncOnClickVoid = (event: MouseEventHandler) => window.console.log(event); -const asyncOnClickReturn = (event: MouseEventHandler, done: (proceed?: boolean) => void) => { +const syncOnClickVoid = (event: React.MouseEventHandler) => window.console.log(event); +const asyncOnClickReturn = (event: React.MouseEventHandler, done: (proceed?: boolean) => void) => { window.console.log(event); done(true); }; -const asyncOnClickVoid = (event: MouseEventHandler, done: (proceed?: boolean) => void) => { +const asyncOnClickVoid = (event: React.MouseEventHandler, done: (proceed?: boolean) => void) => { window.console.log(event); done(); };