| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320 |
- "use strict";
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = void 0;
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
- var _cssinjs = require("../../_util/cssinjs");
- var _internal = require("../../theme/internal");
- const skeletonClsLoading = new _cssinjs.Keyframes(`ant-skeleton-loading`, {
- '0%': {
- transform: 'translateX(-37.5%)'
- },
- '100%': {
- transform: 'translateX(37.5%)'
- }
- });
- const genSkeletonElementCommonSize = size => ({
- height: size,
- lineHeight: `${size}px`
- });
- const genSkeletonElementAvatarSize = size => (0, _extends2.default)({
- width: size
- }, genSkeletonElementCommonSize(size));
- const genSkeletonColor = token => ({
- position: 'relative',
- // fix https://github.com/ant-design/ant-design/issues/36444
- // https://monshin.github.io/202109/css/safari-border-radius-overflow-hidden/
- /* stylelint-disable-next-line property-no-vendor-prefix,value-no-vendor-prefix */
- zIndex: 0,
- overflow: 'hidden',
- background: 'transparent',
- '&::after': {
- position: 'absolute',
- top: 0,
- insetInlineEnd: '-150%',
- bottom: 0,
- insetInlineStart: '-150%',
- background: token.skeletonLoadingBackground,
- animationName: skeletonClsLoading,
- animationDuration: token.skeletonLoadingMotionDuration,
- animationTimingFunction: 'ease',
- animationIterationCount: 'infinite',
- content: '""'
- }
- });
- const genSkeletonElementInputSize = size => (0, _extends2.default)({
- width: size * 5,
- minWidth: size * 5
- }, genSkeletonElementCommonSize(size));
- const genSkeletonElementAvatar = token => {
- const {
- skeletonAvatarCls,
- color,
- controlHeight,
- controlHeightLG,
- controlHeightSM
- } = token;
- return {
- [`${skeletonAvatarCls}`]: (0, _extends2.default)({
- display: 'inline-block',
- verticalAlign: 'top',
- background: color
- }, genSkeletonElementAvatarSize(controlHeight)),
- [`${skeletonAvatarCls}${skeletonAvatarCls}-circle`]: {
- borderRadius: '50%'
- },
- [`${skeletonAvatarCls}${skeletonAvatarCls}-lg`]: (0, _extends2.default)({}, genSkeletonElementAvatarSize(controlHeightLG)),
- [`${skeletonAvatarCls}${skeletonAvatarCls}-sm`]: (0, _extends2.default)({}, genSkeletonElementAvatarSize(controlHeightSM))
- };
- };
- const genSkeletonElementInput = token => {
- const {
- controlHeight,
- borderRadiusSM,
- skeletonInputCls,
- controlHeightLG,
- controlHeightSM,
- color
- } = token;
- return {
- [`${skeletonInputCls}`]: (0, _extends2.default)({
- display: 'inline-block',
- verticalAlign: 'top',
- background: color,
- borderRadius: borderRadiusSM
- }, genSkeletonElementInputSize(controlHeight)),
- [`${skeletonInputCls}-lg`]: (0, _extends2.default)({}, genSkeletonElementInputSize(controlHeightLG)),
- [`${skeletonInputCls}-sm`]: (0, _extends2.default)({}, genSkeletonElementInputSize(controlHeightSM))
- };
- };
- const genSkeletonElementImageSize = size => (0, _extends2.default)({
- width: size
- }, genSkeletonElementCommonSize(size));
- const genSkeletonElementImage = token => {
- const {
- skeletonImageCls,
- imageSizeBase,
- color,
- borderRadiusSM
- } = token;
- return {
- [`${skeletonImageCls}`]: (0, _extends2.default)((0, _extends2.default)({
- display: 'flex',
- alignItems: 'center',
- justifyContent: 'center',
- verticalAlign: 'top',
- background: color,
- borderRadius: borderRadiusSM
- }, genSkeletonElementImageSize(imageSizeBase * 2)), {
- [`${skeletonImageCls}-path`]: {
- fill: '#bfbfbf'
- },
- [`${skeletonImageCls}-svg`]: (0, _extends2.default)((0, _extends2.default)({}, genSkeletonElementImageSize(imageSizeBase)), {
- maxWidth: imageSizeBase * 4,
- maxHeight: imageSizeBase * 4
- }),
- [`${skeletonImageCls}-svg${skeletonImageCls}-svg-circle`]: {
- borderRadius: '50%'
- }
- }),
- [`${skeletonImageCls}${skeletonImageCls}-circle`]: {
- borderRadius: '50%'
- }
- };
- };
- const genSkeletonElementButtonShape = (token, size, buttonCls) => {
- const {
- skeletonButtonCls
- } = token;
- return {
- [`${buttonCls}${skeletonButtonCls}-circle`]: {
- width: size,
- minWidth: size,
- borderRadius: '50%'
- },
- [`${buttonCls}${skeletonButtonCls}-round`]: {
- borderRadius: size
- }
- };
- };
- const genSkeletonElementButtonSize = size => (0, _extends2.default)({
- width: size * 2,
- minWidth: size * 2
- }, genSkeletonElementCommonSize(size));
- const genSkeletonElementButton = token => {
- const {
- borderRadiusSM,
- skeletonButtonCls,
- controlHeight,
- controlHeightLG,
- controlHeightSM,
- color
- } = token;
- return (0, _extends2.default)((0, _extends2.default)((0, _extends2.default)((0, _extends2.default)((0, _extends2.default)({
- [`${skeletonButtonCls}`]: (0, _extends2.default)({
- display: 'inline-block',
- verticalAlign: 'top',
- background: color,
- borderRadius: borderRadiusSM,
- width: controlHeight * 2,
- minWidth: controlHeight * 2
- }, genSkeletonElementButtonSize(controlHeight))
- }, genSkeletonElementButtonShape(token, controlHeight, skeletonButtonCls)), {
- [`${skeletonButtonCls}-lg`]: (0, _extends2.default)({}, genSkeletonElementButtonSize(controlHeightLG))
- }), genSkeletonElementButtonShape(token, controlHeightLG, `${skeletonButtonCls}-lg`)), {
- [`${skeletonButtonCls}-sm`]: (0, _extends2.default)({}, genSkeletonElementButtonSize(controlHeightSM))
- }), genSkeletonElementButtonShape(token, controlHeightSM, `${skeletonButtonCls}-sm`));
- };
- // =============================== Base ===============================
- const genBaseStyle = token => {
- const {
- componentCls,
- skeletonAvatarCls,
- skeletonTitleCls,
- skeletonParagraphCls,
- skeletonButtonCls,
- skeletonInputCls,
- skeletonImageCls,
- controlHeight,
- controlHeightLG,
- controlHeightSM,
- color,
- padding,
- marginSM,
- borderRadius,
- skeletonTitleHeight,
- skeletonBlockRadius,
- skeletonParagraphLineHeight,
- controlHeightXS,
- skeletonParagraphMarginTop
- } = token;
- return {
- [`${componentCls}`]: {
- display: 'table',
- width: '100%',
- [`${componentCls}-header`]: {
- display: 'table-cell',
- paddingInlineEnd: padding,
- verticalAlign: 'top',
- // Avatar
- [`${skeletonAvatarCls}`]: (0, _extends2.default)({
- display: 'inline-block',
- verticalAlign: 'top',
- background: color
- }, genSkeletonElementAvatarSize(controlHeight)),
- [`${skeletonAvatarCls}-circle`]: {
- borderRadius: '50%'
- },
- [`${skeletonAvatarCls}-lg`]: (0, _extends2.default)({}, genSkeletonElementAvatarSize(controlHeightLG)),
- [`${skeletonAvatarCls}-sm`]: (0, _extends2.default)({}, genSkeletonElementAvatarSize(controlHeightSM))
- },
- [`${componentCls}-content`]: {
- display: 'table-cell',
- width: '100%',
- verticalAlign: 'top',
- // Title
- [`${skeletonTitleCls}`]: {
- width: '100%',
- height: skeletonTitleHeight,
- background: color,
- borderRadius: skeletonBlockRadius,
- [`+ ${skeletonParagraphCls}`]: {
- marginBlockStart: controlHeightSM
- }
- },
- // paragraph
- [`${skeletonParagraphCls}`]: {
- padding: 0,
- '> li': {
- width: '100%',
- height: skeletonParagraphLineHeight,
- listStyle: 'none',
- background: color,
- borderRadius: skeletonBlockRadius,
- '+ li': {
- marginBlockStart: controlHeightXS
- }
- }
- },
- [`${skeletonParagraphCls}> li:last-child:not(:first-child):not(:nth-child(2))`]: {
- width: '61%'
- }
- },
- [`&-round ${componentCls}-content`]: {
- [`${skeletonTitleCls}, ${skeletonParagraphCls} > li`]: {
- borderRadius
- }
- }
- },
- [`${componentCls}-with-avatar ${componentCls}-content`]: {
- // Title
- [`${skeletonTitleCls}`]: {
- marginBlockStart: marginSM,
- [`+ ${skeletonParagraphCls}`]: {
- marginBlockStart: skeletonParagraphMarginTop
- }
- }
- },
- // Skeleton element
- [`${componentCls}${componentCls}-element`]: (0, _extends2.default)((0, _extends2.default)((0, _extends2.default)((0, _extends2.default)({
- display: 'inline-block',
- width: 'auto'
- }, genSkeletonElementButton(token)), genSkeletonElementAvatar(token)), genSkeletonElementInput(token)), genSkeletonElementImage(token)),
- // Skeleton Block Button, Input
- [`${componentCls}${componentCls}-block`]: {
- width: '100%',
- [`${skeletonButtonCls}`]: {
- width: '100%'
- },
- [`${skeletonInputCls}`]: {
- width: '100%'
- }
- },
- // With active animation
- [`${componentCls}${componentCls}-active`]: {
- [`
- ${skeletonTitleCls},
- ${skeletonParagraphCls} > li,
- ${skeletonAvatarCls},
- ${skeletonButtonCls},
- ${skeletonInputCls},
- ${skeletonImageCls}
- `]: (0, _extends2.default)({}, genSkeletonColor(token))
- }
- };
- };
- // ============================== Export ==============================
- var _default = exports.default = (0, _internal.genComponentStyleHook)('Skeleton', token => {
- const {
- componentCls
- } = token;
- const skeletonToken = (0, _internal.mergeToken)(token, {
- skeletonAvatarCls: `${componentCls}-avatar`,
- skeletonTitleCls: `${componentCls}-title`,
- skeletonParagraphCls: `${componentCls}-paragraph`,
- skeletonButtonCls: `${componentCls}-button`,
- skeletonInputCls: `${componentCls}-input`,
- skeletonImageCls: `${componentCls}-image`,
- imageSizeBase: token.controlHeight * 1.5,
- skeletonTitleHeight: token.controlHeight / 2,
- skeletonBlockRadius: token.borderRadiusSM,
- skeletonParagraphLineHeight: token.controlHeight / 2,
- skeletonParagraphMarginTop: token.marginLG + token.marginXXS,
- borderRadius: 100,
- skeletonLoadingBackground: `linear-gradient(90deg, ${token.color} 25%, ${token.colorGradientEnd} 37%, ${token.color} 63%)`,
- skeletonLoadingMotionDuration: '1.4s'
- });
- return [genBaseStyle(skeletonToken)];
- }, token => {
- const {
- colorFillContent,
- colorFill
- } = token;
- return {
- color: colorFillContent,
- colorGradientEnd: colorFill
- };
- });
|