|
|
// TODO: extension
|
|
|
import { NodeOrString, ElementOrString, NodeFragmentOrString, GenericObject } from "../interfaces";
|
|
|
import dojo = require("./kernel");
|
|
|
import { DomGeometryBox, Point, DomGeometryBoxExtents, DomGeometryWidthHeight, DomGeometryXYBox } from "../dom-geometry";
|
|
|
import { DomComputedStyle } from "../dom-style";
|
|
|
|
|
|
declare module "./kernel" {
|
|
|
interface CoordBox extends DomGeometryBox, Point { }
|
|
|
|
|
|
interface Dojo {
|
|
|
/**
|
|
|
* Returns DOM node with matching `id` attribute or falsy value (ex: null or undefined)
|
|
|
* if not found. Internally if `id` is not a string then `id` returned.
|
|
|
*/
|
|
|
byId(id: string, doc?: Document): Element;
|
|
|
|
|
|
/**
|
|
|
* Returns true if node is a descendant of ancestor
|
|
|
*/
|
|
|
isDescendant(node: NodeOrString, ancestor: NodeOrString): boolean;
|
|
|
|
|
|
/**
|
|
|
* Enable or disable selection on a node
|
|
|
*/
|
|
|
setSelectable(node: ElementOrString, selectable?: boolean): void;
|
|
|
|
|
|
/**
|
|
|
* Returns true if the requested attribute is specified on the
|
|
|
* given element, and false otherwise.
|
|
|
*/
|
|
|
hasAttr(node: NodeOrString, name: string): boolean;
|
|
|
|
|
|
/**
|
|
|
* Gets an attribute on an HTML element.
|
|
|
* Because sometimes this uses node.getAttribute, it should be a string,
|
|
|
* but it can also get any other attribute on a node, therefore it is unsafe
|
|
|
* to type just a string.
|
|
|
*/
|
|
|
getAttr(node: ElementOrString, name: string): any;
|
|
|
|
|
|
/**
|
|
|
* Sets an attribute on an HTML element.
|
|
|
*/
|
|
|
setAttr(node: ElementOrString, name: string, value: any): Element;
|
|
|
setAttr(node: ElementOrString, map: Object): Element;
|
|
|
|
|
|
/**
|
|
|
* Removes an attribute from an HTML element.
|
|
|
*/
|
|
|
removeAttr(node: NodeOrString, name: string): void;
|
|
|
|
|
|
/**
|
|
|
* Returns an effective value of a property or an attribute.
|
|
|
*/
|
|
|
getNodeProp(node: NodeOrString, name: string): any;
|
|
|
|
|
|
/**
|
|
|
* Gets or sets an attribute on an HTML element.
|
|
|
*/
|
|
|
attr(node: NodeOrString, name: string): any;
|
|
|
attr(node: NodeOrString, map: Object): Element;
|
|
|
attr(node: NodeOrString, name: string, value: any): Element;
|
|
|
|
|
|
/**
|
|
|
* Returns whether or not the specified classes are a portion of the
|
|
|
* class list currently applied to the node.
|
|
|
*/
|
|
|
containsClass(node: NodeOrString, classStr: string): boolean;
|
|
|
|
|
|
/**
|
|
|
* Adds the specified classes to the end of the class list on the
|
|
|
* passed node. Will not re-apply duplicate classes.
|
|
|
*/
|
|
|
addClass(node: NodeOrString, classStr: string | string[]): void;
|
|
|
|
|
|
/**
|
|
|
* Removes the specified classes from node. No `contains()`
|
|
|
* check is required.
|
|
|
*/
|
|
|
removeClass(node: NodeOrString, classStr?: string | string[]): void;
|
|
|
|
|
|
/**
|
|
|
* Replaces one or more classes on a node if not present.
|
|
|
* Operates more quickly than calling dojo.removeClass and dojo.addClass
|
|
|
*/
|
|
|
replaceClass(node: NodeOrString, addClassStr: string | string[], removeClassStr?: string | string[]): void;
|
|
|
|
|
|
/**
|
|
|
* Adds a class to node if not present, or removes if present.
|
|
|
* Pass a boolean condition if you want to explicitly add or remove.
|
|
|
* Returns the condition that was specified directly or indirectly.
|
|
|
*/
|
|
|
toggleClass(node: NodeOrString, classStr: string | string[], condition?: boolean): boolean;
|
|
|
|
|
|
/**
|
|
|
* instantiates an HTML fragment returning the corresponding DOM.
|
|
|
*/
|
|
|
toDom(frag: string, doc?: Document): DocumentFragment | Node;
|
|
|
|
|
|
_toDom(frag: string, doc?: Document): DocumentFragment | Node;
|
|
|
|
|
|
/**
|
|
|
* Attempt to insert node into the DOM, choosing from various positioning options.
|
|
|
* Returns the first argument resolved to a DOM node.
|
|
|
*/
|
|
|
place(node: NodeFragmentOrString, refNode: NodeOrString, position?: string /* PosString */ | number): HTMLElement;
|
|
|
|
|
|
/**
|
|
|
* Create an element, allowing for optional attribute decoration
|
|
|
* and placement.
|
|
|
*/
|
|
|
create(tag: NodeOrString, attrs?: GenericObject, refNode?: NodeOrString, pos?: string /* PosString */ | number): HTMLElement;
|
|
|
|
|
|
/**
|
|
|
* safely removes all children of the node.
|
|
|
*/
|
|
|
empty(node: NodeOrString): void;
|
|
|
|
|
|
/**
|
|
|
* Removes a node from its parent, clobbering it and all of its
|
|
|
* children.
|
|
|
*/
|
|
|
destroy(node: NodeOrString): void;
|
|
|
|
|
|
_destroyElement(node: NodeOrString): void;
|
|
|
|
|
|
/**
|
|
|
* Returns object with special values specifically useful for node
|
|
|
* fitting.
|
|
|
*/
|
|
|
getPadExtents(node: Element, computedStyle?: DomComputedStyle): DomGeometryBoxExtents;
|
|
|
|
|
|
_getPadExtents(node: Element, computedStyle?: DomComputedStyle): DomGeometryBoxExtents;
|
|
|
|
|
|
/**
|
|
|
* returns an object with properties useful for noting the border
|
|
|
* dimensions.
|
|
|
*/
|
|
|
getBorderExtents(node: Element, computedStyle?: DomComputedStyle): DomGeometryBoxExtents;
|
|
|
|
|
|
_getBorderExtents(node: Element, computedStyle?: DomComputedStyle): DomGeometryBoxExtents;
|
|
|
|
|
|
/**
|
|
|
* Returns object with properties useful for box fitting with
|
|
|
* regards to padding.
|
|
|
*/
|
|
|
getPadBorderExtents(node: Element, computedStyle?: DomComputedStyle): DomGeometryBoxExtents;
|
|
|
|
|
|
_getPadBorderExtents(node: Element, computedStyle?: DomComputedStyle): DomGeometryBoxExtents;
|
|
|
|
|
|
/**
|
|
|
* returns object with properties useful for box fitting with
|
|
|
* regards to box margins (i.e., the outer-box).
|
|
|
* - l/t = marginLeft, marginTop, respectively
|
|
|
* - w = total width, margin inclusive
|
|
|
* - h = total height, margin inclusive
|
|
|
* The w/h are used for calculating boxes.
|
|
|
* Normally application code will not need to invoke this
|
|
|
* directly, and will use the ...box... functions instead.
|
|
|
*/
|
|
|
getMarginExtents(node: Element, computedStyle?: DomComputedStyle): DomGeometryBoxExtents;
|
|
|
|
|
|
_getMarginExtents(node: Element, computedStyle?: DomComputedStyle): DomGeometryBoxExtents;
|
|
|
|
|
|
/**
|
|
|
* returns an object that encodes the width, height, left and top
|
|
|
* positions of the node's margin box.
|
|
|
*/
|
|
|
getMarginBox(node: Element, computedStyle?: DomComputedStyle): DomGeometryBox;
|
|
|
|
|
|
_getMarginBox(node: Element, computedStyle?: DomComputedStyle): DomGeometryBox;
|
|
|
|
|
|
/**
|
|
|
* Returns an object that encodes the width, height, left and top
|
|
|
* positions of the node's content box, irrespective of the
|
|
|
* current box model.
|
|
|
*/
|
|
|
getContentBox(node: Element, computedStyle?: DomComputedStyle): DomGeometryBox;
|
|
|
|
|
|
_getContentBox(node: Element, computedStyle?: DomComputedStyle): DomGeometryBox;
|
|
|
|
|
|
/**
|
|
|
* Sets the size of the node's contents, irrespective of margins,
|
|
|
* padding, or borders.
|
|
|
*/
|
|
|
setContentSize(node: Element, box: DomGeometryWidthHeight, computedStyle?: DomComputedStyle): void;
|
|
|
|
|
|
/**
|
|
|
* sets the size of the node's margin box and placement
|
|
|
* (left/top), irrespective of box model. Think of it as a
|
|
|
* passthrough to setBox that handles box-model vagaries for
|
|
|
* you.
|
|
|
*/
|
|
|
setMarginBox(node: Element, box: DomGeometryBox, computedStyle?: DomComputedStyle): void;
|
|
|
|
|
|
/**
|
|
|
* Returns true if the current language is left-to-right, and false otherwise.
|
|
|
*/
|
|
|
isBodyLtr(doc?: Document): boolean;
|
|
|
|
|
|
_isBodyLtr(doc?: Document): boolean;
|
|
|
|
|
|
/**
|
|
|
* Returns an object with {node, x, y} with corresponding offsets.
|
|
|
*/
|
|
|
docScroll(doc?: Document): Point;
|
|
|
|
|
|
_docScroll(doc?: Document): Point;
|
|
|
|
|
|
/**
|
|
|
* Deprecated method previously used for IE6-IE7. Now, just returns `{x:0, y:0}`.
|
|
|
*/
|
|
|
getIeDocumentElementOffset(doc: Document): Point;
|
|
|
|
|
|
_getIeDocumentElementOffset(doc: Document): Point;
|
|
|
|
|
|
/**
|
|
|
* In RTL direction, scrollLeft should be a negative value, but IE
|
|
|
* returns a positive one. All codes using documentElement.scrollLeft
|
|
|
* must call this function to fix this error, otherwise the position
|
|
|
* will offset to right when there is a horizontal scrollbar.
|
|
|
*/
|
|
|
fixIeBiDiScrollLeft(scrollLeft: number, doc?: Document): number;
|
|
|
|
|
|
_fixIeBiDiScrollLeft(scrollLeft: number, doc?: Document): number;
|
|
|
|
|
|
/**
|
|
|
* Gets the position and size of the passed element relative to
|
|
|
* the viewport (if includeScroll==false), or relative to the
|
|
|
* document root (if includeScroll==true).
|
|
|
*/
|
|
|
position(node: Element, includeScroll?: boolean): DomGeometryXYBox;
|
|
|
|
|
|
/**
|
|
|
* returns an object that encodes the width and height of
|
|
|
* the node's margin box
|
|
|
*/
|
|
|
getMarginSize(node: Element, computedStyle?: DomComputedStyle): DomGeometryWidthHeight;
|
|
|
|
|
|
_getMarginSize(node: Element, computedStyle?: DomComputedStyle): DomGeometryWidthHeight;
|
|
|
|
|
|
/**
|
|
|
* Getter/setter for the margin-box of node.
|
|
|
*/
|
|
|
marginBox(node: Element): DomGeometryBox;
|
|
|
marginBox(node: Element, box: DomGeometryBox): void;
|
|
|
|
|
|
/**
|
|
|
* Getter/setter for the content-box of node.
|
|
|
*/
|
|
|
contentBox(node: Element): DomGeometryBox;
|
|
|
contentBox(node: Element, box: DomGeometryWidthHeight): void;
|
|
|
|
|
|
/**
|
|
|
* Deprecated: Use position() for border-box x/y/w/h
|
|
|
* or marginBox() for margin-box w/h/l/t.
|
|
|
*/
|
|
|
coords(node: NodeOrString, includeScroll?: boolean): CoordBox;
|
|
|
|
|
|
/**
|
|
|
* Gets a property on an HTML element.
|
|
|
*/
|
|
|
getProp(node: ElementOrString, name: string): any;
|
|
|
|
|
|
/**
|
|
|
* Sets a property on an HTML element.
|
|
|
*/
|
|
|
setProp(node: ElementOrString, name: string | Object, value?: any): Element;
|
|
|
|
|
|
/**
|
|
|
* Gets or sets a property on an HTML element.
|
|
|
*/
|
|
|
prop(node: ElementOrString, name: string): string;
|
|
|
prop(node: ElementOrString, name: Object): Element;
|
|
|
prop(node: ElementOrString, name: string, value: any): Element;
|
|
|
|
|
|
/**
|
|
|
* Returns a "computed style" object.
|
|
|
*/
|
|
|
getComputedStyle(node: Node): DomComputedStyle;
|
|
|
|
|
|
/**
|
|
|
* Accesses styles on a node.
|
|
|
*/
|
|
|
getStyle(node: ElementOrString): DomComputedStyle;
|
|
|
getStyle(node: ElementOrString, name: string): string | number;
|
|
|
|
|
|
/**
|
|
|
* Sets styles on a node.
|
|
|
*/
|
|
|
setStyle(node: ElementOrString, name: string | DomComputedStyle, value?: string): DomComputedStyle;
|
|
|
|
|
|
/**
|
|
|
* converts style value to pixels on IE or return a numeric value.
|
|
|
*/
|
|
|
toPixelValue(element: Element, value: string): number;
|
|
|
|
|
|
__toPixelValue(element: Element, value: string): number;
|
|
|
|
|
|
/**
|
|
|
* Accesses styles on a node. If 2 arguments are
|
|
|
* passed, acts as a getter. If 3 arguments are passed, acts
|
|
|
* as a setter.
|
|
|
*/
|
|
|
style(node: ElementOrString): DomComputedStyle;
|
|
|
style(node: ElementOrString, name: string): string | number;
|
|
|
style(node: ElementOrString, name: DomComputedStyle): DomComputedStyle;
|
|
|
style(node: ElementOrString, name: string, value: string): DomComputedStyle;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
export = dojo;
|
|
|
|