import { animate, AnimationTransitionMetadata, AnimationTriggerMetadata, state, style, transition, trigger, } from '@angular/animations'; import { AnimationConfigInterface, } from './animation-config.interface'; import { ANIMATION_DEFAULTS_CONST, } from './animation-defaults.const'; export function toggledFadeInOutAnimation( config?: AnimationConfigInterface, ): AnimationTriggerMetadata { return trigger( (config && config.animationName) || 'toggledFadeInOutAnimation', [ transition('void => disabled', [ style({ opacity: 0, }), animate( '0s', style({ opacity: 1, }), ), ]), transition('void => enabled', [ style({ opacity: 0, }), animate( (config && config.animationTimingsEnter) || ANIMATION_DEFAULTS_CONST.animationTimings, style({ opacity: 1, }), )], ), transition('enabled => void', [ style({ opacity: 1, }), animate( (config && config.animationTimingsLeave) || ANIMATION_DEFAULTS_CONST.animationTimings, style({ opacity: 0, }), ), ]), transition('disabled => void', [ style({ opacity: 1, }), animate( '0s', style({ opacity: 0, }), ), ]), ], ); }