Merge pull request #1 from ajorkowski/master

KnockoutJs + a few jquery UI
This commit is contained in:
Boris Yankov
2012-10-12 16:28:13 -07:00
2 changed files with 247 additions and 137 deletions
+122 -92
View File
@@ -1,92 +1,122 @@
/// <reference path="jquery.d.ts"/>
// 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;
}
/// <reference path="jquery.d.ts"/>
// 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;
}
+125 -45
View File
@@ -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;