diff --git a/ionic/ionic-tests.ts b/ionic/ionic-tests.ts
new file mode 100644
index 000000000..45d8c2d66
--- /dev/null
+++ b/ionic/ionic-tests.ts
@@ -0,0 +1,365 @@
+///
+
+var testIonic = angular.module('testIonic', ['ionic']);
+
+testIonic.config(['$ionicConfigProvider', ($ionicConfigProvider: ionic.utility.IonicConfigProvider)=>{
+ var transition: string = $ionicConfigProvider.views.transition();
+ $ionicConfigProvider.views.transition("transition");
+ var maxCache: number = $ionicConfigProvider.views.maxCache();
+ $ionicConfigProvider.views.maxCache(10);
+ var forwardCache: boolean = $ionicConfigProvider.views.forwardCache();
+ $ionicConfigProvider.views.forwardCache(true);
+
+ var jsScrolling: boolean = $ionicConfigProvider.scrolling.jsScrolling();
+ $ionicConfigProvider.scrolling.jsScrolling(true);
+
+ var backButtonIcon: string = $ionicConfigProvider.backButton.icon();
+ $ionicConfigProvider.backButton.icon("icon");
+ var backButtonText: string = $ionicConfigProvider.backButton.text();
+ $ionicConfigProvider.backButton.text("back");
+ var usePreviousTitleText: boolean = $ionicConfigProvider.backButton.previousTitleText();
+ $ionicConfigProvider.backButton.previousTitleText(false);
+
+ var checkbox: string = $ionicConfigProvider.form.checkbox();
+ $ionicConfigProvider.form.checkbox("square");
+ var toggle: string = $ionicConfigProvider.form.toggle();
+ $ionicConfigProvider.form.toggle("small");
+
+ var spinnerIcon: string = $ionicConfigProvider.spinner.icon();
+ $ionicConfigProvider.spinner.icon("spiral");
+
+ var tabsStyle: string = $ionicConfigProvider.tabs.style();
+ $ionicConfigProvider.tabs.style("standard");
+ var tabsPosition: string = $ionicConfigProvider.tabs.position();
+ $ionicConfigProvider.tabs.position("bottom");
+
+ var maxPrefetch: number = $ionicConfigProvider.templates.maxPrefetch();
+ $ionicConfigProvider.templates.maxPrefetch(10);
+
+ var alignTitle: string = $ionicConfigProvider.navBar.alignTitle();
+ $ionicConfigProvider.navBar.alignTitle("platform");
+ var positionPrimaryButtons: string = $ionicConfigProvider.navBar.positionPrimaryButtons();
+ $ionicConfigProvider.navBar.positionPrimaryButtons("platform");
+ var positionSecondaryButtons: string = $ionicConfigProvider.navBar.positionSecondaryButtons();
+ $ionicConfigProvider.navBar.positionSecondaryButtons("platform");
+}])
+
+class IonicTestController {
+ public static $inject = [
+ '$ionicActionSheet',
+ '$ionicBackdrop',
+ '$ionicGesture',
+ '$ionicListDelegate',
+ '$ionicLoading',
+ '$ionicModal',
+ '$ionicNavBarDelegate',
+ '$ionicHistory',
+ '$ionicPlatform',
+ '$ionicPopover',
+ '$ionicPopup',
+ '$ionicScrollDelegate',
+ '$ionicSideMenuDelegate',
+ '$ionicSlideBoxDelegate',
+ '$ionicTabsDelegate',
+ '$ionicPosition'
+ ];
+ constructor(
+ private $ionicActionSheet: ionic.actionSheet.IonicActionSheetService,
+ private $ionicBackdrop: ionic.backdrop.IonicBackdropService,
+ private $ionicGesture: ionic.gestures.IonicGestureService,
+ private $ionicListDelegate: ionic.list.IonicListDelegate,
+ private $ionicLoading: ionic.loading.IonicLoadingService,
+ private $ionicModal: ionic.modal.IonicModalService,
+ private $ionicNavBarDelegate: ionic.navigation.IonicNavBarDelegate,
+ private $ionicHistory: ionic.navigation.IonicHistoryService,
+ private $ionicPlatform: ionic.platform.IonicPlatformService,
+ private $ionicPopover: ionic.popover.IonicPopoverService,
+ private $ionicPopup: ionic.popup.IonicPopupService,
+ private $ionicScrollDelegate: ionic.scroll.IonicScrollDelegate,
+ private $ionicSideMenuDelegate: ionic.sideMenu.IonicSideMenuDelegate,
+ private $ionicSlideBoxDelegate: ionic.slideBox.IonicSlideBoxDelegate,
+ private $ionicTabsDelegate: ionic.tabs.IonicTabsDelegate,
+ private $ionicPositionService: ionic.utility.IonicPositionService
+ ){}
+
+ private testActionSheet(): void {
+ var closeActionSheetFn: ()=>void = this.$ionicActionSheet.show({
+ buttons: [],
+ titleText: "titleText",
+ cancelText: "cancelText",
+ destructiveText: "destructiveText",
+ cancel: ()=>{ console.log("cancel"); },
+ buttonClicked: ()=>{ console.log("buttonClicked"); },
+ destructiveButtonClicked: ()=>{ console.log("destructiveButtonClicked"); },
+ cancelOnStateChange: true,
+ cssClass: "cssClass"
+ });
+ closeActionSheetFn();
+ }
+ private testBackdrop(): void {
+ this.$ionicBackdrop.retain();
+ this.$ionicBackdrop.release();
+ }
+ private testGesture(): void {
+ var gesture: ionic.gestures.IonicGesture = this.$ionicGesture.on(
+ 'eventType',
+ (e)=>{ return e; },
+ angular.element("body"),
+ {}
+ );
+ this.$ionicGesture.off(gesture, "eventType", (e) => { return e; });
+ }
+ private testList(): void {
+ this.$ionicListDelegate.showReorder(true);
+ var showReorder: boolean = this.$ionicListDelegate.showReorder();
+ this.$ionicListDelegate.showDelete(true);
+ var showDelete: boolean = this.$ionicListDelegate.showDelete();
+ this.$ionicListDelegate.canSwipeItems(true);
+ var canSwipeItems: boolean = this.$ionicListDelegate.canSwipeItems();
+ this.$ionicListDelegate.closeOptionButtons();
+ var foo: ionic.list.IonicListDelegate = this.$ionicListDelegate.$getByHandle("handle");
+ }
+ private testLoading(): void {
+ this.$ionicLoading.show({
+ template: "template",
+ templateUrl: "templateUrl",
+ scope: {},
+ noBackdrop: false,
+ hideOnStateChange: true,
+ delay: 500,
+ duration: 8000
+ });
+ this.$ionicLoading.hide();
+ }
+ private testModal(): void {
+ var modalOptions: ionic.modal.IonicModalOptions = {
+ scope: {},
+ animation: "animation",
+ focusFirstInput: true,
+ backdropClickToClose: false,
+ hardwareBackButtonClose: true
+ };
+ var ionicModalController: ionic.modal.IonicModalController = this.$ionicModal.fromTemplate("template", modalOptions);
+ ionicModalController.initialize(modalOptions);
+ ionicModalController.show().then(() => console.log("shown modal"))
+ ionicModalController.hide().then(() => console.log("hid modal"))
+ var isShown: boolean = ionicModalController.isShown();
+
+ this.$ionicModal.fromTemplateUrl("templateUrl", modalOptions)
+ .then(modalCtrl => ionicModalController = modalCtrl);
+ }
+ private testNavigation(): void {
+ this.$ionicNavBarDelegate.align("right");
+ this.$ionicNavBarDelegate.showBackButton(true);
+ var isBackButtonShown: boolean = this.$ionicNavBarDelegate.showBackButton();
+ this.$ionicNavBarDelegate.showBar(true);
+ var isBarShown: boolean = this.$ionicNavBarDelegate.showBar();
+ this.$ionicNavBarDelegate.title("title");
+
+ var viewHistory = this.$ionicHistory.viewHistory();
+ var currentView = this.$ionicHistory.currentView();
+ var currentHistoryId: string = this.$ionicHistory.currentHistoryId();
+ this.$ionicHistory.currentTitle("currentTitle");
+ var currentTitle: string = this.$ionicHistory.currentTitle();
+ var backView = this.$ionicHistory.backView();
+ var backTitle: string = this.$ionicHistory.backTitle();
+ var forwardView = this.$ionicHistory.forwardView();
+ var currentStateName: string = this.$ionicHistory.currentStateName();
+
+ this.$ionicHistory.goBack(5);
+ this.$ionicHistory.clearHistory();
+ this.$ionicHistory.clearCache().then(() => console.log("done clearing cache!"));
+ this.$ionicHistory.nextViewOptions({
+ disableAnimate: true,
+ disableBack: true,
+ historyRoot: true
+ });
+ }
+ private testPlatform(): void {
+ var callback: Function = () => console.log("on!");
+ this.$ionicPlatform.onHardwareBackButton(callback);
+ this.$ionicPlatform.offHardwareBackButton(callback);
+ this.$ionicPlatform.registerBackButtonAction(callback, 1, "actionId");
+ this.$ionicPlatform.on("type", callback);
+ this.$ionicPlatform.ready(callback);
+ this.$ionicPlatform.ready().then(() => console.log("ready!"));
+ }
+ private testPopover(): void {
+ var popoverOptions: ionic.popover.IonicPopoverOptions = {
+ scope: {},
+ focusFirstInput: true,
+ backdropClickToClose: false,
+ hardwareBackButtonClose: true
+ };
+ var ionicPopoverController: ionic.popover.IonicPopoverController = this.$ionicPopover.fromTemplate("template", popoverOptions);
+ ionicPopoverController.initialize(popoverOptions);
+ ionicPopoverController.show(angular.element("body")).then(() => console.log("shown popover"))
+ ionicPopoverController.hide().then(() => console.log("hid popover"))
+ var isShown: boolean = ionicPopoverController.isShown();
+
+ this.$ionicPopover.fromTemplateUrl("templateUrl", popoverOptions)
+ .then(popoverCtrl => ionicPopoverController = popoverCtrl);
+ }
+ private testPopup(): void {
+ this.$ionicPopup.show({
+ title: "title",
+ subTitle: "subTitle",
+ cssClass: "cssClass",
+ template: "template",
+ templateUrl: "templateUrl",
+ scope: {},
+ buttons: [{text: "text", type: "type", onTap: (e) => {console.log(e)}}]
+ }).then(() => console.log("popover shown"));
+ this.$ionicPopup.show({
+ title: "title",
+ subTitle: "subTitle",
+ cssClass: "cssClass",
+ template: "template",
+ templateUrl: "templateUrl",
+ scope: {},
+ buttons: [{text: "text", type: "type", onTap: (e) => {console.log(e)}}]
+ }).close("done");
+
+ this.$ionicPopup.alert({
+ title: "title",
+ subTitle: "subTitle",
+ cssClass: "cssClass",
+ template: "template",
+ templateUrl: "templateUrl",
+ okText: "OK",
+ okType: "okType"
+ }).then(() => console.log("popover shown"))
+ this.$ionicPopup.alert({
+ title: "title",
+ subTitle: "subTitle",
+ cssClass: "cssClass",
+ template: "template",
+ templateUrl: "templateUrl",
+ okText: "OK",
+ okType: "okType"
+ }).close();
+
+ this.$ionicPopup.confirm({
+ title: "title",
+ subTitle: "subTitle",
+ cssClass: "cssClass",
+ template: "template",
+ templateUrl: "templateUrl",
+ okText: "OK",
+ okType: "okType",
+ cancelText: "Cancel",
+ cancelType: "cancelType"
+ }).then(() => console.log("popover shown"))
+ this.$ionicPopup.confirm({
+ title: "title",
+ subTitle: "subTitle",
+ cssClass: "cssClass",
+ template: "template",
+ templateUrl: "templateUrl",
+ okText: "OK",
+ okType: "okType",
+ cancelText: "Cancel",
+ cancelType: "cancelType"
+ }).close();
+
+ this.$ionicPopup.prompt({
+ title: "title",
+ subTitle: "subTitle",
+ cssClass: "cssClass",
+ template: "template",
+ templateUrl: "templateUrl",
+ okText: "OK",
+ okType: "okType",
+ cancelText: "Cancel",
+ cancelType: "cancelType",
+ inputType: "text",
+ inputPlaceholder: "Type some text..."
+ }).then(() => console.log("popover shown"))
+ this.$ionicPopup.prompt({
+ title: "title",
+ subTitle: "subTitle",
+ cssClass: "cssClass",
+ template: "template",
+ templateUrl: "templateUrl",
+ okText: "OK",
+ okType: "okType",
+ cancelText: "Cancel",
+ cancelType: "cancelType",
+ inputType: "text",
+ inputPlaceholder: "Type some text..."
+ }).close();
+ }
+
+ private testScroll(): void {
+ this.$ionicScrollDelegate.resize();
+ this.$ionicScrollDelegate.scrollTop();
+ this.$ionicScrollDelegate.scrollTop(true);
+ this.$ionicScrollDelegate.scrollBottom();
+ this.$ionicScrollDelegate.scrollBottom(true);
+ this.$ionicScrollDelegate.scrollTo(0, 0);
+ this.$ionicScrollDelegate.scrollTo(0, 0, true);
+ this.$ionicScrollDelegate.scrollBy(0, 0);
+ this.$ionicScrollDelegate.scrollBy(0, 0, true);
+ this.$ionicScrollDelegate.zoomTo(1);
+ this.$ionicScrollDelegate.zoomTo(1, true);
+ this.$ionicScrollDelegate.zoomTo(1, true, 0);
+ this.$ionicScrollDelegate.zoomTo(1, true, 0, 0);
+ this.$ionicScrollDelegate.zoomBy(0.5);
+ this.$ionicScrollDelegate.zoomBy(0.5, true);
+ this.$ionicScrollDelegate.zoomBy(0.5, true, 50);
+ this.$ionicScrollDelegate.zoomBy(0.5, true, 50, 50);
+ var {top: number, left: number} = this.$ionicScrollDelegate.getScrollPosition();
+ this.$ionicScrollDelegate.anchorScroll();
+ this.$ionicScrollDelegate.anchorScroll(true);
+ var isScrollFrozen: boolean = this.$ionicScrollDelegate.freezeScroll();
+ this.$ionicScrollDelegate.freezeScroll(false);
+ var areAllScrollsFrozen: boolean = this.$ionicScrollDelegate.freezeAllScrolls();
+ this.$ionicScrollDelegate.freezeAllScrolls(false);
+ var scrollView: any = this.$ionicScrollDelegate.getScrollView();
+ var scrollDelegate: ionic.scroll.IonicScrollDelegate = this.$ionicScrollDelegate.$getByHandle("handle");
+ }
+ private testSideMenu(): void {
+ this.$ionicSideMenuDelegate.toggleLeft();
+ this.$ionicSideMenuDelegate.toggleLeft(true);
+ this.$ionicSideMenuDelegate.toggleRight();
+ this.$ionicSideMenuDelegate.toggleRight(true);
+ var openRatio: number = this.$ionicSideMenuDelegate.getOpenRatio();
+ var isOpen: boolean = this.$ionicSideMenuDelegate.isOpen();
+ var isOpenLeft: boolean = this.$ionicSideMenuDelegate.isOpenLeft();
+ var isOpenRight: boolean = this.$ionicSideMenuDelegate.isOpenRight();
+ var canDragContent: boolean = this.$ionicSideMenuDelegate.canDragContent();
+ this.$ionicSideMenuDelegate.canDragContent(false);
+ var edgeDragThreshold: boolean = this.$ionicSideMenuDelegate.edgeDragThreshold();
+ this.$ionicSideMenuDelegate.edgeDragThreshold(true);
+ this.$ionicSideMenuDelegate.edgeDragThreshold(500);
+ var sideMenuDelegate: ionic.sideMenu.IonicSideMenuDelegate = this.$ionicSideMenuDelegate.$getByHandle("handle");
+ }
+ private testSlideBox(): void {
+ this.$ionicSlideBoxDelegate.update();
+ this.$ionicSlideBoxDelegate.slide(1);
+ this.$ionicSlideBoxDelegate.slide(1, 500);
+ var isSlideEnabled: boolean = this.$ionicSlideBoxDelegate.enableSlide();
+ this.$ionicSlideBoxDelegate.enableSlide(true);
+ this.$ionicSlideBoxDelegate.previous();
+ this.$ionicSlideBoxDelegate.previous(500);
+ this.$ionicSlideBoxDelegate.next();
+ this.$ionicSlideBoxDelegate.next(500);
+ this.$ionicSlideBoxDelegate.stop();
+ this.$ionicSlideBoxDelegate.start();
+ var currentIndex: number = this.$ionicSlideBoxDelegate.currentIndex();
+ var slidesCount: number = this.$ionicSlideBoxDelegate.slidesCount();
+ var slideBoxDelegate: ionic.slideBox.IonicSlideBoxDelegate = this.$ionicSlideBoxDelegate.$getByHandle("handle");
+ }
+ private testTabs(): void {
+ this.$ionicTabsDelegate.select(1);
+ var selectedIndex: number = this.$ionicTabsDelegate.selectedIndex();
+ var ionicTabsDelegate: ionic.tabs.IonicTabsDelegate = this.$ionicTabsDelegate.$getByHandle("handle");
+ }
+ private testUtility(): void {
+ var {top: number, left: number, width: number, height: number} = this.$ionicPositionService.position(angular.element("body"));
+ var {top: number, left: number, width: number, height: number} = this.$ionicPositionService.offset(angular.element("body"));
+ }
+}
+
+testIonic.controller('ionicTestController', IonicTestController);
+
diff --git a/ionic/ionic.d.ts b/ionic/ionic.d.ts
new file mode 100644
index 000000000..eba0ef6d4
--- /dev/null
+++ b/ionic/ionic.d.ts
@@ -0,0 +1,290 @@
+// Type definitions for Ionic
+// Project: http://ionicframework.com
+// Definitions by: Spencer Williams
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+
+declare module ionic {
+ module actionSheet {
+ interface IonicActionSheetService {
+ show(options: IonicActionSheetOptions): ()=>void;
+ }
+ interface IonicActionSheetOptions {
+ buttons?: Array;
+ titleText?: string;
+ cancelText?: string;
+ destructiveText?: string;
+ cancel?: ()=>any;
+ buttonClicked?: ()=>any;
+ destructiveButtonClicked?: ()=>any;
+ cancelOnStateChange?: boolean;
+ cssClass?: string;
+ }
+ }
+ module backdrop {
+ interface IonicBackdropService {
+ retain(): void;
+ release(): void;
+ }
+ }
+ module gestures {
+ interface IonicGestureService {
+ on(eventType: string, callback: (e: any)=>any, $element: ng.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): ng.IPromise;
+ }
+
+ interface IonicModalController {
+ initialize(options: IonicModalOptions): void;
+ show(): ng.IPromise;
+ hide(): ng.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(): ng.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): ng.IPromise;
+ }
+ }
+ module popover {
+ interface IonicPopoverService {
+ fromTemplate(templateString: string, options: IonicPopoverOptions): IonicPopoverController;
+ fromTemplateUrl(templateUrl: string, options: IonicPopoverOptions): ng.IPromise;
+ }
+ interface IonicPopoverController {
+ initialize(options: IonicPopoverOptions): void;
+ show($event?: any): ng.IPromise;
+ hide(): ng.IPromise;
+ isShown(): boolean;
+ }
+ 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): IonicPopupPromise;
+ prompt(options: IonicPopupPromptOptions): IonicPopupPromise;
+ }
+
+ interface IonicPopupPromise extends ng.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;
+ }
+ }
+ 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};
+ }
+ }
+}