From 754bd43c20a592fc69f434cb7d6eac4fe16378bf Mon Sep 17 00:00:00 2001 From: Julian Gonggrijp Date: Fri, 8 Feb 2019 02:59:33 +0100 Subject: [PATCH] Add eventMap variants of Backbone.Events.{once,listenTo,listenToOnce} Fixes #22156. Affects backbone, backbone-relational, backbone.marionette, backbone.radio. --- types/backbone-relational/index.d.ts | 3 +++ types/backbone.marionette/index.d.ts | 4 ++++ types/backbone.radio/index.d.ts | 4 ++++ types/backbone/backbone-tests.ts | 4 ++++ types/backbone/index.d.ts | 9 +++++++++ 5 files changed, 24 insertions(+) diff --git a/types/backbone-relational/index.d.ts b/types/backbone-relational/index.d.ts index a1a56088d4..f237f27ea1 100644 --- a/types/backbone-relational/index.d.ts +++ b/types/backbone-relational/index.d.ts @@ -132,8 +132,11 @@ declare module 'backbone-relational' { bind(eventName: string, callback: (...args: any[]) => void, context?: any): any; unbind(eventName?: string, callback?: (...args: any[]) => void, context?: any): any; once(events: string, callback: (...args: any[]) => void, context?: any): any; + once(eventMap: EventMap, context?: any): any; listenTo(object: any, events: string, callback: (...args: any[]) => void): any; + listenTo(object: any, eventMap: EventMap): any; listenToOnce(object: any, events: string, callback: (...args: any[]) => void): any; + listenToOnce(object: any, eventMap: EventMap): any; stopListening(object?: any, events?: string, callback?: (...args: any[]) => void): any; initializeRelation(model, relation, options); diff --git a/types/backbone.marionette/index.d.ts b/types/backbone.marionette/index.d.ts index 8b7db7543f..42ab3ecc35 100644 --- a/types/backbone.marionette/index.d.ts +++ b/types/backbone.marionette/index.d.ts @@ -418,9 +418,13 @@ export class Object implements CommonMixin, RadioMixin, Backbone.Events { trigger(eventName: string, ...args: any[]): any; bind(eventName: string, callback: (...args: any[]) => void, context?: any): any; unbind(eventName?: string, callback?: (...args: any[]) => void, context?: any): any; + once(events: string, callback: (...args: any[]) => void, context?: any): any; + once(eventMap: Backbone.EventMap, context?: any): any; listenTo(object: any, events: string, callback: (...args: any[]) => void): any; + listenTo(object: any, eventMap: Backbone.EventMap): any; listenToOnce(object: any, events: string, callback: (...args: any[]) => void): any; + listenToOnce(object: any, eventMap: Backbone.EventMap): any; stopListening(object?: any, events?: string, callback?: (...args: any[]) => void): any; /** diff --git a/types/backbone.radio/index.d.ts b/types/backbone.radio/index.d.ts index d39956cf72..a0901b6b49 100644 --- a/types/backbone.radio/index.d.ts +++ b/types/backbone.radio/index.d.ts @@ -80,9 +80,13 @@ declare module "backbone" { trigger(eventName: string, ...args: any[]): any; bind(eventName: string, callback: (...args: any[]) => void, context?: any): any; unbind(eventName?: string, callback?: (...args: any[]) => void, context?: any): any; + once(events: string, callback: (...args: any[]) => void, context?: any): any; + once(eventMap: EventMap, context?: any): any; listenTo(object: any, events: string, callback: (...args: any[]) => void): any; + listenTo(object: any, eventMap: EventMap): any; listenToOnce(object: any, events: string, callback: (...args: any[]) => void): any; + listenToOnce(object: any, eventMap: EventMap): any; stopListening(object?: any, events?: string, callback?: (...args: any[]) => void): any; channelName: string; reset(): Channel; diff --git a/types/backbone/backbone-tests.ts b/types/backbone/backbone-tests.ts index bdcd94da52..96d447c1b3 100644 --- a/types/backbone/backbone-tests.ts +++ b/types/backbone/backbone-tests.ts @@ -272,18 +272,22 @@ namespace v1Changes { var model = new Employee; model.once('invalid', () => { }, this); model.once('invalid', () => { }); + model.once({invalid: () => { }, success: () => { }}, this); + model.once({invalid: () => { }, success: () => { }}); } function test_listenTo() { var model = new Employee; var view = new Backbone.View(); view.listenTo(model, 'invalid', () => { }); + view.listenTo(model, {invalid: () => { }, success: () => { }}); } function test_listenToOnce() { var model = new Employee; var view = new Backbone.View(); view.listenToOnce(model, 'invalid', () => { }); + view.listenToOnce(model, {invalid: () => { }, success: () => { }}); } function test_stopListening() { diff --git a/types/backbone/index.d.ts b/types/backbone/index.d.ts index b25c08b62c..ee469bf9eb 100644 --- a/types/backbone/index.d.ts +++ b/types/backbone/index.d.ts @@ -119,8 +119,11 @@ declare namespace Backbone { unbind(eventName?: string, callback?: (...args: any[]) => void, context?: any): any; once(events: string, callback: (...args: any[]) => void, context?: any): any; + once(eventMap: EventMap, context?: any): any; listenTo(object: any, events: string, callback: (...args: any[]) => void): any; + listenTo(object: any, eventMap: EventMap): any; listenToOnce(object: any, events: string, callback: (...args: any[]) => void): any; + listenToOnce(object: any, eventMap: EventMap): any; stopListening(object?: any, events?: string, callback?: (...args: any[]) => void): any; } @@ -133,8 +136,11 @@ declare namespace Backbone { bind(eventName: string, callback: Function, context?: any): any unbind(eventName?: string, callback?: Function, context?: any): any once(events: string, callback: Function, context?: any): any + once(eventMap: EventMap, context?: any): any; listenTo(object: any, events: string, callback: Function):any + listenTo(object: any, eventMap: EventMap): any; listenToOnce(object: any, events: string, callback: Function): any + listenToOnce(object: any, eventMap: EventMap): any; stopListening(object?: any, events?: string, callback?: Function): any parse(response: any, options?: any): any; @@ -513,7 +519,10 @@ declare abstract class EventSignatures implements Backbone.Events { unbind(eventName?: string, callback?: (...args: any[]) => void, context?: any): any; once(events: string, callback: (...args: any[]) => void, context?: any): any; + once(eventMap: Backbone.EventMap, context?: any): any; listenTo(object: any, events: string, callback: (...args: any[]) => void): any; + listenTo(object: any, eventMap: Backbone.EventMap): any; listenToOnce(object: any, events: string, callback: (...args: any[]) => void): any; + listenToOnce(object: any, eventMap: Backbone.EventMap): any; stopListening(object?: any, events?: string, callback?: (...args: any[]) => void): any; } \ No newline at end of file