forked from EVOgeek/Vmeda.Online
		
	MOBILE-3320 tabs: Call navigation hooks
This commit is contained in:
		
							parent
							
								
									1e651de59e
								
							
						
					
					
						commit
						4567846209
					
				| @ -23,7 +23,7 @@ import { | |||||||
|     ElementRef, |     ElementRef, | ||||||
|     SimpleChange, |     SimpleChange, | ||||||
| } from '@angular/core'; | } from '@angular/core'; | ||||||
| import { IonTabs } from '@ionic/angular'; | import { IonTabs, ViewDidEnter, ViewDidLeave } from '@ionic/angular'; | ||||||
| import { Subscription } from 'rxjs'; | import { Subscription } from 'rxjs'; | ||||||
| 
 | 
 | ||||||
| import { CoreUtils } from '@services/utils/utils'; | import { CoreUtils } from '@services/utils/utils'; | ||||||
| @ -65,10 +65,11 @@ export class CoreTabsOutletComponent extends CoreTabsBaseComponent<CoreTabsOutle | |||||||
|     @ViewChild(IonTabs) protected ionTabs?: IonTabs; |     @ViewChild(IonTabs) protected ionTabs?: IonTabs; | ||||||
| 
 | 
 | ||||||
|     protected stackEventsSubscription?: Subscription; |     protected stackEventsSubscription?: Subscription; | ||||||
|  |     protected outletActivatedSubscription?: Subscription; | ||||||
|  |     protected lastActiveComponent?: Partial<ViewDidLeave>; | ||||||
|  |     protected existsInNavigationStack = false; | ||||||
| 
 | 
 | ||||||
|     constructor( |     constructor(element: ElementRef) { | ||||||
|         element: ElementRef, |  | ||||||
|     ) { |  | ||||||
|         super(element); |         super(element); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -110,6 +111,9 @@ export class CoreTabsOutletComponent extends CoreTabsBaseComponent<CoreTabsOutle | |||||||
|                 this.showHideTabs(scrollElement.scrollTop, scrollElement); |                 this.showHideTabs(scrollElement.scrollTop, scrollElement); | ||||||
|             } |             } | ||||||
|         }); |         }); | ||||||
|  |         this.outletActivatedSubscription = this.ionTabs?.outlet.activateEvents.subscribe(() => { | ||||||
|  |             this.lastActiveComponent = this.ionTabs?.outlet.component; | ||||||
|  |         }); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @ -127,6 +131,35 @@ export class CoreTabsOutletComponent extends CoreTabsBaseComponent<CoreTabsOutle | |||||||
|         super.ngOnChanges(changes); |         super.ngOnChanges(changes); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      * @inheritdoc | ||||||
|  |      */ | ||||||
|  |     ionViewDidEnter(): void { | ||||||
|  |         super.ionViewDidEnter(); | ||||||
|  | 
 | ||||||
|  |         // The `ionViewDidEnter` method is not called on nested outlets unless the parent page is leaving the navigation stack,
 | ||||||
|  |         // that's why we need to call it manually if the page that is entering already existed in the stack (meaning that it is
 | ||||||
|  |         // entering in response to a back navigation from the page on top).
 | ||||||
|  |         if (this.existsInNavigationStack && this.ionTabs?.outlet.isActivated) { | ||||||
|  |             (this.ionTabs?.outlet.component as Partial<ViewDidEnter>).ionViewDidEnter?.(); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // After the view has entered for the first time, we can assume that it'll always be in the navigation stack
 | ||||||
|  |         // until it's destroyed.
 | ||||||
|  |         this.existsInNavigationStack = true; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * @inheritdoc | ||||||
|  |      */ | ||||||
|  |     ionViewDidLeave(): void { | ||||||
|  |         super.ionViewDidLeave(); | ||||||
|  | 
 | ||||||
|  |         // The `ionViewDidLeave` method is not called on nested outlets unless the active view changes, that's why
 | ||||||
|  |         // we need to call it manually if the page is leaving and the last active component was not notified.
 | ||||||
|  |         this.lastActiveComponent?.ionViewDidLeave?.(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      * Load the tab. |      * Load the tab. | ||||||
|      * |      * | ||||||
| @ -165,6 +198,8 @@ export class CoreTabsOutletComponent extends CoreTabsBaseComponent<CoreTabsOutle | |||||||
|     ngOnDestroy(): void { |     ngOnDestroy(): void { | ||||||
|         super.ngOnDestroy(); |         super.ngOnDestroy(); | ||||||
|         this.stackEventsSubscription?.unsubscribe(); |         this.stackEventsSubscription?.unsubscribe(); | ||||||
|  |         this.outletActivatedSubscription?.unsubscribe(); | ||||||
|  |         this.existsInNavigationStack = false; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user