Skip to content

Commit dcf5316

Browse files
authored
Merge pull request #2588 from liqiuqiui/type_hints
add `on` function overloading for better type hints
2 parents f45e7ac + 50f65bb commit dcf5316

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

src/gridstack.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { GridStackEngine } from './gridstack-engine';
99
import { Utils, HeightData, obsolete } from './utils';
1010
import { gridDefaults, ColumnOptions, GridItemHTMLElement, GridStackElement, GridStackEventHandlerCallback,
1111
GridStackNode, GridStackWidget, numberOrString, DDUIData, DDDragInOpt, GridStackPosition, GridStackOptions,
12-
dragInDefaultOptions, GridStackEventHandler, GridStackNodesHandler, AddRemoveFcn, SaveFcn, CompactOptions, GridStackMoveOpts, ResizeToContentFcn } from './types';
12+
dragInDefaultOptions, GridStackEventHandler, GridStackNodesHandler, AddRemoveFcn, SaveFcn, CompactOptions, GridStackMoveOpts, ResizeToContentFcn, GridStackDroppedHandler, GridStackElementHandler } from './types';
1313

1414
/*
1515
* and include D&D by default
@@ -34,7 +34,7 @@ export interface GridHTMLElement extends HTMLElement {
3434
}
3535
/** list of possible events, or space separated list of them */
3636
export type GridStackEvent = 'added' | 'change' | 'disable' | 'drag' | 'dragstart' | 'dragstop' | 'dropped' |
37-
'enable' | 'removed' | 'resize' | 'resizestart' | 'resizestop' | 'resizecontent' | string;
37+
'enable' | 'removed' | 'resize' | 'resizestart' | 'resizestop' | 'resizecontent';
3838

3939
/** Defines the coordinates of an object */
4040
export interface MousePosition {
@@ -1123,7 +1123,12 @@ export class GridStack {
11231123
* grid.el.addEventListener('added', function(event) { log('added ', event.detail)} );
11241124
*
11251125
*/
1126-
public on(name: GridStackEvent, callback: GridStackEventHandlerCallback): GridStack {
1126+
public on(name: 'dropped', callback: GridStackDroppedHandler): GridStack
1127+
public on(name: 'enable' | 'disable', callback: GridStackEventHandler): GridStack
1128+
public on(name: 'change' | 'added' | 'removed' | 'resizecontent', callback: GridStackNodesHandler): GridStack
1129+
public on(name: 'resizestart' | 'resize' | 'resizestop' | 'dragstart' | 'drag' | 'dragstop', callback: GridStackElementHandler): GridStack
1130+
public on(name: string, callback: GridStackEventHandlerCallback): GridStack
1131+
public on(name: GridStackEvent | string, callback: GridStackEventHandlerCallback): GridStack {
11271132
// check for array of names being passed instead
11281133
if (name.indexOf(' ') !== -1) {
11291134
let names = name.split(' ') as GridStackEvent[];
@@ -1155,7 +1160,8 @@ export class GridStack {
11551160
* unsubscribe from the 'on' event below
11561161
* @param name of the event (see possible values)
11571162
*/
1158-
public off(name: GridStackEvent): GridStack {
1163+
public off(name: GridStackEvent): GridStack
1164+
public off(name: string): GridStack {
11591165
// check for array of names being passed instead
11601166
if (name.indexOf(' ') !== -1) {
11611167
let names = name.split(' ') as GridStackEvent[];
@@ -1176,7 +1182,7 @@ export class GridStack {
11761182

11771183
/** remove all event handlers */
11781184
public offAll(): GridStack {
1179-
Object.keys(this._gsEventHandler).forEach(key => this.off(key));
1185+
Object.keys(this._gsEventHandler).forEach((key: GridStackEvent) => this.off(key));
11801186
return this;
11811187
}
11821188

0 commit comments

Comments
 (0)