49 lines
1.1 KiB
TypeScript
Raw Permalink Normal View History

2024-11-05 10:14:41 +08:00
import { ref, toRef, watch } from 'vue'
import { useComponentColor } from '../../../../hooks'
import type { ProgressBaseProps } from '../../common-props/progress'
interface ProgressPropsType extends ProgressBaseProps {
[key: string]: any
}
export const useProgressProps = (props: ProgressPropsType) => {
const [activeColorClass, activeColorStyle] = useComponentColor(
toRef(props, 'activeColor'),
'bg'
)
const [inactiveColorClass, inactiveColorStyle] = useComponentColor(
toRef(props, 'inactiveColor'),
'bg'
)
// 当前的进度百分比
const percent = ref(0)
let firstInitPercent = true
// 为了有动画效果,需要在下一次渲染时再设置进度条的长度
watch(
() => props.percent,
(val) => {
if (!firstInitPercent) {
percent.value = val
} else {
setTimeout(() => {
percent.value = val
firstInitPercent = false
}, 50)
}
},
{
immediate: true,
}
)
return {
percent,
activeColorClass,
activeColorStyle,
inactiveColorClass,
inactiveColorStyle,
}
}