antd
Version:
An enterprise-class UI design language and React components implementation
277 lines (276 loc) • 11.5 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import _extends from "@babel/runtime/helpers/esm/extends";
import { genComponentStyleHook, mergeToken } from '../../theme';
import { clearFix, resetComponent, textEllipsis } from '../../style';
// ============================== Styles ==============================
// ============================== Head ==============================
var genCardHeadStyle = function genCardHeadStyle(token) {
var antCls = token.antCls,
componentCls = token.componentCls,
cardHeadHeight = token.cardHeadHeight,
cardHeadPadding = token.cardHeadPadding,
cardPaddingBase = token.cardPaddingBase,
cardHeadTabsMarginBottom = token.cardHeadTabsMarginBottom;
return _extends(_extends({
minHeight: cardHeadHeight,
marginBottom: -1,
padding: "0 " + cardPaddingBase + "px",
color: token.colorTextHeading,
fontWeight: token.fontWeightStrong,
fontSize: token.fontSizeLG,
background: 'transparent',
borderBottom: token.lineWidth + "px " + token.lineType + " " + token.colorBorderSecondary,
borderRadius: token.borderRadiusLG + "px " + token.borderRadiusLG + "px 0 0"
}, clearFix()), _defineProperty({
'&-wrapper': {
display: 'flex',
alignItems: 'center'
},
'&-title': _extends(_extends({
display: 'inline-block',
flex: 1,
padding: cardHeadPadding + "px 0"
}, textEllipsis), _defineProperty({}, "\n > " + componentCls + "-typography,\n > " + componentCls + "-typography-edit-content\n ", {
insetInlineStart: 0,
marginTop: 0,
marginBottom: 0
}))
}, antCls + "-tabs-top", {
clear: 'both',
marginBottom: cardHeadTabsMarginBottom,
color: token.colorText,
fontWeight: 'normal',
fontSize: token.fontSize,
'&-bar': {
borderBottom: token.lineWidth + "px " + token.lineType + " " + token.colorBorderSecondary
}
}));
};
// ============================== Grid ==============================
var genCardGridStyle = function genCardGridStyle(token) {
var cardPaddingBase = token.cardPaddingBase,
colorBorderSecondary = token.colorBorderSecondary,
cardShadow = token.cardShadow,
lineWidth = token.lineWidth;
return {
width: '33.33%',
padding: cardPaddingBase,
border: 0,
borderRadius: 0,
boxShadow: "\n " + lineWidth + "px 0 0 0 " + colorBorderSecondary + ",\n 0 " + lineWidth + "px 0 0 " + colorBorderSecondary + ",\n " + lineWidth + "px " + lineWidth + "px 0 0 " + colorBorderSecondary + ",\n " + lineWidth + "px 0 0 0 " + colorBorderSecondary + " inset,\n 0 " + lineWidth + "px 0 0 " + colorBorderSecondary + " inset;\n ",
transition: "all " + token.motionDurationMid,
'&-hoverable:hover': {
position: 'relative',
zIndex: 1,
boxShadow: cardShadow
}
};
};
// ============================== Actions ==============================
var genCardActionsStyle = function genCardActionsStyle(token) {
var _span;
var componentCls = token.componentCls,
iconCls = token.iconCls,
cardActionsLiMargin = token.cardActionsLiMargin,
cardActionsIconSize = token.cardActionsIconSize,
colorBorderSecondary = token.colorBorderSecondary;
return _extends(_extends({
margin: 0,
padding: 0,
listStyle: 'none',
background: token.colorBgContainer,
borderTop: token.lineWidth + "px " + token.lineType + " " + colorBorderSecondary,
display: 'flex'
}, clearFix()), {
'& > li': {
margin: cardActionsLiMargin,
color: token.colorTextDescription,
textAlign: 'center',
'> span': (_span = {
position: 'relative',
display: 'block',
minWidth: token.cardActionsIconSize * 2,
fontSize: token.fontSize,
lineHeight: token.lineHeight,
cursor: 'pointer',
'&:hover': {
color: token.colorPrimary,
transition: "color " + token.motionDurationMid
}
}, _defineProperty(_span, "a:not(" + componentCls + "-btn), > " + iconCls, {
display: 'inline-block',
width: '100%',
color: token.colorTextDescription,
lineHeight: token.fontSize * token.lineHeight + "px",
transition: "color " + token.motionDurationMid,
'&:hover': {
color: token.colorPrimary
}
}), _defineProperty(_span, "> " + iconCls, {
fontSize: cardActionsIconSize,
lineHeight: cardActionsIconSize * token.lineHeight + "px"
}), _span),
'&:not(:last-child)': {
borderInlineEnd: token.lineWidth + "px " + token.lineType + " " + colorBorderSecondary
}
}
});
};
// ============================== Meta ==============================
var genCardMetaStyle = function genCardMetaStyle(token) {
return _extends(_extends({
margin: "-" + token.marginXXS + "px 0",
display: 'flex'
}, clearFix()), {
'&-avatar': {
paddingInlineEnd: token.padding
},
'&-detail': {
overflow: 'hidden',
'> div:not(:last-child)': {
marginBottom: token.marginXS
}
},
'&-title': _extends({
color: token.colorTextHeading,
fontWeight: token.fontWeightStrong,
fontSize: token.fontSizeLG
}, textEllipsis),
'&-description': {
color: token.colorTextDescription
}
});
};
// ============================== Inner ==============================
var genCardTypeInnerStyle = function genCardTypeInnerStyle(token) {
var _ref;
var componentCls = token.componentCls,
cardPaddingBase = token.cardPaddingBase,
colorFillAlter = token.colorFillAlter,
cardInnerHeadPadding = token.cardInnerHeadPadding;
return _ref = {}, _defineProperty(_ref, componentCls + "-head", {
padding: "0 " + cardPaddingBase + "px",
background: colorFillAlter,
'&-title': {
padding: cardInnerHeadPadding + "px 0",
fontSize: token.fontSize
}
}), _defineProperty(_ref, componentCls + "-body", {
padding: token.padding + "px " + cardPaddingBase + "px"
}), _defineProperty(_ref, componentCls + "-extra", {
padding: cardInnerHeadPadding + 1.5 + "px 0"
}), _ref;
};
// ============================== Loading ==============================
var genCardLoadingStyle = function genCardLoadingStyle(token) {
var componentCls = token.componentCls;
return _defineProperty({
overflow: 'hidden'
}, componentCls + "-body", {
userSelect: 'none'
});
};
// ============================== Basic ==============================
var genCardStyle = function genCardStyle(token) {
var _extends4, _ref4, _ref5, _ref7;
var componentCls = token.componentCls,
cardShadow = token.cardShadow,
cardHeadHeight = token.cardHeadHeight,
cardHeadPadding = token.cardHeadPadding,
colorBorderSecondary = token.colorBorderSecondary,
boxShadow = token.boxShadow,
cardPaddingBase = token.cardPaddingBase;
return _ref7 = {}, _defineProperty(_ref7, componentCls, _extends(_extends({}, resetComponent(token)), (_extends4 = {
position: 'relative',
background: token.colorBgContainer,
borderRadius: token.borderRadiusLG
}, _defineProperty(_extends4, "&:not(" + componentCls + "-bordered)", {
boxShadow: boxShadow
}), _defineProperty(_extends4, componentCls + "-head", genCardHeadStyle(token)), _defineProperty(_extends4, componentCls + "-extra", {
// https://stackoverflow.com/a/22429853/3040605
marginInlineStart: 'auto',
padding: '',
color: '',
fontWeight: 'normal',
fontSize: token.fontSize
}), _defineProperty(_extends4, componentCls + "-body", _extends({
padding: cardPaddingBase
}, clearFix())), _defineProperty(_extends4, componentCls + "-grid", genCardGridStyle(token)), _defineProperty(_extends4, componentCls + "-cover", {
'> *': {
display: 'block',
width: '100%'
},
img: {
borderRadius: token.borderRadiusLG + "px " + token.borderRadiusLG + "px 0 0"
}
}), _defineProperty(_extends4, componentCls + "-actions", genCardActionsStyle(token)), _defineProperty(_extends4, componentCls + "-meta", genCardMetaStyle(token)), _extends4))), _defineProperty(_ref7, componentCls + "-bordered", _defineProperty({
border: token.lineWidth + "px " + token.lineType + " " + colorBorderSecondary
}, componentCls + "-cover", {
marginTop: -1,
marginInlineStart: -1,
marginInlineEnd: -1
})), _defineProperty(_ref7, componentCls + "-hoverable", {
cursor: 'pointer',
transition: "box-shadow " + token.motionDurationMid + ", border-color " + token.motionDurationMid,
'&:hover': {
borderColor: 'transparent',
boxShadow: cardShadow
}
}), _defineProperty(_ref7, componentCls + "-contain-grid", (_ref4 = {}, _defineProperty(_ref4, componentCls + "-body", {
display: 'flex',
flexWrap: 'wrap'
}), _defineProperty(_ref4, "&:not(" + componentCls + "-loading) " + componentCls + "-body", {
marginBlockStart: -token.lineWidth,
marginInlineStart: -token.lineWidth,
padding: 0
}), _ref4)), _defineProperty(_ref7, componentCls + "-contain-tabs", _defineProperty({}, "> " + componentCls + "-head", (_ref5 = {}, _defineProperty(_ref5, componentCls + "-head-title", {
minHeight: cardHeadHeight - cardHeadPadding,
paddingBottom: 0
}), _defineProperty(_ref5, componentCls + "-extra", {
paddingBottom: 0
}), _ref5))), _defineProperty(_ref7, componentCls + "-type-inner", genCardTypeInnerStyle(token)), _defineProperty(_ref7, componentCls + "-loading", genCardLoadingStyle(token)), _defineProperty(_ref7, componentCls + "-rtl", {
direction: 'rtl'
}), _ref7;
};
// ============================== Size ==============================
var genCardSizeStyle = function genCardSizeStyle(token) {
var _ref8, _ref10;
var componentCls = token.componentCls,
cardPaddingSM = token.cardPaddingSM,
fontSize = token.fontSize,
lineHeight = token.lineHeight,
cardHeaderHeightSM = token.cardHeaderHeightSM;
var cardHeadPaddingSM = (cardHeaderHeightSM - fontSize * lineHeight) / 2;
return _defineProperty({}, componentCls + "-small", (_ref10 = {}, _defineProperty(_ref10, "> " + componentCls + "-head", _defineProperty({
minHeight: cardHeaderHeightSM,
padding: "0 " + cardPaddingSM + "px",
fontSize: token.fontSize
}, "> " + componentCls + "-head-wrapper", (_ref8 = {}, _defineProperty(_ref8, "> " + componentCls + "-head-title", {
padding: cardHeadPaddingSM + "px 0"
}), _defineProperty(_ref8, "> " + componentCls + "-extra", {
padding: cardHeadPaddingSM + "px 0",
fontSize: token.fontSize
}), _ref8))), _defineProperty(_ref10, "> " + componentCls + "-body", {
padding: cardPaddingSM
}), _ref10));
};
// ============================== Export ==============================
export default genComponentStyleHook('Card', function (token) {
var cardToken = mergeToken(token, {
cardShadow: token.boxShadowCard,
cardHeaderHeight: token.fontSizeLG * token.lineHeightLG + token.padding * 2,
cardHeaderHeightSM: token.fontSize * token.lineHeight + token.paddingXS * 2,
cardHeadPadding: token.padding,
cardPaddingBase: token.paddingLG,
cardHeadTabsMarginBottom: -token.padding - token.lineWidth,
cardInnerHeadPadding: token.paddingSM,
cardActionsLiMargin: token.paddingSM + "px 0",
cardActionsIconSize: token.fontSize,
cardPaddingSM: 12 // Fixed padding.
});
return [
// Style
genCardStyle(cardToken),
// Size
genCardSizeStyle(cardToken)];
});