Skip to content

Commit b609248

Browse files
committed
feat(ion-button): enable to disable gesture
1 parent 1862beb commit b609248

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

demo/src/app/tabs/tabs.page.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { Component, ElementRef, inject, OnInit } from '@angular/core';
2-
import { IonIcon, IonLabel, IonTabBar, IonTabButton, IonTabs, ViewDidEnter } from '@ionic/angular/standalone';
2+
import { IonIcon, IonLabel, IonTabBar, IonTabButton, IonTabs, ViewDidEnter, ViewDidLeave, Gesture } from '@ionic/angular/standalone';
33
import { NavigationEnd, Router } from '@angular/router';
44
import { filter } from 'rxjs';
5+
56
// import { registerTabBarEffect } from '@rdlabo/ionic-theme-ios26';
67
import { registerTabBarEffect } from '../../../../src';
78

@@ -11,9 +12,10 @@ import { registerTabBarEffect } from '../../../../src';
1112
styleUrls: ['tabs.page.scss'],
1213
imports: [IonTabs, IonTabBar, IonTabButton, IonIcon, IonLabel],
1314
})
14-
export class TabsPage implements OnInit, ViewDidEnter {
15+
export class TabsPage implements OnInit, ViewDidEnter, ViewDidLeave {
1516
readonly #router = inject(Router);
1617
readonly #el = inject(ElementRef);
18+
readonly registeredGestures: Gesture[] = [];
1719
ngOnInit() {
1820
this.#router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((params) => {
1921
const tabBar = this.#el.nativeElement.querySelector('ion-tab-bar');
@@ -29,6 +31,10 @@ export class TabsPage implements OnInit, ViewDidEnter {
2931
}
3032

3133
ionViewDidEnter() {
32-
registerTabBarEffect(document.querySelector<HTMLElement>('ion-tab-bar')!);
34+
this.registeredGestures.push(registerTabBarEffect(document.querySelector<HTMLElement>('ion-tab-bar')!));
35+
}
36+
37+
ionViewDidLeave() {
38+
this.registeredGestures.forEach((gesture) => gesture.destroy());
3339
}
3440
}

src/index.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import { createGesture, GestureDetail, createAnimation } from '@ionic/core';
22
import type { Animation } from '@ionic/core/dist/types/utils/animation/animation-interface';
33
import { Gesture } from '@ionic/core/dist/types/utils/gesture';
44

5-
export const registerTabBarEffect = (ionTabBar: HTMLElement) => {
6-
let gesture: Gesture;
5+
export const registerTabBarEffect = (ionTabBar: HTMLElement): Gesture => {
6+
let gesture!: Gesture;
77
let currentTouchedButton: HTMLIonTabButtonElement | null;
88
let gestureMoveStartTime: number | null;
99
let tabEffectElY: number | null;
@@ -225,6 +225,8 @@ export const registerTabBarEffect = (ionTabBar: HTMLElement) => {
225225
]);
226226
return tabButtonAnimation;
227227
};
228+
229+
return gesture;
228230
};
229231

230232
const cloneElement = (tagName: string): HTMLElement => {

0 commit comments

Comments
 (0)