import { computed, ref, watch, nextTick } from 'vue' import type { ExtractPropTypes, Ref } from 'vue' export const useTransitionProps = { transitionDuration: { type: Number, default: 0.3, }, transitionShow: String, transitionHide: String, } export const useTransition = ( props: ExtractPropTypes, indicator: Ref, ) => { 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`, ), } }