@nutui/nutui-react-taro 3.0.5 → 3.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/CHANGELOG.md +40 -1
  2. package/dist/cjs/packages/badge/badge.js +4 -3
  3. package/dist/cjs/packages/badge/style/badge.scss +4 -0
  4. package/dist/cjs/packages/badge/style/style.css +9 -6
  5. package/dist/cjs/packages/badge/style/style.harmony.css +3 -0
  6. package/dist/cjs/packages/configprovider/types.d.ts +1 -1
  7. package/dist/cjs/packages/datepicker/style/style.css +3 -0
  8. package/dist/cjs/packages/datepickerview/style/style.css +3 -0
  9. package/dist/cjs/packages/fixednav/style/style.css +9 -6
  10. package/dist/cjs/packages/indicator/indicator.js +1 -1
  11. package/dist/cjs/packages/lottie/index.js +5 -5
  12. package/dist/cjs/packages/lottie/{mp.js → lottiemp.js} +1 -1
  13. package/dist/cjs/packages/notify/notify.js +44 -13
  14. package/dist/cjs/packages/notify/style/notify.scss +39 -36
  15. package/dist/cjs/packages/notify/style/style.css +36 -31
  16. package/dist/cjs/packages/notify/style/style.harmony.css +36 -31
  17. package/dist/cjs/packages/picker/style/style.css +3 -0
  18. package/dist/cjs/packages/pickerview/pickerroller.js +7 -2
  19. package/dist/cjs/packages/pickerview/style/pickerview.scss +3 -0
  20. package/dist/cjs/packages/pickerview/style/style.css +3 -0
  21. package/dist/cjs/packages/pickerview/style/style.harmony.css +3 -0
  22. package/dist/cjs/packages/searchbar/searchbar.js +8 -2
  23. package/dist/cjs/packages/skeleton/skeleton.js +63 -52
  24. package/dist/cjs/packages/skeleton/style/index.js +0 -1
  25. package/dist/cjs/packages/skeleton/style/skeleton.scss +40 -46
  26. package/dist/cjs/packages/skeleton/style/style.css +32 -175
  27. package/dist/cjs/packages/skeleton/style/style.harmony.css +32 -42
  28. package/dist/cjs/packages/switch/style/style.css +5 -0
  29. package/dist/cjs/packages/switch/style/style.harmony.css +5 -0
  30. package/dist/cjs/packages/switch/style/switch.scss +5 -0
  31. package/dist/cjs/packages/switch/switch.js +22 -11
  32. package/dist/cjs/packages/tabbar/style/style.css +54 -45
  33. package/dist/cjs/packages/tabbar/style/style.harmony.css +24 -18
  34. package/dist/cjs/packages/tabbar/style/tabbar.scss +28 -19
  35. package/dist/cjs/packages/tabbar/tabbar.js +28 -10
  36. package/dist/cjs/packages/tabbaritem/style/style.css +30 -27
  37. package/dist/cjs/packages/tabbaritem/style/style.harmony.css +21 -21
  38. package/dist/cjs/packages/tabbaritem/style/tabbaritem.scss +32 -29
  39. package/dist/cjs/packages/tabbaritem/tabbaritem.js +38 -14
  40. package/dist/cjs/types/spec/badge/base.d.ts +1 -0
  41. package/dist/cjs/types/spec/indicator/base.d.ts +1 -1
  42. package/dist/cjs/types/spec/notify/base.d.ts +7 -2
  43. package/dist/cjs/types/spec/searchbar/taro.d.ts +10 -7
  44. package/dist/cjs/types/spec/skeleton/base.d.ts +7 -5
  45. package/dist/cjs/types/spec/switch/base.d.ts +3 -2
  46. package/dist/cjs/types/spec/switch/h5.d.ts +1 -1
  47. package/dist/cjs/types/spec/switch/taro.d.ts +1 -4
  48. package/dist/cjs/types/spec/tabbar/base.d.ts +7 -4
  49. package/dist/es/packages/badge/badge.js +4 -3
  50. package/dist/es/packages/badge/style/badge.scss +4 -0
  51. package/dist/es/packages/badge/style/style.css +9 -6
  52. package/dist/es/packages/badge/style/style.harmony.css +3 -0
  53. package/dist/es/packages/configprovider/types.d.ts +1 -1
  54. package/dist/es/packages/datepicker/style/style.css +3 -0
  55. package/dist/es/packages/datepickerview/style/style.css +3 -0
  56. package/dist/es/packages/fixednav/style/style.css +9 -6
  57. package/dist/es/packages/indicator/indicator.js +1 -1
  58. package/dist/es/packages/lottie/index.js +3 -3
  59. package/dist/es/packages/lottie/{mp.js → lottiemp.js} +1 -1
  60. package/dist/es/packages/notify/notify.js +45 -14
  61. package/dist/es/packages/notify/style/notify.scss +39 -36
  62. package/dist/es/packages/notify/style/style.css +36 -31
  63. package/dist/es/packages/notify/style/style.harmony.css +36 -31
  64. package/dist/es/packages/picker/style/style.css +3 -0
  65. package/dist/es/packages/pickerview/pickerroller.js +7 -2
  66. package/dist/es/packages/pickerview/style/pickerview.scss +3 -0
  67. package/dist/es/packages/pickerview/style/style.css +3 -0
  68. package/dist/es/packages/pickerview/style/style.harmony.css +3 -0
  69. package/dist/es/packages/searchbar/searchbar.js +7 -2
  70. package/dist/es/packages/skeleton/skeleton.js +62 -52
  71. package/dist/es/packages/skeleton/style/index.js +0 -1
  72. package/dist/es/packages/skeleton/style/skeleton.scss +40 -46
  73. package/dist/es/packages/skeleton/style/style.css +32 -175
  74. package/dist/es/packages/skeleton/style/style.harmony.css +32 -42
  75. package/dist/es/packages/switch/style/style.css +5 -0
  76. package/dist/es/packages/switch/style/style.harmony.css +5 -0
  77. package/dist/es/packages/switch/style/switch.scss +5 -0
  78. package/dist/es/packages/switch/switch.js +21 -11
  79. package/dist/es/packages/tabbar/style/style.css +54 -45
  80. package/dist/es/packages/tabbar/style/style.harmony.css +24 -18
  81. package/dist/es/packages/tabbar/style/tabbar.scss +28 -19
  82. package/dist/es/packages/tabbar/tabbar.js +27 -10
  83. package/dist/es/packages/tabbaritem/style/style.css +30 -27
  84. package/dist/es/packages/tabbaritem/style/style.harmony.css +21 -21
  85. package/dist/es/packages/tabbaritem/style/tabbaritem.scss +32 -29
  86. package/dist/es/packages/tabbaritem/tabbaritem.js +38 -14
  87. package/dist/es/types/spec/badge/base.d.ts +4 -0
  88. package/dist/es/types/spec/indicator/base.d.ts +1 -1
  89. package/dist/es/types/spec/notify/base.d.ts +22 -5
  90. package/dist/es/types/spec/searchbar/taro.d.ts +10 -7
  91. package/dist/es/types/spec/skeleton/base.d.ts +19 -14
  92. package/dist/es/types/spec/switch/base.d.ts +6 -2
  93. package/dist/es/types/spec/switch/h5.d.ts +1 -1
  94. package/dist/es/types/spec/switch/taro.d.ts +1 -4
  95. package/dist/es/types/spec/tabbar/base.d.ts +7 -4
  96. package/dist/nutui.react.umd.js +422 -297
  97. package/dist/style.css +1 -1
  98. package/dist/style.scss +47 -47
  99. package/dist/styles/variables-jmapp.scss +23 -1
  100. package/dist/styles/variables-jrkf.scss +23 -1
  101. package/dist/styles/variables.scss +35 -37
  102. package/package.json +1 -1
  103. /package/dist/cjs/packages/lottie/{mp.d.ts → lottiemp.d.ts} +0 -0
  104. /package/dist/cjs/packages/lottie/{web.d.ts → lottieweb.d.ts} +0 -0
  105. /package/dist/cjs/packages/lottie/{web.js → lottieweb.js} +0 -0
  106. /package/dist/es/packages/lottie/{mp.d.ts → lottiemp.d.ts} +0 -0
  107. /package/dist/es/packages/lottie/{web.d.ts → lottieweb.d.ts} +0 -0
  108. /package/dist/es/packages/lottie/{web.js → lottieweb.js} +0 -0
@@ -11,7 +11,7 @@
11
11
  /*入场动画过程*/
12
12
  .fade-enter-active {
13
13
  opacity: 1;
14
- transition: opacity 1s;
14
+ transition: opacity 300ms ease-in;
15
15
  }
16
16
 
17
17
  /*入场动画结束*/
@@ -27,7 +27,7 @@
27
27
  /*离场动画过程*/
28
28
  .fade-exit-active {
29
29
  opacity: 0;
30
- transition: opacity 1s;
30
+ transition: opacity 300ms ease-out;
31
31
  }
32
32
 
33
33
  /*离场动画结束*/
@@ -43,47 +43,52 @@
43
43
  /*页面第一次加载时的动画过程*/
44
44
  .fade-appear-active {
45
45
  opacity: 1;
46
- transition: opacity 1s;
46
+ transition: opacity 300ms;
47
47
  }
48
48
 
49
49
  .nut-notify {
50
+ position: fixed;
51
+ left: 8px;
52
+ right: 8px;
53
+ z-index: var(--nutui-notify-z-index, 1000);
50
54
  display: flex;
51
- justify-content: center;
52
55
  align-items: center;
53
56
  box-sizing: border-box;
54
- padding: var(--nutui-notify-padding, 0px 10px);
55
- color: var(--nutui-notify-text-color, #ffffff);
56
- font-size: var(--nutui-notify-font-size, var(--nutui-font-size-base, 14px));
57
- white-space: pre-wrap;
58
- word-wrap: break-word;
59
57
  height: var(--nutui-notify-height, 40px);
58
+ padding: var(--nutui-notify-padding, 0px 12px);
59
+ border-radius: var(--nutui-notify-border-radius, 8px);
60
+ box-shadow: var(--nutui-notify-box-shadow, 0px 4px 12px 0px rgba(0, 0, 0, 0.06));
61
+ background-color: var(--nutui-notify-background-color, #ffffff);
62
+ }
63
+ .nut-notify-content {
64
+ flex: 1;
65
+ text-align: center;
66
+ min-width: 0;
67
+ font-size: var(--nutui-notify-font-size, var(--nutui-font-size-base, 14px));
68
+ color: var(--nutui-notify-text-color, var(--nutui-color-title, #1a1a1a));
69
+ white-space: nowrap;
70
+ overflow: hidden;
60
71
  }
61
- .nut-notify-popup-top, .nut-notify-popup-bottom {
62
- position: fixed;
63
- left: 0;
64
- right: 0;
65
- overflow-y: auto;
66
- transition: transform 0.3s;
67
- z-index: 9999;
68
- }
69
- .nut-notify-popup-top {
70
- top: 0;
72
+ .nut-notify-ellipsis {
73
+ text-overflow: ellipsis;
71
74
  }
72
- .nut-notify-popup-bottom {
73
- bottom: 0;
75
+ .nut-notify-layout-left {
76
+ text-align: left;
74
77
  }
75
- .nut-notify-base {
76
- background: var(--nutui-notify-base-background-color, var(--nutui-color-primary, #ff0f23));
78
+ .nut-notify-left-icon, .nut-notify-right-icon {
79
+ display: inline-flex;
77
80
  }
78
- .nut-notify-primary {
79
- background: var(--nutui-notify-primary-background-color, var(--nutui-color-info, #0073ff));
81
+ .nut-notify-left-icon {
82
+ margin-right: 6px;
80
83
  }
81
- .nut-notify-success {
82
- background: var(--nutui-notify-success-background-color, var(--nutui-color-success, #00d900));
84
+ .nut-notify-left-icon .nut-icon {
85
+ height: 16px;
86
+ width: 16px;
83
87
  }
84
- .nut-notify-danger {
85
- background: var(--nutui-notify-danger-background-color, var(--nutui-color-primary, #ff0f23));
88
+ .nut-notify-right-icon {
89
+ margin-left: 6px;
86
90
  }
87
- .nut-notify-warning {
88
- background: var(--nutui-notify-warning-background-color, var(--nutui-color-warning, #ffbf00));
91
+ .nut-notify-right-icon .nut-icon {
92
+ height: 12px;
93
+ width: 12px;
89
94
  }
@@ -12,7 +12,7 @@
12
12
  /*入场动画过程*/
13
13
  .fade-enter-active {
14
14
  opacity: 1;
15
- transition: opacity 1s;
15
+ transition: opacity 300ms ease-in;
16
16
  }
17
17
 
18
18
  /*入场动画结束*/
@@ -28,7 +28,7 @@
28
28
  /*离场动画过程*/
29
29
  .fade-exit-active {
30
30
  opacity: 0;
31
- transition: opacity 1s;
31
+ transition: opacity 300ms ease-out;
32
32
  }
33
33
 
34
34
  /*离场动画结束*/
@@ -44,47 +44,52 @@
44
44
  /*页面第一次加载时的动画过程*/
45
45
  .fade-appear-active {
46
46
  opacity: 1;
47
- transition: opacity 1s;
47
+ transition: opacity 300ms;
48
48
  }
49
49
 
50
50
  .nut-notify {
51
+ position: fixed;
52
+ left: 8px;
53
+ right: 8px;
54
+ z-index: 1000;
51
55
  display: flex;
52
- justify-content: center;
53
56
  align-items: center;
54
57
  box-sizing: border-box;
55
- padding: 0px 10px;
56
- color: #ffffff;
57
- font-size: 14px;
58
- white-space: pre-wrap;
59
- word-wrap: break-word;
60
58
  height: 40px;
59
+ padding: 0px 12px;
60
+ border-radius: 8px;
61
+ box-shadow: 0px 4px 12px 0px rgba(0, 0, 0, 0.06);
62
+ background-color: #ffffff;
63
+ }
64
+ .nut-notify-content {
65
+ flex: 1;
66
+ text-align: center;
67
+ min-width: 0;
68
+ font-size: 14px;
69
+ color: #1a1a1a;
70
+ white-space: nowrap;
71
+ overflow: hidden;
61
72
  }
62
- .nut-notify-popup-top, .nut-notify-popup-bottom {
63
- position: fixed;
64
- left: 0;
65
- right: 0;
66
- overflow-y: auto;
67
- transition: transform 0.3s;
68
- z-index: 9999;
69
- }
70
- .nut-notify-popup-top {
71
- top: 0;
73
+ .nut-notify-ellipsis {
74
+ text-overflow: ellipsis;
72
75
  }
73
- .nut-notify-popup-bottom {
74
- bottom: 0;
76
+ .nut-notify-layout-left {
77
+ text-align: left;
75
78
  }
76
- .nut-notify-base {
77
- background: #ff0f23;
79
+ .nut-notify-left-icon, .nut-notify-right-icon {
80
+ display: inline-flex;
78
81
  }
79
- .nut-notify-primary {
80
- background: #0073ff;
82
+ .nut-notify-left-icon {
83
+ margin-right: 6px;
81
84
  }
82
- .nut-notify-success {
83
- background: #00d900;
85
+ .nut-notify-left-icon .nut-icon {
86
+ height: 16px;
87
+ width: 16px;
84
88
  }
85
- .nut-notify-danger {
86
- background: #ff0f23;
89
+ .nut-notify-right-icon {
90
+ margin-left: 6px;
87
91
  }
88
- .nut-notify-warning {
89
- background: #ffbf00;
92
+ .nut-notify-right-icon .nut-icon {
93
+ height: 12px;
94
+ width: 12px;
90
95
  }
@@ -429,6 +429,9 @@
429
429
  z-index: 1;
430
430
  transform-style: preserve-3d;
431
431
  }
432
+ .nut-pickerview-roller-placeholder {
433
+ height: var(--nutui-picker-item-height, 36px);
434
+ }
432
435
  .nut-pickerview-roller-item {
433
436
  position: absolute;
434
437
  top: 0;
@@ -30,6 +30,7 @@ var InternalPickerRoller = function(props, ref) {
30
30
  var isMoving = useRef(false);
31
31
  var rollerRef = useRef(null);
32
32
  var pickerRollerRef = useRef(null);
33
+ var placeholderRef = useRef(null);
33
34
  var _useState3 = _sliced_to_array(useState(0), 2), startTime = _useState3[0], setStartTime = _useState3[1];
34
35
  var _useState4 = _sliced_to_array(useState(0), 2), startY = _useState4[0], setStartY = _useState4[1];
35
36
  var transformY = useRef(0);
@@ -124,7 +125,7 @@ var InternalPickerRoller = function(props, ref) {
124
125
  ]);
125
126
  return [
126
127
  4,
127
- getRectByTaro(rollerRef.current)
128
+ getRectByTaro(placeholderRef.current)
128
129
  ];
129
130
  case 1:
130
131
  placeholder = _state.sent();
@@ -172,7 +173,7 @@ var InternalPickerRoller = function(props, ref) {
172
173
  }
173
174
  }, [
174
175
  pickerRollerRef.current,
175
- rollerRef.current
176
+ placeholderRef.current
176
177
  ]);
177
178
  useEffect(function() {
178
179
  isMoving.current = false;
@@ -214,6 +215,10 @@ var InternalPickerRoller = function(props, ref) {
214
215
  className: "nut-pickerview-list",
215
216
  ref: pickerRollerRef
216
217
  }, /*#__PURE__*/ React.createElement(View, {
218
+ className: "".concat(classPrefix, "-placeholder"),
219
+ ref: placeholderRef,
220
+ id: "".concat(classPrefix, "-placeholder-").concat(uuid)
221
+ }), /*#__PURE__*/ React.createElement(View, {
217
222
  className: classPrefix,
218
223
  id: "".concat(classPrefix, "-").concat(uuid),
219
224
  ref: rollerRef,
@@ -49,6 +49,9 @@
49
49
  height: $picker-item-height;
50
50
  z-index: 1;
51
51
  transform-style: preserve-3d;
52
+ &-placeholder {
53
+ height: $picker-item-height;
54
+ }
52
55
  }
53
56
 
54
57
  &-roller-item {
@@ -48,6 +48,9 @@
48
48
  z-index: 1;
49
49
  transform-style: preserve-3d;
50
50
  }
51
+ .nut-pickerview-roller-placeholder {
52
+ height: var(--nutui-picker-item-height, 36px);
53
+ }
51
54
  .nut-pickerview-roller-item {
52
55
  position: absolute;
53
56
  top: 0;
@@ -48,6 +48,9 @@
48
48
  z-index: 1;
49
49
  transform-style: preserve-3d;
50
50
  }
51
+ .nut-pickerview-roller-placeholder {
52
+ height: 36px;
53
+ }
51
54
  .nut-pickerview-roller-item {
52
55
  position: absolute;
53
56
  top: 0;
@@ -1,6 +1,7 @@
1
1
  import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
2
2
  import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
3
3
  import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
4
+ import Taro from "@tarojs/taro";
4
5
  import React, { useEffect, useRef, useState } from "react";
5
6
  import { Input as TaroInput, View } from "@tarojs/components";
6
7
  import { ArrowLeft, MaskClose, Search } from "@nutui/icons-react-taro";
@@ -58,7 +59,9 @@ export var SearchBar = function(props) {
58
59
  outerValue
59
60
  ]);
60
61
  useEffect(function() {
61
- autoFocus && forceFocus();
62
+ if (Taro.getEnv() === 'WEB') {
63
+ autoFocus && forceFocus();
64
+ }
62
65
  }, [
63
66
  autoFocus
64
67
  ]);
@@ -66,10 +69,12 @@ export var SearchBar = function(props) {
66
69
  return /*#__PURE__*/ React.createElement(TaroInput, {
67
70
  className: "".concat(classPrefix, "-input ").concat(clearable ? "".concat(classPrefix, "-input-clear") : ''),
68
71
  ref: searchRef,
69
- value: value || '',
72
+ style: style,
73
+ value: (value || '').toString(),
70
74
  placeholder: placeholder || locale.placeholder,
71
75
  disabled: disabled || readOnly,
72
76
  maxlength: maxLength,
77
+ autoFocus: autoFocus,
73
78
  onInput: onInput,
74
79
  onFocus: focus,
75
80
  onBlur: blur,
@@ -1,80 +1,90 @@
1
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
1
  import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
3
2
  import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
4
3
  import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
5
- import React from "react";
6
- import { View } from "@tarojs/components";
4
+ import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
5
+ import React, { useEffect, useState } from "react";
7
6
  import classNames from "classnames";
8
- import Avatar from "../avatar/index";
7
+ import { View } from "@tarojs/components";
9
8
  import { ComponentDefaults } from "../../utils/typings";
10
- import pxTransform from "../../utils/px-transform";
11
9
  var defaultProps = _object_spread_props(_object_spread({}, ComponentDefaults), {
12
10
  rows: 1,
13
- animated: false,
14
- title: false,
15
- avatar: false,
16
- avatarSize: '50px',
11
+ animated: true,
17
12
  visible: false,
18
- avatarShape: 'round'
13
+ size: 'normal',
14
+ shape: 'round',
15
+ duration: 0.6,
16
+ inline: false
19
17
  });
20
18
  export var Skeleton = function(props) {
21
- var _ref = _object_spread({}, defaultProps, props), className = _ref.className, animated = _ref.animated, rows = _ref.rows, title = _ref.title, avatar = _ref.avatar, avatarSize = _ref.avatarSize, visible = _ref.visible, children = _ref.children, avatarShape = _ref.avatarShape, rest = _object_without_properties(_ref, [
19
+ var shapeStyle = function shapeStyle() {
20
+ if (shape === 'circle') return {
21
+ borderRadius: '50%'
22
+ };
23
+ if (shape === 'square') return {
24
+ borderRadius: '0'
25
+ };
26
+ return {};
27
+ };
28
+ var durationStyle = function durationStyle() {
29
+ if (typeof duration !== 'undefined') return {
30
+ animationDuration: "".concat(duration, "s")
31
+ };
32
+ return {};
33
+ };
34
+ var _ref = _object_spread({}, defaultProps, props), className = _ref.className, width = _ref.width, height = _ref.height, shape = _ref.shape, animated = _ref.animated, rows = _ref.rows, visible = _ref.visible, size = _ref.size, duration = _ref.duration, children = _ref.children, rest = _object_without_properties(_ref, [
22
35
  "className",
36
+ "width",
37
+ "height",
38
+ "shape",
23
39
  "animated",
24
40
  "rows",
25
- "title",
26
- "avatar",
27
- "avatarSize",
28
41
  "visible",
29
- "children",
30
- "avatarShape"
42
+ "size",
43
+ "duration",
44
+ "children"
31
45
  ]);
32
46
  var classPrefix = 'nut-skeleton';
33
47
  var classes = classNames(classPrefix, className);
34
- var _obj;
35
- var avatarClass = classNames((_obj = {}, _define_property(_obj, "nut-avatar", true), _define_property(_obj, "nut-skeleton-content-avatar", true), _define_property(_obj, "avatar-".concat(avatarShape), avatarShape), _obj));
36
- var repeatLines = function(num) {
48
+ var repeatCount = function(num) {
37
49
  return Array.from({
38
50
  length: num
39
51
  }, function(v, i) {
40
52
  return i;
41
53
  });
42
54
  };
43
- var getStyle = function() {
44
- if (avatarSize) {
45
- return {
46
- width: pxTransform(parseInt(avatarSize)),
47
- height: pxTransform(parseInt(avatarSize))
48
- };
49
- }
50
- return {
51
- width: pxTransform(50),
52
- height: pxTransform(50)
53
- };
55
+ var _useState = _sliced_to_array(useState(false), 2), animate = _useState[0], setAnimate = _useState[1];
56
+ var playAnimation = function() {
57
+ setAnimate(false);
58
+ setTimeout(function() {
59
+ setAnimate(true);
60
+ }, 10);
54
61
  };
55
- return /*#__PURE__*/ React.createElement(React.Fragment, null, visible ? /*#__PURE__*/ React.createElement(React.Fragment, null, children) : /*#__PURE__*/ React.createElement(View, _object_spread({
62
+ useEffect(function() {
63
+ if (!animated) return;
64
+ playAnimation();
65
+ // 每隔 3 秒播放一次动画
66
+ var intervalId = setInterval(playAnimation, 1000 + duration * 1000) // xs 动画 + 1s 间隔
67
+ ;
68
+ // 清理定时器
69
+ return function() {
70
+ return clearInterval(intervalId);
71
+ };
72
+ }, []);
73
+ return /*#__PURE__*/ React.createElement(React.Fragment, null, visible ? children : /*#__PURE__*/ React.createElement(View, _object_spread({
56
74
  className: classes
57
- }, rest), animated && /*#__PURE__*/ React.createElement(View, {
58
- className: "".concat(classPrefix, "-animation")
59
- }), /*#__PURE__*/ React.createElement(View, {
60
- className: "".concat(classPrefix, "-content")
61
- }, avatar && /*#__PURE__*/ React.createElement(Avatar, {
62
- className: avatarClass,
63
- background: "rgb(239, 239, 239)",
64
- shape: avatarShape,
65
- style: getStyle(),
66
- icon: "null"
67
- }), rows === 1 ? /*#__PURE__*/ React.createElement(View, {
68
- className: "".concat(classPrefix, "-content-block")
69
- }) : /*#__PURE__*/ React.createElement(View, {
70
- className: "".concat(classPrefix, "-content-line")
71
- }, title && /*#__PURE__*/ React.createElement(View, {
72
- className: "".concat(classPrefix, "-content-title")
73
- }), repeatLines(rows).map(function(item, index) {
75
+ }, rest), repeatCount(rows).map(function(item, index) {
76
+ var contentClass = "".concat(classPrefix, "-content ").concat(classPrefix, "-content-").concat(size, " ").concat(classPrefix, "-content-").concat(size, "-").concat(index);
74
77
  return /*#__PURE__*/ React.createElement(View, {
75
- className: "".concat(classPrefix, "-content-block ").concat(index === repeatLines(rows).length - 1 ? "".concat(classPrefix, "-content-block-last-child") : ''),
76
- key: index
77
- });
78
- })))));
78
+ className: "".concat(contentClass),
79
+ key: index,
80
+ style: _object_spread({
81
+ width: width,
82
+ height: height
83
+ }, shapeStyle())
84
+ }, animated && /*#__PURE__*/ React.createElement(View, {
85
+ className: "".concat(classPrefix, "-animated ").concat(animate ? "".concat(classPrefix, "-animation") : ''),
86
+ style: durationStyle()
87
+ }));
88
+ })));
79
89
  };
80
90
  Skeleton.displayName = 'NutSkeleton';
@@ -1,2 +1 @@
1
- import '../../avatar/style';
2
1
  import './skeleton.scss';
@@ -1,44 +1,29 @@
1
1
  .nut-skeleton {
2
- display: inline-block;
3
- position: relative;
4
- overflow: hidden;
5
- vertical-align: middle;
6
- width: 100%;
2
+ line-height: 0px;
3
+ font-size: 0px;
7
4
 
8
5
  &-content {
9
- display: flex;
10
- flex-direction: row;
6
+ position: relative;
7
+ display: inline-flex;
8
+ width: $skeleton-line-width;
9
+ background: $skeleton-background;
10
+ border-radius: $skeleton-line-border-radius;
11
+ overflow: hidden;
11
12
 
12
- &-avatar {
13
- margin-right: 20px;
14
- background: $skeleton-background !important;
13
+ &-normal {
14
+ height: $skeleton-line-normal-height;
15
15
  }
16
16
 
17
- &-block {
18
- width: $skeleton-line-width;
19
- height: $skeleton-line-height;
20
- background: $skeleton-background;
21
- margin-top: 10px;
22
- border-radius: $skeleton-line-border-radius;
17
+ &-large {
18
+ height: $skeleton-line-large-height;
23
19
  }
24
20
 
25
- &-line {
26
- width: 100%;
27
- display: flex;
28
- flex-direction: column;
29
- .nut-skeleton-content-block:last-child {
30
- width: 70%;
31
- }
21
+ &-small {
22
+ height: $skeleton-line-small-height;
23
+ margin-top: 8px;
32
24
  }
33
-
34
- &-title {
35
- width: 30%;
36
- height: $skeleton-line-height;
37
- background: $skeleton-background;
38
- }
39
-
40
- &-block-last-child {
41
- width: 55%;
25
+ &-small-0 {
26
+ margin-top: 0;
42
27
  }
43
28
  }
44
29
 
@@ -49,41 +34,50 @@
49
34
  width: 100%;
50
35
  height: 100%;
51
36
  z-index: 1;
52
- animation: nut-skeleton 2s ease-in-out 0s infinite;
37
+ background: linear-gradient(
38
+ 90deg,
39
+ rgba(0, 0, 0, 0) 0%,
40
+ rgba(0, 0, 0, 0.02) 50%,
41
+ rgba(0, 0, 0, 0) 100%
42
+ );
43
+ animation-name: nut-skeleton;
44
+ animation-delay: 0s;
45
+ animation-duration: 0.6s;
46
+ animation-direction: normal;
47
+ animation-fill-mode: both;
48
+ animation-play-state: running;
49
+ animation-iteration-count: 1;
50
+ animation-timing-function: linear;
53
51
  }
54
52
 
55
53
  @keyframes nut-skeleton {
56
- 0% {
57
- background-position-x: -500px;
54
+ from {
55
+ transform: translateX(-100%);
58
56
  }
59
57
 
60
58
  to {
61
- background-position-x: calc(500px + 100%);
59
+ transform: translateX(100%);
62
60
  }
63
61
  }
64
62
  }
65
63
 
66
64
  [dir='rtl'] .nut-skeleton,
67
65
  .nut-rtl .nut-skeleton {
68
- &-content {
69
- .nut-avatar {
70
- margin-right: 0;
71
- margin-left: 20px;
72
- }
73
- }
74
66
  &-animation {
75
67
  left: auto;
76
68
  right: 0;
77
- animation: nut-skeleton-rtl 2s ease-in-out 0s infinite;
69
+ animation: nut-skeleton-rtl 2s linear 0s infinite;
78
70
  }
79
71
 
80
72
  @keyframes nut-skeleton-rtl {
81
- 0% {
82
- background-position-x: calc(500px + 100%);
73
+ from {
74
+ //background-position: -200% 0;
75
+ transform: translateX(100%);
83
76
  }
84
77
 
85
78
  to {
86
- background-position-x: -500px;
79
+ //background-position: 200% 0;
80
+ transform: translateX(-100%);
87
81
  }
88
82
  }
89
83
  }