forked from EVOgeek/Vmeda.Online
		
	MOBILE-3320 core: Modal lateral transition animation
This commit is contained in:
		
							parent
							
								
									a8021bdf63
								
							
						
					
					
						commit
						f890adac29
					
				| @ -21,7 +21,7 @@ import { HttpClient, HttpClientModule } from '@angular/common/http'; | |||||||
| import { TranslateModule, TranslateLoader } from '@ngx-translate/core'; | import { TranslateModule, TranslateLoader } from '@ngx-translate/core'; | ||||||
| import { TranslateHttpLoader } from '@ngx-translate/http-loader'; | import { TranslateHttpLoader } from '@ngx-translate/http-loader'; | ||||||
| 
 | 
 | ||||||
| import { IonicModule, IonicRouteStrategy } from '@ionic/angular'; | import { IonicModule, IonicRouteStrategy, iosTransitionAnimation } from '@ionic/angular'; | ||||||
| 
 | 
 | ||||||
| import { CoreModule } from '@/core/core.module'; | import { CoreModule } from '@/core/core.module'; | ||||||
| import { AddonsModule } from '@/addons/addons.module'; | import { AddonsModule } from '@/addons/addons.module'; | ||||||
| @ -42,7 +42,11 @@ export function createTranslateLoader(http: HttpClient): TranslateHttpLoader { | |||||||
|     imports: [ |     imports: [ | ||||||
|         BrowserModule, |         BrowserModule, | ||||||
|         BrowserAnimationsModule, |         BrowserAnimationsModule, | ||||||
|         IonicModule.forRoot(), |         IonicModule.forRoot( | ||||||
|  |             { | ||||||
|  |                 navAnimation: iosTransitionAnimation, | ||||||
|  |             }, | ||||||
|  |         ), | ||||||
|         HttpClientModule, // HttpClient is used to make JSON requests. It fails for HEAD requests because there is no content.
 |         HttpClientModule, // HttpClient is used to make JSON requests. It fails for HEAD requests because there is no content.
 | ||||||
|         TranslateModule.forRoot({ |         TranslateModule.forRoot({ | ||||||
|             loader: { |             loader: { | ||||||
|  | |||||||
							
								
								
									
										58
									
								
								src/core/classes/modal-lateral-transition.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								src/core/classes/modal-lateral-transition.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,58 @@ | |||||||
|  | // (C) Copyright 2015 Moodle Pty Ltd.
 | ||||||
|  | //
 | ||||||
|  | // Licensed under the Apache License, Version 2.0 (the "License");
 | ||||||
|  | // you may not use this file except in compliance with the License.
 | ||||||
|  | // You may obtain a copy of the License at
 | ||||||
|  | //
 | ||||||
|  | //     http://www.apache.org/licenses/LICENSE-2.0
 | ||||||
|  | //
 | ||||||
|  | // Unless required by applicable law or agreed to in writing, software
 | ||||||
|  | // distributed under the License is distributed on an "AS IS" BASIS,
 | ||||||
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
|  | // See the License for the specific language governing permissions and
 | ||||||
|  | // limitations under the License.
 | ||||||
|  | 
 | ||||||
|  | import { createAnimation } from '@ionic/angular'; | ||||||
|  | import { Animation } from '@ionic/core'; | ||||||
|  | import { Platform } from '@singletons'; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Sliding transition for lateral modals. | ||||||
|  |  */ | ||||||
|  | export function CoreModalLateralTransitionEnter(baseEl: HTMLElement): Animation { | ||||||
|  |     const OFF_RIGHT = Platform.isRTL ? '-100%' : '100%'; | ||||||
|  | 
 | ||||||
|  |     const backdropAnimation = createAnimation() | ||||||
|  |         .addElement(baseEl.querySelector('ion-backdrop')!) | ||||||
|  |         .fromTo('opacity', 0.01, 0.4); | ||||||
|  | 
 | ||||||
|  |     const wrapperAnimation = createAnimation() | ||||||
|  |         .addElement(baseEl.querySelector('.modal-wrapper')!) | ||||||
|  |         .fromTo('transform', 'translateX(' + OFF_RIGHT + ')', 'translateX(0)') | ||||||
|  |         .fromTo('opacity', 0.8, 1); | ||||||
|  | 
 | ||||||
|  |     return createAnimation() | ||||||
|  |         .addElement(baseEl) | ||||||
|  |         .easing('cubic-bezier(0.36,0.66,0.04,1)') | ||||||
|  |         .duration(300) | ||||||
|  |         .addAnimation([backdropAnimation, wrapperAnimation]); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export function CoreModalLateralTransitionLeave(baseEl: HTMLElement): Animation { | ||||||
|  |     const OFF_RIGHT = Platform.isRTL ? '-100%' : '100%'; | ||||||
|  | 
 | ||||||
|  |     const backdropAnimation = createAnimation() | ||||||
|  |         .addElement(baseEl.querySelector('ion-backdrop')!) | ||||||
|  |         .fromTo('opacity', 0.4, 0.0); | ||||||
|  | 
 | ||||||
|  |     const wrapperAnimation = createAnimation() | ||||||
|  |         .addElement(baseEl.querySelector('.modal-wrapper')!) | ||||||
|  |         .beforeStyles({ opacity: 1 }) | ||||||
|  |         .fromTo('transform', 'translateX(0)', 'translateX(' + OFF_RIGHT + ')'); | ||||||
|  | 
 | ||||||
|  |     return createAnimation() | ||||||
|  |         .addElement(baseEl) | ||||||
|  |         .easing('cubic-bezier(0.36,0.66,0.04,1)') | ||||||
|  |         .duration(300) | ||||||
|  |         .addAnimation([backdropAnimation, wrapperAnimation]); | ||||||
|  | } | ||||||
| @ -37,6 +37,7 @@ import { CoreNetworkError } from '@classes/errors/network-error'; | |||||||
| import { CoreBSTooltipComponent } from '@components/bs-tooltip/bs-tooltip'; | import { CoreBSTooltipComponent } from '@components/bs-tooltip/bs-tooltip'; | ||||||
| import { CoreViewerImageComponent } from '@features/viewer/components/image/image'; | import { CoreViewerImageComponent } from '@features/viewer/components/image/image'; | ||||||
| import { CoreFormFields, CoreForms } from '../../singletons/form'; | import { CoreFormFields, CoreForms } from '../../singletons/form'; | ||||||
|  | import { CoreModalLateralTransitionEnter, CoreModalLateralTransitionLeave } from '@classes/modal-lateral-transition'; | ||||||
| 
 | 
 | ||||||
| /* | /* | ||||||
|  * "Utils" service with helper functions for UI, DOM elements and HTML code. |  * "Utils" service with helper functions for UI, DOM elements and HTML code. | ||||||
| @ -1721,8 +1722,8 @@ export class CoreDomUtilsProvider { | |||||||
|             cssClass: 'core-modal-lateral', |             cssClass: 'core-modal-lateral', | ||||||
|             showBackdrop: true, |             showBackdrop: true, | ||||||
|             backdropDismiss: true, |             backdropDismiss: true, | ||||||
|             // @todo enterAnimation: 'core-modal-lateral-transition',
 |             enterAnimation: CoreModalLateralTransitionEnter, | ||||||
|             // @todo leaveAnimation: 'core-modal-lateral-transition',
 |             leaveAnimation: CoreModalLateralTransitionLeave, | ||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
|         return await this.openModal<T>(modalOptions); |         return await this.openModal<T>(modalOptions); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user