112 lines
3.0 KiB
JavaScript
112 lines
3.0 KiB
JavaScript
|
const genFixedStyle = token => {
|
||
|
const {
|
||
|
componentCls,
|
||
|
lineWidth,
|
||
|
colorSplit,
|
||
|
motionDurationSlow,
|
||
|
zIndexTableFixed,
|
||
|
tableBg,
|
||
|
zIndexTableSticky
|
||
|
} = token;
|
||
|
const shadowColor = colorSplit;
|
||
|
// Follow style is magic of shadow which should not follow token:
|
||
|
return {
|
||
|
[`${componentCls}-wrapper`]: {
|
||
|
[`
|
||
|
${componentCls}-cell-fix-left,
|
||
|
${componentCls}-cell-fix-right
|
||
|
`]: {
|
||
|
position: 'sticky !important',
|
||
|
zIndex: zIndexTableFixed,
|
||
|
background: tableBg
|
||
|
},
|
||
|
[`
|
||
|
${componentCls}-cell-fix-left-first::after,
|
||
|
${componentCls}-cell-fix-left-last::after
|
||
|
`]: {
|
||
|
position: 'absolute',
|
||
|
top: 0,
|
||
|
right: {
|
||
|
_skip_check_: true,
|
||
|
value: 0
|
||
|
},
|
||
|
bottom: -lineWidth,
|
||
|
width: 30,
|
||
|
transform: 'translateX(100%)',
|
||
|
transition: `box-shadow ${motionDurationSlow}`,
|
||
|
content: '""',
|
||
|
pointerEvents: 'none'
|
||
|
},
|
||
|
[`${componentCls}-cell-fix-left-all::after`]: {
|
||
|
display: 'none'
|
||
|
},
|
||
|
[`
|
||
|
${componentCls}-cell-fix-right-first::after,
|
||
|
${componentCls}-cell-fix-right-last::after
|
||
|
`]: {
|
||
|
position: 'absolute',
|
||
|
top: 0,
|
||
|
bottom: -lineWidth,
|
||
|
left: {
|
||
|
_skip_check_: true,
|
||
|
value: 0
|
||
|
},
|
||
|
width: 30,
|
||
|
transform: 'translateX(-100%)',
|
||
|
transition: `box-shadow ${motionDurationSlow}`,
|
||
|
content: '""',
|
||
|
pointerEvents: 'none'
|
||
|
},
|
||
|
[`${componentCls}-container`]: {
|
||
|
'&::before, &::after': {
|
||
|
position: 'absolute',
|
||
|
top: 0,
|
||
|
bottom: 0,
|
||
|
zIndex: zIndexTableSticky + 1,
|
||
|
width: 30,
|
||
|
transition: `box-shadow ${motionDurationSlow}`,
|
||
|
content: '""',
|
||
|
pointerEvents: 'none'
|
||
|
},
|
||
|
'&::before': {
|
||
|
insetInlineStart: 0
|
||
|
},
|
||
|
'&::after': {
|
||
|
insetInlineEnd: 0
|
||
|
}
|
||
|
},
|
||
|
[`${componentCls}-ping-left`]: {
|
||
|
[`&:not(${componentCls}-has-fix-left) ${componentCls}-container`]: {
|
||
|
position: 'relative',
|
||
|
'&::before': {
|
||
|
boxShadow: `inset 10px 0 8px -8px ${shadowColor}`
|
||
|
}
|
||
|
},
|
||
|
[`
|
||
|
${componentCls}-cell-fix-left-first::after,
|
||
|
${componentCls}-cell-fix-left-last::after
|
||
|
`]: {
|
||
|
boxShadow: `inset 10px 0 8px -8px ${shadowColor}`
|
||
|
},
|
||
|
[`${componentCls}-cell-fix-left-last::before`]: {
|
||
|
backgroundColor: 'transparent !important'
|
||
|
}
|
||
|
},
|
||
|
[`${componentCls}-ping-right`]: {
|
||
|
[`&:not(${componentCls}-has-fix-right) ${componentCls}-container`]: {
|
||
|
position: 'relative',
|
||
|
'&::after': {
|
||
|
boxShadow: `inset -10px 0 8px -8px ${shadowColor}`
|
||
|
}
|
||
|
},
|
||
|
[`
|
||
|
${componentCls}-cell-fix-right-first::after,
|
||
|
${componentCls}-cell-fix-right-last::after
|
||
|
`]: {
|
||
|
boxShadow: `inset -10px 0 8px -8px ${shadowColor}`
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
};
|
||
|
export default genFixedStyle;
|