DefinitelyTyped/gridstack/gridstack.d.ts
2016-03-17 21:06:54 +09:00

242 lines
8.4 KiB
TypeScript

// Type definitions for Gridstack
// Project: http://troolee.github.io/gridstack.js/
// Definitions by: Pascal Senn <https://github.com/PascalSenn/>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
interface JQuery {
gridstack (options: IGridstackOptions):GridStack
}
interface GridStack {
/**
* Creates new widget and returns it.
*
* Widget will be always placed even if result height is more than actual grid height. You need to use will_it_fit method before calling add_widget for additional check.
*
* @param {string} el widget to add
* @param {number} x widget position x
* @param {number} y widget position y
* @param {number} width widget dimension width
* @param {number} height widget dimension height
* @param {boolean} auto_position if true then x, y parameters will be ignored and widget will be places on the first available position
*/
add_widget(el: string, x: number, y: number, width: number, height: number, auto_position: boolean): JQuery
/**
* Initializes batch updates. You will see no changes until commit method is called.
*/
batch_update():void
/**
* Gets current cell height.
*/
cell_height():number
/**
* Update current cell height. This method rebuilds an internal CSS style sheet. Note: You can expect performance issues if call this method too often.
* @param {number} val the cell height
*/
cell_height(val:number):void
/**
* Gets current cell width.
*/
cell_width():number
/**
* Finishes batch updates. Updates DOM nodes. You must call it after batch_update.
*/
commit():void
/**
* Destroys a grid instance.
*/
destroy(): void
/*
* Disables widgets moving/resizing.
*/
disable(): void
/*
* Enables widgets moving/resizing.
*/
enable(): void
/*
* Get the position of the cell under a pixel on screen.
* @param {MousePosition} position the position of the pixel to resolve in absolute coordinates, as an object with top and leftproperties
*/
get_cell_from_pixel(position: MousePosition): CellPosition,
/*
* Checks if specified area is empty.
* @param {number} x the position x.
* @param {number} y the position y.
* @param {number} width the width of to check
* @param {number} height the height of to check
*/
is_area_empty(x: number, y: number, width: number, height: number): void
/*
* Locks/unlocks widget.
* @param {HTMLElement} el widget to modify.
* @param {boolean} val if true widget will be locked.
*/
locked(el: HTMLElement, val: boolean): void
/*
* Set the minWidth for a widget.
* @param {HTMLElement} el widget to modify.
* @param {number} val A numeric value of the number of columns
*/
min_width(el: HTMLElement, val: number): void
/*
* Set the minHeight for a widget.
* @param {HTMLElement} el widget to modify.
* @param {number} val A numeric value of the number of rows
*/
min_height(el: HTMLElement, val: number): void
/*
* Enables/Disables moving.
* @param {HTMLElement} el widget to modify.
* @param {number} val if true widget will be draggable.
*/
movable(el: HTMLElement, val: boolean): void
/**
* Changes widget position
* @param {HTMLElement} el widget to modify
* @param {number} x new position x. If value is null or undefined it will be ignored.
* @param {number} y new position y. If value is null or undefined it will be ignored.
*
*/
move(el: HTMLElement, x: number, y: number): void
/**
* Removes widget from the grid.
* @param {HTMLElement} el widget to modify
* @param {boolean} detach_node if false DOM node won't be removed from the tree (Optional. Default true).
*/
remove_widget(el: HTMLElement, detach_node?: boolean): void
/**
* Removes all widgets from the grid.
*/
remove_all(): void
/**
* Changes widget size
* @param {HTMLElement} el widget to modify
* @param {number} width new dimensions width. If value is null or undefined it will be ignored.
* @param {number} height new dimensions height. If value is null or undefined it will be ignored.
*/
resize(el: HTMLElement, width: number, height: number): void
/**
* Enables/Disables resizing.
* @param {HTMLElement} el widget to modify
* @param {boolean} val if true widget will be resizable.
*/
resizable(el: HTMLElement, val: boolean): void
/**
* Toggle the grid static state. Also toggle the grid-stack-static class.
* @param {boolean} static_value if true the grid become static.
*/
set_static(static_value: boolean): void
/**
* Updates widget position/size.
* @param {HTMLElement} el widget to modify
* @param {number} x new position x. If value is null or undefined it will be ignored.
* @param {number} y new position y. If value is null or undefined it will be ignored.
* @param {number} width new dimensions width. If value is null or undefined it will be ignored.
* @param {number} height new dimensions height. If value is null or undefined it will be ignored.
*/
update(el: HTMLElement, x: number, y: number, width: number, height: number): void
/**
* Returns true if the height of the grid will be less the vertical constraint. Always returns true if grid doesn't have height constraint.
* @param {number} x new position x. If value is null or undefined it will be ignored.
* @param {number} y new position y. If value is null or undefined it will be ignored.
* @param {number} width new dimensions width. If value is null or undefined it will be ignored.
* @param {number} height new dimensions height. If value is null or undefined it will be ignored.
* @param {boolean} auto_position if true then x, y parameters will be ignored and widget will be places on the first available position
*/
will_it_fit(x: number, y: number, width: number, height: number, auto_position:boolean):boolean
}
/**
* Defines the coordiantes of a object
*/
interface MousePosition {
top: number,
left:number,
}
/**
* Defines the position of a cell inside the grid
*/
interface CellPosition {
x: number,
y:number
}
declare namespace GridStackUI {
interface Utils {
/**
* Sorts array of nodes
*@param nodes array to sort
*@param dir 1 for asc, -1 for desc (optional)
*@param width width of the grid. If undefined the width will be calculated automatically (optional).
**/
sort(nodes: HTMLElement[], dir: number, width: number): void
}
}
/**
* Gridstack Options
* Defines the options for a Gridstack
*/
interface IGridstackOptions {
/**
* if true the resizing handles are shown even if the user is not hovering over the widget (default: false)
*/
always_show_resize_handle: boolean;
/**
* turns animation on (default: true)
*/
animate: boolean;
/**
* if false gridstack will not initialize existing items (default: true)
*/
auto: boolean;
/**
* one cell height (default: 60)
*/
cell_height: number;
/**
* allows to override jQuery UI draggable options. (default: { handle: '.grid-stack-item-content', scroll: true, appendTo: 'body' })
*/
draggable: {};
/**
* draggable handle selector (default: '.grid-stack-item-content')
*/
handle: string;
/**
* maximum rows amount.Default is 0 which means no maximum rows
*/
height: number;
/**
* enable floating widgets (default: false) See example
*/
float: boolean;
/**
* widget class (default: 'grid-stack-item')
*/
item_class: string;
/**
* minimal width.If window width is less, grid will be shown in one - column mode (default: 768)
*/
min_width: number;
/**
* class for placeholder (default: 'grid-stack-placeholder')
*/
placeholder_class: string;
/**
* allows to override jQuery UI resizable options. (default: { autoHide: true, handles: 'se' })
*/
resizable: {};
/**
* makes grid static (default false).If true widgets are not movable/ resizable.You don't even need jQueryUI draggable/resizable. A CSS class grid-stack-static is also added to the container.
*/
static_grid: boolean;
/**
* vertical gap size (default: 20)
*/
vertical_margin: number;
/**
* amount of columns (default: 12)
*/
width: number;
}