123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.prepareToken = exports.prepareComponentToken = exports.default = void 0;
- var _cssinjs = require("@ant-design/cssinjs");
- var _style = require("../../style");
- var _internal = require("../../theme/internal");
- const antStatusProcessing = new _cssinjs.Keyframes('antStatusProcessing', {
- '0%': {
- transform: 'scale(0.8)',
- opacity: 0.5
- },
- '100%': {
- transform: 'scale(2.4)',
- opacity: 0
- }
- });
- const antZoomBadgeIn = new _cssinjs.Keyframes('antZoomBadgeIn', {
- '0%': {
- transform: 'scale(0) translate(50%, -50%)',
- opacity: 0
- },
- '100%': {
- transform: 'scale(1) translate(50%, -50%)'
- }
- });
- const antZoomBadgeOut = new _cssinjs.Keyframes('antZoomBadgeOut', {
- '0%': {
- transform: 'scale(1) translate(50%, -50%)'
- },
- '100%': {
- transform: 'scale(0) translate(50%, -50%)',
- opacity: 0
- }
- });
- const antNoWrapperZoomBadgeIn = new _cssinjs.Keyframes('antNoWrapperZoomBadgeIn', {
- '0%': {
- transform: 'scale(0)',
- opacity: 0
- },
- '100%': {
- transform: 'scale(1)'
- }
- });
- const antNoWrapperZoomBadgeOut = new _cssinjs.Keyframes('antNoWrapperZoomBadgeOut', {
- '0%': {
- transform: 'scale(1)'
- },
- '100%': {
- transform: 'scale(0)',
- opacity: 0
- }
- });
- const antBadgeLoadingCircle = new _cssinjs.Keyframes('antBadgeLoadingCircle', {
- '0%': {
- transformOrigin: '50%'
- },
- '100%': {
- transform: 'translate(50%, -50%) rotate(360deg)',
- transformOrigin: '50%'
- }
- });
- const genSharedBadgeStyle = token => {
- const {
- componentCls,
- iconCls,
- antCls,
- badgeShadowSize,
- textFontSize,
- textFontSizeSM,
- statusSize,
- dotSize,
- textFontWeight,
- indicatorHeight,
- indicatorHeightSM,
- marginXS,
- calc
- } = token;
- const numberPrefixCls = `${antCls}-scroll-number`;
- const colorPreset = (0, _internal.genPresetColor)(token, (colorKey, {
- darkColor
- }) => ({
- [`&${componentCls} ${componentCls}-color-${colorKey}`]: {
- background: darkColor,
- [`&:not(${componentCls}-count)`]: {
- color: darkColor
- },
- 'a:hover &': {
- background: darkColor
- }
- }
- }));
- return {
- [componentCls]: Object.assign(Object.assign(Object.assign(Object.assign({}, (0, _style.resetComponent)(token)), {
- position: 'relative',
- display: 'inline-block',
- width: 'fit-content',
- lineHeight: 1,
- [`${componentCls}-count`]: {
- display: 'inline-flex',
- justifyContent: 'center',
- zIndex: token.indicatorZIndex,
- minWidth: indicatorHeight,
- height: indicatorHeight,
- color: token.badgeTextColor,
- fontWeight: textFontWeight,
- fontSize: textFontSize,
- lineHeight: (0, _cssinjs.unit)(indicatorHeight),
- whiteSpace: 'nowrap',
- textAlign: 'center',
- background: token.badgeColor,
- borderRadius: calc(indicatorHeight).div(2).equal(),
- boxShadow: `0 0 0 ${(0, _cssinjs.unit)(badgeShadowSize)} ${token.badgeShadowColor}`,
- transition: `background ${token.motionDurationMid}`,
- a: {
- color: token.badgeTextColor
- },
- 'a:hover': {
- color: token.badgeTextColor
- },
- 'a:hover &': {
- background: token.badgeColorHover
- }
- },
- [`${componentCls}-count-sm`]: {
- minWidth: indicatorHeightSM,
- height: indicatorHeightSM,
- fontSize: textFontSizeSM,
- lineHeight: (0, _cssinjs.unit)(indicatorHeightSM),
- borderRadius: calc(indicatorHeightSM).div(2).equal()
- },
- [`${componentCls}-multiple-words`]: {
- padding: `0 ${(0, _cssinjs.unit)(token.paddingXS)}`,
- bdi: {
- unicodeBidi: 'plaintext'
- }
- },
- [`${componentCls}-dot`]: {
- zIndex: token.indicatorZIndex,
- width: dotSize,
- minWidth: dotSize,
- height: dotSize,
- background: token.badgeColor,
- borderRadius: '100%',
- boxShadow: `0 0 0 ${(0, _cssinjs.unit)(badgeShadowSize)} ${token.badgeShadowColor}`
- },
- [`${componentCls}-count, ${componentCls}-dot, ${numberPrefixCls}-custom-component`]: {
- position: 'absolute',
- top: 0,
- insetInlineEnd: 0,
- transform: 'translate(50%, -50%)',
- transformOrigin: '100% 0%',
- [`&${iconCls}-spin`]: {
- animationName: antBadgeLoadingCircle,
- animationDuration: '1s',
- animationIterationCount: 'infinite',
- animationTimingFunction: 'linear'
- }
- },
- [`&${componentCls}-status`]: {
- lineHeight: 'inherit',
- verticalAlign: 'baseline',
- [`${componentCls}-status-dot`]: {
- position: 'relative',
- top: -1,
- // Magic number, but seems better experience
- display: 'inline-block',
- width: statusSize,
- height: statusSize,
- verticalAlign: 'middle',
- borderRadius: '50%'
- },
- [`${componentCls}-status-success`]: {
- backgroundColor: token.colorSuccess
- },
- [`${componentCls}-status-processing`]: {
- overflow: 'visible',
- color: token.colorInfo,
- backgroundColor: token.colorInfo,
- borderColor: 'currentcolor',
- '&::after': {
- position: 'absolute',
- top: 0,
- insetInlineStart: 0,
- width: '100%',
- height: '100%',
- borderWidth: badgeShadowSize,
- borderStyle: 'solid',
- borderColor: 'inherit',
- borderRadius: '50%',
- animationName: antStatusProcessing,
- animationDuration: token.badgeProcessingDuration,
- animationIterationCount: 'infinite',
- animationTimingFunction: 'ease-in-out',
- content: '""'
- }
- },
- [`${componentCls}-status-default`]: {
- backgroundColor: token.colorTextPlaceholder
- },
- [`${componentCls}-status-error`]: {
- backgroundColor: token.colorError
- },
- [`${componentCls}-status-warning`]: {
- backgroundColor: token.colorWarning
- },
- [`${componentCls}-status-text`]: {
- marginInlineStart: marginXS,
- color: token.colorText,
- fontSize: token.fontSize
- }
- }
- }), colorPreset), {
- [`${componentCls}-zoom-appear, ${componentCls}-zoom-enter`]: {
- animationName: antZoomBadgeIn,
- animationDuration: token.motionDurationSlow,
- animationTimingFunction: token.motionEaseOutBack,
- animationFillMode: 'both'
- },
- [`${componentCls}-zoom-leave`]: {
- animationName: antZoomBadgeOut,
- animationDuration: token.motionDurationSlow,
- animationTimingFunction: token.motionEaseOutBack,
- animationFillMode: 'both'
- },
- [`&${componentCls}-not-a-wrapper`]: {
- [`${componentCls}-zoom-appear, ${componentCls}-zoom-enter`]: {
- animationName: antNoWrapperZoomBadgeIn,
- animationDuration: token.motionDurationSlow,
- animationTimingFunction: token.motionEaseOutBack
- },
- [`${componentCls}-zoom-leave`]: {
- animationName: antNoWrapperZoomBadgeOut,
- animationDuration: token.motionDurationSlow,
- animationTimingFunction: token.motionEaseOutBack
- },
- [`&:not(${componentCls}-status)`]: {
- verticalAlign: 'middle'
- },
- [`${numberPrefixCls}-custom-component, ${componentCls}-count`]: {
- transform: 'none'
- },
- [`${numberPrefixCls}-custom-component, ${numberPrefixCls}`]: {
- position: 'relative',
- top: 'auto',
- display: 'block',
- transformOrigin: '50% 50%'
- }
- },
- [numberPrefixCls]: {
- overflow: 'hidden',
- transition: `all ${token.motionDurationMid} ${token.motionEaseOutBack}`,
- [`${numberPrefixCls}-only`]: {
- position: 'relative',
- display: 'inline-block',
- height: indicatorHeight,
- transition: `all ${token.motionDurationSlow} ${token.motionEaseOutBack}`,
- WebkitTransformStyle: 'preserve-3d',
- WebkitBackfaceVisibility: 'hidden',
- [`> p${numberPrefixCls}-only-unit`]: {
- height: indicatorHeight,
- margin: 0,
- WebkitTransformStyle: 'preserve-3d',
- WebkitBackfaceVisibility: 'hidden'
- }
- },
- [`${numberPrefixCls}-symbol`]: {
- verticalAlign: 'top'
- }
- },
- // ====================== RTL =======================
- '&-rtl': {
- direction: 'rtl',
- [`${componentCls}-count, ${componentCls}-dot, ${numberPrefixCls}-custom-component`]: {
- transform: 'translate(-50%, -50%)'
- }
- }
- })
- };
- };
- // ============================== Export ==============================
- const prepareToken = token => {
- const {
- fontHeight,
- lineWidth,
- marginXS,
- colorBorderBg
- } = token;
- const badgeFontHeight = fontHeight;
- const badgeShadowSize = lineWidth;
- const badgeTextColor = token.colorTextLightSolid;
- const badgeColor = token.colorError;
- const badgeColorHover = token.colorErrorHover;
- const badgeToken = (0, _internal.mergeToken)(token, {
- badgeFontHeight,
- badgeShadowSize,
- badgeTextColor,
- badgeColor,
- badgeColorHover,
- badgeShadowColor: colorBorderBg,
- badgeProcessingDuration: '1.2s',
- badgeRibbonOffset: marginXS,
- // Follow token just by Design. Not related with token
- badgeRibbonCornerTransform: 'scaleY(0.75)',
- badgeRibbonCornerFilter: `brightness(75%)`
- });
- return badgeToken;
- };
- exports.prepareToken = prepareToken;
- const prepareComponentToken = token => {
- const {
- fontSize,
- lineHeight,
- fontSizeSM,
- lineWidth
- } = token;
- return {
- indicatorZIndex: 'auto',
- indicatorHeight: Math.round(fontSize * lineHeight) - 2 * lineWidth,
- indicatorHeightSM: fontSize,
- dotSize: fontSizeSM / 2,
- textFontSize: fontSizeSM,
- textFontSizeSM: fontSizeSM,
- textFontWeight: 'normal',
- statusSize: fontSizeSM / 2
- };
- };
- exports.prepareComponentToken = prepareComponentToken;
- var _default = exports.default = (0, _internal.genStyleHooks)('Badge', token => {
- const badgeToken = prepareToken(token);
- return genSharedBadgeStyle(badgeToken);
- }, prepareComponentToken);
|