|
|
|
@ -17,7 +17,6 @@ import { booleanType, stringType, functionType, someType } from '../_util/type';
|
|
|
|
|
|
|
|
|
|
// CSSINJS |
|
|
|
|
import useStyle from './style'; |
|
|
|
|
import { useToken } from '../theme/internal'; |
|
|
|
|
|
|
|
|
|
export const stepsProps = () => ({ |
|
|
|
|
prefixCls: String, |
|
|
|
@ -30,11 +29,8 @@ export const stepsProps = () => ({
|
|
|
|
|
status: stringType<'wait' | 'process' | 'finish' | 'error'>(), |
|
|
|
|
size: stringType<'default' | 'small'>(), |
|
|
|
|
direction: stringType<'horizontal' | 'vertical'>(), |
|
|
|
|
progressDot: someType<boolean | ProgressDotRender>( |
|
|
|
|
[Boolean, Function], |
|
|
|
|
undefined as boolean | ProgressDotRender, |
|
|
|
|
), |
|
|
|
|
type: stringType<'default' | 'navigation'>(), |
|
|
|
|
progressDot: someType<boolean | ProgressDotRender>([Boolean, Function]), |
|
|
|
|
type: stringType<'default' | 'navigation' | 'inline'>(), |
|
|
|
|
onChange: functionType<(current: number) => void>(), |
|
|
|
|
'onUpdate:current': functionType<(current: number) => void>(), |
|
|
|
|
}); |
|
|
|
@ -67,9 +63,6 @@ const Steps = defineComponent({
|
|
|
|
|
setup(props, { attrs, slots, emit }) { |
|
|
|
|
const { prefixCls, direction: rtlDirection, configProvider } = useConfigInject('steps', props); |
|
|
|
|
|
|
|
|
|
// 接入换肤 |
|
|
|
|
const [, token] = useToken(); |
|
|
|
|
|
|
|
|
|
// style |
|
|
|
|
const [wrapSSR, hashId] = useStyle(prefixCls); |
|
|
|
|
|
|
|
|
@ -82,6 +75,8 @@ const Steps = defineComponent({
|
|
|
|
|
emit('update:current', current); |
|
|
|
|
emit('change', current); |
|
|
|
|
}; |
|
|
|
|
const isInline = computed(() => props.type === 'inline'); |
|
|
|
|
const mergedPercent = computed(() => (isInline.value ? undefined : props.percent)); |
|
|
|
|
const stepIconRender = ({ |
|
|
|
|
node, |
|
|
|
|
status, |
|
|
|
@ -99,9 +94,8 @@ const Steps = defineComponent({
|
|
|
|
|
<div class={`${prefixCls.value}-progress-icon`}> |
|
|
|
|
<Progress |
|
|
|
|
type="circle" |
|
|
|
|
percent={props.percent} |
|
|
|
|
percent={mergedPercent.value} |
|
|
|
|
width={progressWidth} |
|
|
|
|
strokeColor={token.value.colorPrimary} |
|
|
|
|
strokeWidth={4} |
|
|
|
|
format={() => null} |
|
|
|
|
/> |
|
|
|
@ -112,22 +106,23 @@ const Steps = defineComponent({
|
|
|
|
|
} |
|
|
|
|
return node; |
|
|
|
|
}; |
|
|
|
|
const icons = computed(() => ({ |
|
|
|
|
finish: <CheckOutlined class={`${prefixCls.value}-finish-icon`} />, |
|
|
|
|
error: <CloseOutlined class={`${prefixCls.value}-error-icon`} />, |
|
|
|
|
})); |
|
|
|
|
return () => { |
|
|
|
|
const stepsClassName = classNames( |
|
|
|
|
{ |
|
|
|
|
[`${prefixCls.value}-rtl`]: rtlDirection.value === 'rtl', |
|
|
|
|
[`${prefixCls.value}-with-progress`]: props.percent !== undefined, |
|
|
|
|
[`${prefixCls.value}-with-progress`]: mergedPercent.value !== undefined, |
|
|
|
|
}, |
|
|
|
|
attrs.class, |
|
|
|
|
hashId.value, |
|
|
|
|
); |
|
|
|
|
const icons = { |
|
|
|
|
finish: <CheckOutlined class={`${prefixCls}-finish-icon`} />, |
|
|
|
|
error: <CloseOutlined class={`${prefixCls}-error-icon`} />, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
return wrapSSR( |
|
|
|
|
<VcSteps |
|
|
|
|
icons={icons} |
|
|
|
|
icons={icons.value} |
|
|
|
|
{...attrs} |
|
|
|
|
{...omit(props, ['percent', 'responsive'])} |
|
|
|
|
direction={direction.value} |
|
|
|
|