mirror of
https://github.com/ant-design/ant-design.git
synced 2024-12-21 04:48:02 +08:00
51 lines
1.7 KiB
TypeScript
51 lines
1.7 KiB
TypeScript
// Style as inline component
|
|
import type { CSSObject } from '@ant-design/cssinjs';
|
|
|
|
import { genCompactItemStyle } from '../../style/compact-item';
|
|
import { genCompactItemVerticalStyle } from '../../style/compact-item-vertical';
|
|
import type { GenerateStyle } from '../../theme/internal';
|
|
import { genSubStyleComponent } from '../../theme/internal';
|
|
import type { ButtonToken } from './token';
|
|
import { prepareComponentToken, prepareToken } from './token';
|
|
|
|
const genButtonCompactStyle: GenerateStyle<ButtonToken> = (token) => {
|
|
const { componentCls, colorPrimaryHover, lineWidth, calc } = token;
|
|
const insetOffset = calc(lineWidth).mul(-1).equal();
|
|
const getCompactBorderStyle = (vertical?: boolean) =>
|
|
({
|
|
[`${componentCls}-compact${vertical ? '-vertical' : ''}-item${componentCls}-primary:not([disabled])`]:
|
|
{
|
|
'& + &::before': {
|
|
position: 'absolute',
|
|
top: vertical ? insetOffset : 0,
|
|
insetInlineStart: vertical ? 0 : insetOffset,
|
|
backgroundColor: colorPrimaryHover,
|
|
content: '""',
|
|
width: vertical ? '100%' : lineWidth,
|
|
height: vertical ? lineWidth : '100%',
|
|
},
|
|
},
|
|
}) as CSSObject;
|
|
// Special styles for Primary Button
|
|
return {
|
|
...getCompactBorderStyle(),
|
|
...getCompactBorderStyle(true),
|
|
};
|
|
};
|
|
|
|
// ============================== Export ==============================
|
|
export default genSubStyleComponent(
|
|
['Button', 'compact'],
|
|
(token) => {
|
|
const buttonToken = prepareToken(token);
|
|
|
|
return [
|
|
// Space Compact
|
|
genCompactItemStyle(buttonToken),
|
|
genCompactItemVerticalStyle(buttonToken),
|
|
genButtonCompactStyle(buttonToken),
|
|
];
|
|
},
|
|
prepareComponentToken,
|
|
);
|