From 56986bfcb639dcc8144a50cb7717fb257a151ba6 Mon Sep 17 00:00:00 2001 From: denis Date: Thu, 10 May 2018 17:21:13 +0200 Subject: [PATCH 1/2] Add old jQuery type definition compatibility --- types/select2/index.d.ts | 53 ++++++++++++++++++++++++++-------- types/select2/select2-tests.ts | 7 +++++ 2 files changed, 48 insertions(+), 12 deletions(-) diff --git a/types/select2/index.d.ts b/types/select2/index.d.ts index 6a7d7c6aaf..e78ef74572 100644 --- a/types/select2/index.d.ts +++ b/types/select2/index.d.ts @@ -6,9 +6,36 @@ // TypeScript Version: 2.3 /// +/// export as namespace Select2; +// -------------------------------------------------------------------------- +// For jQuery v1 and v2 backward compatibility +// -------------------------------------------------------------------------- + +export type Sub = + {[K in O]: (Record & Record)[K]}[O]; + +/** + * Same as jQuery v3 `JQuery.AjaxSettingsBase`. + */ +export type JQueryAjaxSettingsBase = + Pick>; + +/** + * Same as jQuery v3 `JQuery.EventHandlerBase`. + */ +export type JQueryEventHandlerBase = + (this: TContext, t: T, ...args: any[]) => void | false; + +/** + * Same as jQuery v3 `JQuery.PlainObject`. + */ +export interface PlainObject { + [key: string]: T; +} + // -------------------------------------------------------------------------- // Some Interfaces // -------------------------------------------------------------------------- @@ -110,7 +137,7 @@ export interface Translation { export interface DataParams { data: OptionData; // TODO: must be data source - originalEvent: JQuery.Event; + originalEvent: BaseJQueryEventObject; } export interface IngParams { @@ -118,7 +145,7 @@ export interface IngParams { prevented: boolean; } -export interface Event extends JQuery.Event { +export interface Event extends BaseJQueryEventObject { params: T; } @@ -133,10 +160,10 @@ export interface Trigger { // Ajax Option // -------------------------------------------------------------------------- -export interface AjaxOptions extends JQuery.Ajax.AjaxSettingsBase { +export interface AjaxOptions extends JQueryAjaxSettingsBase { delay?: number; url?: string | ((params: QueryOptions) => string); - data?: (params: QueryOptions) => JQuery.PlainObject; + data?: (params: QueryOptions) => PlainObject; transport?: (settings: JQueryAjaxSettings, success?: (data: RemoteResult) => undefined, failure?: () => undefined) => void; processResults?: (data: RemoteResult, params: QueryOptions) => ProcessedResult; } @@ -195,6 +222,8 @@ export interface Options { + amd: { require: Require; }; + defaults: { set: (key: string, value: any) => void; reset: () => void; @@ -230,13 +259,13 @@ declare global { trigger(events: Trigger): void; // TODO: events "change" and "change.select2" - on(events: "select2:closing", handler?: JQuery.EventHandlerBase>): this; - on(events: "select2:close", handler?: JQuery.EventHandlerBase>): this; - on(events: "select2:opening", handler?: JQuery.EventHandlerBase>): this; - on(events: "select2:open", handler?: JQuery.EventHandlerBase>): this; - on(events: "select2:selecting", handler?: JQuery.EventHandlerBase>): this; - on(events: "select2:select", handler?: JQuery.EventHandlerBase>): this; - on(events: "select2:unselecting", handler?: JQuery.EventHandlerBase>): this; - on(events: "select2:unselect", handler?: JQuery.EventHandlerBase>): this; + on(events: "select2:closing", handler?: JQueryEventHandlerBase>): this; + on(events: "select2:close", handler?: JQueryEventHandlerBase>): this; + on(events: "select2:opening", handler?: JQueryEventHandlerBase>): this; + on(events: "select2:open", handler?: JQueryEventHandlerBase>): this; + on(events: "select2:selecting", handler?: JQueryEventHandlerBase>): this; + on(events: "select2:select", handler?: JQueryEventHandlerBase>): this; + on(events: "select2:unselecting", handler?: JQueryEventHandlerBase>): this; + on(events: "select2:unselect", handler?: JQueryEventHandlerBase>): this; } } diff --git a/types/select2/select2-tests.ts b/types/select2/select2-tests.ts index 7da04a1be5..b3ce0d5896 100644 --- a/types/select2/select2-tests.ts +++ b/types/select2/select2-tests.ts @@ -733,6 +733,13 @@ $(".js-example-rtl").select2({ // ===================================================== // See: https://select2.org/advanced +$.fn.select2.amd.require( + ["select2/utils", "select2/selection/single", "select2/selection/placeholder"], + (Utils: any, SingleSelection: any, Placeholder: any) => { + const CustomSelectionAdapter = Utils.Decorate(SingleSelection, Placeholder); + } +); + // TODO (Adapters) // ===================================================== From f5b66558be0dbb6f5b2292368627c61afbec7eb5 Mon Sep 17 00:00:00 2001 From: denis Date: Thu, 10 May 2018 17:32:57 +0200 Subject: [PATCH 2/2] Fix TS version --- types/select2/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/select2/index.d.ts b/types/select2/index.d.ts index e78ef74572..a0c1ce3b1d 100644 --- a/types/select2/index.d.ts +++ b/types/select2/index.d.ts @@ -3,7 +3,7 @@ // Definitions by: Boris Yankov // denisname // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.6 /// ///