diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
index eb9f9b64e7..5fe2714f48 100644
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -300,6 +300,7 @@ All definitions files include a header with the author and editors, so at some p
* [PhantomJS](http://phantomjs.org) (by [Jed Hunsaker](https://github.com/jedhunsaker))
* [PhoneGap](http://phonegap.com) (by [Boris Yankov](https://github.com/borisyankov))
* [Physijs](http://chandlerprall.github.io/Physijs/) (by [gyoh_k](https://github.com/gyohk))
+* [Pickadate.js](https://github.com/amsul/pickadate.js) (by [Adi Dahiya](https://github.com/adidahiya))
* [PixiJS](https://github.com/GoodBoyDigital/pixi.js) (by [Pedro Casaubon](https://github.com/xperiments))
* [Platform](https://github.com/bestiejs/platform.js) (by [Jake Hickman](https://github.com/JakeH))
* [PouchDB](http://pouchdb.com) (by [Bill Sears](https://github.com/MrBigDog2U/))
diff --git a/pickadate/pickadate-tests.ts b/pickadate/pickadate-tests.ts
index 6b3e9fccb7..ac48a98569 100644
--- a/pickadate/pickadate-tests.ts
+++ b/pickadate/pickadate-tests.ts
@@ -1,7 +1,7 @@
///
///
-function testApiMethods(api: PickadateApi) {
+function testApiMethods(api: Pickadate.Api) {
api.clear();
api.close();
api.close(true);
@@ -24,6 +24,8 @@ function testApiMethods(api: PickadateApi) {
api.stop();
api.trigger('open');
+ api.start().open().close().stop();
+
var pickerInputElement = api.$node;
pickerInputElement.show();
@@ -148,7 +150,7 @@ datePickerInput.pickadate({
}
});
-var datePickerApi = datePickerInput.pickadate('picker');
+var datePickerApi = datePickerInput.pickadate('picker');
datePickerInput.pickadate('open');
datePickerInput.pickadate('get', 'value');
@@ -232,7 +234,7 @@ timePickerInput.pickatime({
}
});
-var timePickerApi = timePickerInput.pickatime('picker');
+var timePickerApi = timePickerInput.pickatime('picker');
timePickerInput.pickatime('open');
timePickerInput.pickatime('get', 'value');
diff --git a/pickadate/pickadate.d.ts b/pickadate/pickadate.d.ts
index 5575b8bc78..d21550d000 100644
--- a/pickadate/pickadate.d.ts
+++ b/pickadate/pickadate.d.ts
@@ -3,312 +3,315 @@
// Definitions by: Adi Dahiya
// Definitions: https://github.com/borisyankov/DefinitelyTyped
-interface PickadateApi {
- /**
- * Clear the value in the picker's input element.
- */
- clear(): PickadateApi;
+declare module Pickadate {
- /**
- * Close the picker.
- *
- * @param keepFocus whether to retain focus on the input element (default: false)
- */
- close(keepFocus?: boolean): PickadateApi;
+ export interface Api {
+ /**
+ * Clear the value in the picker's input element.
+ */
+ clear(): Pickadate.Api;
- /**
- * Get the properties, objects, and states of the picker.
- *
- * @param field one of [ "value", "select", "highlight", "view", "min", "max", "open", "start", "id", "disable", "enable" ]
- * @param format string formatter (available for certain fields)
- */
- get(field: string, format?: string): any;
+ /**
+ * Close the picker.
+ *
+ * @param keepFocus whether to retain focus on the input element (default: false)
+ */
+ close(keepFocus?: boolean): Pickadate.Api;
- /**
- * Unbind callbacks that are bound using the `on` method.
- * @param methodName one of [ "open, "close", "render", "start", "stop", "set" ]
- */
- off(methodName: string, ...moreMethodNames: string[]): PickadateApi;
+ /**
+ * Get the properties, objects, and states of the picker.
+ *
+ * @param field one of [ "value", "select", "highlight", "view", "min", "max", "open", "start", "id", "disable", "enable" ]
+ * @param format string formatter (available for certain fields)
+ */
+ get(field: string, format?: string): any;
- /**
- * Attach an event handler for the picker. Only "set" events callbacks receive a "context" object.
- *
- * @param methodName event to attach handler to, one of [ "open", "close", "render", "start", "stop", or "set" ]
- * @param callback event handler
- */
- on(methodName: string, callback: (context?: any) => void): PickadateApi;
+ /**
+ * Unbind callbacks that are bound using the `on` method.
+ * @param methodName one of [ "open, "close", "render", "start", "stop", "set" ]
+ */
+ off(methodName: string, ...moreMethodNames: string[]): Pickadate.Api;
- /**
- * Open the picker.
- *
- * @param keepFocus whether to focus the input element (default: true)
- */
- open(keepFocus?: boolean): PickadateApi;
+ /**
+ * Attach an event handler for the picker. Only "set" events callbacks receive a "context" object.
+ *
+ * @param methodName event to attach handler to, one of [ "open", "close", "render", "start", "stop", or "set" ]
+ * @param callback event handler
+ */
+ on(methodName: string, callback: (context?: any) => void): Pickadate.Api;
- /**
- * Refresh the picker after adding something to the holder.
- * By default, only the “face” of the picker (i.e. the box element), has its contents re-rendered.
- *
- * @param fromRoot whether to render the entire picker from the root up (default: false)
- */
- render(fromRoot?: boolean): PickadateApi;
+ /**
+ * Open the picker.
+ *
+ * @param keepFocus whether to focus the input element (default: true)
+ */
+ open(keepFocus?: boolean): Pickadate.Api;
- /**
- * Set the properties, objects, and states of the picker.
- *
- * @param field one of [ "clear", "select", "highlight", "view", "min", "max", "disable", "enable", "interval" ]
- * @param value the thing you want to set
- */
- set(field: string, value: any, options?: {[key: string]: any}): PickadateApi;
- /**
- * Batch set picker options after initialization.
- */
- set(values: {[field: string]: any}, options?: {[key: string]: any}): PickadateApi;
+ /**
+ * Refresh the picker after adding something to the holder.
+ * By default, only the “face” of the picker (i.e. the box element), has its contents re-rendered.
+ *
+ * @param fromRoot whether to render the entire picker from the root up (default: false)
+ */
+ render(fromRoot?: boolean): Pickadate.Api;
- /**
- * Rebuild the picker.
- */
- start(): PickadateApi;
+ /**
+ * Set the properties, objects, and states of the picker.
+ *
+ * @param field one of [ "clear", "select", "highlight", "view", "min", "max", "disable", "enable", "interval" ]
+ * @param value the thing you want to set
+ */
+ set(field: string, value: any, options?: {[key: string]: any}): Pickadate.Api;
+ /**
+ * Batch set picker options after initialization.
+ */
+ set(values: {[field: string]: any}, options?: {[key: string]: any}): Pickadate.Api;
- /**
- * Destroy the picker.
- */
- stop(): PickadateApi;
+ /**
+ * Rebuild the picker.
+ */
+ start(): Pickadate.Api;
- /**
- * Trigger a picker event.
- * @param eventName the event to trigger
- */
- trigger(eventName: string): PickadateApi;
+ /**
+ * Destroy the picker.
+ */
+ stop(): Pickadate.Api;
- /**
- * The picker's relative element.
- */
- $node: JQuery;
+ /**
+ * Trigger a picker event.
+ * @param eventName the event to trigger
+ */
+ trigger(eventName: string): Pickadate.Api;
- /**
- * The picker's relative root holder element.
- */
- $root: JQuery;
+ /**
+ * The picker's relative element.
+ */
+ $node: JQuery;
- /**
- * The picker's relative hidden element, which is undefined if there's no formatSubmit option.
- * This is meant to be mostly for internal use.
- */
- _hidden: JQuery;
-}
+ /**
+ * The picker's relative root holder element.
+ */
+ $root: JQuery;
-interface PickadateOptions {
- // String and translations
- monthsFull?: string[];
- monthsShort?: string[];
- weekdaysFull?: string[];
- weekdaysShort?: string[]
- showMonthsShort?: boolean;
- showWeekdaysFull?: boolean;
+ /**
+ * The picker's relative hidden element, which is undefined if there's no formatSubmit option.
+ * This is meant to be mostly for internal use.
+ */
+ _hidden: JQuery;
+ }
- // Button labels (if falsy, the corresponding button is disabled)
- today?: string;
- clear?: string;
- close?: string;
+ export interface DateOptions {
+ // String and translations
+ monthsFull?: string[];
+ monthsShort?: string[];
+ weekdaysFull?: string[];
+ weekdaysShort?: string[]
+ showMonthsShort?: boolean;
+ showWeekdaysFull?: boolean;
- // Accessibility labels
- labelMonthNext?: string;
- labelMonthPrev?: string;
- labelMonthSelect?: string;
- labelYearSelect?: string;
+ // Button labels (if falsy, the corresponding button is disabled)
+ today?: string;
+ clear?: string;
+ close?: string;
- // Formats
- format?: string;
- formatSubmit?: string;
- hiddenPrefix?: string;
- hiddenSuffix?: string;
- hiddenName?: string;
+ // Accessibility labels
+ labelMonthNext?: string;
+ labelMonthPrev?: string;
+ labelMonthSelect?: string;
+ labelYearSelect?: string;
- // Editable input
- editable?: boolean;
+ // Formats
+ format?: string;
+ formatSubmit?: string;
+ hiddenPrefix?: string;
+ hiddenSuffix?: string;
+ hiddenName?: string;
- // Number of months to show in the month selection dropdown OR a boolean
- selectMonths?: any;
- // Number of years to show in the month selection dropdown OR a boolean
- selectYears?: any;
+ // Editable input
+ editable?: boolean;
- // First day of the week
- firstDay?: number
+ // Number of months to show in the month selection dropdown OR a boolean
+ selectMonths?: any;
+ // Number of years to show in the month selection dropdown OR a boolean
+ selectYears?: any;
- // Disable dates (elements can be Dates, [YEAR, MONTH, DATE] arrays, or integers of the week)
- disable?: any[];
+ // First day of the week
+ firstDay?: number
- // Root container selector
- container?: string
+ // Disable dates (elements can be Dates, [YEAR, MONTH, DATE] arrays, or integers of the week)
+ disable?: any[];
- // Events
- onStart?: () => void;
- onRender?: () => void;
- onOpen?: () => void;
- onClose?: () => void;
- onSet?: (context: {[key: string]: any}) => void;
- onStop?: () => void;
+ // Root container selector
+ container?: string
- // Classes
- klass?: PickadateKlassOptions;
-}
+ // Events
+ onStart?: () => void;
+ onRender?: () => void;
+ onOpen?: () => void;
+ onClose?: () => void;
+ onSet?: (context: {[key: string]: any}) => void;
+ onStop?: () => void;
-interface PickadateKlassOptions {
- // The element states
- input?: string;
- active?: string;
+ // Classes
+ klass?: DateKlassOptions;
+ }
- // The root picker and states
- picker?: string;
- opened?: string;
- focused?: string;
+ export interface DateKlassOptions {
+ // The element states
+ input?: string;
+ active?: string;
- // The picker holder
- holder?: string;
+ // The root picker and states
+ picker?: string;
+ opened?: string;
+ focused?: string;
- // The picker frame, wrapper, and box
- frame?: string;
- wrap?: string;
- box?: string;
+ // The picker holder
+ holder?: string;
- // The picker header
- header?: string;
+ // The picker frame, wrapper, and box
+ frame?: string;
+ wrap?: string;
+ box?: string;
- // Month navigation
- navPrev?: string;
- navNext?: string;
- navDisabled?: string;
+ // The picker header
+ header?: string;
- // Month & year labels
- month?: string;
- year?: string;
+ // Month navigation
+ navPrev?: string;
+ navNext?: string;
+ navDisabled?: string;
- // Month & year dropdowns
- selectMonth?: string;
- selectYear?: string;
+ // Month & year labels
+ month?: string;
+ year?: string;
- // Table of dates
- table?: string;
+ // Month & year dropdowns
+ selectMonth?: string;
+ selectYear?: string;
- // Weekday labels
- weekdays?: string;
+ // Table of dates
+ table?: string;
- // Day states
- day?: string;
- disabled?: string;
- selected?: string;
- highlighted?: string;
- now?: string;
- infocus?: string;
- outfocus?: string;
+ // Weekday labels
+ weekdays?: string;
- // The picker footer
- footer?: string;
+ // Day states
+ day?: string;
+ disabled?: string;
+ selected?: string;
+ highlighted?: string;
+ now?: string;
+ infocus?: string;
+ outfocus?: string;
- // Today, clear, & close buttons
- buttonClear?: string;
- buttonClose?: string;
- buttonToday?: string
-}
+ // The picker footer
+ footer?: string;
-interface PickatimeOptions {
- // Translations and clear button
- clear?: string;
+ // Today, clear, & close buttons
+ buttonClear?: string;
+ buttonClose?: string;
+ buttonToday?: string
+ }
- // Formats
- format?: string;
- formatLabel?: string;
- formatSubmit?: string;
- hiddenPrefix?: string;
- hiddenSuffix?: string;
+ export interface TimeOptions {
+ // Translations and clear button
+ clear?: string;
- // Editable input
- editable?: boolean;
+ // Formats
+ format?: string;
+ formatLabel?: string;
+ formatSubmit?: string;
+ hiddenPrefix?: string;
+ hiddenSuffix?: string;
- // Time intervals
- interval?: number;
+ // Editable input
+ editable?: boolean;
- // Time limits (can be Dates, arrays formatted as [HOUR, MINUTE], integers, or booleans)
- min?: any;
- max?: any;
+ // Time intervals
+ interval?: number;
- // Disable dates (elements can be Dates, [YEAR, MONTH, DATE] arrays, or integers of the week)
- disable?: any[];
+ // Time limits (can be Dates, arrays formatted as [HOUR, MINUTE], integers, or booleans)
+ min?: any;
+ max?: any;
- // Root container selector
- container?: string
+ // Disable dates (elements can be Dates, [YEAR, MONTH, DATE] arrays, or integers of the week)
+ disable?: any[];
- // Events
- onStart?: () => void;
- onRender?: () => void;
- onOpen?: () => void;
- onClose?: () => void;
- onSet?: (context: {[key: string]: any}) => void;
- onStop?: () => void;
+ // Root container selector
+ container?: string
- // Classes
- klass?: PickatimeKlassOptions;
-}
+ // Events
+ onStart?: () => void;
+ onRender?: () => void;
+ onOpen?: () => void;
+ onClose?: () => void;
+ onSet?: (context: {[key: string]: any}) => void;
+ onStop?: () => void;
-interface PickatimeKlassOptions {
- // The element states
- input?: string;
- active?: string;
+ // Classes
+ klass?: TimeKlassOptions;
+ }
- // The root picker and states
- picker?: string;
- opened?: string;
- focused?: string;
+ export interface TimeKlassOptions {
+ // The element states
+ input?: string;
+ active?: string;
- // The picker holder
- holder?: string;
+ // The root picker and states
+ picker?: string;
+ opened?: string;
+ focused?: string;
- // The picker frame, wrapper, and box
- frame?: string;
- wrap?: string;
- box?: string;
+ // The picker holder
+ holder?: string;
- // List of times
- list?: string;
- listItem?: string;
+ // The picker frame, wrapper, and box
+ frame?: string;
+ wrap?: string;
+ box?: string;
- // Time states
- disabled?: string;
- selected?: string;
- highlighted?: string;
- viewset?: string;
- now?: string;
+ // List of times
+ list?: string;
+ listItem?: string;
- // Clear button
- buttonClear?: string;
+ // Time states
+ disabled?: string;
+ selected?: string;
+ highlighted?: string;
+ viewset?: string;
+ now?: string;
+
+ // Clear button
+ buttonClear?: string;
+ }
}
interface JQuery {
/**
- * Initialize a date picker.
- */
- pickadate(options?: PickadateOptions): any;
+ * Initialize a date picker.
+ */
+ pickadate(options?: Pickadate.DateOptions): any;
/**
- * Access objects attached to the picker or invoke API methods after initialization.
- * If keyword is "picker", this returns a PickadateApi.
- * @param keyword "picker", an object name, or method name
- * @param arguments any arguments to pass to the method
- */
+ * Access objects attached to the picker or invoke API methods after initialization.
+ * If keyword is "picker", this returns a PickadateApi.
+ * @param keyword "picker", an object name, or method name
+ * @param arguments any arguments to pass to the method
+ */
pickadate(keyword: string, ...arguments: any[]): any;
/**
- * Initialize a time picker.
- */
- pickatime(options?: PickatimeOptions): any;
+ * Initialize a time picker.
+ */
+ pickatime(options?: Pickadate.TimeOptions): any;
/**
- * Access objects attached to the picker or invoke API methods after initialization.
- * If keyword is "picker", this returns a PickadateApi.
- * @param keyword "picker", an object name, or method name
- * @param arguments any arguments to pass to the method
- */
+ * Access objects attached to the picker or invoke API methods after initialization.
+ * If keyword is "picker", this returns a PickadateApi.
+ * @param keyword "picker", an object name, or method name
+ * @param arguments any arguments to pass to the method
+ */
pickatime(keyword: string, ...arguments: any[]): any;
}