82 lines
2.0 KiB
TypeScript
82 lines
2.0 KiB
TypeScript
|
import type { CSSObject } from '../../_util/cssinjs';
|
||
|
import { Keyframes } from '../../_util/cssinjs';
|
||
|
import type { NotificationToken } from '.';
|
||
|
import type { GenerateStyle } from '../../theme/internal';
|
||
|
|
||
|
const genNotificationPlacementStyle: GenerateStyle<NotificationToken, CSSObject> = token => {
|
||
|
const { componentCls, width, notificationMarginEdge } = token;
|
||
|
|
||
|
const notificationTopFadeIn = new Keyframes('antNotificationTopFadeIn', {
|
||
|
'0%': {
|
||
|
marginTop: '-100%',
|
||
|
opacity: 0,
|
||
|
},
|
||
|
|
||
|
'100%': {
|
||
|
marginTop: 0,
|
||
|
opacity: 1,
|
||
|
},
|
||
|
});
|
||
|
|
||
|
const notificationBottomFadeIn = new Keyframes('antNotificationBottomFadeIn', {
|
||
|
'0%': {
|
||
|
marginBottom: '-100%',
|
||
|
opacity: 0,
|
||
|
},
|
||
|
|
||
|
'100%': {
|
||
|
marginBottom: 0,
|
||
|
opacity: 1,
|
||
|
},
|
||
|
});
|
||
|
|
||
|
const notificationLeftFadeIn = new Keyframes('antNotificationLeftFadeIn', {
|
||
|
'0%': {
|
||
|
right: {
|
||
|
_skip_check_: true,
|
||
|
value: width,
|
||
|
},
|
||
|
opacity: 0,
|
||
|
},
|
||
|
|
||
|
'100%': {
|
||
|
right: {
|
||
|
_skip_check_: true,
|
||
|
value: 0,
|
||
|
},
|
||
|
opacity: 1,
|
||
|
},
|
||
|
});
|
||
|
|
||
|
return {
|
||
|
[`&${componentCls}-top, &${componentCls}-bottom`]: {
|
||
|
marginInline: 0,
|
||
|
},
|
||
|
|
||
|
[`&${componentCls}-top`]: {
|
||
|
[`${componentCls}-fade-enter${componentCls}-fade-enter-active, ${componentCls}-fade-appear${componentCls}-fade-appear-active`]:
|
||
|
{
|
||
|
animationName: notificationTopFadeIn,
|
||
|
},
|
||
|
},
|
||
|
|
||
|
[`&${componentCls}-bottom`]: {
|
||
|
[`${componentCls}-fade-enter${componentCls}-fade-enter-active, ${componentCls}-fade-appear${componentCls}-fade-appear-active`]:
|
||
|
{
|
||
|
animationName: notificationBottomFadeIn,
|
||
|
},
|
||
|
},
|
||
|
|
||
|
[`&${componentCls}-topLeft, &${componentCls}-bottomLeft`]: {
|
||
|
marginInlineEnd: 0,
|
||
|
marginInlineStart: notificationMarginEdge,
|
||
|
|
||
|
[`${componentCls}-fade-enter${componentCls}-fade-enter-active, ${componentCls}-fade-appear${componentCls}-fade-appear-active`]:
|
||
|
{
|
||
|
animationName: notificationLeftFadeIn,
|
||
|
},
|
||
|
},
|
||
|
};
|
||
|
};
|
||
|
export default genNotificationPlacementStyle;
|