// Type definitions for Ionic
// Project: http://ionicframework.com
// Definitions by: Spencer Williams
// Definitions: https://github.com/borisyankov/DefinitelyTyped
///
interface IonicStatic {
/**
* What Ionic package version is.
*/
version: string;
Platform: {
/**
* Trigger a callback once the device is ready, or immediately
* if the device is already ready. This method can be run from
* anywhere and does not need to be wrapped by any additonal methods.
* When the app is within a WebView (Cordova), it’ll fire
* the callback once the device is ready. If the app is within
* a web browser, it’ll fire the callback after window.load.
* Please remember that Cordova features (Camera, FileSystem, etc) still
* will not work in a web browser.
*/
ready(callback: ()=>any): void;
/**
* Set the grade of the device: ‘a’, ‘b’, or ‘c’. ‘a’ is the best
* (most css features enabled), ‘c’ is the worst. By default, sets the grade
* depending on the current device.
*/
setGrade(grade: string): void;
/**
* Return the current device (given by cordova).
*/
device(): any;
/**
* Check if we are running within a WebView (such as Cordova).
*/
isWebView(): boolean;
/**
* Whether we are running on iPad.
*/
isIPad(): boolean;
/**
* Whether we are running on iOS.
*/
isIOS(): boolean;
/**
* Whether we are running on Android.
*/
isAndroid(): boolean;
/**
* Whether we are running on Windows Phone.
*/
isWindowsPhone(): boolean;
/**
* The name of the current platform.
*/
platform(): string;
/**
* The version of the current device platform.
*/
version(): number;
/**
* Exit the app.
*/
exitApp(): void;
/**
* Shows or hides the device status bar (in Cordova). Requires cordova plugin add org.apache.cordova.statusbar
*/
showStatusBar(shouldShow: boolean): void;
/**
* Sets whether the app is fullscreen or not (in Cordova).
*/
fullScreen(showFullScreen?: boolean, showStatusBar?: boolean): void;
/**
* Whether the device is ready.
*/
isReady: boolean;
/**
* Whether the device is fullscreen.
*/
isFullScreen: boolean;
/**
* An array of all platforms found.
*/
platforms: Array;
/**
* What grade the current platform is.
*/
grade: string;
};
}
declare var ionic: IonicStatic;
declare module 'ionic' {
export = ionic;
}
declare module ionic {
module actionSheet {
interface IonicActionSheetService {
show(options: IonicActionSheetOptions): ()=>void;
}
interface IonicActionSheetButton {
text: string;
}
interface IonicActionSheetOptions {
buttons?: Array;
titleText?: string;
cancelText?: string;
destructiveText?: string;
cancel?: ()=>any;
buttonClicked?: (index: number)=>boolean;
destructiveButtonClicked?: ()=>boolean;
cancelOnStateChange?: boolean;
cssClass?: string;
}
}
module backdrop {
interface IonicBackdropService {
retain(): void;
release(): void;
}
}
module gestures {
interface IonicGestureService {
on(eventType: string, callback: (e: any)=>any, $element: angular.IAugmentedJQuery, options: any): IonicGesture;
off(gesture: IonicGesture, eventType: string, callback: (e: any)=>any): void;
}
interface IonicGesture {
element: Element;
enabled: boolean;
options: {stop_browser_behavior: string };
on(gesture: string, handler: Function): IonicGesture;
off(gesture: string, handler: Function): IonicGesture;
trigger(gesture: string, eventData: any): IonicGesture;
enable(state: boolean): IonicGesture;
}
}
module list {
interface IonicListDelegate {
showReorder(showReorder?: boolean): boolean;
showDelete(showDelete?: boolean): boolean;
canSwipeItems(canSwipeItems?: boolean): boolean;
closeOptionButtons(): void;
$getByHandle(handle: string): IonicListDelegate;
}
}
module loading {
interface IonicLoadingService {
show(opts?: IonicLoadingOptions): void;
hide(): void;
}
interface IonicLoadingOptions {
template?: string;
templateUrl?: string;
scope?: any;
noBackdrop?: boolean;
hideOnStateChange?: boolean;
delay?: number;
duration?: number;
}
}
module modal {
interface IonicModalService {
fromTemplate(templateString: string, options?: IonicModalOptions): IonicModalController;
fromTemplateUrl(templateUrl: string, options?: IonicModalOptions): angular.IPromise;
}
interface IonicModalController {
initialize(options: IonicModalOptions): void;
show(): angular.IPromise;
hide(): angular.IPromise;
remove(): angular.IPromise;
isShown(): boolean;
}
interface IonicModalOptions {
scope?: any;
animation?: string;
focusFirstInput?: boolean;
backdropClickToClose?: boolean;
hardwareBackButtonClose?: boolean;
}
}
module navigation {
interface IonicNavBarDelegate {
align(direction?: string): void;
showBackButton(show?: boolean): boolean;
showBar(show?: boolean): boolean;
title(title: string): void;
}
interface IonicHistoryService {
viewHistory(): any;
currentView(): any;
currentHistoryId(): string;
currentTitle(val?: string): string;
backView(): any;
backTitle(): string;
forwardView(): any;
currentStateName(): string;
goBack(backCount?: number): void;
clearHistory(): void;
clearCache(): angular.IPromise;
nextViewOptions(options: IonicHistoryNextViewOptions): void;
}
interface IonicHistoryNextViewOptions {
disableAnimate?: boolean;
disableBack?: boolean;
historyRoot?: boolean;
}
}
module platform {
interface IonicPlatformService {
onHardwareBackButton(callback: Function): void;
offHardwareBackButton(callback: Function): void;
registerBackButtonAction(callback: Function, priority: number, actionId?: any): Function;
on(type: string, callback: Function): Function;
ready(callback?: Function): angular.IPromise;
}
}
module popover {
interface IonicPopoverService {
fromTemplate(templateString: string, options: IonicPopoverOptions): IonicPopoverController;
fromTemplateUrl(templateUrl: string, options: IonicPopoverOptions): angular.IPromise;
}
interface IonicPopoverController {
initialize(options: IonicPopoverOptions): void;
show($event?: any): angular.IPromise;
hide(): angular.IPromise;
isShown(): boolean;
remove(): angular.IPromise;
}
interface IonicPopoverOptions {
scope?: any;
focusFirstInput?: boolean;
backdropClickToClose?: boolean;
hardwareBackButtonClose?: boolean;
}
}
module popup {
interface IonicPopupService {
show(options: IonicPopupFullOptions): IonicPopupPromise;
alert(options: IonicPopupAlertOptions): IonicPopupPromise;
confirm(options: IonicPopupConfirmOptions): IonicPopupConfirmPromise;
prompt(options: IonicPopupPromptOptions): IonicPopupPromise;
}
interface IonicPopupConfirmPromise extends angular.IPromise {
close(value?: boolean): void;
}
interface IonicPopupPromise extends angular.IPromise {
close(value?: any): any;
}
interface IonicPopupBaseOptions {
title?: string;
cssClass?: string;
subTitle?: string;
template?: string;
templateUrl?: string;
}
interface IonicPopupFullOptions extends IonicPopupBaseOptions {
scope?: any;
buttons?: Array;
}
interface IonicPopupButton {
text: string;
type?: string;
onTap?(event?: any): void;
}
interface IonicPopupAlertOptions extends IonicPopupBaseOptions {
okText?: string;
okType?: string;
}
interface IonicPopupConfirmOptions extends IonicPopupBaseOptions {
cancelText?: string;
cancelType?: string;
okText?: string;
okType?: string;
}
interface IonicPopupPromptOptions extends IonicPopupBaseOptions {
inputType?: string;
inputPlaceholder?: string;
cancelText?: string;
cancelType?: string;
okText?: string;
okType?: string;
}
}
module scroll {
interface IonicScrollDelegate {
resize(): void;
scrollTop(shouldAnimate?: boolean): void;
scrollBottom(shouldAnimate?: boolean): void;
scrollTo(left: number, top: number, shouldAnimate?: boolean): void;
scrollBy(left: number, top: number, shouldAnimate?: boolean): void;
zoomTo(level: number, animate?: boolean, originLeft?: number, originTop?: number): void;
zoomBy(factor: number, animate?: boolean, originLeft?: number, originTop?: number): void;
getScrollPosition(): {left: number; top: number};
anchorScroll(shouldAnimate?: boolean): void;
freezeScroll(shouldFreeze?: boolean): boolean;
freezeAllScrolls(shouldFreeze?: boolean): boolean;
getScrollView(): any;
$getByHandle(handle: string): IonicScrollDelegate;
}
}
module sideMenu {
interface IonicSideMenuDelegate {
toggleLeft(isOpen?: boolean): void;
toggleRight(isOpen?: boolean): void;
getOpenRatio(): number;
isOpen(): boolean;
isOpenLeft(): boolean;
isOpenRight(): boolean;
canDragContent(canDrag?: boolean): boolean;
edgeDragThreshold(value?: boolean|number): boolean;
$getByHandle(handle: string): IonicSideMenuDelegate;
}
}
module slideBox {
interface IonicSlideBoxDelegate {
update(): void;
slide(to: number, speed?: number): void;
enableSlide(shouldEnable?: boolean): boolean;
previous(speed?: number): void;
next(speed?: number): void;
stop(): void;
start(): void;
currentIndex(): number;
slidesCount(): number;
$getByHandle(handle: string): IonicSlideBoxDelegate;
}
}
module tabs {
interface IonicTabsDelegate {
select(index: number): void;
selectedIndex(): number;
$getByHandle(handle: string): IonicTabsDelegate;
showBar(show?: boolean): boolean;
}
}
module utility {
interface IonicConfigProvider {
views: {
transition(transition?: string): string;
maxCache(maxNumber?: number): number;
forwardCache(value?: boolean): boolean;
};
scrolling: {
jsScrolling(value?: boolean): boolean;
};
backButton: {
icon(value?: string): string;
text(value?: string): string;
previousTitleText(value?: boolean): boolean;
};
form: {
checkbox(value?: string): string;
toggle(value?: string): string;
};
spinner: {
icon(value?: string): string;
};
tabs: {
style(value?: string): string;
position(value?: string): string;
};
templates: {
maxPrefetch(value?: number): number;
};
navBar: {
alignTitle(value?: string): string;
positionPrimaryButtons(value?: string): string;
positionSecondaryButtons(value?: string): string;
};
}
interface IonicPositionService {
position(element: any): {top: number; left: number; width: number; height: number};
offset(element: any): {top: number; left: number; width: number; height: number};
}
}
}