2022-05-11 14:26:18 +08:00
|
|
|
import type * as React from 'react';
|
|
|
|
import type { CSSMotionProps } from 'rc-motion';
|
2024-04-08 14:04:08 +08:00
|
|
|
|
2022-05-11 14:26:18 +08:00
|
|
|
import type { NotificationPlacement } from './interface';
|
|
|
|
|
|
|
|
export function getPlacementStyle(placement: NotificationPlacement, top: number, bottom: number) {
|
|
|
|
let style: React.CSSProperties;
|
|
|
|
|
|
|
|
switch (placement) {
|
|
|
|
case 'top':
|
|
|
|
style = {
|
|
|
|
left: '50%',
|
|
|
|
transform: 'translateX(-50%)',
|
|
|
|
right: 'auto',
|
|
|
|
top,
|
|
|
|
bottom: 'auto',
|
|
|
|
};
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'topLeft':
|
|
|
|
style = {
|
|
|
|
left: 0,
|
|
|
|
top,
|
|
|
|
bottom: 'auto',
|
|
|
|
};
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'topRight':
|
|
|
|
style = {
|
|
|
|
right: 0,
|
|
|
|
top,
|
|
|
|
bottom: 'auto',
|
|
|
|
};
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'bottom':
|
|
|
|
style = {
|
|
|
|
left: '50%',
|
|
|
|
transform: 'translateX(-50%)',
|
|
|
|
right: 'auto',
|
|
|
|
top: 'auto',
|
|
|
|
bottom,
|
|
|
|
};
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'bottomLeft':
|
|
|
|
style = {
|
|
|
|
left: 0,
|
|
|
|
top: 'auto',
|
|
|
|
bottom,
|
|
|
|
};
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
style = {
|
|
|
|
right: 0,
|
|
|
|
top: 'auto',
|
|
|
|
bottom,
|
|
|
|
};
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return style;
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getMotion(prefixCls: string): CSSMotionProps {
|
|
|
|
return {
|
|
|
|
motionName: `${prefixCls}-fade`,
|
|
|
|
};
|
|
|
|
}
|