vuecssuiant-designantdreactantantd-vueenterprisefrontendui-designvue-antdvue-antd-uivue3vuecomponent
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.4 KiB
52 lines
1.4 KiB
/* eslint-disable import/prefer-default-export */ |
|
import type { CSSObject, Keyframes } from '../../_util/cssinjs'; |
|
|
|
const initMotionCommon = (duration: string): CSSObject => ({ |
|
animationDuration: duration, |
|
animationFillMode: 'both', |
|
}); |
|
|
|
// FIXME: origin less code seems same as initMotionCommon. Maybe we can safe remove |
|
const initMotionCommonLeave = (duration: string): CSSObject => ({ |
|
animationDuration: duration, |
|
animationFillMode: 'both', |
|
}); |
|
|
|
export const initMotion = ( |
|
motionCls: string, |
|
inKeyframes: Keyframes, |
|
outKeyframes: Keyframes, |
|
duration: string, |
|
sameLevel = false, |
|
): CSSObject => { |
|
const sameLevelPrefix = sameLevel ? '&' : ''; |
|
|
|
return { |
|
[` |
|
${sameLevelPrefix}${motionCls}-enter, |
|
${sameLevelPrefix}${motionCls}-appear |
|
`]: { |
|
...initMotionCommon(duration), |
|
animationPlayState: 'paused', |
|
}, |
|
|
|
[`${sameLevelPrefix}${motionCls}-leave`]: { |
|
...initMotionCommonLeave(duration), |
|
animationPlayState: 'paused', |
|
}, |
|
|
|
[` |
|
${sameLevelPrefix}${motionCls}-enter${motionCls}-enter-active, |
|
${sameLevelPrefix}${motionCls}-appear${motionCls}-appear-active |
|
`]: { |
|
animationName: inKeyframes, |
|
animationPlayState: 'running', |
|
}, |
|
|
|
[`${sameLevelPrefix}${motionCls}-leave${motionCls}-leave-active`]: { |
|
animationName: outKeyframes, |
|
animationPlayState: 'running', |
|
pointerEvents: 'none', |
|
}, |
|
}; |
|
};
|
|
|