ribbon.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _cssinjs = require("@ant-design/cssinjs");
  7. var _ = require(".");
  8. var _style = require("../../style");
  9. var _internal = require("../../theme/internal");
  10. // ============================== Ribbon ==============================
  11. const genRibbonStyle = token => {
  12. const {
  13. antCls,
  14. badgeFontHeight,
  15. marginXS,
  16. badgeRibbonOffset,
  17. calc
  18. } = token;
  19. const ribbonPrefixCls = `${antCls}-ribbon`;
  20. const ribbonWrapperPrefixCls = `${antCls}-ribbon-wrapper`;
  21. const statusRibbonPreset = (0, _internal.genPresetColor)(token, (colorKey, {
  22. darkColor
  23. }) => ({
  24. [`&${ribbonPrefixCls}-color-${colorKey}`]: {
  25. background: darkColor,
  26. color: darkColor
  27. }
  28. }));
  29. return {
  30. [ribbonWrapperPrefixCls]: {
  31. position: 'relative'
  32. },
  33. [ribbonPrefixCls]: Object.assign(Object.assign(Object.assign(Object.assign({}, (0, _style.resetComponent)(token)), {
  34. position: 'absolute',
  35. top: marginXS,
  36. padding: `0 ${(0, _cssinjs.unit)(token.paddingXS)}`,
  37. color: token.colorPrimary,
  38. lineHeight: (0, _cssinjs.unit)(badgeFontHeight),
  39. whiteSpace: 'nowrap',
  40. backgroundColor: token.colorPrimary,
  41. borderRadius: token.borderRadiusSM,
  42. [`${ribbonPrefixCls}-text`]: {
  43. color: token.badgeTextColor
  44. },
  45. [`${ribbonPrefixCls}-corner`]: {
  46. position: 'absolute',
  47. top: '100%',
  48. width: badgeRibbonOffset,
  49. height: badgeRibbonOffset,
  50. color: 'currentcolor',
  51. border: `${(0, _cssinjs.unit)(calc(badgeRibbonOffset).div(2).equal())} solid`,
  52. transform: token.badgeRibbonCornerTransform,
  53. transformOrigin: 'top',
  54. filter: token.badgeRibbonCornerFilter
  55. }
  56. }), statusRibbonPreset), {
  57. [`&${ribbonPrefixCls}-placement-end`]: {
  58. insetInlineEnd: calc(badgeRibbonOffset).mul(-1).equal(),
  59. borderEndEndRadius: 0,
  60. [`${ribbonPrefixCls}-corner`]: {
  61. insetInlineEnd: 0,
  62. borderInlineEndColor: 'transparent',
  63. borderBlockEndColor: 'transparent'
  64. }
  65. },
  66. [`&${ribbonPrefixCls}-placement-start`]: {
  67. insetInlineStart: calc(badgeRibbonOffset).mul(-1).equal(),
  68. borderEndStartRadius: 0,
  69. [`${ribbonPrefixCls}-corner`]: {
  70. insetInlineStart: 0,
  71. borderBlockEndColor: 'transparent',
  72. borderInlineStartColor: 'transparent'
  73. }
  74. },
  75. // ====================== RTL =======================
  76. '&-rtl': {
  77. direction: 'rtl'
  78. }
  79. })
  80. };
  81. };
  82. // ============================== Export ==============================
  83. var _default = exports.default = (0, _internal.genStyleHooks)(['Badge', 'Ribbon'], token => {
  84. const badgeToken = (0, _.prepareToken)(token);
  85. return genRibbonStyle(badgeToken);
  86. }, _.prepareComponentToken);