import { animate, AnimationTransitionMetadata, AnimationTriggerMetadata, group, state, style, transition, trigger, } from '@angular/animations'; import { ANIMATION_DEFAULTS_CONST, } from './animation-defaults.const'; import { ScaleFadeAnimationConfigInterface, } from './scale-fade-animation-config.interface'; export function scaleFadeAnimation( config?: ScaleFadeAnimationConfigInterface, ): AnimationTriggerMetadata { return trigger( (config && config.animationName) || 'scaleFadeAnimation', [ transition(':enter', [ style({ opacity: 0, transform: 'scale(1.06)', }), group([ animate( (config && config.animationTimingsEnter) || ANIMATION_DEFAULTS_CONST.animationTimings, style({ transform: 'scale(1)', }), ), animate( (config && config.animationTimingsFadePartEnter) || ANIMATION_DEFAULTS_CONST.animationTimings, style({ opacity: 1, }), ), ]), ]), transition(':leave', [ style({ opacity: 1, }), animate( (config && config.animationTimingsLeave) || ANIMATION_DEFAULTS_CONST.animationTimings, style({ opacity: 0, }), ), ]), ], ); }