@gitlab/ui 101.15.0 → 101.16.0

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.
package/dist/index.js CHANGED
@@ -16,6 +16,7 @@ export { default as GlDeprecatedLink, default as GlLink } from './components/bas
16
16
  export { default as GlIcon } from './components/base/icon/icon';
17
17
  export { default as GlAnimatedChevronRightDownIcon } from './components/base/animated_icon/animated_chevron_right_down_icon';
18
18
  export { default as GlAnimatedDuoChatIcon } from './components/base/animated_icon/animated_duo_chat_icon';
19
+ export { default as GlAnimatedLoaderIcon } from './components/base/animated_icon/animated_loader_icon';
19
20
  export { default as GlAnimatedNotificationIcon } from './components/base/animated_icon/animated_notifications_icon';
20
21
  export { default as GlAnimatedSidebarIcon } from './components/base/animated_icon/animated_sidebar_icon';
21
22
  export { default as GlAnimatedSmileIcon } from './components/base/animated_icon/animated_smile_icon';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gitlab/ui",
3
- "version": "101.15.0",
3
+ "version": "101.16.0",
4
4
  "description": "GitLab UI Components",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -103,6 +103,27 @@
103
103
  }
104
104
 
105
105
  /* * * * * * * * * * * * * * * * *
106
+ * animated_loader_icon.vue
107
+ * * * * * * * * * * * * * * * * */
108
+ .gl-animated-icon-on .gl-animated-loader-shape {
109
+ animation: gl-animated-loader-on 1.8s $gl-easing-default infinite;
110
+ }
111
+
112
+ .gl-animated-icon-on .gl-animated-loader-shape-1 {
113
+ animation-delay: 0.15s;
114
+ }
115
+
116
+ .gl-animated-icon-on .gl-animated-loader-shape-2 {
117
+ animation-delay: 0.3s;
118
+ }
119
+
120
+ @keyframes gl-animated-loader-on {
121
+ 30% { translate: 0 -30%; }
122
+ 60% { translate: 0 2%; }
123
+ 65% { translate: 0 0; }
124
+ }
125
+
126
+ /* * * * * * * * * * * * * * * * *
106
127
  * animated_notifications_icon.vue
107
128
  * * * * * * * * * * * * * * * * */
108
129
 
@@ -0,0 +1,44 @@
1
+ <script>
2
+ import GlBaseAnimatedIcon from './base_animated_icon.vue';
3
+
4
+ export default {
5
+ name: 'GlAnimatedLoaderIcon',
6
+ extends: GlBaseAnimatedIcon,
7
+ };
8
+ </script>
9
+ <template>
10
+ <svg
11
+ :class="iconStateClass"
12
+ :aria-label="ariaLabel"
13
+ width="16"
14
+ height="16"
15
+ viewBox="0 0 16 16"
16
+ fill="none"
17
+ xmlns="http://www.w3.org/2000/svg"
18
+ >
19
+ <circle
20
+ class="gl-animated-loader-shape gl-animated-loader-shape-1"
21
+ cx="8"
22
+ cy="8"
23
+ r="2"
24
+ fill="currentColor"
25
+ stroke-width="0"
26
+ />
27
+ <circle
28
+ class="gl-animated-loader-shape gl-animated-loader-shape-2"
29
+ cx="14"
30
+ cy="8"
31
+ r="2"
32
+ fill="currentColor"
33
+ stroke-width="0"
34
+ />
35
+ <circle
36
+ class="gl-animated-loader-shape gl-animated-loader-shape-3"
37
+ cx="2"
38
+ cy="8"
39
+ r="2"
40
+ fill="currentColor"
41
+ stroke-width="0"
42
+ />
43
+ </svg>
44
+ </template>
@@ -3,7 +3,8 @@
3
3
  @apply gl-text-gray-500;
4
4
 
5
5
  .transition {
6
- transition: width 0.5s ease;
6
+ @include gl-prefers-reduced-motion-transition;
7
+ transition: width 200ms $gl-easing-out-cubic;
7
8
  }
8
9
 
9
10
  .text-enter {
@@ -11,7 +12,8 @@
11
12
  }
12
13
 
13
14
  .text-enter-active {
14
- transition: opacity 1s ease-in; // we intentionally overlap this transition with .text-leave-active by 200ms
15
+ @include gl-prefers-reduced-motion-transition;
16
+ transition: opacity 400ms $gl-easing-out-cubic; // we intentionally overlap this transition with .text-leave-active by 200ms
15
17
  }
16
18
 
17
19
  .text-enter-to {
@@ -23,40 +25,11 @@
23
25
  }
24
26
 
25
27
  .text-leave-active {
26
- transition: opacity 0.7s linear;
28
+ @include gl-prefers-reduced-motion-transition;
29
+ transition: opacity 200ms $gl-easing-out-cubic;
27
30
  }
28
31
 
29
32
  .text-leave-to {
30
33
  @apply gl-opacity-0;
31
34
  }
32
-
33
- &__dot {
34
- display: inline-block;
35
- width: 0.3rem;
36
- height: 0.3rem;
37
- background-color: $gray-200;
38
- border-radius: 100%;
39
- animation: DuoChatLoading 1400ms ease-in-out infinite;
40
- animation-fill-mode: both;
41
- }
42
-
43
- &__dot--1 {
44
- animation-delay: -0.3s;
45
- }
46
-
47
- &__dot--2 {
48
- animation-delay: -0.15s;
49
- }
50
- }
51
-
52
- @keyframes DuoChatLoading {
53
- 0%,
54
- 80%,
55
- 100% {
56
- transform: scale(0);
57
- }
58
-
59
- 40% {
60
- transform: scale(1);
61
- }
62
35
  }
@@ -1,6 +1,7 @@
1
1
  <script>
2
2
  import { translate } from '../../../../../../utils/i18n';
3
3
  import GlSprintf from '../../../../../utilities/sprintf/sprintf.vue';
4
+ import GlAnimatedLoaderIcon from '../../../../../base/animated_icon/animated_loader_icon.vue';
4
5
  import { LOADING_TRANSITION_DURATION } from '../../constants';
5
6
 
6
7
  export const i18n = {
@@ -21,6 +22,7 @@ export default {
21
22
  name: 'GlDuoChatLoader',
22
23
  components: {
23
24
  GlSprintf,
25
+ GlAnimatedLoaderIcon,
24
26
  },
25
27
  i18n,
26
28
  props: {
@@ -70,12 +72,8 @@ export default {
70
72
  </script>
71
73
 
72
74
  <template>
73
- <div class="duo-chat-loader gl-mt-5 gl-flex gl-items-center">
74
- <div class="gl-mr-3 gl-flex">
75
- <div class="duo-chat-loader__dot duo-chat-loader__dot--1"></div>
76
- <div class="duo-chat-loader__dot duo-chat-loader__dot--2"></div>
77
- <div class="duo-chat-loader__dot duo-chat-loader__dot--3"></div>
78
- </div>
75
+ <div class="duo-chat-loader gl-mt-5 gl-flex gl-items-center gl-gap-3">
76
+ <gl-animated-loader-icon :is-on="true" />
79
77
  <div>
80
78
  <gl-sprintf :message="$options.i18n.LOADER_LOADING_MESSAGE">
81
79
  <template #tool>
@@ -1,7 +1,7 @@
1
1
  <script>
2
2
  import throttle from 'lodash/throttle';
3
3
  import GlIcon from '../../../../../base/icon/icon.vue';
4
- import GlLoadingIcon from '../../../../../base/loading_icon/loading_icon.vue';
4
+ import GlAnimatedLoaderIcon from '../../../../../base/animated_icon/animated_loader_icon.vue';
5
5
  import { GlTooltipDirective } from '../../../../../../directives/tooltip';
6
6
  import GlDuoChatContextItemSelections from '../duo_chat_context/duo_chat_context_item_selections/duo_chat_context_item_selections.vue';
7
7
  import GlDuoUserFeedback from '../../../user_feedback/user_feedback.vue';
@@ -59,7 +59,7 @@ export default {
59
59
  GlFormGroup,
60
60
  GlFormTextarea,
61
61
  GlIcon,
62
- GlLoadingIcon,
62
+ GlAnimatedLoaderIcon,
63
63
  },
64
64
  directives: {
65
65
  SafeHtml,
@@ -315,7 +315,7 @@ export default {
315
315
  <documentation-sources v-if="sources" :sources="sources" />
316
316
 
317
317
  <div class="duo-chat-message-feedback gl-mt-4 gl-flex gl-items-end">
318
- <gl-loading-icon v-if="isChunkAndNotCancelled" class="gl-pt-4" variant="dots" inline />
318
+ <gl-animated-loader-icon v-if="isChunkAndNotCancelled" :is-on="true" />
319
319
  <gl-duo-user-feedback
320
320
  v-if="isNotChunkOrCancelled"
321
321
  :feedback-received="hasFeedback"
package/src/index.js CHANGED
@@ -23,6 +23,7 @@ export { default as GlLink, default as GlDeprecatedLink } from './components/bas
23
23
  export { default as GlIcon } from './components/base/icon/icon.vue';
24
24
  export { default as GlAnimatedChevronRightDownIcon } from './components/base/animated_icon/animated_chevron_right_down_icon.vue';
25
25
  export { default as GlAnimatedDuoChatIcon } from './components/base/animated_icon/animated_duo_chat_icon.vue';
26
+ export { default as GlAnimatedLoaderIcon } from './components/base/animated_icon/animated_loader_icon.vue';
26
27
  export { default as GlAnimatedNotificationIcon } from './components/base/animated_icon/animated_notifications_icon.vue';
27
28
  export { default as GlAnimatedSidebarIcon } from './components/base/animated_icon/animated_sidebar_icon.vue';
28
29
  export { default as GlAnimatedSmileIcon } from './components/base/animated_icon/animated_smile_icon.vue';