diff --git a/types/delegated-events/delegated-events-tests.ts b/types/delegated-events/delegated-events-tests.ts new file mode 100644 index 0000000000..da565686ce --- /dev/null +++ b/types/delegated-events/delegated-events-tests.ts @@ -0,0 +1,29 @@ +// Tests are re-used based on `delegated-events`'s flow tests. +// https://github.com/dgraham/delegated-events/blob/master/test/test-flow.js + +import { on, off, fire } from "delegated-events"; + +function onButtonClick(event: Event) { + event.target; +} + +on("click"); // $ExpectError +on("click", ".js-button"); // $ExpectError +on("click", ".js-button", onButtonClick); // $ExpectType void + +off("click"); // $ExpectError +off("click", ".js-button"); // $ExpectError +off("click", ".js-button", onButtonClick); // $ExpectType void + +// $ExpectType void +on("robot:singularity", ".js-robot-image", (event: Event) => { + event.target; +}); + +const image = document.querySelector(".js-button"); + +if (image) { + fire(image); // $ExpectError + fire(image, "robot:singularity"); // $ExpectType boolean + fire(image, "robot:singularity", { name: "Hubot" }); // $ExpectType boolean +} diff --git a/types/delegated-events/index.d.ts b/types/delegated-events/index.d.ts new file mode 100644 index 0000000000..2fe2a35e41 --- /dev/null +++ b/types/delegated-events/index.d.ts @@ -0,0 +1,27 @@ +// Type definitions for delegated-events 1.0 +// Project: https://github.com/dgraham/delegated-events#readme +// Definitions by: Christopher Parsons +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +// Definitions based on the projects' flow definitions. +// https://github.com/dgraham/delegated-events/blob/master/delegated-events.js.flow + +export interface EventListenerOptions { + capture?: boolean; +} + +export function on( + name: string, + selector: string, + handler: EventListenerOrEventListenerObject, + options?: EventListenerOptions +): void; + +export function off( + name: string, + selector: string, + handler: EventListenerOrEventListenerObject, + options?: EventListenerOptions +): void; + +export function fire(target: EventTarget, name: string, detail?: any): boolean; diff --git a/types/delegated-events/tsconfig.json b/types/delegated-events/tsconfig.json new file mode 100644 index 0000000000..c5e2b6d93e --- /dev/null +++ b/types/delegated-events/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6", + "dom" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "delegated-events-tests.ts" + ] +} diff --git a/types/delegated-events/tslint.json b/types/delegated-events/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/delegated-events/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }