@douyinfe/semi-foundation 2.38.2-alpha.1 → 2.38.2-alpha.2-patch-modal

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 (35) hide show
  1. package/anchor/foundation.ts +4 -7
  2. package/button/iconButton.scss +29 -1
  3. package/lib/cjs/anchor/foundation.js +3 -8
  4. package/lib/cjs/button/iconButton.css +26 -1
  5. package/lib/cjs/button/iconButton.scss +29 -1
  6. package/lib/cjs/lib/cjs/_portal/portal.scss +17 -0
  7. package/lib/cjs/lib/cjs/anchor/anchor.scss +127 -0
  8. package/lib/cjs/lib/es/_portal/portal.scss +17 -0
  9. package/lib/cjs/lib/es/anchor/anchor.scss +127 -0
  10. package/lib/cjs/navigation/subNavFoundation.js +3 -1
  11. package/lib/cjs/spin/animation.scss +3 -2
  12. package/lib/cjs/spin/spin.css +19 -1
  13. package/lib/cjs/spin/spin.scss +20 -0
  14. package/lib/cjs/tooltip/foundation.js +1 -0
  15. package/lib/cjs/tree/treeUtil.d.ts +1 -1
  16. package/lib/cjs/upload/constants.d.ts +1 -1
  17. package/lib/es/anchor/foundation.js +3 -8
  18. package/lib/es/button/iconButton.css +26 -1
  19. package/lib/es/button/iconButton.scss +29 -1
  20. package/lib/es/lib/cjs/_portal/portal.scss +17 -0
  21. package/lib/es/lib/cjs/anchor/anchor.scss +127 -0
  22. package/lib/es/lib/es/_portal/portal.scss +17 -0
  23. package/lib/es/lib/es/anchor/anchor.scss +127 -0
  24. package/lib/es/navigation/subNavFoundation.js +3 -1
  25. package/lib/es/spin/animation.scss +3 -2
  26. package/lib/es/spin/spin.css +19 -1
  27. package/lib/es/spin/spin.scss +20 -0
  28. package/lib/es/tooltip/foundation.js +1 -0
  29. package/lib/es/tree/treeUtil.d.ts +1 -1
  30. package/lib/es/upload/constants.d.ts +1 -1
  31. package/navigation/subNavFoundation.ts +3 -1
  32. package/package.json +3 -3
  33. package/spin/animation.scss +3 -2
  34. package/spin/spin.scss +20 -0
  35. package/tooltip/foundation.ts +1 -0
@@ -171,7 +171,7 @@ export default class AnchorFoundation<P = Record<string, any>, S = Record<string
171
171
  * 2. There is a scroll axis (clientHeight < scrollHeight | | clientWidth < scrollWidth)
172
172
  * 3.overflowX or overflowY has a value and is not visible or clip
173
173
  * For details, please see https://github.com/stipsan/compute-scroll-into-view
174
- *
174
+ *
175
175
  * behavior定义滚动行为
176
176
  * - 可选 'auto' | 'smooth' | Function
177
177
  * - Function 自定义滚动行为
@@ -184,12 +184,9 @@ export default class AnchorFoundation<P = Record<string, any>, S = Record<string
184
184
  */
185
185
  behavior: actions => {
186
186
  // We just need to scroll the innermost target container
187
- const verticalScrollAction = actions.find(action => {
188
- const { el } = action;
189
- return el.scrollHeight > el.clientHeight;
190
- });
191
- const el = get(verticalScrollAction, 'el');
192
- const top = get(verticalScrollAction, 'top');
187
+ const innermostAction = get(actions, '0');
188
+ const el = get(innermostAction, 'el');
189
+ const top = get(innermostAction, 'top');
193
190
  if (el) {
194
191
  const offsetTop = top - targetOffset;
195
192
  if (el.scroll && canSmoothScroll) {
@@ -4,6 +4,30 @@
4
4
  $module: #{$prefix}-button;
5
5
 
6
6
  .#{$module} {
7
+ @keyframes #{$prefix}-animation-rotate {
8
+ from {
9
+ transform: rotate(0);
10
+ }
11
+ to {
12
+ transform: rotate(360deg);
13
+ }
14
+ }
15
+
16
+ @keyframes #{$prefix}-animation-circle {
17
+ 0% {
18
+ stroke-dasharray: 1, 220;
19
+ stroke-dashoffset: 0;
20
+ }
21
+ 50% {
22
+ stroke-dasharray: 150, 220;
23
+ stroke-dashoffset: -68px;
24
+ }
25
+ 100% {
26
+ stroke-dasharray: 150, 220;
27
+ stroke-dashoffset: -218px;
28
+ }
29
+ }
30
+
7
31
  &.#{$module}-with-icon {
8
32
  display: inline-flex;
9
33
  align-items: center;
@@ -24,8 +48,12 @@ $module: #{$prefix}-button;
24
48
  &>svg {
25
49
  width: 16px;
26
50
  height: 16px;
27
- animation: .6s linear infinite #{$prefix}-animation-rotate;
51
+ animation: 1200ms linear infinite #{$prefix}-animation-rotate;
28
52
  animation-fill-mode: forwards;
53
+
54
+ & > circle {
55
+ animation: 2500ms ease-in-out infinite #{$prefix}-animation-circle;
56
+ }
29
57
  }
30
58
  }
31
59
  }
@@ -165,14 +165,9 @@ class AnchorFoundation extends _foundation.default {
165
165
  */
166
166
  behavior: actions => {
167
167
  // We just need to scroll the innermost target container
168
- const verticalScrollAction = actions.find(action => {
169
- const {
170
- el
171
- } = action;
172
- return el.scrollHeight > el.clientHeight;
173
- });
174
- const el = (0, _get2.default)(verticalScrollAction, 'el');
175
- const top = (0, _get2.default)(verticalScrollAction, 'top');
168
+ const innermostAction = (0, _get2.default)(actions, '0');
169
+ const el = (0, _get2.default)(innermostAction, 'el');
170
+ const top = (0, _get2.default)(innermostAction, 'top');
176
171
  if (el) {
177
172
  const offsetTop = top - targetOffset;
178
173
  if (el.scroll && canSmoothScroll) {
@@ -1,6 +1,28 @@
1
1
  /* shadow */
2
2
  /* sizing */
3
3
  /* spacing */
4
+ @keyframes semi-animation-rotate {
5
+ from {
6
+ transform: rotate(0);
7
+ }
8
+ to {
9
+ transform: rotate(360deg);
10
+ }
11
+ }
12
+ @keyframes semi-animation-circle {
13
+ 0% {
14
+ stroke-dasharray: 1, 220;
15
+ stroke-dashoffset: 0;
16
+ }
17
+ 50% {
18
+ stroke-dasharray: 150, 220;
19
+ stroke-dashoffset: -68px;
20
+ }
21
+ 100% {
22
+ stroke-dasharray: 150, 220;
23
+ stroke-dashoffset: -218px;
24
+ }
25
+ }
4
26
  .semi-button.semi-button-with-icon {
5
27
  display: inline-flex;
6
28
  align-items: center;
@@ -17,9 +39,12 @@
17
39
  .semi-button.semi-button-loading .semi-button-content > svg {
18
40
  width: 16px;
19
41
  height: 16px;
20
- animation: 0.6s linear infinite semi-animation-rotate;
42
+ animation: 1200ms linear infinite semi-animation-rotate;
21
43
  animation-fill-mode: forwards;
22
44
  }
45
+ .semi-button.semi-button-loading .semi-button-content > svg > circle {
46
+ animation: 2500ms ease-in-out infinite semi-animation-circle;
47
+ }
23
48
  .semi-button.semi-button-with-icon-only {
24
49
  padding-left: 8px;
25
50
  padding-right: 8px;
@@ -4,6 +4,30 @@
4
4
  $module: #{$prefix}-button;
5
5
 
6
6
  .#{$module} {
7
+ @keyframes #{$prefix}-animation-rotate {
8
+ from {
9
+ transform: rotate(0);
10
+ }
11
+ to {
12
+ transform: rotate(360deg);
13
+ }
14
+ }
15
+
16
+ @keyframes #{$prefix}-animation-circle {
17
+ 0% {
18
+ stroke-dasharray: 1, 220;
19
+ stroke-dashoffset: 0;
20
+ }
21
+ 50% {
22
+ stroke-dasharray: 150, 220;
23
+ stroke-dashoffset: -68px;
24
+ }
25
+ 100% {
26
+ stroke-dasharray: 150, 220;
27
+ stroke-dashoffset: -218px;
28
+ }
29
+ }
30
+
7
31
  &.#{$module}-with-icon {
8
32
  display: inline-flex;
9
33
  align-items: center;
@@ -24,8 +48,12 @@ $module: #{$prefix}-button;
24
48
  &>svg {
25
49
  width: 16px;
26
50
  height: 16px;
27
- animation: .6s linear infinite #{$prefix}-animation-rotate;
51
+ animation: 1200ms linear infinite #{$prefix}-animation-rotate;
28
52
  animation-fill-mode: forwards;
53
+
54
+ & > circle {
55
+ animation: 2500ms ease-in-out infinite #{$prefix}-animation-circle;
56
+ }
29
57
  }
30
58
  }
31
59
  }
@@ -0,0 +1,17 @@
1
+ //@import '../theme/variables.scss';
2
+
3
+ $module: #{$prefix}-portal;
4
+
5
+ .#{$module} {
6
+ position: absolute;
7
+ top: 0;
8
+ left: 0;
9
+ width: 100%;
10
+ z-index: $z-portal;
11
+
12
+ &-inner {
13
+ position: absolute;
14
+ background-color: transparent;
15
+ min-width: max-content;
16
+ }
17
+ }
@@ -0,0 +1,127 @@
1
+ @import "./animation.scss";
2
+ @import './variables.scss';
3
+
4
+ $module: #{$prefix}-anchor;
5
+
6
+ .#{$module} {
7
+ @include font-size-regular;
8
+ overflow-y: auto;
9
+ overflow-x: hidden;
10
+ position: relative;
11
+
12
+ &-size-small {
13
+ @include font-size-small;
14
+ }
15
+
16
+ &-slide {
17
+ position: absolute;
18
+ left: $spacing-anchor_slide-left;
19
+ top: $spacing-anchor_slide-top;
20
+ height: 100%;
21
+
22
+ &-muted {
23
+ display: none;
24
+ }
25
+
26
+ &-bar {
27
+ display: none;
28
+ position: absolute;
29
+ top: 0;
30
+ width: $width-anchor_slide_default;
31
+ border-radius: $radius-anchor_slide;
32
+
33
+ &-active {
34
+ display: inline-block;
35
+ }
36
+
37
+ &-default {
38
+ height: $height-anchor_slide_default + 2 * $spacing-anchor_slide_default-Y;
39
+ }
40
+
41
+ &-small {
42
+ height: $height-anchor_slide_small + 2 * $spacing-anchor_slide_small-Y;
43
+ }
44
+
45
+ &-primary {
46
+ background-color: $color-anchor_slide_primary-bg-active;
47
+ }
48
+
49
+ &-tertiary {
50
+ background-color: $color-anchor_slide_tertiary-bg-active;
51
+ }
52
+ }
53
+
54
+ &::before {
55
+ position: absolute;
56
+ display: block;
57
+ width: $width-anchor_slide_default;
58
+ height: 100%;
59
+ background-color: $color-anchor_slide_default-bg-default;
60
+ border-radius: $radius-anchor_slide;
61
+ content: ' ';
62
+ }
63
+ }
64
+
65
+ &-link {
66
+
67
+ &-title {
68
+ cursor: pointer;
69
+ color: $color-anchor_title-text-default;
70
+ padding-top: $spacing-anchor_link_title-paddingTop;
71
+ padding-bottom: $spacing-anchor_link_title-paddingBottom;
72
+ overflow: hidden;
73
+ text-overflow: ellipsis;
74
+ white-space: nowrap;
75
+ border-radius: $width-anchor-outline_border_radius;
76
+ transition: color $transition_duration-anchor_title-text $transition_function-anchor_title-text $transition_delay-anchor_title-text;//锚点选项文字的动效
77
+ transform: scale($transform_scale-anchor_title-text);
78
+ &:hover {
79
+ color: $color-anchor_title-text-hover;
80
+ }
81
+
82
+ &-active {
83
+ color: $color-anchor_title-text-active;
84
+ }
85
+
86
+ &:focus-visible {
87
+ outline: $width-anchor-outline solid $color-anchor_title-outline-focus;
88
+ outline-offset: $width-anchor-outlineOffset;
89
+ }
90
+
91
+ &-disabled {
92
+ color: $color-anchor_title-text-disabled;
93
+ cursor: not-allowed;
94
+ &:hover {
95
+ color: $color-anchor_title-text-disabled;
96
+ }
97
+ }
98
+ }
99
+
100
+ &-tooltip {
101
+ cursor: pointer;
102
+ color: $color-anchor_title-text-default !important;
103
+
104
+ &-small {
105
+ @include font-size-small;
106
+ }
107
+
108
+ &:hover {
109
+ color: $color-anchor_title-text-hover !important;
110
+ }
111
+
112
+ &-active {
113
+ color: $color-anchor_title-text-active !important;
114
+ }
115
+
116
+ &-disabled {
117
+ color: $color-anchor_title-text-disabled !important;
118
+ cursor: not-allowed;
119
+ &:hover {
120
+ color: $color-anchor_title-text-disabled !important;
121
+ }
122
+ }
123
+ }
124
+ }
125
+ }
126
+
127
+ @import "./rtl.scss";
@@ -0,0 +1,17 @@
1
+ //@import '../theme/variables.scss';
2
+
3
+ $module: #{$prefix}-portal;
4
+
5
+ .#{$module} {
6
+ position: absolute;
7
+ top: 0;
8
+ left: 0;
9
+ width: 100%;
10
+ z-index: $z-portal;
11
+
12
+ &-inner {
13
+ position: absolute;
14
+ background-color: transparent;
15
+ min-width: max-content;
16
+ }
17
+ }
@@ -0,0 +1,127 @@
1
+ @import "./animation.scss";
2
+ @import './variables.scss';
3
+
4
+ $module: #{$prefix}-anchor;
5
+
6
+ .#{$module} {
7
+ @include font-size-regular;
8
+ overflow-y: auto;
9
+ overflow-x: hidden;
10
+ position: relative;
11
+
12
+ &-size-small {
13
+ @include font-size-small;
14
+ }
15
+
16
+ &-slide {
17
+ position: absolute;
18
+ left: $spacing-anchor_slide-left;
19
+ top: $spacing-anchor_slide-top;
20
+ height: 100%;
21
+
22
+ &-muted {
23
+ display: none;
24
+ }
25
+
26
+ &-bar {
27
+ display: none;
28
+ position: absolute;
29
+ top: 0;
30
+ width: $width-anchor_slide_default;
31
+ border-radius: $radius-anchor_slide;
32
+
33
+ &-active {
34
+ display: inline-block;
35
+ }
36
+
37
+ &-default {
38
+ height: $height-anchor_slide_default + 2 * $spacing-anchor_slide_default-Y;
39
+ }
40
+
41
+ &-small {
42
+ height: $height-anchor_slide_small + 2 * $spacing-anchor_slide_small-Y;
43
+ }
44
+
45
+ &-primary {
46
+ background-color: $color-anchor_slide_primary-bg-active;
47
+ }
48
+
49
+ &-tertiary {
50
+ background-color: $color-anchor_slide_tertiary-bg-active;
51
+ }
52
+ }
53
+
54
+ &::before {
55
+ position: absolute;
56
+ display: block;
57
+ width: $width-anchor_slide_default;
58
+ height: 100%;
59
+ background-color: $color-anchor_slide_default-bg-default;
60
+ border-radius: $radius-anchor_slide;
61
+ content: ' ';
62
+ }
63
+ }
64
+
65
+ &-link {
66
+
67
+ &-title {
68
+ cursor: pointer;
69
+ color: $color-anchor_title-text-default;
70
+ padding-top: $spacing-anchor_link_title-paddingTop;
71
+ padding-bottom: $spacing-anchor_link_title-paddingBottom;
72
+ overflow: hidden;
73
+ text-overflow: ellipsis;
74
+ white-space: nowrap;
75
+ border-radius: $width-anchor-outline_border_radius;
76
+ transition: color $transition_duration-anchor_title-text $transition_function-anchor_title-text $transition_delay-anchor_title-text;//锚点选项文字的动效
77
+ transform: scale($transform_scale-anchor_title-text);
78
+ &:hover {
79
+ color: $color-anchor_title-text-hover;
80
+ }
81
+
82
+ &-active {
83
+ color: $color-anchor_title-text-active;
84
+ }
85
+
86
+ &:focus-visible {
87
+ outline: $width-anchor-outline solid $color-anchor_title-outline-focus;
88
+ outline-offset: $width-anchor-outlineOffset;
89
+ }
90
+
91
+ &-disabled {
92
+ color: $color-anchor_title-text-disabled;
93
+ cursor: not-allowed;
94
+ &:hover {
95
+ color: $color-anchor_title-text-disabled;
96
+ }
97
+ }
98
+ }
99
+
100
+ &-tooltip {
101
+ cursor: pointer;
102
+ color: $color-anchor_title-text-default !important;
103
+
104
+ &-small {
105
+ @include font-size-small;
106
+ }
107
+
108
+ &:hover {
109
+ color: $color-anchor_title-text-hover !important;
110
+ }
111
+
112
+ &-active {
113
+ color: $color-anchor_title-text-active !important;
114
+ }
115
+
116
+ &-disabled {
117
+ color: $color-anchor_title-text-disabled !important;
118
+ cursor: not-allowed;
119
+ &:hover {
120
+ color: $color-anchor_title-text-disabled !important;
121
+ }
122
+ }
123
+ }
124
+ }
125
+ }
126
+
127
+ @import "./rtl.scss";
@@ -33,7 +33,9 @@ class SubNavFoundation extends _foundation.default {
33
33
  // this.log('invoke SubNavFoundation init()');
34
34
  this._timer = null;
35
35
  }
36
- destroy() {} // eslint-disable-line
36
+ destroy() {
37
+ this.clearDelayTimer();
38
+ }
37
39
  clearDelayTimer() {
38
40
  if (this._timer) {
39
41
  clearTimeout(this._timer);
@@ -1,2 +1,3 @@
1
- $animation_duration-spin_wrapper-spin: 600ms; // 加载图标容器旋转一周时长
2
- $animation_duration-spin_customChildren-spin: 1600ms; // 自定义指示器时旋转一周时长
1
+ $animation_duration-spin_wrapper-spin: 1200ms; // 加载图标容器旋转一周时长
2
+ $animation_duration-spin_customChildren-spin: 1600ms; // 自定义指示器时旋转一周时长
3
+ $animation_duration-spin_wrapper-spin-circle: 2500ms; // 加载图标弹性运动一周时长
@@ -15,6 +15,20 @@
15
15
  transform: rotate(360deg);
16
16
  }
17
17
  }
18
+ @keyframes semi-animation-circle {
19
+ 0% {
20
+ stroke-dasharray: 1, 220;
21
+ stroke-dashoffset: 0;
22
+ }
23
+ 50% {
24
+ stroke-dasharray: 150, 220;
25
+ stroke-dashoffset: -68px;
26
+ }
27
+ 100% {
28
+ stroke-dasharray: 150, 220;
29
+ stroke-dashoffset: -218px;
30
+ }
31
+ }
18
32
  .semi-spin-wrapper {
19
33
  text-align: center;
20
34
  position: absolute;
@@ -24,12 +38,16 @@
24
38
  color: var(--semi-color-primary);
25
39
  }
26
40
  .semi-spin-wrapper > svg {
27
- animation: 600ms linear infinite semi-animation-rotate;
41
+ display: inline;
42
+ animation: 1200ms linear infinite semi-animation-rotate;
28
43
  animation-fill-mode: forwards;
29
44
  vertical-align: top;
30
45
  width: 20px;
31
46
  height: 20px;
32
47
  }
48
+ .semi-spin-wrapper > svg > circle {
49
+ animation: 2500ms ease-in-out infinite semi-animation-circle;
50
+ }
33
51
  .semi-spin-animate {
34
52
  display: inline-flex;
35
53
  animation: 1600ms linear infinite semi-animation-rotate;
@@ -18,6 +18,21 @@ $module: #{$prefix}-spin;
18
18
  }
19
19
  }
20
20
 
21
+ @keyframes #{$prefix}-animation-circle {
22
+ 0% {
23
+ stroke-dasharray: 1, 220;
24
+ stroke-dashoffset: 0;
25
+ }
26
+ 50% {
27
+ stroke-dasharray: 150, 220;
28
+ stroke-dashoffset: -68px;
29
+ }
30
+ 100% {
31
+ stroke-dasharray: 150, 220;
32
+ stroke-dashoffset: -218px;
33
+ }
34
+ }
35
+
21
36
  &-wrapper {
22
37
  text-align: center;
23
38
  position: absolute;
@@ -27,10 +42,15 @@ $module: #{$prefix}-spin;
27
42
  color: $color-spin-bg;
28
43
 
29
44
  & > svg {
45
+ display: inline;
30
46
  animation: $animation_duration-spin_wrapper-spin linear infinite #{$prefix}-animation-rotate;
31
47
  animation-fill-mode: forwards;
32
48
  vertical-align: top;
33
49
  @include size($width-spin_middle);
50
+
51
+ & > circle {
52
+ animation: $animation_duration-spin_wrapper-spin-circle ease-in-out infinite #{$prefix}-animation-circle;
53
+ }
34
54
  }
35
55
  }
36
56
 
@@ -235,6 +235,7 @@ class Tooltip extends _foundation.default {
235
235
  this._adapter.unregisterClickOutsideHandler();
236
236
  this.unBindResizeEvent();
237
237
  this.unBindScrollEvent();
238
+ clearTimeout(this._timer);
238
239
  }
239
240
  _bindTriggerEvent(triggerEventSet) {
240
241
  this._adapter.registerTriggerEvent(triggerEventSet);
@@ -75,6 +75,6 @@ export declare function getValueOrKey(data: any): any;
75
75
  export declare function normalizeValue(value: any, withObject: boolean): any;
76
76
  export declare function updateKeys(keySet: Set<string> | string[], keyEntities: KeyEntities): string[];
77
77
  export declare function calcDisabledKeys(keyEntities: KeyEntities): Set<string>;
78
- export declare function calcDropRelativePosition(event: any, treeNode: any): 1 | -1 | 0;
78
+ export declare function calcDropRelativePosition(event: any, treeNode: any): 0 | 1 | -1;
79
79
  export declare function getDragNodesKeys(key: string, keyEntities: KeyEntities): string[];
80
80
  export declare function calcDropActualPosition(pos: string, relativeDropPos: any): any;
@@ -18,7 +18,7 @@ declare const strings: {
18
18
  DRAG_AREA_ILLEGAL: string;
19
19
  TRIGGER_AUTO: "auto";
20
20
  TRIGGER_CUSTOM: "custom";
21
- UPLOAD_TRIGGER: ("auto" | "custom")[];
21
+ UPLOAD_TRIGGER: ("custom" | "auto")[];
22
22
  VALIDATE_STATUS: readonly ["default", "error", "warning", "success"];
23
23
  PROMPT_POSITION: readonly ["left", "right", "bottom"];
24
24
  };
@@ -158,14 +158,9 @@ export default class AnchorFoundation extends BaseFoundation {
158
158
  */
159
159
  behavior: actions => {
160
160
  // We just need to scroll the innermost target container
161
- const verticalScrollAction = actions.find(action => {
162
- const {
163
- el
164
- } = action;
165
- return el.scrollHeight > el.clientHeight;
166
- });
167
- const el = _get(verticalScrollAction, 'el');
168
- const top = _get(verticalScrollAction, 'top');
161
+ const innermostAction = _get(actions, '0');
162
+ const el = _get(innermostAction, 'el');
163
+ const top = _get(innermostAction, 'top');
169
164
  if (el) {
170
165
  const offsetTop = top - targetOffset;
171
166
  if (el.scroll && canSmoothScroll) {
@@ -1,6 +1,28 @@
1
1
  /* shadow */
2
2
  /* sizing */
3
3
  /* spacing */
4
+ @keyframes semi-animation-rotate {
5
+ from {
6
+ transform: rotate(0);
7
+ }
8
+ to {
9
+ transform: rotate(360deg);
10
+ }
11
+ }
12
+ @keyframes semi-animation-circle {
13
+ 0% {
14
+ stroke-dasharray: 1, 220;
15
+ stroke-dashoffset: 0;
16
+ }
17
+ 50% {
18
+ stroke-dasharray: 150, 220;
19
+ stroke-dashoffset: -68px;
20
+ }
21
+ 100% {
22
+ stroke-dasharray: 150, 220;
23
+ stroke-dashoffset: -218px;
24
+ }
25
+ }
4
26
  .semi-button.semi-button-with-icon {
5
27
  display: inline-flex;
6
28
  align-items: center;
@@ -17,9 +39,12 @@
17
39
  .semi-button.semi-button-loading .semi-button-content > svg {
18
40
  width: 16px;
19
41
  height: 16px;
20
- animation: 0.6s linear infinite semi-animation-rotate;
42
+ animation: 1200ms linear infinite semi-animation-rotate;
21
43
  animation-fill-mode: forwards;
22
44
  }
45
+ .semi-button.semi-button-loading .semi-button-content > svg > circle {
46
+ animation: 2500ms ease-in-out infinite semi-animation-circle;
47
+ }
23
48
  .semi-button.semi-button-with-icon-only {
24
49
  padding-left: 8px;
25
50
  padding-right: 8px;
@@ -4,6 +4,30 @@
4
4
  $module: #{$prefix}-button;
5
5
 
6
6
  .#{$module} {
7
+ @keyframes #{$prefix}-animation-rotate {
8
+ from {
9
+ transform: rotate(0);
10
+ }
11
+ to {
12
+ transform: rotate(360deg);
13
+ }
14
+ }
15
+
16
+ @keyframes #{$prefix}-animation-circle {
17
+ 0% {
18
+ stroke-dasharray: 1, 220;
19
+ stroke-dashoffset: 0;
20
+ }
21
+ 50% {
22
+ stroke-dasharray: 150, 220;
23
+ stroke-dashoffset: -68px;
24
+ }
25
+ 100% {
26
+ stroke-dasharray: 150, 220;
27
+ stroke-dashoffset: -218px;
28
+ }
29
+ }
30
+
7
31
  &.#{$module}-with-icon {
8
32
  display: inline-flex;
9
33
  align-items: center;
@@ -24,8 +48,12 @@ $module: #{$prefix}-button;
24
48
  &>svg {
25
49
  width: 16px;
26
50
  height: 16px;
27
- animation: .6s linear infinite #{$prefix}-animation-rotate;
51
+ animation: 1200ms linear infinite #{$prefix}-animation-rotate;
28
52
  animation-fill-mode: forwards;
53
+
54
+ & > circle {
55
+ animation: 2500ms ease-in-out infinite #{$prefix}-animation-circle;
56
+ }
29
57
  }
30
58
  }
31
59
  }
@@ -0,0 +1,17 @@
1
+ //@import '../theme/variables.scss';
2
+
3
+ $module: #{$prefix}-portal;
4
+
5
+ .#{$module} {
6
+ position: absolute;
7
+ top: 0;
8
+ left: 0;
9
+ width: 100%;
10
+ z-index: $z-portal;
11
+
12
+ &-inner {
13
+ position: absolute;
14
+ background-color: transparent;
15
+ min-width: max-content;
16
+ }
17
+ }
@@ -0,0 +1,127 @@
1
+ @import "./animation.scss";
2
+ @import './variables.scss';
3
+
4
+ $module: #{$prefix}-anchor;
5
+
6
+ .#{$module} {
7
+ @include font-size-regular;
8
+ overflow-y: auto;
9
+ overflow-x: hidden;
10
+ position: relative;
11
+
12
+ &-size-small {
13
+ @include font-size-small;
14
+ }
15
+
16
+ &-slide {
17
+ position: absolute;
18
+ left: $spacing-anchor_slide-left;
19
+ top: $spacing-anchor_slide-top;
20
+ height: 100%;
21
+
22
+ &-muted {
23
+ display: none;
24
+ }
25
+
26
+ &-bar {
27
+ display: none;
28
+ position: absolute;
29
+ top: 0;
30
+ width: $width-anchor_slide_default;
31
+ border-radius: $radius-anchor_slide;
32
+
33
+ &-active {
34
+ display: inline-block;
35
+ }
36
+
37
+ &-default {
38
+ height: $height-anchor_slide_default + 2 * $spacing-anchor_slide_default-Y;
39
+ }
40
+
41
+ &-small {
42
+ height: $height-anchor_slide_small + 2 * $spacing-anchor_slide_small-Y;
43
+ }
44
+
45
+ &-primary {
46
+ background-color: $color-anchor_slide_primary-bg-active;
47
+ }
48
+
49
+ &-tertiary {
50
+ background-color: $color-anchor_slide_tertiary-bg-active;
51
+ }
52
+ }
53
+
54
+ &::before {
55
+ position: absolute;
56
+ display: block;
57
+ width: $width-anchor_slide_default;
58
+ height: 100%;
59
+ background-color: $color-anchor_slide_default-bg-default;
60
+ border-radius: $radius-anchor_slide;
61
+ content: ' ';
62
+ }
63
+ }
64
+
65
+ &-link {
66
+
67
+ &-title {
68
+ cursor: pointer;
69
+ color: $color-anchor_title-text-default;
70
+ padding-top: $spacing-anchor_link_title-paddingTop;
71
+ padding-bottom: $spacing-anchor_link_title-paddingBottom;
72
+ overflow: hidden;
73
+ text-overflow: ellipsis;
74
+ white-space: nowrap;
75
+ border-radius: $width-anchor-outline_border_radius;
76
+ transition: color $transition_duration-anchor_title-text $transition_function-anchor_title-text $transition_delay-anchor_title-text;//锚点选项文字的动效
77
+ transform: scale($transform_scale-anchor_title-text);
78
+ &:hover {
79
+ color: $color-anchor_title-text-hover;
80
+ }
81
+
82
+ &-active {
83
+ color: $color-anchor_title-text-active;
84
+ }
85
+
86
+ &:focus-visible {
87
+ outline: $width-anchor-outline solid $color-anchor_title-outline-focus;
88
+ outline-offset: $width-anchor-outlineOffset;
89
+ }
90
+
91
+ &-disabled {
92
+ color: $color-anchor_title-text-disabled;
93
+ cursor: not-allowed;
94
+ &:hover {
95
+ color: $color-anchor_title-text-disabled;
96
+ }
97
+ }
98
+ }
99
+
100
+ &-tooltip {
101
+ cursor: pointer;
102
+ color: $color-anchor_title-text-default !important;
103
+
104
+ &-small {
105
+ @include font-size-small;
106
+ }
107
+
108
+ &:hover {
109
+ color: $color-anchor_title-text-hover !important;
110
+ }
111
+
112
+ &-active {
113
+ color: $color-anchor_title-text-active !important;
114
+ }
115
+
116
+ &-disabled {
117
+ color: $color-anchor_title-text-disabled !important;
118
+ cursor: not-allowed;
119
+ &:hover {
120
+ color: $color-anchor_title-text-disabled !important;
121
+ }
122
+ }
123
+ }
124
+ }
125
+ }
126
+
127
+ @import "./rtl.scss";
@@ -0,0 +1,17 @@
1
+ //@import '../theme/variables.scss';
2
+
3
+ $module: #{$prefix}-portal;
4
+
5
+ .#{$module} {
6
+ position: absolute;
7
+ top: 0;
8
+ left: 0;
9
+ width: 100%;
10
+ z-index: $z-portal;
11
+
12
+ &-inner {
13
+ position: absolute;
14
+ background-color: transparent;
15
+ min-width: max-content;
16
+ }
17
+ }
@@ -0,0 +1,127 @@
1
+ @import "./animation.scss";
2
+ @import './variables.scss';
3
+
4
+ $module: #{$prefix}-anchor;
5
+
6
+ .#{$module} {
7
+ @include font-size-regular;
8
+ overflow-y: auto;
9
+ overflow-x: hidden;
10
+ position: relative;
11
+
12
+ &-size-small {
13
+ @include font-size-small;
14
+ }
15
+
16
+ &-slide {
17
+ position: absolute;
18
+ left: $spacing-anchor_slide-left;
19
+ top: $spacing-anchor_slide-top;
20
+ height: 100%;
21
+
22
+ &-muted {
23
+ display: none;
24
+ }
25
+
26
+ &-bar {
27
+ display: none;
28
+ position: absolute;
29
+ top: 0;
30
+ width: $width-anchor_slide_default;
31
+ border-radius: $radius-anchor_slide;
32
+
33
+ &-active {
34
+ display: inline-block;
35
+ }
36
+
37
+ &-default {
38
+ height: $height-anchor_slide_default + 2 * $spacing-anchor_slide_default-Y;
39
+ }
40
+
41
+ &-small {
42
+ height: $height-anchor_slide_small + 2 * $spacing-anchor_slide_small-Y;
43
+ }
44
+
45
+ &-primary {
46
+ background-color: $color-anchor_slide_primary-bg-active;
47
+ }
48
+
49
+ &-tertiary {
50
+ background-color: $color-anchor_slide_tertiary-bg-active;
51
+ }
52
+ }
53
+
54
+ &::before {
55
+ position: absolute;
56
+ display: block;
57
+ width: $width-anchor_slide_default;
58
+ height: 100%;
59
+ background-color: $color-anchor_slide_default-bg-default;
60
+ border-radius: $radius-anchor_slide;
61
+ content: ' ';
62
+ }
63
+ }
64
+
65
+ &-link {
66
+
67
+ &-title {
68
+ cursor: pointer;
69
+ color: $color-anchor_title-text-default;
70
+ padding-top: $spacing-anchor_link_title-paddingTop;
71
+ padding-bottom: $spacing-anchor_link_title-paddingBottom;
72
+ overflow: hidden;
73
+ text-overflow: ellipsis;
74
+ white-space: nowrap;
75
+ border-radius: $width-anchor-outline_border_radius;
76
+ transition: color $transition_duration-anchor_title-text $transition_function-anchor_title-text $transition_delay-anchor_title-text;//锚点选项文字的动效
77
+ transform: scale($transform_scale-anchor_title-text);
78
+ &:hover {
79
+ color: $color-anchor_title-text-hover;
80
+ }
81
+
82
+ &-active {
83
+ color: $color-anchor_title-text-active;
84
+ }
85
+
86
+ &:focus-visible {
87
+ outline: $width-anchor-outline solid $color-anchor_title-outline-focus;
88
+ outline-offset: $width-anchor-outlineOffset;
89
+ }
90
+
91
+ &-disabled {
92
+ color: $color-anchor_title-text-disabled;
93
+ cursor: not-allowed;
94
+ &:hover {
95
+ color: $color-anchor_title-text-disabled;
96
+ }
97
+ }
98
+ }
99
+
100
+ &-tooltip {
101
+ cursor: pointer;
102
+ color: $color-anchor_title-text-default !important;
103
+
104
+ &-small {
105
+ @include font-size-small;
106
+ }
107
+
108
+ &:hover {
109
+ color: $color-anchor_title-text-hover !important;
110
+ }
111
+
112
+ &-active {
113
+ color: $color-anchor_title-text-active !important;
114
+ }
115
+
116
+ &-disabled {
117
+ color: $color-anchor_title-text-disabled !important;
118
+ cursor: not-allowed;
119
+ &:hover {
120
+ color: $color-anchor_title-text-disabled !important;
121
+ }
122
+ }
123
+ }
124
+ }
125
+ }
126
+
127
+ @import "./rtl.scss";
@@ -26,7 +26,9 @@ export default class SubNavFoundation extends BaseFoundation {
26
26
  // this.log('invoke SubNavFoundation init()');
27
27
  this._timer = null;
28
28
  }
29
- destroy() {} // eslint-disable-line
29
+ destroy() {
30
+ this.clearDelayTimer();
31
+ }
30
32
  clearDelayTimer() {
31
33
  if (this._timer) {
32
34
  clearTimeout(this._timer);
@@ -1,2 +1,3 @@
1
- $animation_duration-spin_wrapper-spin: 600ms; // 加载图标容器旋转一周时长
2
- $animation_duration-spin_customChildren-spin: 1600ms; // 自定义指示器时旋转一周时长
1
+ $animation_duration-spin_wrapper-spin: 1200ms; // 加载图标容器旋转一周时长
2
+ $animation_duration-spin_customChildren-spin: 1600ms; // 自定义指示器时旋转一周时长
3
+ $animation_duration-spin_wrapper-spin-circle: 2500ms; // 加载图标弹性运动一周时长
@@ -15,6 +15,20 @@
15
15
  transform: rotate(360deg);
16
16
  }
17
17
  }
18
+ @keyframes semi-animation-circle {
19
+ 0% {
20
+ stroke-dasharray: 1, 220;
21
+ stroke-dashoffset: 0;
22
+ }
23
+ 50% {
24
+ stroke-dasharray: 150, 220;
25
+ stroke-dashoffset: -68px;
26
+ }
27
+ 100% {
28
+ stroke-dasharray: 150, 220;
29
+ stroke-dashoffset: -218px;
30
+ }
31
+ }
18
32
  .semi-spin-wrapper {
19
33
  text-align: center;
20
34
  position: absolute;
@@ -24,12 +38,16 @@
24
38
  color: var(--semi-color-primary);
25
39
  }
26
40
  .semi-spin-wrapper > svg {
27
- animation: 600ms linear infinite semi-animation-rotate;
41
+ display: inline;
42
+ animation: 1200ms linear infinite semi-animation-rotate;
28
43
  animation-fill-mode: forwards;
29
44
  vertical-align: top;
30
45
  width: 20px;
31
46
  height: 20px;
32
47
  }
48
+ .semi-spin-wrapper > svg > circle {
49
+ animation: 2500ms ease-in-out infinite semi-animation-circle;
50
+ }
33
51
  .semi-spin-animate {
34
52
  display: inline-flex;
35
53
  animation: 1600ms linear infinite semi-animation-rotate;
@@ -18,6 +18,21 @@ $module: #{$prefix}-spin;
18
18
  }
19
19
  }
20
20
 
21
+ @keyframes #{$prefix}-animation-circle {
22
+ 0% {
23
+ stroke-dasharray: 1, 220;
24
+ stroke-dashoffset: 0;
25
+ }
26
+ 50% {
27
+ stroke-dasharray: 150, 220;
28
+ stroke-dashoffset: -68px;
29
+ }
30
+ 100% {
31
+ stroke-dasharray: 150, 220;
32
+ stroke-dashoffset: -218px;
33
+ }
34
+ }
35
+
21
36
  &-wrapper {
22
37
  text-align: center;
23
38
  position: absolute;
@@ -27,10 +42,15 @@ $module: #{$prefix}-spin;
27
42
  color: $color-spin-bg;
28
43
 
29
44
  & > svg {
45
+ display: inline;
30
46
  animation: $animation_duration-spin_wrapper-spin linear infinite #{$prefix}-animation-rotate;
31
47
  animation-fill-mode: forwards;
32
48
  vertical-align: top;
33
49
  @include size($width-spin_middle);
50
+
51
+ & > circle {
52
+ animation: $animation_duration-spin_wrapper-spin-circle ease-in-out infinite #{$prefix}-animation-circle;
53
+ }
34
54
  }
35
55
  }
36
56
 
@@ -227,6 +227,7 @@ export default class Tooltip extends BaseFoundation {
227
227
  this._adapter.unregisterClickOutsideHandler();
228
228
  this.unBindResizeEvent();
229
229
  this.unBindScrollEvent();
230
+ clearTimeout(this._timer);
230
231
  }
231
232
  _bindTriggerEvent(triggerEventSet) {
232
233
  this._adapter.registerTriggerEvent(triggerEventSet);
@@ -75,6 +75,6 @@ export declare function getValueOrKey(data: any): any;
75
75
  export declare function normalizeValue(value: any, withObject: boolean): any;
76
76
  export declare function updateKeys(keySet: Set<string> | string[], keyEntities: KeyEntities): string[];
77
77
  export declare function calcDisabledKeys(keyEntities: KeyEntities): Set<string>;
78
- export declare function calcDropRelativePosition(event: any, treeNode: any): 1 | -1 | 0;
78
+ export declare function calcDropRelativePosition(event: any, treeNode: any): 0 | 1 | -1;
79
79
  export declare function getDragNodesKeys(key: string, keyEntities: KeyEntities): string[];
80
80
  export declare function calcDropActualPosition(pos: string, relativeDropPos: any): any;
@@ -18,7 +18,7 @@ declare const strings: {
18
18
  DRAG_AREA_ILLEGAL: string;
19
19
  TRIGGER_AUTO: "auto";
20
20
  TRIGGER_CUSTOM: "custom";
21
- UPLOAD_TRIGGER: ("auto" | "custom")[];
21
+ UPLOAD_TRIGGER: ("custom" | "auto")[];
22
22
  VALIDATE_STATUS: readonly ["default", "error", "warning", "success"];
23
23
  PROMPT_POSITION: readonly ["left", "right", "bottom"];
24
24
  };
@@ -52,7 +52,9 @@ export default class SubNavFoundation<P = Record<string, any>, S = Record<string
52
52
  this._timer = null;
53
53
  }
54
54
 
55
- destroy() {} // eslint-disable-line
55
+ destroy() {
56
+ this.clearDelayTimer();
57
+ }
56
58
 
57
59
  clearDelayTimer() {
58
60
  if (this._timer) {
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@douyinfe/semi-foundation",
3
- "version": "2.38.2-alpha.1",
3
+ "version": "2.38.2-alpha.2-patch-modal",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "build:lib": "node ./scripts/compileLib.js",
7
7
  "prepublishOnly": "npm run build:lib"
8
8
  },
9
9
  "dependencies": {
10
- "@douyinfe/semi-animation": "2.38.2-alpha.1",
10
+ "@douyinfe/semi-animation": "2.38.2-alpha.2-patch-modal",
11
11
  "async-validator": "^3.5.0",
12
12
  "classnames": "^2.2.6",
13
13
  "date-fns": "^2.29.3",
@@ -23,7 +23,7 @@
23
23
  "*.scss",
24
24
  "*.css"
25
25
  ],
26
- "gitHead": "cb42a0565bba8660255835264d23dfcba6ff4aa3",
26
+ "gitHead": "0b01c3ee2c2e054522e1022f24f64fcc1b6ce6ac",
27
27
  "devDependencies": {
28
28
  "@babel/plugin-transform-runtime": "^7.15.8",
29
29
  "@babel/preset-env": "^7.15.8",
@@ -1,2 +1,3 @@
1
- $animation_duration-spin_wrapper-spin: 600ms; // 加载图标容器旋转一周时长
2
- $animation_duration-spin_customChildren-spin: 1600ms; // 自定义指示器时旋转一周时长
1
+ $animation_duration-spin_wrapper-spin: 1200ms; // 加载图标容器旋转一周时长
2
+ $animation_duration-spin_customChildren-spin: 1600ms; // 自定义指示器时旋转一周时长
3
+ $animation_duration-spin_wrapper-spin-circle: 2500ms; // 加载图标弹性运动一周时长
package/spin/spin.scss CHANGED
@@ -18,6 +18,21 @@ $module: #{$prefix}-spin;
18
18
  }
19
19
  }
20
20
 
21
+ @keyframes #{$prefix}-animation-circle {
22
+ 0% {
23
+ stroke-dasharray: 1, 220;
24
+ stroke-dashoffset: 0;
25
+ }
26
+ 50% {
27
+ stroke-dasharray: 150, 220;
28
+ stroke-dashoffset: -68px;
29
+ }
30
+ 100% {
31
+ stroke-dasharray: 150, 220;
32
+ stroke-dashoffset: -218px;
33
+ }
34
+ }
35
+
21
36
  &-wrapper {
22
37
  text-align: center;
23
38
  position: absolute;
@@ -27,10 +42,15 @@ $module: #{$prefix}-spin;
27
42
  color: $color-spin-bg;
28
43
 
29
44
  & > svg {
45
+ display: inline;
30
46
  animation: $animation_duration-spin_wrapper-spin linear infinite #{$prefix}-animation-rotate;
31
47
  animation-fill-mode: forwards;
32
48
  vertical-align: top;
33
49
  @include size($width-spin_middle);
50
+
51
+ & > circle {
52
+ animation: $animation_duration-spin_wrapper-spin-circle ease-in-out infinite #{$prefix}-animation-circle;
53
+ }
34
54
  }
35
55
  }
36
56
 
@@ -115,6 +115,7 @@ export default class Tooltip<P = Record<string, any>, S = Record<string, any>> e
115
115
  this._adapter.unregisterClickOutsideHandler();
116
116
  this.unBindResizeEvent();
117
117
  this.unBindScrollEvent();
118
+ clearTimeout(this._timer);
118
119
  }
119
120
 
120
121
  _bindTriggerEvent(triggerEventSet: Record<string, any>) {