// Type definitions for Ionic
// Project: https://github.com/driftyco/ionic
// Definitions by: Lokesh Peta
// Definitions: https://github.com/borisyankov/DefinitelyTyped
///
///
///
///
///
///
///
///
///
/**
* Define a global ionic object
*/
declare module Ionic {
//#region Config Provider
/**
* Angular service: $ionicConfigProvider
*
* $ionicConfigProvider can be used during the configuration phase of your app to change how Ionic works.
*/
interface IConfigProvider {
/**
* Set whether Ionic should prefetch all templateUrls defined in $stateProvider.state. Default true.
* If set to false, the user will have to wait for a template to be fetched the first time he/she is going to a a new page.
*
* @param shouldPrefetch Whether Ionic should prefetch templateUrls defined in $stateProvider.state(). Default true.
*/
prefetchTemplates(shouldPrefetch: boolean): boolean;
}
//#endregion
//#region Platform
interface IDevice {
/** Get the version of Cordova running on the device. */
cordova: string;
/**
* The device.model returns the name of the device's model or product. The value is set
* by the device manufacturer and may be different across versions of the same product.
*/
model: string;
/** device.name is deprecated as of version 2.3.0. Use device.model instead. */
name: string;
/** Get the device's operating system name. */
platform: string;
/** Get the device's Universally Unique Identifier (UUID). */
uuid: string;
/** Get the operating system version. */
version: string;
}
//#region Ionic Position
/**
* Angular service: $ionicPosition
*
* A set of utility methods that can be use to retrieve position of DOM elements.
* It is meant to be used where we need to absolute-position DOM elements in relation to other, existing elements (this is the case for tooltips, popovers, etc.).
*/
interface IPosition {
/**
* Get the current coordinates of the element, relative to the offset parent. Read-only equivalent of jQuery's position function.
*
* @param element The element to get the position of
*/
position(element: Element): {
top: number;
left: number;
width: number;
height: number;
}
/**
* Get the current coordinates of the element, relative to the document. Read-only equivalent of jQuery's offset function.
*
* @param element The element to get offset of
*/
offset(element: Element): {
top: number;
left: number;
width: number;
height: number;
}
}
//#endregion
//#region Action Sheet
interface IActionSheetOptions {
/**
* Which buttons to show. Each button is an object with a text field.
*/
buttons?: Array<{ text: string }>;
/**
* The title to show on the action sheet.
*/
titleText?: string;
/**
* The text for a 'cancel' button on the action sheet.
*/
cancelText?: string;
/**
* The text for a 'danger' on the action sheet.
*/
destructiveText?: string;
/**
* Called if the cancel button is pressed, the backdrop is tapped or the hardware back button is pressed.
*/
cancel?: () => void;
/**
* Called when one of the non-destructive buttons is clicked, with the index of the button that was clicked and the button object.
* Return true to close the action sheet, or false to keep it opened.
*/
buttonClicked?: () => boolean;
/**
* Called when the destructive button is clicked. Return true to close the action sheet, or false to keep it opened.
*/
destructiveButtonClicked?: () => boolean;
/**
* Whether to cancel the actionSheet when navigating to a new state. Default true.
*/
cancelOnStateChange?: boolean;
}
/**
* Angular service: $ionicActionSheet
*
* The Action Sheet is a slide-up pane that lets the user choose from a set of options. Dangerous options are highlighted in red and made obvious.
* There are easy ways to cancel out of the action sheet, such as tapping the backdrop or even hitting escape on the keyboard for desktop testing.
*/
interface IActionSheet {
/**
* Load and return a new action sheet.
* A new isolated scope will be created for the action sheet and the new element will be appended into the body.
*
* Returns hideSheet, a function which, when called, hides & cancels the action sheet.
*/
show(options: IActionSheetOptions): () => void;
}
//#endregion
//#region Backdrop
/**
* Angular service: $ionicBackdrop
*/
interface IBackdrop {
/**
* Retains the backdrop.
*/
retain(): void;
/**
* Releases the backdrop.
*/
release(): void;
}
//#endregion
//#region Lists
/**
* Angular service: $ionicListDelegate
*
* Delegate for controlling the ionList directive.
* Methods called directly on the $ionicListDelegate service will control all lists. Use the $getByHandle method to control specific ionList instances.
*/
interface IListDelegate {
/**
* Set whether or not this list is showing its reorder buttons.
* Returns whether the reorder buttons are shown.
*/
showReorder(showReorder?: boolean): boolean;
/**
* Set whether or not this list is showing its delete buttons.
* Returns whether the delete buttons are shown.
*/
showDelete(showDelete?: boolean): boolean;
/**
* Set whether or not this list is able to swipe to show option buttons.
* Returns whether the list is able to swipe to show option buttons.
*/
canSwipeItems(canSwipeItems?: boolean): boolean;
/**
* Closes any option buttons on the list that are swiped open.
*/
closeOptionButtons(): void;
/**
* Return delegate instance that controls only the ionTabs directives with delegate-handle matching the given handle.
*/
$getByHandle(handle: string): IListDelegate;
}
//#endregion
//#region Loading
interface ILoadingOptions {
template?: string;
templateUrl?: string;
noBackdrop?: boolean;
delay?: number;
duration?: number;
}
/**
* Angular service: $ionicLoading
*
* An overlay that can be used to indicate activity while blocking user interaction.
*/
interface ILoading {
show(opts?: ILoadingOptions): void;
hide(): void;
}
//#endregion
//#region Modals
interface IModalOptions {
/**
* The scope to be a child of. Default: creates a child of $rootScope.
*/
scope?: ng.IScope;
/**
* The animation to show & hide with. Default: 'slide-in-up'
*/
animation?: string;
/**
* Whether to autofocus the first input of the modal when shown. Default: false.
*/
focusFirstInput?: boolean;
/**
* Whether to close the modal on clicking the backdrop. Default: true.
*/
backdropClickToClose?: boolean;
/**
* Whether the modal can be closed using the hardware back button on Android and similar devices. Default: true.
*/
hardwareBackButtonClose?: boolean;
}
/**
* Angular service: $ionicModal
*/
interface IModal {
/**
* Creates a new modal controller instance.
*
* @param options An IModalOptions object
*/
initialize(options: IModalOptions): void;
// TODO: add Promise object as returns
/**
* Show this modal instance
* Returns a promise which is resolved when the modal is finished animating in
*/
show(): any;
/**
* Hide this modal instance
* Returns a promise which is resolved when the modal is finished animating out
*/
hide(): any;
/**
* Remove this modal instance from the DOM and clean up
* Returns a promise which is resolved when the modal is finished animating out
*/
remove(): any;
/**
* Returns whether this modal is currently shown.
*/
isShown(): boolean;
}
//#endregion
//#region Navigation
/**
* Angular service: $ionicNavBarDelegate
*
* Delegate for controlling the ionNavBar directive.
*/
interface INavBarDelegate {
/**
* Goes back in the view history
*
* @param event The event object (eg from a tap event)
*/
back(event?: Event): void;
/**
* Aligns the title with the buttons in a given direction
*
* @param direction The direction to the align the title text towards. Available: 'left', 'right', 'center'. Default: 'center'.
*/
align(direction?: string): void;
align(direction: "left"): void;
align(direction: "right"): void;
align(direction: "center"): void;
/**
* Set/get whether the ionNavBackButton is shown (if it exists).
* Returns whether the back button is shown
*
* @param show Whether to show the back button
*/
showBackButton(show?: boolean): boolean;
/**
* Set/get whether the ionNavBar is shown
* Returns whether the bar is shown
*
* @param show whether to show the bar
*/
showBar(show?: boolean): boolean;
/**
* Set the title for the ionNavBar
*
* @param title The new title to show
*/
setTitle(title: string): void;
/**
* Change the title, transitioning the new title in and the old one out in a given direction
*
* @param title the new title to show
* @param direction the direction to transition the new title in. Available: 'forward', 'back'.
*/
changeTitle(title: string, direction: string): void;
changeTitle(title: string, direction: "forward"): void;
changeTitle(title: string, direction: "back"): void;
/**
* Returns the current title of the navbar.
*/
getTitle(): string;
/**
* Returns the previous title of the navbar.
*/
getPreviousTitle(): string;
/**
* Return a delegate instance that controls only the navBars with delegate-handle matching the given handl
*/
$getByHandle(handle: string): INavBarDelegate;
}
//#region Tabs
interface ITabsDelegate {
/**
* Select the tab matching the given index.
*
* @param index Index of the tab to select.
*/
select(index: number): void;
/**
* Returns the index of the selected tab, or -1.
*/
selectedIndex(): number;
/**
* Return delegate instance that controls only the ionTabs directives with delegate-handle matching the given handle.
*/
$getByHandle(handle: string): ITabsDelegate;
}
//#endregion
}
declare var ionic: Ionic.IBase;