From 0055a7b7589ee0fe2d1770b7ad0150c7e009da96 Mon Sep 17 00:00:00 2001 From: VorobeY1326 Date: Tue, 7 Feb 2017 19:24:55 +0500 Subject: [PATCH] Definition for dropkickjs library --- dropkickjs/dropkickjs-tests.ts | 91 ++++++++++++++++++++++++++++++++++ dropkickjs/index.d.ts | 52 +++++++++++++++++++ dropkickjs/tsconfig.json | 20 ++++++++ dropkickjs/tslint.json | 1 + 4 files changed, 164 insertions(+) create mode 100644 dropkickjs/dropkickjs-tests.ts create mode 100644 dropkickjs/index.d.ts create mode 100644 dropkickjs/tsconfig.json create mode 100644 dropkickjs/tslint.json diff --git a/dropkickjs/dropkickjs-tests.ts b/dropkickjs/dropkickjs-tests.ts new file mode 100644 index 0000000000..af46b43c02 --- /dev/null +++ b/dropkickjs/dropkickjs-tests.ts @@ -0,0 +1,91 @@ +/// + +//constructor +var constructorNoOptions = new Dropkick('#my-select'); +var constructorNoOptions2 = new Dropkick(new HTMLSelectElement()); +var constructorOptions = new Dropkick('#my-select', {}); +var constructorOptions2 = new Dropkick(new HTMLSelectElement(), {}); + +//options +var options : DropkickOptions = { + disabled: true, + form: new HTMLFormElement(), + length: 1, + mobile: true, + multiple: true, + options: ['test'], + selectedIndex: 0, + selectedOptions: ['test'], + value: 'test', + change() { }, + close() { }, + open() { }, + initialize: () => { } +} +var withFullOptions = new Dropkick('#test', options); + +var dk = new Dropkick('#test'); + +//fields (same as options) +var o1 = dk.disabled; +var o2 = dk.form; +var o3 = dk.length; +var o4 = dk.mobile; +var o5 = dk.multiple; +var o6 = dk.options; +var o7 = dk.selectedIndex; +var o8 = dk.selectedOptions; +var o9 = dk.value; + +//methods +dk.add('new'); +dk.add(new HTMLSelectElement()); +dk.add('new', 'old'); +dk.add('new', 1); + +dk.disable(); +dk.disable(false); +dk.disable(4, true); +dk.disable(4); + +dk.dispose(); + +dk.focus(); + +dk.hide(4); +dk.hide(4, false); + +var node = dk.item(4); + +dk.open(); + +dk.refresh(); + +dk.remove(4); + +dk.reset(); +dk.reset(true); + +var words = dk.search("qwer", "fuzzy"); + +var node2 = dk.select(4); +var node3 = dk.select("AL"); +var node4 = dk.select(4, true); + +var node5 = dk.selectOne(4); +var node6 = dk.selectOne(4, true); + +//real life example +var fieldValue = ''; +var selectOptions : DropkickOptions = { + open(this: Dropkick) { + const optionsList = (this).data.elem.lastChild; //undocumented but useful data field + if (optionsList.scrollWidth > optionsList.offsetWidth) { + optionsList.style.width = optionsList.scrollWidth + 25 + 'px'; + } + }, + change: () => { + fieldValue = select.value; + } +}; +var select = new Dropkick('#select', options); \ No newline at end of file diff --git a/dropkickjs/index.d.ts b/dropkickjs/index.d.ts new file mode 100644 index 0000000000..80818ff789 --- /dev/null +++ b/dropkickjs/index.d.ts @@ -0,0 +1,52 @@ +// Type definitions for dropkickjs v2.1.9 +// Project: http://dropkickjs.com/ +// Definitions by Dmitry Pesterev +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +interface DropkickOptions { + disabled?: boolean; + form?: Node; + length?: number; + mobile?: boolean; + multiple?: boolean; + options?: Array; + selectedIndex?: number; + selectedOptions?: Array; + value?: string; + + change?: () => void; + close?: () => void; + initialize?: () => void; + open?: () => void; +} + +declare class Dropkick { + constructor(id: string, options?: DropkickOptions); + constructor(element: HTMLElement, options?: DropkickOptions); + + add(value: string | Node, before?: number | string): void; + close(): void; + disable(disabled?: boolean): void; + disable(index: number, disabled?: boolean): void; + dispose(): void; + focus(): void; + hide(index: number, hidden?: boolean): void; + item(index: number): Node; + open(): void; + refresh(): void; + remove(index: number): void; + reset(clear?: boolean): void; + search(string: string, mode?: string): Array; + select(element: number|string, selectDisabled?: boolean): Node; + selectOne(element: number, selectDisabled?: boolean): Node; + + disabled: boolean; + form: Node; + length: number; + mobile: boolean; + multiple: boolean; + options: Array; + selectedIndex: number; + selectedOptions: Array; + value: string; +} \ No newline at end of file diff --git a/dropkickjs/tsconfig.json b/dropkickjs/tsconfig.json new file mode 100644 index 0000000000..e0699ecf5c --- /dev/null +++ b/dropkickjs/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "dropkickjs-tests.ts" + ] +} \ No newline at end of file diff --git a/dropkickjs/tslint.json b/dropkickjs/tslint.json new file mode 100644 index 0000000000..2221e40e4a --- /dev/null +++ b/dropkickjs/tslint.json @@ -0,0 +1 @@ +{ "extends": "../tslint.json" } \ No newline at end of file