50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
| import type { CSSInterpolation } from '../../_util/cssinjs';
 | |
| import { Keyframes } from '../../_util/cssinjs';
 | |
| import type { AliasToken } from '../../theme/internal';
 | |
| import type { TokenWithCommonCls } from '../../theme/util/genComponentStyleHook';
 | |
| import { initMotion } from './motion';
 | |
| 
 | |
| export const fadeIn = new Keyframes('antFadeIn', {
 | |
|   '0%': {
 | |
|     opacity: 0,
 | |
|   },
 | |
|   '100%': {
 | |
|     opacity: 1,
 | |
|   },
 | |
| });
 | |
| 
 | |
| export const fadeOut = new Keyframes('antFadeOut', {
 | |
|   '0%': {
 | |
|     opacity: 1,
 | |
|   },
 | |
|   '100%': {
 | |
|     opacity: 0,
 | |
|   },
 | |
| });
 | |
| 
 | |
| export const initFadeMotion = (
 | |
|   token: TokenWithCommonCls<AliasToken>,
 | |
|   sameLevel = false,
 | |
| ): CSSInterpolation => {
 | |
|   const { antCls } = token;
 | |
|   const motionCls = `${antCls}-fade`;
 | |
|   const sameLevelPrefix = sameLevel ? '&' : '';
 | |
| 
 | |
|   return [
 | |
|     initMotion(motionCls, fadeIn, fadeOut, token.motionDurationMid, sameLevel),
 | |
|     {
 | |
|       [`
 | |
|         ${sameLevelPrefix}${motionCls}-enter,
 | |
|         ${sameLevelPrefix}${motionCls}-appear
 | |
|       `]: {
 | |
|         opacity: 0,
 | |
|         animationTimingFunction: 'linear',
 | |
|       },
 | |
| 
 | |
|       [`${sameLevelPrefix}${motionCls}-leave`]: {
 | |
|         animationTimingFunction: 'linear',
 | |
|       },
 | |
|     },
 | |
|   ];
 | |
| };
 |