element-plus
Version:
A Component Library for Vue 3
22 lines (21 loc) • 703 B
JavaScript
import { computed, ref, watch, nextTick } from 'vue';
export const useTransitionProps = {
transitionDuration: {
type: Number,
default: 0.3,
},
transitionShow: String,
transitionHide: String,
};
export const useTransition = (props, indicator) => {
const transitionState = ref(indicator.value);
watch(indicator, (val) => {
nextTick(() => (transitionState.value = val));
});
return {
transition: computed(() => {
return `el-transition--${transitionState.value ? props.transitionShow : props.transitionHide}`;
}),
transitionStyle: computed(() => `--el-transition-duration: ${props.transitionDuration}s`),
};
};