Skip to content

Commit f655c9f

Browse files
committed
Support tabDragStart/tabDragStop events
1 parent 5cc83a4 commit f655c9f

File tree

3 files changed

+45
-1
lines changed

3 files changed

+45
-1
lines changed

Diff for: src/components/super-tabs-container.ts

+19
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,20 @@ export class SuperTabsContainer implements AfterViewInit, OnDestroy {
5858
@Output()
5959
onDrag: EventEmitter<TouchEvent> = new EventEmitter<TouchEvent>();
6060

61+
/**
62+
* Notifies when the container has started being dragged
63+
* @type {EventEmitter<TouchEvent>}
64+
*/
65+
@Output()
66+
onDragStart: EventEmitter<void> = new EventEmitter<void>();
67+
68+
/**
69+
* Notifies when the container has stopped being dragged
70+
* @type {EventEmitter<void>}
71+
*/
72+
@Output()
73+
onDragEnd: EventEmitter<void> = new EventEmitter<void>();
74+
6175
// View bindings
6276

6377
/**
@@ -163,6 +177,10 @@ export class SuperTabsContainer implements AfterViewInit, OnDestroy {
163177

164178
this.gesture = new SuperTabsPanGesture(this.plt, this.config, this.container.nativeElement, this.rnd);
165179

180+
this.gesture.onStart = ()=>{
181+
this.onDragStart.emit();
182+
}
183+
166184
this.gesture.onMove = (delta: number) => {
167185
if (this.globalSwipeEnabled === false) return;
168186
if (this.swipeEnabledPerTab[this.selectedTabIndex] === false) return;
@@ -200,6 +218,7 @@ export class SuperTabsContainer implements AfterViewInit, OnDestroy {
200218
);
201219
} else this.setSelectedTab(tabIndex);
202220

221+
this.onDragEnd.emit();
203222
};
204223
}
205224

Diff for: src/components/super-tabs.ts

+21-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ export interface SuperTabsConfig {
8484
[selectedTab]="selectedTabIndex"
8585
(tabSelect)="onToolbarTabSelect($event)"></super-tabs-toolbar>
8686
<super-tabs-container [config]="config" [tabsCount]="_tabs.length" [selectedTabIndex]="selectedTabIndex"
87-
(tabSelect)="onContainerTabSelect($event)" (onDrag)="onDrag()">
87+
(tabSelect)="onContainerTabSelect($event)" (onDrag)="onDrag()" (onDragStart)="tabDragStart.emit()" (onDragEnd)="tabDragEnd.emit()">
8888
<ng-content></ng-content>
8989
</super-tabs-container>
9090
`,
@@ -181,6 +181,18 @@ export class SuperTabsComponent
181181
*/
182182
@Input() tabsPlacement = 'top';
183183

184+
/**
185+
* Emits event when tab dragging is activated
186+
*/
187+
@Output()
188+
tabDragStart: EventEmitter<void> = new EventEmitter<void>();
189+
190+
/**
191+
* Emits event when tab dragging is stopped (when a user lets go)
192+
*/
193+
@Output()
194+
tabDragEnd: EventEmitter<void> = new EventEmitter<void>();
195+
184196
/**
185197
* Emits the tab index when the selected tab changes
186198
* @type {EventEmitter<Object>}
@@ -755,6 +767,14 @@ export class SuperTabsComponent
755767
}
756768
}
757769

770+
private tabDragStarted() {
771+
this.tabDragStart.emit();
772+
}
773+
774+
private tabDragStopped() {
775+
this.tabDragEnd.emit();
776+
}
777+
758778
getTabIndexById(tabId: string): number {
759779
return this._tabs.findIndex((tab: SuperTabComponent) => tab.tabId === tabId);
760780
}

Diff for: src/super-tabs-pan-gesture.ts

+5
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import { pointerCoord, PointerCoordinates } from 'ionic-angular/util/dom';
55
import { SuperTabsConfig } from './components/super-tabs';
66

77
export class SuperTabsPanGesture {
8+
onStart: () => void;
9+
810
onMove: (delta: number) => void;
911

1012
onEnd: (shortSwipe: boolean, shortSwipeDelta?: number) => void;
@@ -84,6 +86,9 @@ export class SuperTabsPanGesture {
8486
this.initialTimestamp = Date.now();
8587
}
8688
this.lastPosX = coords.x;
89+
90+
// emit value
91+
this.onStart && this.onStart();
8792
}
8893

8994
private _onMove(ev: TouchEvent) {

0 commit comments

Comments
 (0)