From ac894278b0ae5503bdb17a6e2b7380ae6f112ce9 Mon Sep 17 00:00:00 2001 From: Felix Jorkowski Date: Fri, 12 Oct 2012 10:44:46 +1100 Subject: [PATCH] Added some use cases for jqueryui and knockout --- Definitions/jqueryui.d.ts | 214 ++++++++++++++++++++++---------------- Definitions/knockout.d.ts | 170 ++++++++++++++++++++++-------- 2 files changed, 247 insertions(+), 137 deletions(-) diff --git a/Definitions/jqueryui.d.ts b/Definitions/jqueryui.d.ts index ffb7ccdc4..1f578fa04 100644 --- a/Definitions/jqueryui.d.ts +++ b/Definitions/jqueryui.d.ts @@ -1,92 +1,122 @@ -/// - -// Partial typing for the jQueryUI library, version 1.8.x - -interface DraggableEventUIParam { - helper: JQuery; - position: { top: number; left: number;}; - offset: { top: number; left: number;}; -} - -interface DraggableEvent { - (event: Event, ui: DraggableEventUIParam): void; -} - -interface Draggable { - // Options - disabled?: bool; - addClasses?: bool; - appendTo?: any; - axis?: string; - cancel?: string; - connectToSortable?: string; - containment?: any; - cursor?: string; - cursorAt?: any; - delay?: number; - distance?: number; - grid?: number[]; - handle?: any; - helper?: any; - iframeFix?: any; - opacity?: number; - refreshPositions?: bool; - revert?: any; - revertDuration?: number; - scope?: string; - scroll?: bool; - scrollSensitivity?: number; - scrollSpeed?: number; - snap?: any; - snapMode?: string; - snapTolerance?: number; - stack?: string; - zIndex?: number; - // Events - create?: DraggableEvent; - start?: DraggableEvent; - drag?: DraggableEvent; - stop?: DraggableEvent; -} - -interface DroppableEventUIParam { - draggable: JQuery; - helper: JQuery; - position: { top: number; left: number;}; - offset: { top: number; left: number;}; -} - -interface DroppableEvent { - (event: Event, ui: DroppableEventUIParam): void; -} - -interface Droppable { - // Options - disabled?: bool; - accept?: any; - activeClass?: string; - greedy?: bool; - hoverClass?: string; - scope?: string; - tolerance?: string; - // Events - create?: DroppableEvent; - activate?: DroppableEvent; - deactivate?: DroppableEvent; - over?: DroppableEvent; - out?: DroppableEvent; - drop?: DroppableEvent; -} - -interface JQuery { - draggable(options: Draggable): JQuery; - draggable(optionLiteral: string, options: Draggable): JQuery; - draggable(optionLiteral: string, optionName: string, optionValue: any): JQuery; - draggable(optionLiteral: string, optionName: string): any; - // draggable(methodName: string): any; - droppable(options: Droppable): JQuery; - droppable(optionLiteral: string, options: Draggable): JQuery; - droppable(optionLiteral: string, optionName: string, optionValue: any): JQuery; - droppable(optionLiteral: string, optionName: string): any; - droppable(methodName: string): any; -} +/// + +// Partial typing for the jQueryUI library, version 1.8.x + +interface DraggableEventUIParam { + helper: JQuery; + position: { top: number; left: number;}; + offset: { top: number; left: number;}; +} + +interface DraggableEvent { + (event: Event, ui: DraggableEventUIParam): void; +} + +interface Draggable { + // Options + disabled?: bool; + addClasses?: bool; + appendTo?: any; + axis?: string; + cancel?: string; + connectToSortable?: string; + containment?: any; + cursor?: string; + cursorAt?: any; + delay?: number; + distance?: number; + grid?: number[]; + handle?: any; + helper?: any; + iframeFix?: any; + opacity?: number; + refreshPositions?: bool; + revert?: any; + revertDuration?: number; + scope?: string; + scroll?: bool; + scrollSensitivity?: number; + scrollSpeed?: number; + snap?: any; + snapMode?: string; + snapTolerance?: number; + stack?: string; + zIndex?: number; + // Events + create?: DraggableEvent; + start?: DraggableEvent; + drag?: DraggableEvent; + stop?: DraggableEvent; +} + +interface DroppableEventUIParam { + draggable: JQuery; + helper: JQuery; + position: { top: number; left: number;}; + offset: { top: number; left: number;}; +} + +interface DroppableEvent { + (event: Event, ui: DroppableEventUIParam): void; +} + +interface Droppable { + // Options + disabled?: bool; + accept?: any; + activeClass?: string; + greedy?: bool; + hoverClass?: string; + scope?: string; + tolerance?: string; + // Events + create?: DroppableEvent; + activate?: DroppableEvent; + deactivate?: DroppableEvent; + over?: DroppableEvent; + out?: DroppableEvent; + drop?: DroppableEvent; +} + +interface JQueryDatePickerDefaults { + closeText: string; + prevText: string; + nextText: string; + currentText: string; + monthNames: string[]; + monthNamesShort: string[]; + dayNames: string[]; + dayNamesShort: string[]; + dayNamesMin: string[]; + weekHeader: string; + dateFormat: string; + firstDay: number; + isRTL: bool; + showMonthAfterYear: bool; + yearSuffix: string; +} + +interface JQueryDatePicker { + regional: any; + setDefaults(JQueryDatePickerDefaults); +} + +interface JQuery { + draggable(options: Draggable): JQuery; + draggable(optionLiteral: string, options: Draggable): JQuery; + draggable(optionLiteral: string, optionName: string, optionValue: any): JQuery; + draggable(optionLiteral: string, optionName: string): any; + // draggable(methodName: string): any; + droppable(options: Droppable): JQuery; + droppable(optionLiteral: string, options: Draggable): JQuery; + droppable(optionLiteral: string, optionName: string, optionValue: any): JQuery; + droppable(optionLiteral: string, optionName: string): any; + droppable(methodName: string): any; + + autocomplete(any): void; + datepicker(any): void; +} + +interface JQueryStatic { + datepicker: JQueryDatePicker; +} diff --git a/Definitions/knockout.d.ts b/Definitions/knockout.d.ts index 60b88f4c6..a8d4ee37f 100644 --- a/Definitions/knockout.d.ts +++ b/Definitions/knockout.d.ts @@ -1,46 +1,126 @@ -// Type definitions for Knockout 2.1.0 -// https://github.com/borisyankov/DefinitelyTyped - -interface KnockoutStatic { - - applyBindings(viewModel, rootNode); - computed(); -} - -interface KnockoutUtilsStatic { - arrayForEach(array, action); - arrayIndexOf(array, item); - arrayFirst(array, predicate, predicateOwner); - arrayRemoveItem(array, itemToRemove); - arrayGetDistinctValues(array); - arrayMap(array, mapping); - arrayFilter(array, predicate); - arrayPushAll(array, valuesToPush); - extend(target, source); - emptyDomNode(domNode); - moveCleanedNodesToContainerElement(nodes); - setDomNodeChildren(domNode, childNodes); - replaceDomNodes(nodeToReplaceOrNodeArray, newNodesArray); - setOptionNodeSelectionState(optionNode, isSelected); - stringTrim(str: string); - stringTokenize(str: string, delimiter); - stringStartsWith(str: string, startsWith); - buildEvalWithinScopeFunction(expression, scopeLevels); - domNodeIsContainedBy(node, containedByNode); - domNodeIsAttachedToDocument(node); - tagNameLower(element); - registerEventHandler(element, eventType, handler); - triggerEvent(element, eventType); - unwrapObservable(value); - toggleDomNodeCssClass(node, className, shouldHaveClass); - setTextContent(element, textContent); - ensureSelectElementIsRenderedCorrectly(selectElement); - range(min, max); - makeArray(arrayLikeObject); - getFormFields(form, fieldName); - parseJson(jsonString); - stringifyJson(data, replacer, space); - postJson(urlOrForm, data, options); -} - +// Type definitions for Knockout 2.1.0 +// https://github.com/borisyankov/DefinitelyTyped + +interface KnockoutObservableArrayFunctions { + // General Array functions + indexOf(searchElement, fromIndex?: number): number; + slice(start: number, end?: number): any[]; + splice(start: number): any[]; + splice(start: number, deleteCount: number, ...items: any[]): any[]; + pop(); + push(...items: any[]): void; + shift(); + unshift(...items: any[]): number; + reverse(): any[]; + sort(): void; + sort(compareFunction): void; + + // Ko specific + remove(item): any[]; + removeAll(items: any[]): any[]; + removeAll(): any[]; + + destroy(item): void; + destroyAll(items: any[]): void; + destroyAll(): void; +} + +interface KnockoutObservableArray extends KnockoutObservableArrayFunctions { + (): any[]; + (value: any[]): void; +} + +interface KnockoutObservableArrayStatic { + (): KnockoutObservableArray; + fn: KnockoutObservableArrayFunctions; +} + +interface KnockoutObservable { + (): any; + (value): void; + + subscribe(func: Function): void; +} + +interface KnockoutComputed extends KnockoutObservable { +} + +interface KnockoutComputedDefine { + read(): any; + write(any); +} + +interface KnockoutComputedStatic { + (): KnockoutComputed; + (func: Function): KnockoutComputed; + (def: KnockoutComputedDefine) : KnockoutComputed; +} + +interface KnockoutBindingContext { + $parent: any; + $parents: any[]; + $root: any; + $data: any; + $index?: number; + $parentContext?: KnockoutBindingContext; +} + +interface KnockoutBindingHandler { + // TODO: Work out how to define bindingHandlers when not using all the args + // adding element?: any, etc doesnt work... + //init(element: any, valueAccessor: any, allBindingsAccessor: any, viewModel: any, bindingContext: KnockoutBindingContext) : void; + //update(element: any, valueAccessor: any, allBindingsAccessor: any, viewModel: any, bindingContext: KnockoutBindingContext) : void; + init: any; + update: any; +} + +interface KnockoutBindingHandlers { + value: KnockoutBindingHandler; +} + +interface KnockoutStatic { + utils: KnockoutUtilsStatic; + bindingHandlers: KnockoutBindingHandlers; + applyBindings(viewModel, rootNode?); + computed : KnockoutComputedStatic; + observableArray: KnockoutObservableArrayStatic; + observable(intial?): KnockoutObservable; +} + +interface KnockoutUtilsStatic { + arrayForEach(array: any[], action); + arrayIndexOf(array: any[], item); + arrayFirst(array: any[], predicate, predicateOwner?); + arrayRemoveItem(array: any[], itemToRemove); + arrayGetDistinctValues(array: any[]); + arrayMap(array: any[], mapping); + arrayFilter(array: any[], predicate); + arrayPushAll(array: any[], valuesToPush); + extend(target, source); + emptyDomNode(domNode); + moveCleanedNodesToContainerElement(nodes); + setDomNodeChildren(domNode, childNodes); + replaceDomNodes(nodeToReplaceOrNodeArray, newNodesArray); + setOptionNodeSelectionState(optionNode, isSelected); + stringTrim(str: string); + stringTokenize(str: string, delimiter); + stringStartsWith(str: string, startsWith); + buildEvalWithinScopeFunction(expression, scopeLevels); + domNodeIsContainedBy(node, containedByNode); + domNodeIsAttachedToDocument(node); + tagNameLower(element); + registerEventHandler(element, eventType, handler); + triggerEvent(element, eventType); + unwrapObservable(value); + toggleDomNodeCssClass(node, className, shouldHaveClass); + setTextContent(element, textContent); + ensureSelectElementIsRenderedCorrectly(selectElement); + range(min, max); + makeArray(arrayLikeObject); + getFormFields(form, fieldName); + parseJson(jsonString); + stringifyJson(data, replacer, space); + postJson(urlOrForm, data, options); +} + declare var ko: KnockoutStatic; \ No newline at end of file