You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1021 B
46 lines
1021 B
import type { CSSMotionProps } from 'rc-motion';
|
|
import type { AnimatedConfig } from 'rc-tabs/lib/interface';
|
|
import type { TabsProps } from '..';
|
|
import { getTransitionName } from '../../_util/motion';
|
|
|
|
const motion: CSSMotionProps = {
|
|
motionAppear: false,
|
|
motionEnter: true,
|
|
motionLeave: true,
|
|
};
|
|
|
|
export default function useAnimateConfig(
|
|
prefixCls: string,
|
|
animated: TabsProps['animated'] = {
|
|
inkBar: true,
|
|
tabPane: false,
|
|
},
|
|
): AnimatedConfig {
|
|
let mergedAnimated: AnimatedConfig;
|
|
|
|
if (animated === false) {
|
|
mergedAnimated = {
|
|
inkBar: false,
|
|
tabPane: false,
|
|
};
|
|
} else if (animated === true) {
|
|
mergedAnimated = {
|
|
inkBar: true,
|
|
tabPane: true,
|
|
};
|
|
} else {
|
|
mergedAnimated = {
|
|
inkBar: true,
|
|
...(typeof animated === 'object' ? animated : {}),
|
|
};
|
|
}
|
|
|
|
if (mergedAnimated.tabPane) {
|
|
mergedAnimated.tabPaneMotion = {
|
|
...motion,
|
|
motionName: getTransitionName(prefixCls, 'switch'),
|
|
};
|
|
}
|
|
|
|
return mergedAnimated;
|
|
}
|
|
|