From 95ddb113e8111ff5ad5af31778e2ccf302c1e1df Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 23 Jun 2015 19:16:35 +0200 Subject: [PATCH 1/4] added eqjs definitions --- eqjs/eqjs.d.ts | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 eqjs/eqjs.d.ts diff --git a/eqjs/eqjs.d.ts b/eqjs/eqjs.d.ts new file mode 100644 index 0000000000..b9a39856ec --- /dev/null +++ b/eqjs/eqjs.d.ts @@ -0,0 +1,66 @@ +// Type definitions for eq.js +// Project: https://github.com/Snugug/eq.js +// Definitions by: Stephen Lautier +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +declare var eqjs: eqjs.EqjsStatic; + + // Support AMD require +declare module 'eqjs' { + export = eqjs; +} + +declare module eqjs { + + interface EqjsStatic { + + /** + * List of all nodes. + */ + nodes: EqjsNodesTable; + + /** + * Number of nodes in eqjs.nodes. + */ + nodesLength: number; + + /** + * Runs through all nodes and finds their widths and points + * @param nodes + * @param callback function to use as a callback once query and nodeWrites have finished + */ + query(nodes: HTMLElement[]|JQuery, callback?: Function): void; + + /** + * Refreshes the list of nodes for eqjs to work with + */ + refreshNodes(): void; + + /** + * Sorts a simple object (key: value) by value and returns a sorted object. + * @param obj e.g. "small: 380, medium: 490, large: 600" + * @returns {} + */ + sortObj(obj: string): EqjsKeyValuePair; + + /** + * Runs through all nodes and writes their eq status. + * @param nodes An array or NodeList of nodes to query + * @returns {} + */ + nodeWrites(nodes?: HTMLElement[]|JQuery); + } + + interface EqjsKeyValuePair { + key: string; + value: number; + } + + interface EqjsNodesTable { + [key: string]: HTMLElement; + } + +} + +// Support jQuery selectors. +interface JQuery { } \ No newline at end of file From 78aab4f0cb9001f86fae64f284276ab783912135 Mon Sep 17 00:00:00 2001 From: "stephen.lautier" Date: Wed, 24 Jun 2015 01:14:36 +0200 Subject: [PATCH 2/4] added tests + several refinements --- eqjs/eqjs.d.ts | 13 +++++++------ eqjs/eqjs.tests.ts | 28 ++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 6 deletions(-) create mode 100644 eqjs/eqjs.tests.ts diff --git a/eqjs/eqjs.d.ts b/eqjs/eqjs.d.ts index b9a39856ec..9ff2d34683 100644 --- a/eqjs/eqjs.d.ts +++ b/eqjs/eqjs.d.ts @@ -5,12 +5,13 @@ declare var eqjs: eqjs.EqjsStatic; - // Support AMD require +// Support AMD require declare module 'eqjs' { export = eqjs; } declare module eqjs { + type AvailableElementType = HTMLElement|HTMLElement[]|NodeList|JQuery; interface EqjsStatic { @@ -29,7 +30,7 @@ declare module eqjs { * @param nodes * @param callback function to use as a callback once query and nodeWrites have finished */ - query(nodes: HTMLElement[]|JQuery, callback?: Function): void; + query(nodes: AvailableElementType, callback?: Function): void; /** * Refreshes the list of nodes for eqjs to work with @@ -41,14 +42,14 @@ declare module eqjs { * @param obj e.g. "small: 380, medium: 490, large: 600" * @returns {} */ - sortObj(obj: string): EqjsKeyValuePair; + sortObj(obj: string): EqjsKeyValuePair[]; /** * Runs through all nodes and writes their eq status. * @param nodes An array or NodeList of nodes to query * @returns {} */ - nodeWrites(nodes?: HTMLElement[]|JQuery); + nodeWrites(nodes?: AvailableElementType): void; } interface EqjsKeyValuePair { @@ -57,9 +58,9 @@ declare module eqjs { } interface EqjsNodesTable { - [key: string]: HTMLElement; + [index: number]: HTMLElement; } - + } // Support jQuery selectors. diff --git a/eqjs/eqjs.tests.ts b/eqjs/eqjs.tests.ts new file mode 100644 index 0000000000..1113604f22 --- /dev/null +++ b/eqjs/eqjs.tests.ts @@ -0,0 +1,28 @@ +/// +/// + +var nodes = document.getElementsByClassName(".test-container"); +var node = document.getElementById("#test-container"); +var $nodes = $(".selector"); + +eqjs.query(node); +eqjs.query(node, () => { }); +eqjs.query(nodes); +eqjs.query($nodes); + +var nodesCount: number = eqjs.nodesLength; + +eqjs.refreshNodes(); + +eqjs.nodeWrites(); +eqjs.nodeWrites(node); +eqjs.nodeWrites(nodes); +eqjs.nodeWrites($nodes); + +var sortMap = eqjs.sortObj("small: 380, medium: 490, large: 600"); +var sortFirstKey = sortMap[0].key; +var sortFirstValue = sortMap[0].value; + +var nodesMap = eqjs.nodes; + +var ele: HTMLElement = nodesMap[1]; From 48c7e15a9ff9cce45bb87e5a118d943d467d7eef Mon Sep 17 00:00:00 2001 From: "stephen.lautier" Date: Wed, 24 Jun 2015 01:45:21 +0200 Subject: [PATCH 3/4] renamed module from eqjs to eq due to unit tests failing error TS2300: Duplicate identifier 'eqjs' --- eqjs/eqjs.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eqjs/eqjs.d.ts b/eqjs/eqjs.d.ts index 9ff2d34683..198fee0f90 100644 --- a/eqjs/eqjs.d.ts +++ b/eqjs/eqjs.d.ts @@ -3,14 +3,14 @@ // Definitions by: Stephen Lautier // Definitions: https://github.com/borisyankov/DefinitelyTyped -declare var eqjs: eqjs.EqjsStatic; +declare var eqjs: eq.EqjsStatic; // Support AMD require declare module 'eqjs' { export = eqjs; } -declare module eqjs { +declare module eq { type AvailableElementType = HTMLElement|HTMLElement[]|NodeList|JQuery; interface EqjsStatic { From 53b3ea17dbef2e6ba4567a56f30a1ba7bc709948 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 24 Jun 2015 09:46:13 +0200 Subject: [PATCH 4/4] renamed eqjs to eq.js to match bower name as per review changes --- eqjs/eqjs.d.ts => eq.js/eq.js.d.ts | 0 eqjs/eqjs.tests.ts => eq.js/eq.js.tests.ts | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename eqjs/eqjs.d.ts => eq.js/eq.js.d.ts (100%) rename eqjs/eqjs.tests.ts => eq.js/eq.js.tests.ts (100%) diff --git a/eqjs/eqjs.d.ts b/eq.js/eq.js.d.ts similarity index 100% rename from eqjs/eqjs.d.ts rename to eq.js/eq.js.d.ts diff --git a/eqjs/eqjs.tests.ts b/eq.js/eq.js.tests.ts similarity index 100% rename from eqjs/eqjs.tests.ts rename to eq.js/eq.js.tests.ts