import { animate, AnimationTransitionMetadata, AnimationTriggerMetadata, state, style, transition, trigger, } from '@angular/animations'; import AnimationConfig from './animation-config.interface'; import ANIMATION_DEFAULTS_CONST from './animation-defaults.const'; const fadeInOutAnimation = (config: AnimationConfig = {}): AnimationTriggerMetadata => { const animationTime = config.animationTimings != null ? config.animationTimings : ANIMATION_DEFAULTS_CONST.animationTimings; const { animationTimingsEnter = animationTime, animationTimingsLeave = animationTime, animationName = 'fadeInOutAnimation', } = config; const transitons: AnimationTransitionMetadata[] = [ transition(':enter', [ style({ opacity: 0, }), animate( animationTimingsEnter, style({ opacity: 1, }), )], ), transition(':leave', [ style({ opacity: 1, }), animate( animationTimingsLeave, style({ opacity: 0, }), ), ]), ]; return trigger( animationName, transitons, ); }; export default fadeInOutAnimation;