index.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import _extends from "@babel/runtime/helpers/esm/extends";
  2. import { genComponentStyleHook, mergeToken } from '../../theme/internal';
  3. import { resetComponent, textEllipsis } from '../../style';
  4. import { operationUnit } from '../../style';
  5. const genPageHeaderStyle = token => {
  6. const {
  7. componentCls,
  8. antCls
  9. } = token;
  10. return {
  11. [componentCls]: _extends(_extends({}, resetComponent(token)), {
  12. position: 'relative',
  13. padding: `${token.pageHeaderPaddingVertical}px ${token.pageHeaderPadding}px`,
  14. backgroundColor: token.colorBgContainer,
  15. [`&${componentCls}-ghost`]: {
  16. backgroundColor: token.pageHeaderGhostBg
  17. },
  18. [`&.has-footer`]: {
  19. paddingBottom: 0
  20. },
  21. [`${componentCls}-back`]: {
  22. marginRight: token.marginMD,
  23. fontSize: token.fontSizeLG,
  24. lineHeight: 1,
  25. [`&-button`]: _extends(_extends({}, operationUnit(token)), {
  26. color: token.pageHeaderBackColor,
  27. cursor: 'pointer'
  28. })
  29. },
  30. [`${antCls}-divider-vertical`]: {
  31. height: '14px',
  32. margin: `0 ${token.marginSM}`,
  33. verticalAlign: 'middle'
  34. },
  35. [`${antCls}-breadcrumb + &-heading`]: {
  36. marginTop: token.marginXS
  37. },
  38. [`${componentCls}-heading`]: {
  39. display: 'flex',
  40. justifyContent: 'space-between',
  41. [`&-left`]: {
  42. display: 'flex',
  43. alignItems: 'center',
  44. margin: `${token.marginXS / 2}px 0`,
  45. overflow: 'hidden'
  46. },
  47. [`&-title`]: _extends({
  48. marginRight: token.marginSM,
  49. marginBottom: 0,
  50. color: token.colorTextHeading,
  51. fontWeight: 600,
  52. fontSize: token.pageHeaderHeadingTitle,
  53. lineHeight: `${token.controlHeight}px`
  54. }, textEllipsis),
  55. [`${antCls}-avatar`]: {
  56. marginRight: token.marginSM
  57. },
  58. [`&-sub-title`]: _extends({
  59. marginRight: token.marginSM,
  60. color: token.colorTextDescription,
  61. fontSize: token.pageHeaderHeadingSubTitle,
  62. lineHeight: token.lineHeight
  63. }, textEllipsis),
  64. [`&-extra`]: {
  65. margin: `${token.marginXS / 2}px 0`,
  66. whiteSpace: 'nowrap',
  67. [`> *`]: {
  68. marginLeft: token.marginSM,
  69. whiteSpace: 'unset'
  70. },
  71. [`> *:first-child`]: {
  72. marginLeft: 0
  73. }
  74. }
  75. },
  76. [`${componentCls}-content`]: {
  77. paddingTop: token.pageHeaderContentPaddingVertical
  78. },
  79. [`${componentCls}-footer`]: {
  80. marginTop: token.marginMD,
  81. [`${antCls}-tabs`]: {
  82. [`> ${antCls}-tabs-nav`]: {
  83. margin: 0,
  84. [`&::before`]: {
  85. border: 'none'
  86. }
  87. },
  88. [`${antCls}-tabs-tab`]: {
  89. paddingTop: token.paddingXS,
  90. paddingBottom: token.paddingXS,
  91. fontSize: token.pageHeaderTabFontSize
  92. }
  93. }
  94. },
  95. [`${componentCls}-compact ${componentCls}-heading`]: {
  96. flexWrap: 'wrap'
  97. },
  98. // rtl style
  99. [`&${token.componentCls}-rtl`]: {
  100. direction: 'rtl'
  101. }
  102. })
  103. };
  104. };
  105. // ============================== Export ==============================
  106. export default genComponentStyleHook('PageHeader', token => {
  107. const PageHeaderToken = mergeToken(token, {
  108. pageHeaderPadding: token.paddingLG,
  109. pageHeaderPaddingVertical: token.paddingMD,
  110. pageHeaderPaddingBreadcrumb: token.paddingSM,
  111. pageHeaderContentPaddingVertical: token.paddingSM,
  112. pageHeaderBackColor: token.colorTextBase,
  113. pageHeaderGhostBg: 'transparent',
  114. pageHeaderHeadingTitle: token.fontSizeHeading4,
  115. pageHeaderHeadingSubTitle: token.fontSize,
  116. pageHeaderTabFontSize: token.fontSizeLG
  117. });
  118. return [genPageHeaderStyle(PageHeaderToken)];
  119. });