UNPKG

@quantlab/handsontable

Version:

Spreadsheet-like data grid editor that provides copy/paste functionality compatible with Excel/Google Docs

534 lines (494 loc) 22.2 kB
// Type definitions for Handsontable 0.31 // Project: https://handsontable.com/ // Definitions by: Handsoncode sp. z o.o. <http://handsoncode.net/>, Ryan Riley <https://github.com/panesofglass> // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped\ declare namespace __Handsontable { // The Core class is used inside the Handsontable namespace in the actual source code. // However, there is a resolution issue when a class outside a namespace or module // extends a class inside a module with the same name. That issue includes a work-around. // Using the workaround found here: https://github.com/Microsoft/TypeScript/issues/3602 class Core { constructor(element: Element, options: Handsontable.Options); addHook(key: string, callback: Function|any[]): void; addHookOnce(key: string, callback: Function|any[]): void; alter(action: string, index: number, amount?: number, source?: string, keepEmptyRows?: boolean): void; clear(): void; colOffset(): number; colToProp(col: number): string|number; countCols(): number; countEmptyCols(ending?: boolean): number; countEmptyRows(ending?: boolean): number; countRenderedCols(): number; countRenderedRows(): number; countRows(): number; countSourceRows(): number; countVisibleCols(): number; countVisibleRows(): number; deselectCell(): void; destroy(): void; destroyEditor(revertOriginal?: boolean): void; getActiveEditor(): Object; getCell(row: number, col: number, topmost?: boolean): Element; getCellEditor(row: number, col: number): Object; getCellMeta(row: number, col: number): Object; getCellRenderer(row: number, col: number): Function; getCellValidator(row: number, col: number): any; getColHeader(col?: number): any[]|string; getColWidth(col: number): number; getCoords(elem: Element): Object; getCopyableData(row: number, column: number): string; getCopyableText(startRow: number, startCol: number, endRow: number, endCol: number): string; getData(r?: number, c?: number, r2?: number, c2?: number): any[]; getDataAtCell(row: number, col: number): any; getDataAtCol(col: number): any[]; getDataAtProp(prop: string|number): any[]; getDataAtRow(row: number): any[]; getDataAtRowProp(row: number, prop: string): any; getDataType(rowFrom: number, columnFrom: number, rowTo: number, columnTo: number): string; getInstance(): any; getPlugin(pluginName: string): any; getRowHeader(row?: number): any[]|string; getRowHeight(row: number): number; getSchema(): Object; getSelected(): any[]; getSelectedRange(): Handsontable.Range; getSettings(): Handsontable.Options; getSourceData(r?: number, c?: number, r2?: number, c2?: number): any[]; getSourceDataAtCell(row: number, column: number): any; getSourceDataAtCol(column: number): any[]; getSourceDataAtRow(row: number): any[]|Object; getValue(): any; hasColHeaders(): boolean; hasHook(key: string): boolean; hasRowHeaders(): boolean; isEmptyCol(col: number): boolean; isEmptyRow(row: number): boolean; isListening(): boolean; listen(): void; loadData(data: any[]): void; populateFromArray(row: number, col: number, input: any[], endRow?: number, endCol?: number, source?: string, method?: string, direction?: string, deltas?: any[]): any; propToCol(prop: string | number): number; removeCellMeta(row: number, col: number, key: string): void; removeHook(key: string, callback: Function): void; render(): void; rowOffset(): number; runHooks(key: string, p1?: any, p2?: any, p3?: any, p4?: any, p5?: any, p6?: any): any; selectCell(row: number, col: number, endRow?: number, endCol?: number, scrollToCell?: boolean, changeListener?: boolean): boolean; selectCellByProp(row: number, prop: string, endRow?: number, endProp?: string, scrollToCell?: boolean): boolean; setCellMeta(row: number, col: number, key: string, val: string): void; setCellMetaObject(row: number, col: number, prop: Object): void; setDataAtCell(row: number, col: number, value: string, source?: string): void; setDataAtCell(changes: Array<[number, number, any]>): void; setDataAtRowProp(row: number|any[], prop: string, value: string, source?: string): void; spliceCol(col: number, index: number, amount: number, elements?: any): void; spliceRow(row: number, index: number, amount: number, elements?: any): void; toPhysicalRow(row: number): number; toPhysicalColumn(column: number): number; toVisualRow(row: number): number; toVisualColumn(column: number): number; unlisten(): void; updateSettings(settings: Object, init?: boolean): void; validateCells(callback: Function): void; //misc formula: any; } } declare namespace Handsontable { interface Options { allowEmpty?: boolean; allowInsertColumn?: boolean; allowInsertRow?: boolean; allowInvalid?: boolean; allowRemoveColumn?: boolean; allowRemoveRow?: boolean; autoColumnSize?: Object|boolean; autoComplete?: any[]; autoRowSize?: Object|boolean; autoWrapCol?: boolean; autoWrapRow?: boolean; bindRowsWithHeaders?: boolean|string; cell?: any[]; cells?: Function; checkedTemplate?: boolean|string; className?: string|any[]; colHeaders?: boolean|any[]|Function; collapsibleColumns?: boolean|any[]; columnHeaderHeight?: number|any[]; columns?: any[]; columnSorting?: boolean|Object; columnSummary?: Object; colWidths?: any[]|Function|number|string; commentedCellClassName?: string; comments?: boolean|any[]; contextMenu?: boolean|any[]|Object; contextMenuCopyPaste?: Object; copyable?: boolean; copyColsLimit?: number; copyPaste?: boolean; copyRowsLimit?: number; correctFormat?: boolean; currentColClassName?: string; currentRowClassName?: string; customBorders?: boolean|any[]; data?: any[]|Function; dataSchema?: Object; dateFormat?: string; debug?: boolean; defaultDate?: string; disableVisualSelection?: boolean|string|any[]; dropdownMenu?: boolean|Object|any[]; editor?: string|Function|boolean; enterBeginsEditing?: boolean; enterMoves?: Object|Function; fillHandle?: boolean|string|Object; filter?: boolean; filteringCaseSensitive?: boolean; filters?: boolean; fixedColumnsLeft?: number; fixedRowsBottom?: number; fixedRowsTop?: number; format?: string; fragmentSelection?: boolean|string; ganttChart?: Object; headerTooltips?: boolean|Object; height?: number|Function; hiddenColumns?: boolean|Object; hiddenRows?: boolean|Object; invalidCellClassName?: string; label?: Object; language?: string; manualColumnFreeze?: boolean; manualColumnMove?: boolean|any[]; manualColumnResize?: boolean|any[]; manualRowMove?: boolean|any[]; manualRowResize?: boolean|any[]; maxCols?: number; maxRows?: number; mergeCells?: boolean|any[]; minCols?: number; minRows?: number; minSpareCols?: number; minSpareRows?: number; multiSelect?: boolean; nestedHeaders?: any[]; noWordWrapClassName?: string; observeChanges?: boolean; observeDOMVisibility?: boolean; outsideClickDeselects?: boolean; pasteMode?: string; persistentState?: boolean; placeholder?: any; placeholderCellClassName?: string; preventOverflow?: string|boolean; readOnly?: boolean; readOnlyCellClassName?: string; renderAllRows?: boolean; renderer?: string|Function; rowHeaders?: boolean|any[]|Function; rowHeaderWidth?: number|any[]; rowHeights?: any[]|Function|number|string; search?: boolean; selectOptions?: any[]; skipColumnOnPaste?: boolean; sortByRelevance?: boolean; sortFunction?: Function; sortIndicator?: boolean; source?: any[]|Function; startCols?: number; startRows?: number; stretchH?: string; strict?: boolean; tableClassName?: string|any[]; tabMoves?: Object; title?: string; trimDropdown?: boolean; trimWhitespace?: boolean; type?: string; uncheckedTemplate?: boolean|string; undo?: boolean; validator?: Function|RegExp; viewportColumnRenderingOffset?: number|string; viewportRowRenderingOffset?: number|string; visibleRows?: number; width?: number|Function; wordWrap?: boolean; isEmptyCol?(col: number): boolean; isEmptyRow?(row: number): boolean; // hooks afterAutofillApplyValues?(startArea: any[], entireArea: any[]): void; afterCellMetaReset?(): void; afterChange?(changes: Array<[number, number|string, any, any]>, source?: string): void; afterChangesObserved?(): void; afterColumnMove?(startColumn: number, endColumn: number): void; afterColumnResize?(currentColumn: number, newSize: number, isDoubleClick: boolean): void; afterColumnSort?(column: number, order: boolean): void; afterContextMenuDefaultOptions?(predefinedItems: any[]): void; afterContextMenuHide?(context: Object): void; afterContextMenuShow?(context: Object): void; afterCopyLimit?(selectedRows: number, selectedColumnds: number, copyRowsLimit: number, copyColumnsLimit: number): void; afterCreateCol?(index: number, amount: number): void; afterCreateRow?(index: number, amount: number): void; afterDeselect?(): void; afterDestroy?(): void; afterDocumentKeyDown?(event: Event): void; afterFilter?(formulasStack: any[]): void; afterGetCellMeta?(row: number, col: number, cellProperties: Object): void; afterGetColHeader?(col: number, TH: Element): void; afterGetColumnHeaderRenderers?(array: any[]): void; afterGetRowHeader?(row: number, TH: Element): void; afterGetRowHeaderRenderers?(array: any[]): void; afterInit?(): void; afterLoadData?(firstTime: boolean): void; afterMomentumScroll?(): void; afterOnCellCornerDblClick?(event: Object): void; afterOnCellCornerMouseDown?(event: Object): void; afterOnCellMouseDown?(event: Object, coords: Object, TD: Element): void; afterOnCellMouseOver?(event: Object, coords: Object, TD: Element): void; afterRemoveCol?(index: number, amount: number): void; afterRemoveRow?(index: number, amount: number): void; afterRender?(isForced: boolean): void; afterRenderer?(TD: Element, row: number, col: number, prop: string|number, value: string, cellProperties: Object): void; afterRowMove?(startRow: number, endRow: number): void; afterRowResize?(currentRow: number, newSize: number, isDoubleClick: boolean): void; afterScrollHorizontally?(): void; afterScrollVertically?(): void; afterSelection?(r: number, c: number, r2: number, c2: number): void; afterSelectionByProp?(r: number, p: string, r2: number, p2: string): void; afterSelectionEnd?(r: number, c: number, r2: number, c2: number): void; afterSelectionEndByProp?(r: number, p: string, r2: number, p2: string): void; afterSetCellMeta?(row: number, col: number, key: string, value: any): void; afterUpdateSettings?(): void; afterValidate?(isValid: boolean, value: any, row: number, prop: string|number, source: string): void|boolean; beforeAutofill?(start: Object, end: Object, data: any[]): void; beforeCellAlignment?(stateBefore: any, range: any, type: string, alignmentClass: string): void; beforeChange?(changes: any[], source: string): void; beforeChangeRender?(changes: any[], source: string): void; beforeColumnMove?(startColumn: number, endColumn: number): void; beforeColumnResize?(currentColumn: number, newSize: number, isDoubleClick: boolean): void; beforeColumnSort?(column: number, order: boolean): void; beforeDrawBorders?(corners: any[], borderClassName: string): void; beforeFilter?(formulasStack: any[]): void; beforeGetCellMeta?(row: number, col: number, cellProperties: Object): void; beforeInit?(): void; beforeInitWalkontable?(walkontableConfig: Object): void; beforeKeyDown?(event: Event): void; beforeOnCellMouseDown?(event: Event, coords: Object, TD: Element): void; beforeRemoveCol?(index: number, amount: number, logicalCols?: any[]): void; beforeRemoveRow?(index: number, amount: number, logicalRows?: any[]): void; beforeRender?(isForced: boolean): void; beforeRenderer?(TD: Element, row: number, col: number, prop: string|number, value: string, cellProperties: Object): void; beforeRowMove?(startRow: number, endRow: number): void; beforeRowResize?(currentRow: number, newSize: number, isDoubleClick: boolean): any; beforeSetRangeEnd?(coords: any[]): void; beforeStretchingColumnWidth?(stretchedWidth: number, column: number): void; beforeTouchScroll?(): void; beforeValidate?(value: any, row: number, prop: string|number, source: string): void; construct?(): void; init?(): void; modifyCol?(col: number): void; modifyColHeader?(column: number): void; modifyColWidth?(width: number, col: number): void; modifyCopyableRange?(copyableRanges: any[]): void; modifyRow?(row: number): void; modifyRowHeader?(row: number): void; modifyRowHeight?(height: number, row: number): void; persistentStateLoad?(key: string, valuePlaceholder: Object): void; persistentStateReset?(key: string): void; persistentStateSave?(key: string, value: any): void; unmodifyCol?(col: number): void; // misc formulas?: boolean; } class Core extends __Handsontable.Core { } interface Selection { start: CellPosition; end: CellPosition; } interface Range { from: CellPosition; to: CellPosition; } interface HandsontableRegisterer { getInstance(id: string): Core; registerInstance(id: string, instance: Core): void; removeInstance(id: string): void; } interface ColumnProperties extends CellProperties { data?: string | number; title?: string; editor?: string | EditorConstructor; selectOptions?: any[]; width?: number; } interface CellProperties { renderer?: CellRenderer; type?: string; readOnly?: boolean; language?: string; format?: string; validator?: Validator; allowInvalid?: boolean; className?: string; } interface CellPosition { row: number; col: number; } // so that you can write custom plugins in typescript interface BasePlugin { init(): void; enablePlugin(): void; disablePlugin(): void; addHook(name: string, callback: Function): void; removeHooks(name: string): void; clearHooks(): void; callOnPluginsReady(callback: Function): void; updatePlugin(): void; destroy(): void; enabled: boolean; hot: Core; } interface PluginConstructor { new (hotInstance: Core): BasePlugin; } interface ContextMenuPluginConstructor extends PluginConstructor { SEPARATOR: string; } interface Plugins { AutoColumnSize: PluginConstructor; AutoRowSizeAutoRowSize: PluginConstructor; BasePlugin: PluginConstructor; BindRowsWithHeaders: PluginConstructor; CollapsibleColumns: PluginConstructor; ColumnSorting: PluginConstructor; ColumnSummary: PluginConstructor; Comments: PluginConstructor; ContextMenu: ContextMenuPluginConstructor; ContextMenuCopyPaste: PluginConstructor; DragToScroll: PluginConstructor; DropdownMenu: PluginConstructor; ExportFile: PluginConstructor; Filters: PluginConstructor; Formulas: PluginConstructor; GanttChart: PluginConstructor; HeaderTooltips: PluginConstructor; HiddenColumns: PluginConstructor; HiddenRows: PluginConstructor; ManualColumnFreeze: PluginConstructor; ManualColumnMove: PluginConstructor; ManualColumnResize: PluginConstructor; ManualRowMove: PluginConstructor; ManualRowResize: PluginConstructor; MultipleSelectionHandles: PluginConstructor; NestedHeaders: PluginConstructor; NestedRows: PluginConstructor; ObserveChanges: PluginConstructor; TouchScroll: PluginConstructor; TrimRows: PluginConstructor; registerPlugin(pluginName: string, PluginClass: PluginConstructor): void; } interface Hooks { register(key: string): void; run(instace: Core, hookName: string, key?: any, value?: any): any; } interface Dom { addEvent(element: HTMLElement, eventName: string, callback: Function): void; addClass(element: HTMLElement, className: string | string[]): void; removeClass(element: HTMLElement, className: string | string[]): void; offset(element: HTMLElement): any; getWindowScrollLeft(): number; getWindowScrollTop(): number; outerHeight(element: HTMLElement): number; hasClass(element: HTMLElement, className: string): boolean | undefined; empty(element: HTMLElement): void; } interface ArrayMapper { clearMap(): void; getIndexByValue(value: any): number; getValueByIndex(index: number): any; insertItems(index: number, amount?: number): number[]; removeItems(index: number | number[], amount?: number): number[]; unshiftItems(index: number | number[], amount?: number): void; shiftItems(index: number, amount?: number): void; } interface Utils { arrayMapper: ArrayMapper; } interface Formula { parser: any; } interface Helper { arrayFilter(array: any[], predicate: Function): any[]; arrayEach(array: any[], predicate: Function): void; arrayMap(array: any[], predicate: Function): any[]; arrayReduce(array: any[], predicate: Function, initialValue?: any): any; objectEach(obj: any, predicate: Function): void; rangeEach(rangeFrom: number, rangeTo: number | Function, iteratee?: Function): void; mixin(Base: any, ...mixins: any[]): void; isNumeric(number: any): boolean; createSpreadsheetData(rows: number, columns: number): any; } type CellRenderer = ( instance: Core, td: HTMLTableCellElement, row: number, col: number, prop: string, value: any, cellProperties: any) => void; interface Editor { open(): void; } interface EditorConstructor { new (instance: Core): Editor; } interface Editors { TextEditor: EditorConstructor; } type Validator = (value: any, callback: (condition: boolean) => void) => void; interface Renderers { TextRenderer: CellRenderer; NumericRenderer: CellRenderer; AutocompleteRenderer: CellRenderer; } type AsyncAutocompleteSourceFunction = (query: string, process: (values: any[]) => void) => void; interface AutocompleteColumn extends ColumnProperties { source?: any[] | AsyncAutocompleteSourceFunction; strict?: boolean; trimDropdown?: boolean; } interface DateColumn extends ColumnProperties { dateFormat?: string; correctFormat?: boolean; } interface NumericColumn extends ColumnProperties { format?: string; language?: string; } interface CheckboxColumnLabel { position?: 'before' | 'after'; property?: string; value: string; } interface CheckboxColumn extends ColumnProperties { checkedTemplate?: any; uncheckedTemplate?: any; label?: CheckboxColumnLabel; } type CellMetaFunction = (row: number, column: number, prop: string) => void; type DropdownColumn = AutocompleteColumn; } declare class Handsontable extends __Handsontable.Core { static plugins: Handsontable.Plugins; static hooks: Handsontable.Hooks; static Dom: Handsontable.Dom; static dom: Handsontable.Dom; static helper: Handsontable.Helper; static utils: Handsontable.Utils; static renderers: Handsontable.Renderers; static editors: Handsontable.Editors; static formula: Handsontable.Formula; } export = Handsontable; export as namespace Handsontable;