diff --git a/packages/angular/common/src/index.ts b/packages/angular/common/src/index.ts index 3b43a61ac24..2e7d50473ab 100644 --- a/packages/angular/common/src/index.ts +++ b/packages/angular/common/src/index.ts @@ -2,8 +2,6 @@ export { AlertController } from './providers/alert-controller'; export { LoadingController } from './providers/loading-controller'; export { MenuController } from './providers/menu-controller'; export { PickerController } from './providers/picker-controller'; - -export { GestureController } from './providers/gesture-controller'; export { DomController } from './providers/dom-controller'; export { NavController } from './providers/nav-controller'; diff --git a/packages/angular/src/index.ts b/packages/angular/src/index.ts index 9320357deaf..5d3608ab581 100644 --- a/packages/angular/src/index.ts +++ b/packages/angular/src/index.ts @@ -23,7 +23,6 @@ export { AlertController, LoadingController, PickerController, - GestureController, DomController, NavController, Config, @@ -38,6 +37,7 @@ export { } from '@ionic/angular/common'; export { AnimationController } from './providers/animation-controller'; export { ActionSheetController } from './providers/action-sheet-controller'; +export { GestureController } from './providers/gesture-controller'; export { MenuController } from './providers/menu-controller'; export { ModalController } from './providers/modal-controller'; export { PopoverController } from './providers/popover-controller'; diff --git a/packages/angular/src/providers/gesture-controller.ts b/packages/angular/src/providers/gesture-controller.ts new file mode 100644 index 00000000000..6ca5c7c2eff --- /dev/null +++ b/packages/angular/src/providers/gesture-controller.ts @@ -0,0 +1,25 @@ +import { Injectable, NgZone } from '@angular/core'; +import type { Gesture, GestureConfig } from '@ionic/core'; +import { createGesture } from '@ionic/core'; + +@Injectable({ + providedIn: 'root', +}) +export class GestureController { + constructor(private zone: NgZone) {} + /** + * Create a new gesture + */ + create(opts: GestureConfig, runInsideAngularZone = false): Gesture { + if (runInsideAngularZone) { + Object.getOwnPropertyNames(opts).forEach((key) => { + if (typeof opts[key] === 'function') { + const fn = opts[key]; + opts[key] = (...props: any[]) => this.zone.run(() => fn(...props)); + } + }); + } + + return createGesture(opts); + } +} diff --git a/packages/angular/standalone/src/index.ts b/packages/angular/standalone/src/index.ts index aa01fdb58e7..29d1950a53a 100644 --- a/packages/angular/standalone/src/index.ts +++ b/packages/angular/standalone/src/index.ts @@ -7,6 +7,7 @@ export { IonTabs } from './navigation/tabs'; export { provideIonicAngular } from './providers/ionic-angular'; export { ActionSheetController } from './providers/action-sheet-controller'; export { AnimationController } from './providers/animation-controller'; +export { GestureController } from './providers/gesture-controller'; export { MenuController } from './providers/menu-controller'; export { ModalController } from './providers/modal-controller'; export { PopoverController } from './providers/popover-controller'; @@ -15,7 +16,6 @@ export { AlertController, LoadingController, PickerController, - GestureController, DomController, NavController, Config, diff --git a/packages/angular/common/src/providers/gesture-controller.ts b/packages/angular/standalone/src/providers/gesture-controller.ts similarity index 92% rename from packages/angular/common/src/providers/gesture-controller.ts rename to packages/angular/standalone/src/providers/gesture-controller.ts index 6a1564d6553..9ec58b66517 100644 --- a/packages/angular/common/src/providers/gesture-controller.ts +++ b/packages/angular/standalone/src/providers/gesture-controller.ts @@ -1,4 +1,4 @@ -import { NgZone, Injectable } from '@angular/core'; +import { Injectable, NgZone } from '@angular/core'; import type { Gesture, GestureConfig } from '@ionic/core/components'; import { createGesture } from '@ionic/core/components';