import { animate, AnimationTransitionMetadata, AnimationTriggerMetadata, group, state, style, transition, trigger, } from '@angular/animations'; import AnimationConfig from './animation-config.interface'; import ANIMATION_DEFAULTS_CONST from './animation-defaults.const'; const scaleFadeAnimation = (config: AnimationConfig = {}): AnimationTriggerMetadata => { const animationTime = config.animationTimings != null ? config.animationTimings : ANIMATION_DEFAULTS_CONST.animationTimings; const { animationTimingsEnter = animationTime, animationTimingsLeave = animationTime, animationName = 'scaleFadeAnimation', } = config; const transitons: AnimationTransitionMetadata[] = [ transition(':enter', [ style({ opacity: 0, transform: 'scale(1.06)', }), group([ animate( animationTimingsEnter, style({ transform: 'scale(1)', }), ), animate( 0.464 * parseFloat(animationTimingsEnter.toString()) + 'ms linear', style({ opacity: 1, }), ), ]), ]), transition(':leave', [ style({ opacity: 1, }), animate( animationTimingsLeave, style({ opacity: 0, }), ), ]), ]; return trigger( animationName, transitons, ); }; export default scaleFadeAnimation;