ant-design-vue/components/collapse/src/openAnimationFactory.js

36 lines
754 B
JavaScript

import cssAnimation from '../../_util/css-animation'
function animate (node, show, transitionName, done) {
let height
return cssAnimation(node, transitionName, {
start () {
if (!show) {
node.style.height = `${node.offsetHeight}px`
} else {
height = node.offsetHeight
node.style.height = 0
}
},
active () {
node.style.height = `${show ? height : 0}px`
},
end () {
node.style.height = ''
done()
},
})
}
function animation (prefixCls) {
return {
enter (node, done) {
return animate(node, true, `${prefixCls}-anim`, done)
},
leave (node, done) {
return animate(node, false, `${prefixCls}-anim`, done)
},
}
}
export default animation