handsontable.d.ts 79 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792
  1. declare namespace _Handsontable {
  2. class Core {
  3. constructor(element: Element, options: Handsontable.DefaultSettings);
  4. addHook(key: string, callback: ((...restOfArg: any[]) => void) | ((...restOfArg: any[]) => void)[]): void;
  5. addHookOnce(key: string, callback: (() => void) | (() => void)[]): void;
  6. alter(action: 'insert_row' | 'insert_col' | 'remove_row' | 'remove_col', index?: number | Array<[number, number]>, amount?: number, source?: string, keepEmptyRows?: boolean): void;
  7. clear(): void;
  8. colOffset(): number;
  9. colToProp(col: number): string | number;
  10. countCols(): number;
  11. countEmptyCols(ending?: boolean): number;
  12. countEmptyRows(ending?: boolean): number;
  13. countRenderedCols(): number;
  14. countRenderedRows(): number;
  15. countRows(): number;
  16. countSourceCols(): number;
  17. countSourceRows(): number;
  18. countVisibleCols(): number;
  19. countVisibleRows(): number;
  20. deselectCell(): void;
  21. destroy(): void;
  22. destroyEditor(revertOriginal?: boolean, prepareEditorIfNeeded?: boolean): void;
  23. emptySelectedCells(): void;
  24. getActiveEditor(): object;
  25. getCell(row: number, col: number, topmost?: boolean): Element;
  26. getCellEditor<T extends Handsontable._editors.Base>(row: number, col: number): T;
  27. getCellMeta(row: number, col: number): Handsontable.GridSettings;
  28. getCellMetaAtRow(row: number): Handsontable.GridSettings[];
  29. getCellRenderer(row: number, col: number): Handsontable.renderers.Base;
  30. getCellValidator(row: number, col: number): (value: any, callback: (valid: boolean) => void) => void | RegExp | undefined;
  31. getColHeader(col?: number): any[] | string;
  32. getColWidth(col: number): number;
  33. getCoords(elem: Element | null): object;
  34. getCopyableData(row: number, column: number): string;
  35. getCopyableText(startRow: number, startCol: number, endRow: number, endCol: number): string;
  36. getData(r?: number, c?: number, r2?: number, c2?: number): any[];
  37. getDataAtCell(row: number, col: number): any;
  38. getDataAtCol(col: number): any[];
  39. getDataAtProp(prop: string | number): any[];
  40. getDataAtRow(row: number): any[];
  41. getDataAtRowProp(row: number, prop: string): any;
  42. getDataType(rowFrom: number, columnFrom: number, rowTo: number, columnTo: number): string;
  43. getInstance(): Handsontable;
  44. getPlugin<T extends keyof Handsontable.PluginsCollection>(pluginName: T): Handsontable.PluginsCollection[T];
  45. getRowHeader(row?: number): any[] | string;
  46. getRowHeight(row: number): number;
  47. getSchema(): object;
  48. getSelected(): Array<[number, number, number, number]> | undefined;
  49. getSelectedLast(): number[] | undefined;
  50. getSelectedRange(): Handsontable.wot.CellRange[] | undefined;
  51. getSelectedRangeLast(): Handsontable.wot.CellRange | undefined;
  52. getSettings(): Handsontable.DefaultSettings;
  53. getSourceData(r?: number, c?: number, r2?: number, c2?: number): any[];
  54. getSourceDataArray(r?: number, c?: number, r2?: number, c2?: number): any[];
  55. getSourceDataAtCell(row: number, column: number): any;
  56. getSourceDataAtCol(column: number): any[];
  57. getSourceDataAtRow(row: number): any[] | object;
  58. getTranslatedPhrase(dictionaryKey: string, extraArguments: any): string | null;
  59. getValue(): any;
  60. hasColHeaders(): boolean;
  61. hasHook(key: string): boolean;
  62. hasRowHeaders(): boolean;
  63. isColumnModificationAllowed(): boolean;
  64. isEmptyCol(col: number): boolean;
  65. isEmptyRow(row: number): boolean;
  66. isListening(): boolean;
  67. listen(): void;
  68. loadData(data: any[]): void;
  69. populateFromArray(row: number, col: number, input: any[], endRow?: number, endCol?: number, source?: string, method?: string, direction?: string, deltas?: any[]): any;
  70. propToCol(prop: string | number): number;
  71. removeCellMeta(row: number, col: number, key: string): void;
  72. removeHook(key: string, callback: (() => void) | (() => void)[]): void;
  73. render(): void;
  74. rowOffset(): number;
  75. runHooks(key: string, p1?: any, p2?: any, p3?: any, p4?: any, p5?: any, p6?: any): any;
  76. scrollViewportTo(row?: number, column?: number, snapToBottom?: boolean, snapToRight?: boolean): boolean;
  77. selectAll(): void;
  78. selectCell(row: number, col: number, endRow?: number, endCol?: number, scrollToCell?: boolean, changeListener?: boolean): boolean;
  79. selectCellByProp(row: number, prop: string, endRow?: number, endProp?: string, scrollToCell?: boolean): boolean;
  80. selectCells(coords: Array<[number, number | string, number, number | string]> | Array<Handsontable.wot.CellRange>, scrollToCell?: boolean, changeListener?: boolean): boolean;
  81. selectColumns(startColumn: number | string, endColumn?: number | string): boolean;
  82. selectRows(startRow: number, endRow?: number): boolean;
  83. setCellMeta(row: number, col: number, key: string, val: string): void;
  84. setCellMetaObject(row: number, col: number, prop: object): void;
  85. setDataAtCell(row: number, col: string | number, value: any, source?: string): void;
  86. setDataAtCell(changes: Array<[number, string | number, any]>, source?: string): void;
  87. setDataAtRowProp(row: number, prop: string, value: any, source?: string): void;
  88. setDataAtRowProp(changes: Array<[number, string | number, any]>, source?: string): void;
  89. spliceCol(col: number, index: number, amount: number, elements?: any): void;
  90. spliceRow(row: number, index: number, amount: number, elements?: any): void;
  91. toPhysicalColumn(column: number): number;
  92. toPhysicalRow(row: number): number;
  93. toVisualColumn(column: number): number;
  94. toVisualRow(row: number): number;
  95. unlisten(): void;
  96. updateSettings(settings: Handsontable.DefaultSettings, init?: boolean): void;
  97. validateCells(callback: (valid: boolean) => void): void;
  98. validateColumns(columns: number[], callback: (valid: boolean) => void): void;
  99. validateRows(rows: number[], callback: (valid: boolean) => void): void;
  100. isDestroyed: boolean;
  101. rootElement: HTMLElement;
  102. }
  103. }
  104. declare namespace Handsontable {
  105. namespace wot {
  106. interface CellCoords {
  107. col: number,
  108. row: number
  109. }
  110. interface CellRange {
  111. highlight: CellCoords;
  112. from: CellCoords;
  113. to: CellCoords;
  114. }
  115. }
  116. namespace cellTypes {
  117. interface Autocomplete {
  118. editor: _editors.Autocomplete;
  119. renderer: renderers.Autocomplete;
  120. validator: (value: any, callback: (valid: boolean) => void) => void;
  121. }
  122. interface Checkbox {
  123. editor: _editors.Checkbox;
  124. renderer: renderers.Checkbox;
  125. }
  126. interface Date {
  127. editor: _editors.Date;
  128. renderer: renderers.Autocomplete;
  129. validator: (value: any, callback: (valid: boolean) => void) => void;
  130. }
  131. interface Dropdown {
  132. editor: _editors.Dropdown;
  133. renderer: renderers.Autocomplete;
  134. validator: (value: any, callback: (valid: boolean) => void) => void;
  135. }
  136. interface Handsontable {
  137. editor: _editors.Handsontable;
  138. renderer: renderers.Autocomplete;
  139. }
  140. interface Numeric {
  141. dataType: string;
  142. editor: _editors.Numeric;
  143. renderer: renderers.Numeric;
  144. validator: (value: any, callback: (valid: boolean) => void) => void;
  145. }
  146. interface Password {
  147. copyable: boolean;
  148. editor: _editors.Password;
  149. renderer: renderers.Password;
  150. }
  151. interface Text {
  152. editor: _editors.Text;
  153. renderer: renderers.Text;
  154. }
  155. interface Time {
  156. editor: _editors.Text;
  157. renderer: renderers.Text;
  158. validator: (value: any, callback: (valid: boolean) => void) => void;
  159. }
  160. }
  161. namespace _editors {
  162. class Base {
  163. instance: _Handsontable.Core;
  164. row: number;
  165. col: number;
  166. prop: string | number;
  167. TD: HTMLElement;
  168. cellProperties: object;
  169. constructor(hotInstance: _Handsontable.Core, row: number, col: number, prop: string | number, TD: HTMLElement, cellProperties: GridSettings)
  170. beginEditing(initialValue?: string): void;
  171. cancelChanges(): void;
  172. checkEditorSection(): 'top-left-corner' | 'top' | 'bottom-left-corner' | 'bottom' | 'left' | '' ;
  173. close(): void;
  174. discardEditor(validationResult?: boolean): void;
  175. enableFullEditMode(): void;
  176. extend<T extends _editors.Base>(): T;
  177. finishEditing(restoreOriginalValue?: boolean, ctrlDown?: boolean, callback?: () => void): void;
  178. getValue(): any;
  179. init(): void;
  180. isInFullEditMode(): boolean;
  181. isOpened(): boolean;
  182. isWaiting(): boolean;
  183. open(): void;
  184. prepare(row: number, col: number, prop: string | number, TD: HTMLElement, originalValue: any, cellProperties: GridSettings): void;
  185. saveValue(val?: any, ctrlDown?: boolean): void;
  186. setValue(newValue?: any): void;
  187. }
  188. class Checkbox extends Base {
  189. }
  190. class Mobile extends Base {
  191. hideCellPointer(): void;
  192. onBeforeKeyDown(event?: Event): void;
  193. prepareAndSave(): void;
  194. scrollToView(): void;
  195. updateEditorData(): void;
  196. updateEditorPosition(x?: number, y?: number): void;
  197. valueChanged(): boolean;
  198. }
  199. class Select extends Base {
  200. focus(): void;
  201. getEditedCell(): Element | undefined;
  202. prepareOptions(optionsToPrepare?: object | any[]): void;
  203. refreshDimensions(): void;
  204. refreshValue(): void;
  205. registerHooks(): void;
  206. }
  207. class Text extends Base {
  208. bindEvents(): void;
  209. close(tdOutside?: HTMLElement): void;
  210. createElements(): void;
  211. destroy(): void;
  212. focus(): void;
  213. hideEditableElement(): void;
  214. showEditableElement(): void;
  215. getEditedCell(): Element | undefined;
  216. refreshDimensions(force?: boolean): void;
  217. refreshValue(): void;
  218. TEXTAREA: HTMLInputElement;
  219. TEXTAREA_PARENT: HTMLElement;
  220. textareaStyle: CSSStyleDeclaration;
  221. }
  222. class Date extends Text {
  223. close(): void;
  224. destroyElements(): void;
  225. finishEditing(isCancelled?: boolean, ctrlDown?: boolean): void;
  226. getDatePickerConfig(): object;
  227. hideDatepicker(): void;
  228. open(event?: Event): void;
  229. showDatepicker(event?: Event): void;
  230. }
  231. class Handsontable extends Text {
  232. assignHooks(): void;
  233. beginEditing(initialValue?: any): void;
  234. close(): void;
  235. finishEditing(isCancelled?: boolean, ctrlDown?: boolean): void;
  236. focus(): void;
  237. open(): void;
  238. }
  239. class Numeric extends Text {
  240. }
  241. class Password extends Text {
  242. }
  243. class Autocomplete extends Handsontable {
  244. allowKeyEventPropagation(keyCode?: number): boolean;
  245. finishEditing(restoreOriginalValue?: boolean): void;
  246. flipDropdown(dropdownHeight?: number): void;
  247. flipDropdownIfNeeded(): void;
  248. getDropdownHeight(): number;
  249. highlightBestMatchingChoice(index?: number): void;
  250. limitDropdownIfNeeded(spaceAvailable?: number, dropdownHeight?: number): void;
  251. queryChoices(query?: any): void;
  252. sortByRelevance(value?: any, choices?: any[], caseSensitive?: boolean): any[];
  253. setDropdownHeight(height?: number): void;
  254. updateChoicesList(choices?: any[]): void;
  255. unflipDropdown(): void;
  256. updateDropdownHeight(): void;
  257. }
  258. class Dropdown extends Autocomplete {
  259. }
  260. class CommentEditor {
  261. editor: HTMLElement;
  262. editorStyle: CSSStyleDeclaration;
  263. hidden: boolean;
  264. setPosition(x: number, y: number): void;
  265. setSize(width: number, height: number): void;
  266. resetSize(): void;
  267. setReadOnlyState(state: boolean): void;
  268. show(): void;
  269. hide(): void;
  270. isVisible(): boolean;
  271. setValue(value?: string): void;
  272. getValue(): string;
  273. isFocused(): boolean;
  274. focus(): void;
  275. createEditor(): HTMLElement;
  276. getInputElement(): HTMLElement;
  277. destroy(): void;
  278. }
  279. }
  280. namespace plugins {
  281. // utils for Filters
  282. namespace FiltersPlugin {
  283. type OperationType = 'conjunction' | 'disjunction';
  284. type ConditionName = 'begins_with' | 'between' | 'by_value' | 'contains' | 'empty' | 'ends_with' | 'eq' | 'gt' |
  285. 'gte' | 'lt' | 'lte' | 'not_between' | 'not_contains' | 'not_empty' | 'neq';
  286. interface ConditionId {
  287. args: any[];
  288. name?: ConditionName
  289. command?: {
  290. key: ConditionName
  291. }
  292. }
  293. interface Condition {
  294. name: ConditionName,
  295. args: any[];
  296. func: (dataRow: CellValue, values: any[]) => boolean
  297. }
  298. interface CellLikeData {
  299. meta: {
  300. row: number,
  301. col: number,
  302. visualCol: number,
  303. visualRow: number,
  304. type: string,
  305. instance: _Handsontable.Core,
  306. dateFormat?: string
  307. },
  308. value: string
  309. }
  310. interface BaseComponent {
  311. elements: any[];
  312. hidden: boolean;
  313. destroy(): boolean;
  314. hide(): void;
  315. isHidden(): boolean;
  316. reset(): void;
  317. show(): void;
  318. }
  319. interface ActionBarComponent extends BaseComponent {
  320. getMenuItemDescriptor(): object;
  321. accept(): void;
  322. cancel(): void;
  323. }
  324. interface ConditionComponent extends BaseComponent {
  325. getInputElement(index?: number): InputUI;
  326. getInputElements(): InputUI[];
  327. getMenuItemDescriptor(): object;
  328. getSelectElement(): SelectUI;
  329. getState(): object;
  330. setState(value: object): void;
  331. updateState(stateInfo: object): void;
  332. }
  333. interface ValueComponent extends BaseComponent {
  334. getMenuItemDescriptor(): object;
  335. getMultipleSelectElement(): MultipleSelectUI;
  336. getState(): object;
  337. setState(value: object): void;
  338. updateState(stateInfo: object): void;
  339. }
  340. interface BaseUI {
  341. buildState: boolean;
  342. eventManager: EventManager;
  343. hot: _Handsontable.Core;
  344. options: object;
  345. build(): void;
  346. destroy(): void;
  347. element(): Element;
  348. focus(): void;
  349. getValue(): any;
  350. hide(): void;
  351. isBuilt(): boolean;
  352. reset(): void;
  353. setValue(value: any): any;
  354. show(): void;
  355. update(): void;
  356. }
  357. type InputUI = BaseUI
  358. interface MultipleSelectUI extends BaseUI {
  359. clearAllUI: BaseUI;
  360. items: any[];
  361. itemsBox: _Handsontable.Core;
  362. searchInput: InputUI;
  363. selectAllUI: BaseUI;
  364. getItems(): void;
  365. getValue(): any[];
  366. isSelectedAllValues(): boolean;
  367. setItems(items: any[]): void;
  368. }
  369. interface SelectUI extends BaseUI {
  370. menu: Menu | void;
  371. items: any[];
  372. setItems(items: any[]): void;
  373. openOptions(): void;
  374. closeOptions(): void;
  375. }
  376. interface ConditionCollection {
  377. conditions: object;
  378. orderStack: any[];
  379. addCondition(column: number, conditionDefinition: ConditionId, operation?: OperationType): void;
  380. clean(): void;
  381. clearConditions(column: number): void;
  382. destroy(): void;
  383. exportAllConditions(): ConditionId[];
  384. getConditions(column: number): Condition[];
  385. hasConditions(column: number, name: string): boolean;
  386. isEmpty(): boolean;
  387. isMatch(value: CellLikeData, column: number): boolean;
  388. isMatchInConditions(conditions: Condition[], value: CellLikeData, operationType?: OperationType): boolean;
  389. importAllConditions(conditions: ConditionId[]): void;
  390. removeConditions(column: number): void;
  391. }
  392. interface ConditionUpdateObserver {
  393. changes: number[];
  394. columnDataFactory: (column: number) => object[];
  395. conditionCollection: ConditionCollection;
  396. grouping: boolean;
  397. latestEditedColumnPosition: number;
  398. latestOrderStack: number[];
  399. destroy(): void;
  400. flush(): void;
  401. groupChanges(): void;
  402. updateStatesAtColumn(column: number, conditionArgsChange: object): void;
  403. }
  404. }
  405. interface BindStrategy {
  406. klass: () => void;
  407. strategy: string | void;
  408. clearMap(): void;
  409. createMap(length: number): void;
  410. createRow(params: any): void;
  411. destroy(): void;
  412. removeRow(params: any): void;
  413. setStrategy(name: string): void;
  414. translate(params: any): void;
  415. }
  416. interface CommandExecutor {
  417. hot: _Handsontable.Core;
  418. commands: object;
  419. commonCallback: (() => void) | void;
  420. registerCommand(name: string, commandDescriptor: object): void;
  421. setCommonCallback(callback: () => void): void;
  422. execute(commandName: string, ...params: any[]): void;
  423. }
  424. interface Cursor {
  425. cellHeight: number;
  426. cellWidth: number;
  427. left: number;
  428. leftRelative: number;
  429. scrollLeft: number;
  430. scrollTop: number;
  431. top: number;
  432. topRelative: number;
  433. type: string;
  434. fitsAbove(element: HTMLElement): boolean;
  435. fitsBelow(element: HTMLElement, viewportHeight?: number): boolean;
  436. fitsOnLeft(element: HTMLElement): boolean;
  437. fitsOnRight(element: HTMLElement, viewportHeight?: number): boolean;
  438. getSourceType(object: any): string;
  439. }
  440. interface Endpoints {
  441. plugin: plugins.ColumnSummary;
  442. hot: _Handsontable.Core;
  443. endpoints: any[];
  444. settings: object | (() => void);
  445. settingsType: string;
  446. currentEndpoint: object | void;
  447. assignSetting(settings: object, endpoint: object, name: string, defaultValue: any): void;
  448. getAllEndpoints(): any[];
  449. getEndpoint(index: number): object;
  450. parseSettings(settings: any[]): void;
  451. refreshAllEndpoints(init: boolean): void;
  452. refreshChangedEndpoints(changes: any[]): void;
  453. refreshEndpoint(endpoint: object): void;
  454. resetAllEndpoints(endpoints: any[], useOffset?: boolean): void;
  455. resetEndpointValue(endpoint: object, useOffset?: boolean): void;
  456. setEndpointValue(endpoint: object, source: string, render?: boolean): void;
  457. }
  458. interface EventManager {
  459. context?: object;
  460. addEventListener(element: Element, eventName: string, callback: (event: Event) => void): () => void;
  461. removeEventListener(element: Element, eventName: string, callback: (event: Event) => void): void;
  462. clearEvents(): void;
  463. clear(): void;
  464. destroy(): void;
  465. fireEvent(element: Element, eventName: string): void;
  466. extendEvent(context: object, event: Event): any;
  467. }
  468. interface GhostTable {
  469. columns: number[];
  470. container: HTMLElement | null;
  471. hot: _Handsontable.Core;
  472. injected: boolean;
  473. rows: object[];
  474. samples: object | null;
  475. settings: object;
  476. addRow(row: number, samples: object): void;
  477. addColumn(column: number, samples: object): void;
  478. addColumnHeadersRow(samples: object): void;
  479. clean(): void;
  480. createCol(column: number): DocumentFragment;
  481. createColElement(column: number): HTMLElement;
  482. createColGroupsCol(): DocumentFragment;
  483. createColumnHeadersRow(): DocumentFragment;
  484. createContainer(className?: string): object;
  485. createRow(row: number): DocumentFragment;
  486. createTable(className?: string): object;
  487. getHeights(callback: (row: number, height: number) => void): void;
  488. getWidths(callback: (row: number, height: number) => void): void;
  489. getSettings(): object | void;
  490. getSetting(name: string): boolean | void;
  491. injectTable(parent?: HTMLElement | void): void;
  492. isHorizontal(): boolean;
  493. isVertical(): boolean;
  494. removeTable(): void;
  495. setSettings(settings: DefaultSettings): void;
  496. setSetting(name: string, value: any): void;
  497. }
  498. interface ItemsFactory {
  499. defaultOrderPattern: any[] | void;
  500. hot: _Handsontable.Core;
  501. predefinedItems: object;
  502. getItems(pattern?: any[] | object | boolean): any[];
  503. setPredefinedItems(predefinedItems: any[]): void;
  504. }
  505. interface Menu {
  506. container: HTMLElement;
  507. eventManager: EventManager;
  508. hot: _Handsontable.Core;
  509. hotMenu: _Handsontable.Core;
  510. hotSubMenus: object;
  511. keyEvent: boolean;
  512. menuItems: any[] | null;
  513. offset: object;
  514. options: object;
  515. origOutsideClickDeselects: boolean | (() => void);
  516. parentMenu: Menu | null;
  517. close(closeParent?: boolean): void;
  518. closeSubMenu(row: number): void;
  519. closeAllSubMenus(): void;
  520. destroy(): void;
  521. executeCommand(event: Event): void;
  522. isOpened(): boolean;
  523. isSubMenu(): boolean;
  524. open(): void;
  525. openSubMenu(row: number): Menu | boolean;
  526. setMenuItems(menuItems: any[]): void;
  527. setOffset(area: string, offset?: number): void;
  528. selectLastCell(): void;
  529. selectFirstCell(): void;
  530. selectPrevCell(row: number, col: number): void;
  531. selectNextCell(row: number, col: number): void;
  532. setPosition(coords: Event | object): void;
  533. setPositionAboveCursor(cursor: Cursor): void;
  534. setPositionBelowCursor(cursor: Cursor): void;
  535. setPositionOnLeftOfCursor(cursor: Cursor): void;
  536. setPositionOnRightOfCursor(cursor: Cursor): void;
  537. }
  538. interface SamplesGenerator {
  539. allowDuplicates: boolean | null;
  540. customSampleCount: boolean | null;
  541. dataFactory: () => void;
  542. samples: object | null;
  543. generateColumnSamples(colRange: object, rowRange: object): object;
  544. generateRowSamples(rowRange: object | number, colRange: object): object;
  545. generateSamples(type: string, range: object, specifierRange: object | number): object;
  546. generateSample(type: string, range: object, specifierValue: number): object
  547. getSampleCount(): number;
  548. setAllowDuplicates(allowDuplicates: boolean): void;
  549. setSampleCount(sampleCount: number): void;
  550. }
  551. class Base {
  552. pluginName: string;
  553. pluginsInitializedCallback: any[];
  554. isPluginsReady: boolean;
  555. enabled: boolean;
  556. initialized: boolean;
  557. constructor(hotInstance?: _Handsontable.Core);
  558. addHook(name: string, callback: (...restOfArg: any[]) => void): void;
  559. callOnPluginsReady(callback: () => void): void;
  560. clearHooks(): void;
  561. destroy(): void;
  562. disablePlugin(): void;
  563. enablePlugin(): void;
  564. init(): void;
  565. removeHook(name: string): void;
  566. }
  567. interface AutoColumnSize extends Base {
  568. firstCalculation: boolean;
  569. ghostTable: GhostTable;
  570. inProgress: boolean;
  571. samplesGenerator: SamplesGenerator;
  572. widths: any[];
  573. calculateAllColumnsWidth(rowRange?: number | object): void;
  574. calculateColumnsWidth(colRange?: number | object, rowRange?: number | object, force?: boolean): void;
  575. clearCache(columns?: any[]): void;
  576. findColumnsWhereHeaderWasChanged(): any[];
  577. getColumnWidth(col: number, defaultWidth?: number, keepMinimum?: boolean): number;
  578. getFirstVisibleColumn(): number;
  579. getLastVisibleColumn(): number;
  580. getSyncCalculationLimit(): number;
  581. isNeedRecalculate(): boolean;
  582. recalculateAllColumnsWidth(): void;
  583. }
  584. interface AutoRowSize extends Base {
  585. firstCalculation: boolean;
  586. heights: any[];
  587. ghostTable: GhostTable;
  588. inProgress: boolean;
  589. sampleGenerator: SamplesGenerator;
  590. calculateAllRowsHeight(colRange?: number | object): void;
  591. calculateRowsHeight(rowRange?: number | object, colRange?: number | object, force?: boolean): void;
  592. clearCache(): void;
  593. clearCacheByRange(range: number | object): void;
  594. findColumnsWhereHeaderWasChanged(): any[];
  595. getColumnHeaderHeight(): number | void;
  596. getFirstVisibleRow(): number;
  597. getLastVisibleRow(): number;
  598. getRowHeight(col: number, defaultHeight?: number): number;
  599. getSyncCalculationLimit(): number;
  600. isNeedRecalculate(): boolean;
  601. recalculateAllRowsHeight(): void;
  602. }
  603. interface Autofill extends Base {
  604. addingStarted: boolean;
  605. autoInsertRow: boolean;
  606. directions: string[];
  607. eventManager: EventManager;
  608. handleDraggedCells: number;
  609. mouseDownOnCellCorner: boolean;
  610. mouseDragOutside: boolean;
  611. }
  612. interface BindRowsWithHeaders extends Base {
  613. bindStrategy: BindStrategy;
  614. removeRows: any[];
  615. }
  616. interface CollapsibleColumns extends Base {
  617. buttonEnabledList: object;
  618. collapsedSections: object;
  619. columnHeaderLevelCount: number;
  620. eventManager: EventManager;
  621. hiddenColumnsPlugin: object;
  622. nestedHeadersPlugin: object;
  623. settings: boolean | any[];
  624. checkDependencies(): void;
  625. collapseAll(): void;
  626. collapseSection(coords: object): void;
  627. expandAll(): void;
  628. expandSection(coords: object): void;
  629. generateIndicator(col: number, TH: HTMLElement): HTMLElement;
  630. markSectionAs(state: string, row: number, column: number, recursive: boolean): void;
  631. meetsDependencies(): boolean;
  632. parseSettings(): void;
  633. toggleAllCollapsibleSections(action: string): void;
  634. toggleCollapsibleSection(coords: object, action: string): void;
  635. }
  636. interface ColumnSorting extends Base {
  637. clearSort(): void;
  638. destroy(): void;
  639. getSortConfig(column: number): void | columnSorting.Config
  640. getSortConfig(): Array<columnSorting.Config>
  641. isSorted(): boolean;
  642. setSortConfig(sortConfig?: columnSorting.Config | Array<columnSorting.Config>): void;
  643. sort(sortConfig?: columnSorting.Config): void;
  644. }
  645. interface ColumnSummary extends Base {
  646. endpoints: Endpoints | void;
  647. calculate(endpoint: Endpoints): void;
  648. calculateAverage(endpoint: Endpoints): number;
  649. calculateMinMax(endpoint: Endpoints, type: string): number;
  650. calculateSum(endpoint: Endpoints): void;
  651. countEmpty(rowRange: any[], col: number): number;
  652. countEntries(endpoint: Endpoints): number;
  653. getCellValue(row: number, col: number): string;
  654. getPartialMinMax(rowRange: any[], col: number, type: string): number;
  655. getPartialSum(rowRange: any[], col: number): number;
  656. }
  657. type CommentsRangeObject = {
  658. from: wot.CellCoords,
  659. to?: wot.CellCoords
  660. }
  661. interface Comments extends Base {
  662. contextMenuEvent: boolean;
  663. displayDelay: number;
  664. editor: _editors.CommentEditor;
  665. eventManager: EventManager;
  666. mouseDown: boolean;
  667. range: CommentsRangeObject;
  668. timer: any;
  669. clearRange(): void;
  670. getComment(): string;
  671. getCommentMeta(row: number, column: number, property: string): any;
  672. hide(): void;
  673. refreshEditor(force?: boolean): void;
  674. removeComment(forceRender?: boolean): void;
  675. removeCommentAtCell(row: number, col: number, forceRender?: boolean): void;
  676. setComment(value: string): void;
  677. setCommentAtCell(row: number, col: number, value: string): void;
  678. setRange(range: CommentsRangeObject): void;
  679. show(): boolean;
  680. showAtCell(row: number, col: number): boolean;
  681. targetIsCellWithComment(event: Event): boolean;
  682. targetIsCommentTextArea(event: Event): boolean;
  683. updateCommentMeta(row: number, column: number, metaObject: object): void;
  684. }
  685. interface ContextMenu extends Base {
  686. eventManager: EventManager;
  687. commandExecutor: CommandExecutor;
  688. itemsFactory: ItemsFactory | void;
  689. menu: Menu | void;
  690. close(): void;
  691. executeCommand(commandName: string, ...params: any[]): void;
  692. open(event: Event): void;
  693. }
  694. interface FocusableWrapper {
  695. mainElement: HTMLElement;
  696. eventManager: EventManager;
  697. listenersCount: WeakSet<HTMLElement>;
  698. useSecondaryElement(): void;
  699. setFocusableElement(element: HTMLElement): void;
  700. getFocusableElement(): HTMLElement;
  701. focus(): void;
  702. }
  703. type PasteModeType = 'overwrite' | 'shift_down' | 'shift_right';
  704. type RangeType = { startRow: number, startCol: number, endRow: number, endCol: number };
  705. interface CopyPaste extends Base {
  706. eventManager: EventManager;
  707. columnsLimit: number;
  708. copyableRanges: any[];
  709. pasteMode: PasteModeType;
  710. rowsLimit: number;
  711. focusableElement: FocusableWrapper;
  712. setCopyableText(): void;
  713. getRangedCopyableData(ranges: RangeType[]): string;
  714. getRangedData(ranges: RangeType[]): any[];
  715. copy(triggeredByClick?: boolean): void;
  716. cut(triggeredByClick?: boolean): void;
  717. paste(triggeredByClick?: boolean): void;
  718. }
  719. interface CustomBorders extends Base {
  720. savedBorderSettings: any[];
  721. setBorders(selection: Range[] | Array<[number, number, number, number]>, borderObject: object): void;
  722. getBorders(selection: Range[] | Array<[number, number, number, number]>): Array<[object]>;
  723. clearBorders(selection: Range[] | Array<[number, number, number, number]>): void;
  724. }
  725. interface DragToScroll extends Base {
  726. boundaries: object | void;
  727. callback: (() => void) | void;
  728. check(x: number, y: number): void;
  729. setBoundaries(boundaries: object): void;
  730. setCallback(callback: () => void): void;
  731. }
  732. type SeparatorObject = {
  733. name: string;
  734. }
  735. interface DropdownMenu extends Base {
  736. eventManager: EventManager;
  737. commandExecutor: CommandExecutor;
  738. itemsFactory: ItemsFactory | void;
  739. menu: Menu | void;
  740. SEPARATOR: SeparatorObject
  741. close(): void;
  742. executeCommand(commandName: string, ...params: any[]): void;
  743. open(event: Event): void;
  744. }
  745. interface ExportFile extends Base {
  746. downloadFile(format: string, options: object): void;
  747. exportAsString(format: string, options?: object): string;
  748. exportAsBlob(format: string, options?: object): Blob;
  749. }
  750. interface Filters extends Base {
  751. actionBarComponent: FiltersPlugin.ActionBarComponent | void;
  752. dropdownMenuPlugin: DropdownMenu | void;
  753. eventManager: EventManager;
  754. conditionComponent: FiltersPlugin.ConditionComponent | void;
  755. conditionCollection: FiltersPlugin.ConditionCollection | void;
  756. conditionUpdateObserver: FiltersPlugin.ConditionUpdateObserver | void;
  757. lastSelectedColumn?: number | void;
  758. trimRowsPlugin: TrimRows | void;
  759. valueComponent: FiltersPlugin.ValueComponent | void;
  760. addCondition(column: number, name: string, args: any[], operationId: FiltersPlugin.OperationType): void;
  761. clearColumnSelection(): void;
  762. clearConditions(column?: number | void): void;
  763. getDataMapAtColumn(column: number): FiltersPlugin.CellLikeData[];
  764. getSelectedColumn(): number | void;
  765. filter(): void;
  766. removeConditions(column: number): void;
  767. }
  768. interface RecordTranslator {
  769. hot: _Handsontable.Core;
  770. toPhysical(row: number | object, column?: number): object | any[];
  771. toPhysicalColumn(column: number): number;
  772. toPhysicalRow(row: number): number;
  773. toVisual(row: number | object, column?: number): object | any[];
  774. toVisualColumn(column: number): number;
  775. toVisualRow(row: number): number;
  776. }
  777. interface DataProvider {
  778. changes: object;
  779. hot: _Handsontable.Core;
  780. t: RecordTranslator;
  781. clearChanges(): void;
  782. collectChanges(row: number, column: number, value: any): void;
  783. destroy(): void;
  784. getDataAtCell(row: number, column: number): any;
  785. getDataByRange(row1: number, column1: number, row2: number, column2: number): any[];
  786. getRawDataAtCell(row: number, column: number): any;
  787. getRawDataByRange(row1: number, column1: number, row2: number, column2: number): any[];
  788. getSourceDataByRange(row1: number, column1: number, row2: number, column2: number): any[];
  789. getSourceDataAtCell(row: number, column: number): any;
  790. isInDataRange(row: number, column: number): boolean;
  791. updateSourceData(row: number, column: number, value: any): void;
  792. }
  793. interface AlterManager {
  794. sheet: Sheet;
  795. hot: _Handsontable.Core;
  796. dataProvider: DataProvider;
  797. matrix: Matrix;
  798. prepareAlter(action: string, args: any): void;
  799. triggerAlter(action: string, args: any): void;
  800. destroy(): void;
  801. }
  802. interface Matrix {
  803. t: RecordTranslator;
  804. data: any[];
  805. cellReferences: any[];
  806. getCellAt(row: number, column: number): CellValue | void;
  807. getOutOfDateCells(): any[];
  808. add(cellValue: CellValue | object): void;
  809. remove(cellValue: CellValue | object | any[]): void;
  810. getDependencies(cellCoord: object): void;
  811. registerCellRef(cellReference: CellReference | object): void;
  812. removeCellRefsAtRange(start: object, end: object): any[];
  813. reset(): void;
  814. }
  815. interface BaseCell {
  816. columnAbsolute: boolean;
  817. columnOffset: number;
  818. rowAbsolute: boolean;
  819. rowOffset: number;
  820. isEqual(cell: BaseCell): boolean;
  821. toString(): string;
  822. translateTo(rowOffset: number, columnOffset: number): void;
  823. }
  824. type CellReference = BaseCell
  825. interface CellValue extends BaseCell {
  826. error: string | void;
  827. precedents: any[];
  828. state: string;
  829. value: any;
  830. addPrecedent(cellReference: CellReference): void;
  831. clearPrecedents(): void;
  832. getError(): string | void;
  833. getPrecedents(): any[];
  834. getValue(): any;
  835. hasError(): boolean;
  836. hasPrecedent(cellReference: CellReference): boolean;
  837. hasPrecedents(): boolean;
  838. isState(state: number): boolean;
  839. removePrecedent(cellReference: CellReference): void;
  840. setError(error: string): void;
  841. setState(state: number): void;
  842. setValue(value: any): void;
  843. }
  844. type Parser = {};
  845. interface Sheet {
  846. alterManager: AlterManager
  847. dataProvider: DataProvider;
  848. hot: _Handsontable.Core;
  849. matrix: Matrix;
  850. parser: Parser;
  851. t: RecordTranslator;
  852. applyChanges(row: number, column: number, newValue: any): void;
  853. destroy(): void;
  854. getCellAt(row: number, column: number): CellValue | void;
  855. getCellDependencies(row: number, column: number): any[];
  856. getVariable(name: string): any;
  857. parseExpression(cellValue: CellValue | object, formula: string): void;
  858. recalculate(): void;
  859. recalculateFull(): void;
  860. recalculateOptimized(): void;
  861. setVariable(name: string, value: any): void;
  862. }
  863. interface Stack {
  864. items: any[];
  865. isEmpty(): boolean;
  866. peek(): any;
  867. pop(): any;
  868. push(items: any): void;
  869. size(): number;
  870. }
  871. interface UndoRedoSnapshot {
  872. sheet: Sheet;
  873. stack: Stack;
  874. destroy(): void;
  875. restore(): void;
  876. save(axis: string, index: number, amount: number): void;
  877. }
  878. interface Formulas extends Base {
  879. dataProvider: DataProvider;
  880. eventManager: EventManager;
  881. sheet: Sheet;
  882. undoRedoSnapshot: UndoRedoSnapshot;
  883. getCellValue(row: number, column: number): any;
  884. getVariable(name: string): any;
  885. hasComputedCellValue(row: number, column: number): boolean;
  886. recalculate(): void;
  887. recalculateFull(): void;
  888. recalculateOptimized(): void;
  889. setVariable(name: string, value: any): void;
  890. }
  891. interface GanttChart extends Base {
  892. colorData: object;
  893. currentYear: number | void;
  894. dateCalculator: object | void;
  895. dataFeed: object | void;
  896. hotSource: _Handsontable.Core | void;
  897. initialSettings: object | void;
  898. monthHeadersArray: any[];
  899. monthList: any[];
  900. nestedHeadersPlugin: NestedHeaders | void;
  901. overallWeekSectionCount: number | void;
  902. rangeBarMeta: object | void;
  903. rangeBars: object;
  904. rangeList: object;
  905. settings: object;
  906. weekHeadersArray: any[];
  907. addRangeBar(row: number, startDate: Date | string, endDate: Date | string, additionalData: object): boolean | any[];
  908. applyRangeBarMetaCache(): void;
  909. cacheRangeBarMeta(row: number, col: number, key: string, value: any | any[]): void;
  910. checkDependencies(): void;
  911. getRangeBarCoordinates(row: number): object;
  912. getRangeBarData(row: number, column: number): object | boolean;
  913. renderRangeBar(row: number, startDateColumn: number, endDateColumn: number, additionalData: object): void;
  914. removeRangeBarByDate(row: number, startDate: Date | string): void;
  915. removeRangeBarByColumn(row: number, startDateColumn: number): void;
  916. removeAllRangeBars(): void;
  917. setRangeBarColors(rows: object): void;
  918. setYear(year: number): void;
  919. uniformBackgroundRenderer(instance: _Handsontable.Core, TD: HTMLElement, row: number, col: number, prop: string | number, value: string | number, cellProperties: GridSettings): void;
  920. unrenderRangeBar(row: number, startDateColumn: number, endDateColumn: number): void;
  921. updateRangeBarData(row: number, column: number, data: object): void;
  922. }
  923. interface HeaderTooltips extends Base {
  924. settings: boolean | object;
  925. parseSettings(): void;
  926. }
  927. interface HiddenColumns extends Base {
  928. hiddenColumns: boolean | any[];
  929. lastSelectedColumn: number;
  930. settings: object | void;
  931. isHidden(column: number, isLogicIndex?: boolean): boolean;
  932. hideColumn(column: number): void;
  933. hideColumns(columns: any[]): void;
  934. showColumn(column: number): void;
  935. showColumns(columns: any[]): void;
  936. }
  937. interface HiddenRows extends Base {
  938. hiddenRows: boolean | any[];
  939. lastSelectedRow: number;
  940. settings: object | void;
  941. isHidden(row: number, isLogicIndex?: boolean): boolean;
  942. hideRow(row: number): void;
  943. hideRows(rows: any[]): void;
  944. showRow(row: number): void;
  945. showRows(rows: any[]): void;
  946. }
  947. interface ManualColumnFreeze extends Base {
  948. frozenColumnsBasePositions: any[];
  949. manualColumnMovePlugin: ManualColumnMove;
  950. freezeColumn(column: number): void;
  951. unfreezeColumn(column: number): void;
  952. }
  953. interface arrayMapper {
  954. getValueByIndex(index: number): any;
  955. getIndexByValue(value: any): number;
  956. insertItems(index: number, amount?: number): any[];
  957. removeItems(index: number, amount?: number): any[];
  958. shiftItems(index: number, amount?: number): void;
  959. unshiftItems(index: number, amount?: number): void;
  960. }
  961. interface MoveColumnsMapper extends arrayMapper {
  962. manualColumnMove: ManualColumnMove;
  963. clearNull(): void;
  964. createMap(length?: number): void;
  965. destroy(): void;
  966. moveColumn(from: number, to: number): void;
  967. }
  968. interface MoveRowsMapper extends arrayMapper {
  969. manualRowMove: ManualRowMove;
  970. clearNull(): void;
  971. createMap(length?: number): void;
  972. destroy(): void;
  973. moveColumn(from: number, to: number): void;
  974. }
  975. interface MultiColumnSorting extends Base {
  976. clearSort(): void;
  977. destroy(): void;
  978. getSortConfig(column: number): void | columnSorting.Config
  979. getSortConfig(): Array<columnSorting.Config>
  980. isSorted(): boolean;
  981. setSortConfig(sortConfig?: columnSorting.Config | Array<columnSorting.Config>): void;
  982. sort(sortConfig?: columnSorting.Config | Array<columnSorting.Config>): void;
  983. }
  984. interface TrimRowsMapper extends arrayMapper {
  985. trimRows: TrimRows;
  986. createMap(length?: number): void;
  987. destroy(): void;
  988. }
  989. namespace moveUI {
  990. interface BaseUI {
  991. hot: _Handsontable.Core;
  992. state: number;
  993. appendTo(wrapper: HTMLElement): void;
  994. build(): void;
  995. destroy(): void;
  996. getOffset(): object;
  997. getPosition(): object;
  998. getSize(): object;
  999. isAppended(): boolean;
  1000. isBuilt(): boolean;
  1001. setOffset(top: number, left: number): void;
  1002. setPosition(top: number, left: number): void;
  1003. setSize(width: number, height: number): void;
  1004. }
  1005. type BacklightUI = BaseUI
  1006. type GuidelineUI = BaseUI
  1007. }
  1008. interface MergeCells extends Base {
  1009. mergedCellsCollection: MergeCellsPlugin.MergedCellsCollection;
  1010. autofillCalculations: MergeCellsPlugin.AutofillCalculations;
  1011. selectionCalculations: MergeCellsPlugin.SelectionCalculations;
  1012. clearCollections(): void;
  1013. mergeSelection(cellRange: wot.CellRange): void;
  1014. merge(startRow: number, startColumn: number, endRow: number, endColumn: number): void;
  1015. unmerge(startRow: number, startColumn: number, endRow: number, endColumn: number): void;
  1016. }
  1017. namespace MergeCellsPlugin {
  1018. interface AutofillCalculations {
  1019. plugin: MergeCells;
  1020. mergedCellsCollection: MergeCellsPlugin.MergedCellsCollection;
  1021. currentFillData: object;
  1022. correctSelectionAreaSize(selectionArea: number[]): void;
  1023. getDirection(selectionArea: number[], finalArea: number[]): string;
  1024. snapDragArea(baseArea: number[], dragArea: number[], dragDirection: string, foundMergedCells: MergeCellsPlugin.MergedCellCoords[]): number[];
  1025. recreateAfterDataPopulation(changes: any[]): void;
  1026. dragAreaOverlapsCollections(baseArea: number[], fullArea: number[], direction: string): boolean;
  1027. }
  1028. interface SelectionCalculations {
  1029. snapDelta(delta: object, selectionRange: wot.CellRange, mergedCell: MergeCellsPlugin.MergedCellCoords): void;
  1030. getUpdatedSelectionRange(oldSelectionRange: wot.CellRange, delta: object): wot.CellRange;
  1031. }
  1032. interface MergedCellCoords {
  1033. row: number;
  1034. col: number;
  1035. rowspan: number;
  1036. colspan: number;
  1037. removed: boolean;
  1038. normalize(hotInstance: _Handsontable.Core): void;
  1039. includes(row: number, column: number): boolean;
  1040. includesHorizontally(column: number): boolean;
  1041. includesVertically(row: number): boolean;
  1042. shift(shiftVector: number[], indexOfChange: number): boolean;
  1043. isFarther(mergedCell: MergeCellsPlugin.MergedCellCoords, direction: string): boolean | void;
  1044. getLastRow(): number;
  1045. getLastColumn(): number;
  1046. getRange(): wot.CellRange;
  1047. }
  1048. interface MergedCellsCollection {
  1049. plugin: MergeCells;
  1050. mergedCells: MergeCellsPlugin.MergedCellCoords[];
  1051. hot: _Handsontable.Core;
  1052. get(row: number, column: number): MergeCellsPlugin.MergedCellCoords | boolean;
  1053. getByRange(range: wot.CellRange | object): MergeCellsPlugin.MergedCellCoords | boolean;
  1054. getWithinRange(range: wot.CellRange | object, countPartials: boolean): MergeCellsPlugin.MergedCellCoords[] | boolean;
  1055. add(mergedCellInfo: object): MergeCellsPlugin.MergedCellCoords | boolean;
  1056. remove(row: number, column: number): MergeCellsPlugin.MergedCellCoords | boolean;
  1057. clear(): void;
  1058. isOverlapping(mergedCell: MergeCellsPlugin.MergedCellCoords): boolean;
  1059. isMergedParent(row: number, column: number): boolean;
  1060. shiftCollections(direction: string, index: number, count: number): void;
  1061. }
  1062. }
  1063. interface ManualColumnMove extends Base {
  1064. backlight: moveUI.BacklightUI;
  1065. columnsMapper: MoveColumnsMapper;
  1066. eventManager: EventManager;
  1067. guideline: moveUI.GuidelineUI;
  1068. removedColumns: any[];
  1069. moveColumn(column: number, target: number): void;
  1070. moveColumns(columns: number[], target: number): void;
  1071. }
  1072. interface ManualColumnResize extends Base {
  1073. autoresizeTimeout: (() => void) | void;
  1074. currentCol: number | void;
  1075. currentTH: HTMLElement | void;
  1076. currentWidth: number | void;
  1077. dblclick: number;
  1078. eventManager: EventManager;
  1079. guide: HTMLElement;
  1080. handle: HTMLElement;
  1081. manualColumnWidths: any[];
  1082. newSize: number | void;
  1083. pressed: _Handsontable.Core | void;
  1084. selectedCols: any[];
  1085. startOffset: number | void;
  1086. startWidth: number | void;
  1087. startY: number | void;
  1088. checkIfColumnHeader(element: HTMLElement): boolean;
  1089. clearManualSize(column: number): void;
  1090. getTHFromTargetElement(element: HTMLElement): HTMLElement;
  1091. hideHandleAndGuide(): void;
  1092. loadManualColumnWidths(): void;
  1093. refreshGuidePosition(): void;
  1094. refreshHandlePosition(): void;
  1095. saveManualColumnWidths(): void;
  1096. setManualSize(column: number, width: number): number;
  1097. setupGuidePosition(): void;
  1098. setupHandlePosition(TH: HTMLElement): boolean | void;
  1099. }
  1100. interface ManualRowMove extends Base {
  1101. backlight: moveUI.BacklightUI;
  1102. eventManager: EventManager;
  1103. guideline: moveUI.GuidelineUI;
  1104. removedRows: any[];
  1105. rowsMapper: MoveRowsMapper;
  1106. moveRow(row: number, target: number): void;
  1107. moveRows(rows: number[], target: number): void;
  1108. }
  1109. interface ManualRowResize extends Base {
  1110. autoresizeTimeout: (() => void) | void;
  1111. currentRow: number | void;
  1112. currentTH: HTMLElement | void;
  1113. currentWidth: number | void;
  1114. dblclick: number;
  1115. eventManager: EventManager;
  1116. guide: HTMLElement;
  1117. handle: HTMLElement;
  1118. manualRowHeights: any[];
  1119. newSize: number | void;
  1120. pressed: _Handsontable.Core | void;
  1121. selectedRows: any[];
  1122. startOffset: number | void;
  1123. startWidth: number | void;
  1124. startY: number | void;
  1125. checkIfRowHeader(element: HTMLElement): boolean;
  1126. clearManualSize(column: number): void;
  1127. getTHFromTargetElement(element: HTMLElement): HTMLElement;
  1128. hideHandleAndGuide(): void;
  1129. loadManualRowHeights(): void;
  1130. refreshGuidePosition(): void;
  1131. refreshHandlePosition(): void;
  1132. saveManualRowHeights(): void;
  1133. setManualSize(column: number, width: number): number;
  1134. setupGuidePosition(): void;
  1135. setupHandlePosition(TH: HTMLElement): boolean | void;
  1136. }
  1137. interface MultipleSelectionHandles extends Base {
  1138. dragged: any[];
  1139. eventManager: EventManager;
  1140. lastSetCell: HTMLElement | void;
  1141. getCurrentRangeCoords(selectedRange: wot.CellRange, currentTouch: wot.CellCoords, touchStartDirection: string, currentDirection: string, draggedHandle: string): object;
  1142. isDragged(): boolean;
  1143. }
  1144. interface GhostTableNestedHeaders {
  1145. container: any;
  1146. nestedHeaders: NestedHeaders;
  1147. widthsCache: any[];
  1148. clear(): void;
  1149. }
  1150. interface NestedHeaders extends Base {
  1151. colspanArray: any[];
  1152. columnHeaderLevelCount: number;
  1153. ghostTable: GhostTableNestedHeaders;
  1154. settings: any[];
  1155. checkForFixedColumnsCollision(): void;
  1156. checkForOverlappingHeaders(): void;
  1157. getChildHeaders(row: number, column: number): any[];
  1158. fillColspanArrayWithDummies(colspan: number, level: number): void;
  1159. fillTheRemainingColspans(): void;
  1160. getColspan(row: number, column: number): number;
  1161. getNestedParent(level: number, column: number): any;
  1162. headerRendererFactory(headerRow: number): () => void;
  1163. levelToRowCoords(level: number): number;
  1164. rowCoordsToLevel(row: number): number;
  1165. setupColspanArray(): void;
  1166. }
  1167. interface DataManager {
  1168. cache: object;
  1169. data: object;
  1170. hot: _Handsontable.Core;
  1171. parentReference: any; // WeakMap
  1172. plugin: NestedRows;
  1173. addChild(parent: object, element?: object): void;
  1174. addChildAtIndex(parent: object, index: number, element?: object, globalIndex?: number): void;
  1175. addSibling(index: number, where?: string): void;
  1176. countAllRows(): number;
  1177. countChildren(parent: object | number): number;
  1178. detachFromParent(elements: object | any[], forceRender?: boolean): void;
  1179. getDataObject(row: number): any | void;
  1180. getRowIndex(rowObj: object): number | void;
  1181. getRowIndexWithinParent(row: number | object): number;
  1182. getRowLevel(row: number): number | void;
  1183. getRowParent(row: number | object): object | void;
  1184. hasChildren(row: number | object): boolean;
  1185. isParent(row: number | object): boolean;
  1186. moveRow(fromIndex: number, toIndex: number): void;
  1187. rewriteCache(): void;
  1188. }
  1189. interface NestedRows extends Base {
  1190. bindRowsWithHeadersPlugin: BindRowsWithHeaders | void;
  1191. dataManager: DataManager | void;
  1192. headersUI: object | void;
  1193. sourceData: object | void;
  1194. trimRowsPlugin: TrimRows | void;
  1195. }
  1196. interface DataObserver {
  1197. observedData: any[];
  1198. observer: object;
  1199. paused: boolean;
  1200. destroy(): void;
  1201. isPaused(): boolean;
  1202. pause(): void;
  1203. resume(): void;
  1204. setObservedData(observedData: any): void;
  1205. }
  1206. interface ObserveChanges extends Base {
  1207. observer: DataObserver | void;
  1208. }
  1209. interface TouchScroll extends Base {
  1210. clones: any[];
  1211. lockedCollection: boolean;
  1212. scrollbars: any[];
  1213. }
  1214. interface TrimRows extends Base {
  1215. trimmedRows: any[];
  1216. removedRows: any[];
  1217. rowsMapper: TrimRowsMapper;
  1218. isTrimmed(row: number): boolean;
  1219. trimRow(row: number): void;
  1220. trimRows(rows: number[]): void;
  1221. untrimAll(): void;
  1222. untrimRow(row: number): void;
  1223. untrimRows(rows: number[]): void;
  1224. }
  1225. interface Search extends Base {
  1226. callback: () => void;
  1227. queryMethod: () => void;
  1228. searchResultClass: string;
  1229. query(queryStr: string, callback: () => void, queryMethod: () => void): any[];
  1230. getCallback(): () => void;
  1231. setCallback(newCallback: () => void): void;
  1232. getQueryMethod(): () => void;
  1233. setQueryMethod(newQueryMethod: () => void): void;
  1234. getSearchResultClass(): string;
  1235. setSearchResultClass(newElementClass: string): void;
  1236. }
  1237. }
  1238. namespace renderers {
  1239. interface Base {
  1240. (instance: _Handsontable.Core, TD: HTMLElement, row: number, col: number, prop: string | number, value: any, cellProperties: GridSettings): HTMLElement;
  1241. }
  1242. type Autocomplete = Base
  1243. type Checkbox = Base
  1244. type Html = Base
  1245. type Numeric = Base
  1246. type Password = Base
  1247. type Text = Base
  1248. }
  1249. interface DefaultSettings extends GridSettings {
  1250. }
  1251. interface DefaultSettings extends Hooks {
  1252. }
  1253. interface GridSettings extends Hooks {
  1254. activeHeaderClassName?: string;
  1255. allowEmpty?: boolean;
  1256. allowHtml?: boolean;
  1257. allowInsertColumn?: boolean;
  1258. allowInsertRow?: boolean;
  1259. allowInvalid?: boolean;
  1260. allowRemoveColumn?: boolean;
  1261. allowRemoveRow?: boolean;
  1262. autoColumnSize?: object | boolean;
  1263. autoComplete?: any[];
  1264. autoRowSize?: object | boolean;
  1265. autoWrapCol?: boolean;
  1266. autoWrapRow?: boolean;
  1267. bindRowsWithHeaders?: boolean | string; // pro
  1268. cell?: any[];
  1269. cells?: (row?: number, col?: number, prop?: object) => GridSettings;
  1270. checkedTemplate?: boolean | string;
  1271. className?: string | any[];
  1272. colHeaders?: ((index?: number) => void) | boolean | any[];
  1273. collapsibleColumns?: boolean | any[]; // pro
  1274. columnHeaderHeight?: number | any[];
  1275. columns?: ((index?: number) => void) | any[];
  1276. columnSorting?: boolean | columnSorting.Settings;
  1277. columnSummary?: object; // pro
  1278. colWidths?: ((index?: number) => void) | number | string | any[];
  1279. commentedCellClassName?: string;
  1280. comments?: boolean | CommentObject[];
  1281. contextMenu?: boolean | any[] | contextMenu.Settings;
  1282. contextMenuCopyPaste?: object;
  1283. copyable?: boolean;
  1284. copyColsLimit?: number;
  1285. copyPaste?: boolean;
  1286. copyRowsLimit?: number;
  1287. correctFormat?: boolean;
  1288. currentColClassName?: string;
  1289. currentHeaderClassName?: string;
  1290. currentRowClassName?: string;
  1291. customBorders?: boolean | any[];
  1292. data?: any | any[];
  1293. dataSchema?: object;
  1294. dateFormat?: string;
  1295. numericFormat?: object;
  1296. debug?: boolean;
  1297. defaultDate?: string;
  1298. disableVisualSelection?: boolean | string | any[];
  1299. dragToScroll?: boolean;
  1300. dropdownMenu?: boolean | object | any[]; // pro
  1301. editor?: string | (() => void) | boolean;
  1302. enterBeginsEditing?: boolean;
  1303. enterMoves?: object | (() => void);
  1304. fillHandle?: boolean | string | object;
  1305. filter?: boolean;
  1306. filteringCaseSensitive?: boolean;
  1307. filters?: boolean; // pro
  1308. fixedColumnsLeft?: number;
  1309. fixedRowsBottom?: number; // pro
  1310. fixedRowsTop?: number;
  1311. fragmentSelection?: boolean | string;
  1312. ganttChart?: object; // pro
  1313. headerTooltips?: boolean | object; // pro
  1314. height?: number | (() => void);
  1315. hiddenColumns?: boolean | object; // pro
  1316. hiddenRows?: boolean | object; // pro
  1317. invalidCellClassName?: string;
  1318. isEmptyCol?: (col: number) => boolean;
  1319. isEmptyRow?: (row: number) => boolean;
  1320. label?: object;
  1321. language?: string;
  1322. manualColumnFreeze?: boolean;
  1323. manualColumnMove?: boolean | any[];
  1324. manualColumnResize?: boolean | any[];
  1325. manualRowMove?: boolean | any[];
  1326. manualRowResize?: boolean | any[];
  1327. maxCols?: number;
  1328. maxRows?: number;
  1329. mergeCells?: boolean | any[];
  1330. minCols?: number;
  1331. minRows?: number;
  1332. minSpareCols?: number;
  1333. minSpareRows?: number;
  1334. multiColumnSorting?: boolean | multiColumnSorting.Settings;
  1335. selectionMode?: 'single' | 'range' | 'multiple';
  1336. nestedHeaders?: any[]; // pro
  1337. noWordWrapClassName?: string;
  1338. observeChanges?: boolean;
  1339. observeDOMVisibility?: boolean;
  1340. outsideClickDeselects?: boolean | ((target: HTMLElement) => boolean);
  1341. pasteMode?: string;
  1342. persistentState?: boolean;
  1343. placeholder?: any;
  1344. placeholderCellClassName?: string;
  1345. preventOverflow?: string | boolean;
  1346. readOnly?: boolean;
  1347. readOnlyCellClassName?: string;
  1348. renderAllRows?: boolean;
  1349. renderer?: string | renderers.Base;
  1350. rowHeaders?: boolean | any[] | ((index: number) => string | number);
  1351. rowHeaderWidth?: number | any[];
  1352. rowHeights?: any[] | (() => void) | number | string;
  1353. search?: boolean;
  1354. selectOptions?: any[];
  1355. skipColumnOnPaste?: boolean;
  1356. sortByRelevance?: boolean;
  1357. source?: any[] | (() => void);
  1358. startCols?: number;
  1359. startRows?: number;
  1360. stretchH?: string;
  1361. strict?: boolean;
  1362. tableClassName?: string | any[];
  1363. tabMoves?: object;
  1364. title?: string;
  1365. trimDropdown?: boolean;
  1366. trimRows?: boolean; // pro
  1367. trimWhitespace?: boolean;
  1368. type?: string;
  1369. uncheckedTemplate?: boolean | string;
  1370. undo?: boolean;
  1371. valid?: boolean;
  1372. validator?: (value: any, callback: (valid: boolean) => void) => void | RegExp;
  1373. viewportColumnRenderingOffset?: number | string;
  1374. viewportRowRenderingOffset?: number | string;
  1375. visibleRows?: number;
  1376. width?: number | (() => void);
  1377. wordWrap?: boolean;
  1378. // 自定义添加
  1379. prop?: string;
  1380. }
  1381. interface Hooks {
  1382. afterAddChild?: (parent: object, element: object | void, index: number | void) => void;
  1383. afterBeginEditing?: (row: number, column: number) => void;
  1384. afterCellMetaReset?: () => void;
  1385. afterChange?: (changes: [number, string | number, any, any][], source: string) => void;
  1386. afterChangesObserved?: () => void;
  1387. afterColumnMove?: (startColumn: number, endColumn: number) => void;
  1388. afterColumnResize?: (currentColumn: number, newSize: number, isDoubleClick: boolean) => void;
  1389. afterColumnSort?: (currentSortConfig: object[], destinationSortConfigs: object[]) => void;
  1390. afterContextMenuDefaultOptions?: (predefinedItems: any[]) => void;
  1391. afterContextMenuHide?: (context: Handsontable.plugins.ContextMenu) => void;
  1392. afterContextMenuShow?: (context: Handsontable.plugins.ContextMenu) => void;
  1393. afterCopy?: (data: any[], coords: any[]) => void;
  1394. afterCopyLimit?: (selectedRows: number, selectedColumnds: number, copyRowsLimit: number, copyColumnsLimit: number) => void;
  1395. afterCreateCol?: (index: number, amount: number) => void;
  1396. afterCreateRow?: (index: number, amount: number) => void;
  1397. afterCut?: (data: any[], coords: any[]) => void;
  1398. afterDeselect?: () => void;
  1399. afterDestroy?: () => void;
  1400. afterDetachChild?: (parent: object, element: object) => void;
  1401. afterDocumentKeyDown?: (event: Event) => void;
  1402. afterDrawSelection?: (currentRow: number, currentColumn: number, cornersOfSelection: number[], layerLevel: number | void) => string | void
  1403. afterDropdownMenuDefaultOptions?: (predefinedItems: any[]) => void;
  1404. afterDropdownMenuHide?: (instance: Handsontable.plugins.DropdownMenu) => void;
  1405. afterDropdownMenuShow?: (instance: Handsontable.plugins.DropdownMenu) => void;
  1406. afterFilter?: (formulasStack: any[]) => void;
  1407. afterGetCellMeta?: (row: number, col: number, cellProperties: GridSettings) => void;
  1408. afterGetColHeader?: (col: number, TH: Element) => void;
  1409. afterGetColumnHeaderRenderers?: (array: any[]) => void;
  1410. afterGetRowHeader?: (row: number, TH: Element) => void;
  1411. afterGetRowHeaderRenderers?: (array: any[]) => void;
  1412. afterInit?: () => void;
  1413. afterLanguageChange?: (languageCode: string) => void;
  1414. afterListen?: () => void;
  1415. afterLoadData?: (firstTime: boolean) => void;
  1416. afterMergeCells?: (cellRange: wot.CellRange, mergeParent: object, auto: boolean) => void;
  1417. afterModifyTransformEnd?: (coords: wot.CellCoords, rowTransformDir: number, colTransformDir: number) => void;
  1418. afterModifyTransformStart?: (coords: wot.CellCoords, rowTransformDir: number, colTransformDir: number) => void;
  1419. afterMomentumScroll?: () => void;
  1420. afterOnCellContextMenu?: (event: MouseEvent, coords: wot.CellCoords, TD: Element) => void;
  1421. afterOnCellCornerDblClick?: (event: MouseEvent) => void;
  1422. afterOnCellCornerMouseDown?: (event: MouseEvent) => void;
  1423. afterOnCellMouseDown?: (event: MouseEvent, coords: wot.CellCoords, TD: Element) => void;
  1424. afterOnCellMouseOver?: (event: MouseEvent, coords: wot.CellCoords, TD: Element) => void;
  1425. afterOnCellMouseOut?: (event: MouseEvent, coords: wot.CellCoords, TD: Element) => void;
  1426. afterOnCellMouseUp?: (event: MouseEvent, coords: wot.CellCoords, TD: Element) => void;
  1427. afterPaste?: (data: any[], coords: any[]) => void;
  1428. afterPluginsInitialized?: () => void;
  1429. afterRedo?: (action: object) => void;
  1430. afterRemoveCellMeta?: (row: number, column: number, key: string, value: any) => void;
  1431. afterRemoveCol?: (index: number, amount: number) => void;
  1432. afterRemoveRow?: (index: number, amount: number) => void;
  1433. afterRender?: (isForced: boolean) => void;
  1434. afterRenderer?: (TD: Element, row: number, col: number, prop: string | number, value: string, cellProperties: GridSettings) => void;
  1435. afterRowMove?: (startRow: number, endRow: number) => void;
  1436. afterRowResize?: (currentRow: number, newSize: number, isDoubleClick: boolean) => void;
  1437. afterScrollHorizontally?: () => void;
  1438. afterScrollVertically?: () => void;
  1439. afterSelection?: (r: number, c: number, r2: number, c2: number, preventScrolling: object, selectionLayerLevel: number) => void;
  1440. afterSelectionByProp?: (r: number, p: string, r2: number, p2: string, preventScrolling: object, selectionLayerLevel: number) => void;
  1441. afterSelectionEnd?: (r: number, c: number, r2: number, c2: number, selectionLayerLevel: number) => void;
  1442. afterSelectionEndByProp?: (r: number, p: string, r2: number, p2: string, selectionLayerLevel: number) => void;
  1443. afterSetCellMeta?: (row: number, col: number, key: string, value: any) => void;
  1444. afterSetDataAtCell?: (changes: any[], source?: string) => void;
  1445. afterSetDataAtRowProp?: (changes: any[], source?: string) => void;
  1446. afterTrimRow?: (rows: any[]) => void;
  1447. afterUndo?: (action: object) => void;
  1448. afterUnlisten?: () => void;
  1449. afterUnmergeCells?: (cellRange: wot.CellRange, auto: boolean) => void;
  1450. afterUntrimRow?: (rows: any[]) => void;
  1451. afterUpdateSettings?: () => void;
  1452. afterValidate?: (isValid: boolean, value: any, row: number, prop: string | number, source: string) => void | boolean;
  1453. afterViewportColumnCalculatorOverride?: (calc: object) => void;
  1454. afterViewportRowCalculatorOverride?: (calc: object) => void;
  1455. beforeAddChild?: (parent: object, element: object | void, index: number | void) => void;
  1456. beforeAutofill?: (start: object, end: object, data: any[]) => void;
  1457. beforeAutofillInsidePopulate?: (index: object, direction: string, input: any[], deltas: any[]) => void;
  1458. beforeCellAlignment?: (stateBefore: any, range: any, type: string, alignmentClass: string) => void;
  1459. beforeChange?: (changes: [number, string | number, any, any][], source: string) => void;
  1460. beforeChangeRender?: (changes: any[], source: string) => void;
  1461. beforeColumnMove?: (columns: number[], target: number) => void;
  1462. beforeColumnResize?: (currentColumn: number, newSize: number, isDoubleClick: boolean) => void;
  1463. beforeColumnSort?: (currentSortConfig: object[], destinationSortConfigs: object[]) => void;
  1464. beforeContextMenuSetItems?: (menuItems: any[]) => void;
  1465. beforeContextMenuShow?: (context: Handsontable.plugins.ContextMenu) => void;
  1466. beforeCopy?: (data: any[], coords: any[]) => any;
  1467. beforeCreateCol?: (index: number, amount: number, source?: string) => void;
  1468. beforeCreateRow?: (index: number, amount: number, source?: string) => void;
  1469. beforeCut?: (data: any[], coords: any[]) => any;
  1470. beforeDetachChild?: (parent: object, element: object) => void;
  1471. beforeDrawBorders?: (corners: any[], borderClassName: string) => void;
  1472. beforeDropdownMenuSetItems?: (menuItems: any[]) => void;
  1473. beforeDropdownMenuShow?: (instance: Handsontable.plugins.DropdownMenu) => void;
  1474. beforeFilter?: (formulasStack: any[]) => void;
  1475. beforeGetCellMeta?: (row: number, col: number, cellProperties: GridSettings) => void;
  1476. beforeInit?: () => void;
  1477. beforeInitWalkontable?: (walkontableConfig: object) => void;
  1478. beforeKeyDown?: (event: Event) => void;
  1479. beforeLanguageChange?: (languageCode: string) => void;
  1480. beforeMergeCells?: (cellRange: wot.CellRange, auto: boolean) => void;
  1481. beforeOnCellContextMenu?: (event: object, coords: object, TD: Element) => void;
  1482. beforeOnCellMouseDown?: (event: Event, coords: object, TD: Element, controller: object) => void;
  1483. beforeOnCellMouseOut?: (event: Event, coords: wot.CellCoords, TD: Element) => void;
  1484. beforeOnCellMouseOver?: (event: Event, coords: wot.CellCoords, TD: Element, controller: object) => void;
  1485. beforeOnCellMouseUp?: (event: Event, coords: wot.CellCoords, TD: Element, controller: object) => void;
  1486. beforePaste?: (data: any[], coords: any[]) => any;
  1487. beforeRemoveCellClassNames?: () => string[] | void;
  1488. beforeRemoveCellMeta?: (row: number, column: number, key: string, value: any) => void;
  1489. beforeRedo?: (action: object) => void;
  1490. beforeRemoveCol?: (index: number, amount: number, logicalCols?: any[]) => void;
  1491. beforeRemoveRow?: (index: number, amount: number, logicalRows?: any[]) => void;
  1492. beforeRender?: (isForced: boolean, skipRender: object) => void;
  1493. beforeRenderer?: (TD: Element, row: number, col: number, prop: string | number, value: string, cellProperties: GridSettings) => void;
  1494. beforeRowMove?: (columns: number[], target: number) => void;
  1495. beforeRowResize?: (currentRow: number, newSize: number, isDoubleClick: boolean) => any;
  1496. beforeSetRangeEnd?: (coords: wot.CellCoords) => void;
  1497. beforeSetRangeStart?: (coords: wot.CellCoords) => void;
  1498. beforeSetRangeStartOnly?: (coords: wot.CellCoords) => void;
  1499. beforeStretchingColumnWidth?: (stretchedWidth: number, column: number) => void;
  1500. beforeTouchScroll?: () => void;
  1501. beforeUndo?: (action: object) => void;
  1502. beforeUnmergeCells?: (cellRange: wot.CellRange, auto: boolean) => void;
  1503. beforeValidate?: (value: any, row: number, prop: string | number, source?: string) => void;
  1504. beforeValueRender?: (value: any, cellProperties: object) => void;
  1505. construct?: () => void;
  1506. getRegistered?: () => string[];
  1507. hiddenColumn?: (column: number) => void;
  1508. hiddenRow?: (row: number) => void;
  1509. init?: () => void;
  1510. manualRowHeights?: (state: any[]) => void;
  1511. modifyAutofillRange?: (startArea: any[], entireArea: any[]) => void;
  1512. modifyCol?: (col: number) => void;
  1513. modifyColHeader?: (column: number) => void;
  1514. modifyColumnHeaderHeight?: () => void;
  1515. modifyColWidth?: (width: number, col: number) => void;
  1516. modifyCopyableRange?: (copyableRanges: any[]) => void;
  1517. modifyData?: (row: number, column: number, valueHolder: object, ioMode: string) => void;
  1518. modifyGetCellCoords?: (row: number, column: number, topmost: boolean) => void;
  1519. modifyRow?: (row: number) => void;
  1520. modifyRowData?: (row: number) => void;
  1521. modifyRowHeader?: (row: number) => void;
  1522. modifyRowHeaderWidth?: (rowHeaderWidth: number) => void;
  1523. modifyRowHeight?: (height: number, row: number) => void;
  1524. modifyRowSourceData?: (row: number) => void;
  1525. modifyTransformEnd?: (delta: wot.CellCoords) => void;
  1526. modifyTransformStart?: (delta: wot.CellCoords) => void;
  1527. persistentStateLoad?: (key: string, valuePlaceholder: object) => void;
  1528. persistentStateReset?: (key: string) => void;
  1529. persistentStateSave?: (key: string, value: any) => void;
  1530. skipLengthCache?: (delay: number) => void;
  1531. unmodifyCol?: (col: number) => void;
  1532. unmodifyRow?: (row: number) => void;
  1533. destroy?: (instance?: Handsontable) => void;
  1534. }
  1535. namespace I18n {
  1536. type LanguageDictionary = {
  1537. [phraseKey: string]: string | string[];
  1538. languageCode: string;
  1539. };
  1540. interface Internationalization {
  1541. dictionaryKeys: I18n.LanguageDictionary;
  1542. registerLanguageDictionary: (languageCodeOrDictionary: LanguageDictionary | string, dictionary?: LanguageDictionary) => LanguageDictionary;
  1543. getTranslatedPhrase: (dictionaryKey: string, extraArguments?: any) => string | null;
  1544. getLanguagesDictionaries: () => LanguageDictionary[];
  1545. getLanguageDictionary: (languageCode: string) => LanguageDictionary;
  1546. }
  1547. }
  1548. interface CellTypes {
  1549. autocomplete: cellTypes.Autocomplete;
  1550. checkbox: cellTypes.Checkbox;
  1551. date: cellTypes.Date;
  1552. dropdown: cellTypes.Dropdown;
  1553. handsontable: cellTypes.Handsontable;
  1554. numeric: cellTypes.Numeric;
  1555. password: cellTypes.Password;
  1556. text: cellTypes.Text;
  1557. time: cellTypes.Time;
  1558. // 自定义添加
  1559. registerCellType:(name:string, type:{editor: any; renderer: Handsontable.renderers.Base})=> void
  1560. }
  1561. interface Editors {
  1562. AutocompleteEditor: typeof Handsontable._editors.Autocomplete;
  1563. BaseEditor: typeof Handsontable._editors.Base;
  1564. CheckboxEditor: typeof Handsontable._editors.Checkbox;
  1565. DateEditor: typeof Handsontable._editors.Date;
  1566. DropdownEditor: typeof Handsontable._editors.Dropdown;
  1567. HandsontableEditor: typeof Handsontable._editors.Handsontable;
  1568. MobileEditor: typeof Handsontable._editors.Mobile;
  1569. NumericEditor: typeof Handsontable._editors.Numeric;
  1570. PasswordEditor: typeof Handsontable._editors.Password;
  1571. SelectEditor: typeof Handsontable._editors.Select;
  1572. TextEditor: typeof Handsontable._editors.Text;
  1573. getEditor: (editorName: string, hotInstance: Handsontable) => any;
  1574. registerEditor: (editorName: string, editorClass: any) => void;
  1575. }
  1576. interface Renderers {
  1577. AutocompleteRenderer: renderers.Autocomplete;
  1578. BaseRenderer: renderers.Base;
  1579. CheckboxRenderer: renderers.Checkbox;
  1580. HtmlRenderer: renderers.Html;
  1581. NumericRenderer: renderers.Numeric;
  1582. PasswordRenderer: renderers.Password;
  1583. TextRenderer: renderers.Text;
  1584. // 自定义添加
  1585. registerRenderer: (rendererName: string, rendererFunc: Handsontable.renderers.Base) => void;
  1586. }
  1587. interface Helper {
  1588. readonly KEY_CODES: {
  1589. A: number,
  1590. ALT: number,
  1591. ARROW_DOWN: number,
  1592. ARROW_LEFT: number,
  1593. ARROW_RIGHT: number,
  1594. ARROW_UP: number,
  1595. BACKSPACE: number,
  1596. C: number,
  1597. CAPS_LOCK: number,
  1598. COMMA: number,
  1599. COMMAND_LEFT: number,
  1600. COMMAND_RIGHT: number,
  1601. CONTROL_LEFT: number,
  1602. DELETE: number,
  1603. END: number,
  1604. ENTER: number,
  1605. ESCAPE: number,
  1606. F1: number,
  1607. F2: number,
  1608. F3: number,
  1609. F4: number,
  1610. F5: number,
  1611. F6: number,
  1612. F7: number,
  1613. F8: number,
  1614. F9: number,
  1615. F10: number,
  1616. F11: number,
  1617. F12: number,
  1618. HOME: number,
  1619. INSERT: number,
  1620. MOUSE_LEFT: number,
  1621. MOUSE_MIDDLE: number,
  1622. MOUSE_RIGHT: number,
  1623. PAGE_DOWN: number,
  1624. PAGE_UP: number,
  1625. PERIOD: number,
  1626. SHIFT: number,
  1627. SPACE: number,
  1628. TAB: number,
  1629. V: number,
  1630. X: number
  1631. },
  1632. arrayAvg(array: any[]): number,
  1633. arrayEach(array: any[], iteratee: (value: any, index: number, array: any[]) => void): any[],
  1634. arrayFilter(array: any[], predicate: (value: any, index: number, array: any[]) => void): any[],
  1635. arrayFlatten(array: any[]): any[],
  1636. arrayIncludes(array: any[], searchElement: any, fromIndex: number): any[],
  1637. arrayMap(array: any[], iteratee: (value: any, index: number, array: any[]) => void): any[],
  1638. arrayMax(array: any[]): number,
  1639. arrayMin(array: any[]): number,
  1640. arrayReduce(array: any[], iteratee: (value: any, index: number, array: any[]) => void, accumulator: any, initFromArray: boolean): any,
  1641. arraySum(array: any[]): number,
  1642. arrayUnique(array: any[]): any[],
  1643. cancelAnimationFrame(id: number): void,
  1644. cellMethodLookupFactory(methodName: string, allowUndefined: boolean): void,
  1645. clone(object: object): object,
  1646. columnFactory(GridSettings: GridSettings, conflictList: any[]): object,
  1647. createEmptySpreadsheetData(rows: number, columns: number): any[],
  1648. createObjectPropListener(defaultValue?: any, propertyToListen?: string): object,
  1649. createSpreadsheetData(rows?: number, columns?: number): any[],
  1650. createSpreadsheetObjectData(rows?: number, colCount?: number): any[],
  1651. curry(func: () => void): () => void,
  1652. curryRight(func: () => void): () => void,
  1653. debounce(func: () => void, wait?: number): () => void,
  1654. deepClone(obj: object): object,
  1655. deepExtend(target: object, extension: object): void,
  1656. deepObjectSize(object: object): number,
  1657. defineGetter(object: object, property: any, value: any, options: object): void,
  1658. duckSchema(object: any[] | object): any[] | object,
  1659. endsWith(string: string, needle: string): boolean,
  1660. equalsIgnoreCase(...string: string[]): boolean,
  1661. extend(target: object, extension: object): void,
  1662. extendArray(arr: any[], extension: any[]): void,
  1663. getComparisonFunction(language: string, options?: object): any | void,
  1664. getNormalizedDate(dateString: string): Date,
  1665. getProperty(object: object, name: string): any | void,
  1666. getPrototypeOf(obj: object): any | void,
  1667. hasCaptionProblem(): boolean | void,
  1668. inherit(Child: object, Parent: object): object,
  1669. isChrome(): boolean,
  1670. isCtrlKey(keyCode: number): boolean,
  1671. isDefined(variable: any): boolean,
  1672. isEdge(): boolean,
  1673. isEmpty(variable: any): boolean,
  1674. isFunction(func: any): boolean,
  1675. isIE(): boolean,
  1676. isIE8(): boolean,
  1677. isIE9(): boolean,
  1678. isKey(keyCode: number, baseCode: string): boolean
  1679. isMetaKey(keyCode: number): boolean,
  1680. isMobileBrowser(): boolean,
  1681. isMSBrowser(): boolean,
  1682. isNumeric(n: any): boolean,
  1683. isObject(obj: any): boolean,
  1684. isObjectEqual(object1: object | any[], object2: object | any[]): boolean,
  1685. isPercentValue(value: string): boolean,
  1686. isPrintableChar(keyCode: number): boolean,
  1687. isSafari(): boolean,
  1688. isTouchSupported(): boolean,
  1689. isUndefined(variable: any): boolean,
  1690. isWebComponentSupportedNatively(): boolean,
  1691. mixin(Base: object, ...mixins: object[]): object,
  1692. objectEach(object: object, iteratee: (value: any, key: any, object: object) => void): object,
  1693. padStart(string: string, maxLength: number, fillString?: string): string,
  1694. partial(func: () => void, ...params: any[]): () => void,
  1695. pipe(...functions: (() => void)[]): () => void,
  1696. pivot(arr: any[]): any[],
  1697. randomString(): string,
  1698. rangeEach(rangeFrom: number, rangeTo: number, iteratee: (index: number) => void): void,
  1699. rangeEachReverse(rangeFrom: number, rangeTo: number, iteratee: (index: number) => void): void,
  1700. requestAnimationFrame(callback: () => void): number,
  1701. spreadsheetColumnIndex(label: string): number,
  1702. spreadsheetColumnLabel(index: number): string,
  1703. startsWith(string: string, needle: string): boolean,
  1704. stringify(value: any): string,
  1705. stripTags(string: string): string,
  1706. substitute(template: string, variables?: object): string,
  1707. throttle(func: () => void, wait?: number): () => void,
  1708. throttleAfterHits(func: () => void, wait?: number, hits?: number): () => void,
  1709. to2dArray(arr: any[]): void,
  1710. toUpperCaseFirst(string: string): string,
  1711. translateRowsToColumns(input: any[]): any[],
  1712. valueAccordingPercent(value: number, percent: string | number): number
  1713. }
  1714. interface Dom {
  1715. HTML_CHARACTERS: RegExp,
  1716. addClass: (element: HTMLElement, className: string | any[]) => void;
  1717. addEvent: (element: HTMLElement, event: string, callback: () => void) => void;
  1718. closest: (element: HTMLElement, nodes: any[], until?: HTMLElement) => HTMLElement | void;
  1719. closestDown: (element: HTMLElement, nodes: any[], until?: HTMLElement) => HTMLElement | void;
  1720. empty: (element: HTMLElement) => void;
  1721. fastInnerHTML: (element: HTMLElement, content: string) => void;
  1722. fastInnerText: (element: HTMLElement, content: string) => void;
  1723. getCaretPosition: (el: HTMLElement) => number;
  1724. getComputedStyle: (element: HTMLElement) => CSSStyleDeclaration | object;
  1725. getCssTransform: (element: HTMLElement) => number | void;
  1726. getParent: (element: HTMLElement, level?: number) => HTMLElement | void;
  1727. getScrollLeft: (element: HTMLElement) => number;
  1728. getScrollTop: (element: HTMLElement) => number;
  1729. getScrollableElement: (element: HTMLElement) => HTMLElement;
  1730. getScrollbarWidth: () => number;
  1731. getSelectionEndPosition: (el: HTMLElement) => number;
  1732. getSelectionText: () => string;
  1733. getStyle: (element: HTMLElement, prop: string) => string;
  1734. getTrimmingContainer: (base: HTMLElement) => HTMLElement;
  1735. getWindowScrollLeft: () => number;
  1736. getWindowScrollTop: () => number;
  1737. hasClass: (element: HTMLElement, className: string) => boolean;
  1738. hasHorizontalScrollbar: (element: HTMLElement) => boolean;
  1739. hasVerticalScrollbar: (element: HTMLElement) => boolean;
  1740. index: (element: Element) => number;
  1741. innerHeight: (element: HTMLElement) => number;
  1742. innerWidth: (element: HTMLElement) => number;
  1743. isChildOf: (child: HTMLElement, parent: object | string) => boolean;
  1744. isChildOfWebComponentTable: (element: Element) => boolean;
  1745. isImmediatePropagationStopped: (event: Event) => boolean;
  1746. isInput: (element: HTMLElement) => boolean;
  1747. isLeftClick: (event: Event) => boolean;
  1748. isOutsideInput: (element: HTMLElement) => boolean;
  1749. isRightClick: (event: Event) => boolean;
  1750. isVisible: (elem: HTMLElement) => boolean;
  1751. offset: (elem: HTMLElement) => object;
  1752. outerHeight: (elem: HTMLElement) => number;
  1753. outerWidth: (element: HTMLElement) => number;
  1754. overlayContainsElement: (overlayType: string, element: HTMLElement) => boolean;
  1755. pageX: (event: Event) => number;
  1756. pageY: (event: Event) => number;
  1757. polymerUnwrap: (element: HTMLElement) => any | void;
  1758. polymerWrap: (element: HTMLElement) => any | void;
  1759. removeClass: (element: HTMLElement, className: string | any[]) => void;
  1760. removeEvent: (element: HTMLElement, event: string, callback: () => void) => void;
  1761. removeTextNodes: (element: HTMLElement, parent: HTMLElement) => void;
  1762. resetCssTransform: (element: HTMLElement) => void;
  1763. setCaretPosition: (element: HTMLElement, pos: number, endPos: number) => void;
  1764. setOverlayPosition: (overlayElem: HTMLElement, left: number, top: number) => void;
  1765. stopImmediatePropagation: (event: Event) => void;
  1766. stopPropagation: (event: Event) => void;
  1767. }
  1768. interface Plugins {
  1769. AutoColumnSize: plugins.AutoColumnSize,
  1770. Autofill: plugins.Autofill,
  1771. AutoRowSize: plugins.AutoRowSize,
  1772. BasePlugin: plugins.Base,
  1773. BindRowsWithHeaders: plugins.BindRowsWithHeaders,
  1774. CollapsibleColumns: plugins.CollapsibleColumns,
  1775. ColumnSorting: plugins.ColumnSorting,
  1776. ColumnSummary: plugins.ColumnSummary,
  1777. Comments: plugins.Comments,
  1778. ContextMenu: plugins.ContextMenu,
  1779. CopyPaste: plugins.CopyPaste,
  1780. DragToScroll: plugins.DragToScroll,
  1781. DropdownMenu: plugins.DropdownMenu,
  1782. ExportFile: plugins.ExportFile,
  1783. Filters: plugins.Filters,
  1784. Formulas: plugins.Formulas,
  1785. GanttChart: plugins.GanttChart,
  1786. HeaderTooltips: plugins.HeaderTooltips,
  1787. HiddenColumns: plugins.HiddenColumns,
  1788. HiddenRows: plugins.HiddenRows,
  1789. ManualColumnFreeze: plugins.ManualColumnFreeze,
  1790. ManualColumnMove: plugins.ManualColumnMove,
  1791. ManualColumnResize: plugins.ManualColumnResize,
  1792. ManualRowMove: plugins.ManualRowMove,
  1793. ManualRowResize: plugins.ManualRowResize;
  1794. MergeCells: plugins.MergeCells;
  1795. MultiColumnSorting: plugins.MultiColumnSorting,
  1796. MultipleSelectionHandles: plugins.MultipleSelectionHandles,
  1797. NestedHeaders: plugins.NestedHeaders,
  1798. NestedRows: plugins.NestedRows,
  1799. ObserveChanges: plugins.ObserveChanges,
  1800. Search: plugins.Search,
  1801. TouchScroll: plugins.TouchScroll,
  1802. TrimRows: plugins.TrimRows,
  1803. registerPlugin: () => void
  1804. }
  1805. // Plugin collection, map for getPlugin method
  1806. interface PluginsCollection {
  1807. autoColumnSize: plugins.AutoColumnSize,
  1808. autofill: plugins.Autofill,
  1809. autoRowSize: plugins.AutoRowSize,
  1810. bindRowsWithHeaders: plugins.BindRowsWithHeaders,
  1811. collapsibleColumns: plugins.CollapsibleColumns,
  1812. columnSorting: plugins.ColumnSorting,
  1813. columnSummary: plugins.ColumnSummary,
  1814. comments: plugins.Comments,
  1815. contextMenu: plugins.ContextMenu,
  1816. copyPaste: plugins.CopyPaste,
  1817. dragToScroll: plugins.DragToScroll,
  1818. dropdownMenu: plugins.DropdownMenu,
  1819. exportFile: plugins.ExportFile,
  1820. filters: plugins.Filters,
  1821. formulas: plugins.Formulas,
  1822. ganttChart: plugins.GanttChart,
  1823. headerTooltips: plugins.HeaderTooltips,
  1824. hiddenColumns: plugins.HiddenColumns,
  1825. hiddenRows: plugins.HiddenRows,
  1826. manualColumnFreeze: plugins.ManualColumnFreeze,
  1827. manualColumnMove: plugins.ManualColumnMove,
  1828. manualColumnResize: plugins.ManualColumnResize,
  1829. manualRowMove: plugins.ManualRowMove,
  1830. manualRowResize: plugins.ManualRowResize;
  1831. mergeCells: plugins.MergeCells;
  1832. multiColumnSorting: plugins.MultiColumnSorting,
  1833. multipleSelectionHandles: plugins.MultipleSelectionHandles,
  1834. nestedHeaders: plugins.NestedHeaders,
  1835. nestedRows: plugins.NestedRows,
  1836. observeChanges: plugins.ObserveChanges,
  1837. search: plugins.Search,
  1838. touchScroll: plugins.TouchScroll,
  1839. trimRows: plugins.TrimRows,
  1840. }
  1841. // plugins
  1842. // Comments
  1843. interface CommentObject {
  1844. row: number,
  1845. col: number,
  1846. comment?: {
  1847. value?: string,
  1848. readOnly?: boolean,
  1849. style?: {
  1850. height?: number,
  1851. width?: number
  1852. }
  1853. }
  1854. }
  1855. // ContextMenu
  1856. namespace contextMenu {
  1857. interface Options {
  1858. start: wot.CellCoords,
  1859. end: wot.CellCoords
  1860. }
  1861. interface Settings {
  1862. callback: (key: string, options: contextMenu.Options) => void;
  1863. items: any;
  1864. }
  1865. }
  1866. namespace columnSorting {
  1867. type SortOrderType = 'asc' | 'desc';
  1868. type Config = { column: number, sortOrder: SortOrderType }
  1869. interface Settings {
  1870. initialConfig?: Config,
  1871. sortEmptyCells?: boolean,
  1872. indicator?: boolean,
  1873. headerAction?: boolean,
  1874. compareFunctionFactory?: ((sortOrder: SortOrderType, columnMeta: GridSettings) =>
  1875. (value: any, nextValue: any) => -1 | 0 | 1)
  1876. }
  1877. }
  1878. namespace multiColumnSorting {
  1879. interface Settings {
  1880. initialConfig?: columnSorting.Config | Array<columnSorting.Config>,
  1881. sortEmptyCells?: boolean,
  1882. indicator?: boolean,
  1883. headerAction?: boolean,
  1884. compareFunctionFactory?: ((sortOrder: columnSorting.SortOrderType, columnMeta: GridSettings) =>
  1885. (value: any, nextValue: any) => -1 | 0 | 1)
  1886. }
  1887. }
  1888. }
  1889. declare class Handsontable extends _Handsontable.Core {
  1890. static baseVersion: string;
  1891. static buildDate: string;
  1892. static packageName: string;
  1893. static version: string;
  1894. static cellTypes: Handsontable.CellTypes;
  1895. static languages: Handsontable.I18n.Internationalization;
  1896. static dom: Handsontable.Dom;
  1897. static editors: Handsontable.Editors;
  1898. static helper: Handsontable.Helper;
  1899. static hooks: Handsontable.Hooks;
  1900. static plugins: Handsontable.Plugins;
  1901. static renderers: Handsontable.Renderers;
  1902. // 自定义添加
  1903. rendererCache?: any;
  1904. }
  1905. export = Handsontable;
  1906. export as namespace Handsontable;