@gitlab/ui 92.3.1 → 92.5.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.
Files changed (36) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/components/base/animated_icon/animated_chevron_right_down_icon.js +45 -0
  3. package/dist/components/base/animated_icon/animated_duo_chat_icon.js +45 -0
  4. package/dist/components/base/animated_icon/animated_notifications_icon.js +45 -0
  5. package/dist/components/base/animated_icon/animated_sidebar_icon.js +45 -0
  6. package/dist/components/base/animated_icon/animated_smile_icon.js +45 -0
  7. package/dist/components/base/animated_icon/animated_sort_icon.js +45 -0
  8. package/dist/components/base/animated_icon/animated_star_icon.js +45 -0
  9. package/dist/components/base/animated_icon/animated_todo_icon.js +45 -0
  10. package/dist/components/base/animated_icon/animated_upload_icon.js +45 -0
  11. package/dist/components/base/animated_icon/base_animated_icon.js +64 -0
  12. package/dist/components/experimental/duo/workflow/components/duo_workflow_panel/duo_workflow_panel.js +9 -11
  13. package/dist/index.css +2 -2
  14. package/dist/index.css.map +1 -1
  15. package/dist/tailwind.css +1 -1
  16. package/dist/tailwind.css.map +1 -1
  17. package/dist/utility_classes.css +1 -1
  18. package/dist/utility_classes.css.map +1 -1
  19. package/package.json +5 -5
  20. package/src/components/base/animated_icon/animated_chevron_right_down_icon.vue +28 -0
  21. package/src/components/base/animated_icon/animated_duo_chat_icon.vue +39 -0
  22. package/src/components/base/animated_icon/animated_icon.md +4 -0
  23. package/src/components/base/animated_icon/animated_icon.scss +456 -0
  24. package/src/components/base/animated_icon/animated_notifications_icon.vue +49 -0
  25. package/src/components/base/animated_icon/animated_sidebar_icon.vue +35 -0
  26. package/src/components/base/animated_icon/animated_smile_icon.vue +37 -0
  27. package/src/components/base/animated_icon/animated_sort_icon.vue +84 -0
  28. package/src/components/base/animated_icon/animated_star_icon.vue +27 -0
  29. package/src/components/base/animated_icon/animated_todo_icon.vue +49 -0
  30. package/src/components/base/animated_icon/animated_upload_icon.vue +41 -0
  31. package/src/components/base/animated_icon/base_animated_icon.vue +39 -0
  32. package/src/components/experimental/duo/workflow/components/duo_workflow_panel/duo_workflow_panel.md +7 -3
  33. package/src/components/experimental/duo/workflow/components/duo_workflow_panel/duo_workflow_panel.vue +9 -9
  34. package/src/scss/components.scss +1 -0
  35. package/src/scss/utilities.scss +18 -0
  36. package/src/scss/utility-mixins/animation.scss +9 -0
@@ -0,0 +1,84 @@
1
+ <script>
2
+ import GlBaseAnimatedIcon from './base_animated_icon.vue';
3
+
4
+ export default {
5
+ name: 'GlAnimatedSortIcon',
6
+ extends: GlBaseAnimatedIcon,
7
+ };
8
+ </script>
9
+ <template>
10
+ <svg
11
+ :class="iconStateClass"
12
+ class="gl-animated-sort-icon"
13
+ :aria-label="ariaLabel"
14
+ width="16"
15
+ height="16"
16
+ viewBox="0 0 16 16"
17
+ fill="none"
18
+ xmlns="http://www.w3.org/2000/svg"
19
+ >
20
+ <path
21
+ class="gl-animated-sort-arrow-left"
22
+ d="M3 1.06065L0.75 3.31065"
23
+ stroke="currentColor"
24
+ stroke-width="1.5"
25
+ stroke-linecap="round"
26
+ />
27
+ <path
28
+ class="gl-animated-sort-arrow-right"
29
+ d="M5.25 3.31065L3 1.06065"
30
+ stroke="currentColor"
31
+ stroke-width="1.5"
32
+ stroke-linecap="round"
33
+ />
34
+ <path
35
+ class="gl-animated-sort-long-line-on"
36
+ d="M8.75 2.75L15.25 2.75"
37
+ stroke="currentColor"
38
+ stroke-width="1.5"
39
+ stroke-linecap="round"
40
+ />
41
+ <path
42
+ class="gl-animated-sort-medium-line-on"
43
+ d="M8.75 6L13.25 6"
44
+ stroke="currentColor"
45
+ stroke-width="1.5"
46
+ stroke-linecap="round"
47
+ />
48
+ <path
49
+ class="gl-animated-sort-short-line-on"
50
+ d="M8.75 9.25L10.25 9.25"
51
+ stroke="currentColor"
52
+ stroke-width="1.5"
53
+ stroke-linecap="round"
54
+ />
55
+ <path
56
+ class="gl-animated-sort-long-line-off"
57
+ d="M8.75 13.25L15.25 13.25"
58
+ stroke="currentColor"
59
+ stroke-width="1.5"
60
+ stroke-linecap="round"
61
+ />
62
+ <path
63
+ class="gl-animated-sort-medium-line-off"
64
+ d="M8.75 10L13.25 10"
65
+ stroke="currentColor"
66
+ stroke-width="1.5"
67
+ stroke-linecap="round"
68
+ />
69
+ <path
70
+ class="gl-animated-sort-short-line-off"
71
+ d="M8.75 6.75L10.25 6.75"
72
+ stroke="currentColor"
73
+ stroke-width="1.5"
74
+ stroke-linecap="round"
75
+ />
76
+ <path
77
+ class="gl-animated-sort-line"
78
+ d="M3 13.2506L3 4.0006"
79
+ stroke="currentColor"
80
+ stroke-width="1.5"
81
+ stroke-linecap="round"
82
+ />
83
+ </svg>
84
+ </template>
@@ -0,0 +1,27 @@
1
+ <script>
2
+ import GlBaseAnimatedIcon from './base_animated_icon.vue';
3
+
4
+ export default {
5
+ name: 'GlAnimatedStarIcon',
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
+ <path
20
+ class="gl-animated-star-shape"
21
+ d="M6.56177 5.79259L8 2.33467L9.43822 5.79259C9.58223 6.13883 9.90785 6.37539 10.2816 6.40536L14.0147 6.70464L11.1705 9.14103C10.8857 9.38498 10.7613 9.76775 10.8484 10.1325L11.7173 13.7754L8.52125 11.8232C8.20124 11.6278 7.79876 11.6278 7.47875 11.8232L4.28269 13.7754L5.15165 10.1325C5.23865 9.76776 5.11428 9.38498 4.82949 9.14103L1.98526 6.70464L5.71837 6.40536C6.09216 6.37539 6.41777 6.13882 6.56177 5.79259Z"
22
+ fill="transparent"
23
+ stroke="currentColor"
24
+ stroke-width="1.5"
25
+ />
26
+ </svg>
27
+ </template>
@@ -0,0 +1,49 @@
1
+ <script>
2
+ import GlBaseAnimatedIcon from './base_animated_icon.vue';
3
+
4
+ export default {
5
+ name: 'GlAnimatedTodoIcon',
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
+ <path
20
+ class="gl-animated-todo-box"
21
+ d="M14.25 6.75L14.25 13C14.25 13.6904 13.6904 14.25 13 14.25L3 14.25C2.30964 14.25 1.75 13.6904 1.75 13L1.75 3C1.75 2.30964 2.30964 1.75 3 1.75L13.25 1.75"
22
+ stroke="currentColor"
23
+ stroke-width="1.5"
24
+ stroke-linecap="round"
25
+ />
26
+ <path
27
+ class="gl-animated-todo-plus-line"
28
+ d="M10.75 3L15.25 3"
29
+ stroke="currentColor"
30
+ stroke-width="1.5"
31
+ stroke-linecap="round"
32
+ />
33
+ <path
34
+ class="gl-animated-todo-plus-line"
35
+ d="M13 5.25L13 0.75"
36
+ stroke="currentColor"
37
+ stroke-width="1.5"
38
+ stroke-linecap="round"
39
+ />
40
+ <path
41
+ class="gl-animated-todo-check"
42
+ d="M6.75 7.76299L9.15312 10.2469L15.25 4.15"
43
+ stroke="currentColor"
44
+ stroke-width="1.5"
45
+ stroke-linecap="round"
46
+ stroke-linejoin="round"
47
+ />
48
+ </svg>
49
+ </template>
@@ -0,0 +1,41 @@
1
+ <script>
2
+ import GlBaseAnimatedIcon from './base_animated_icon.vue';
3
+
4
+ export default {
5
+ name: 'GlAnimatedUploadIcon',
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
+ <path
20
+ class="gl-animated-upload-base"
21
+ d="M14.25 9.75V13C14.25 13.6904 13.6904 14.25 13 14.25L3 14.25C2.30964 14.25 1.75 13.6904 1.75 13L1.75 9.75"
22
+ stroke="currentColor"
23
+ stroke-width="1.5"
24
+ stroke-linecap="round"
25
+ />
26
+ <path
27
+ class="gl-animated-upload-line"
28
+ d="M8 11.25V2.5"
29
+ stroke="currentColor"
30
+ stroke-width="1.5"
31
+ stroke-linecap="round"
32
+ />
33
+ <path
34
+ class="gl-animated-upload-arrow"
35
+ d="M11.25 5.31066L8 2.06066L4.75 5.31066"
36
+ stroke="currentColor"
37
+ stroke-width="1.5"
38
+ stroke-linecap="round"
39
+ />
40
+ </svg>
41
+ </template>
@@ -0,0 +1,39 @@
1
+ <script>
2
+ export default {
3
+ name: 'GlBaseAnimatedIcon',
4
+ props: {
5
+ /**
6
+ * Accessible icon name used by screen readers and other assistive technologies.
7
+ * Provide when icon is not merely decorative
8
+ */
9
+ ariaLabel: {
10
+ type: String,
11
+ required: false,
12
+ default: undefined,
13
+ },
14
+ isOn: {
15
+ type: Boolean,
16
+ required: false,
17
+ default: false,
18
+ },
19
+ },
20
+ computed: {
21
+ iconStateClass() {
22
+ return this.isOn
23
+ ? 'gl-animated-icon gl-animated-icon-on'
24
+ : 'gl-animated-icon gl-animated-icon-off';
25
+ },
26
+ },
27
+ };
28
+ </script>
29
+ <template>
30
+ <svg
31
+ :class="iconStateClass"
32
+ :aria-label="ariaLabel"
33
+ width="16"
34
+ height="16"
35
+ viewBox="0 0 16 16"
36
+ fill="none"
37
+ xmlns="http://www.w3.org/2000/svg"
38
+ />
39
+ </template>
@@ -5,13 +5,17 @@ and WebUI.
5
5
 
6
6
  To use this component, import it and fill out the available slots:
7
7
 
8
- * `title`: the main title for the panel
9
- * `subtitle`: the small text adjacent to the title
10
- * `content`: the content of the panel, hidden away when the collapse is toggled
8
+ - `title`: the main title for the panel
9
+ - `subtitle`: the small text adjacent to the title
10
+ - `content`: the content of the panel, hidden away when the collapse is toggled
11
11
 
12
12
  Also provide an icon via the `headerIcon` prop. This icon is displayed adjacent
13
13
  to the title.
14
14
 
15
+ You can pass `expanded` prop set to `false` if you need a section to be
16
+ collapsed by default. You can also listen to `toggle-panel` event to know
17
+ when the expanded state changed.
18
+
15
19
  Translations for the title of the single button can be provided either via the
16
20
  props `expandButtonTitle` and `collapseTitleButton` or via the translation
17
21
  configuration:
@@ -34,9 +34,14 @@ export default {
34
34
  required: false,
35
35
  default: translate('GlDuoWorkflowPanel.collapseButtonTitle', 'Collapse'),
36
36
  },
37
- },
38
- data() {
39
- return { expanded: true };
37
+ /**
38
+ * Whether the panel is expanded or not
39
+ */
40
+ expanded: {
41
+ type: Boolean,
42
+ required: false,
43
+ default: true,
44
+ },
40
45
  },
41
46
  computed: {
42
47
  buttonIcon() {
@@ -46,11 +51,6 @@ export default {
46
51
  return this.expanded ? this.collapsePanelButtonTitle : this.expandPanelButtonTitle;
47
52
  },
48
53
  },
49
- methods: {
50
- toggleExpanded() {
51
- this.expanded = !this.expanded;
52
- },
53
- },
54
54
  };
55
55
  </script>
56
56
  <template>
@@ -74,7 +74,7 @@ export default {
74
74
  :icon="buttonIcon"
75
75
  :title="buttonTitle"
76
76
  :aria-label="buttonTitle"
77
- @click="toggleExpanded"
77
+ @click="$emit('toggle-panel')"
78
78
  />
79
79
  </div>
80
80
  <gl-collapse :visible="expanded">
@@ -19,6 +19,7 @@
19
19
  @import '../components/base/avatar_labeled/avatar_labeled';
20
20
  @import '../components/base/avatar_link/avatar_link';
21
21
  @import '../components/base/avatars_inline/avatars_inline';
22
+ @import '../components/base/animated_icon/animated_icon';
22
23
  @import '../components/base/badge/badge';
23
24
  @import '../components/base/breadcrumb/breadcrumb';
24
25
  @import '../components/base/banner/banner';
@@ -76,12 +76,30 @@ $gl-animate-skeleton-loader-max-width: 64 * $grid-size;
76
76
  .gl-prefers-reduced-motion-transition {
77
77
  @media (prefers-reduced-motion) {
78
78
  transition-duration: .01ms !important;
79
+ transition-delay: 0ms !important;
79
80
  }
80
81
  }
81
82
 
82
83
  .gl-prefers-reduced-motion-transition\! {
83
84
  @media (prefers-reduced-motion) {
84
85
  transition-duration: .01ms !important;
86
+ transition-delay: 0ms !important;
87
+ }
88
+ }
89
+
90
+ .gl-prefers-reduced-motion-animation {
91
+ @media (prefers-reduced-motion) {
92
+ animation-duration: .01ms !important;
93
+ animation-iteration-count: 1 !important;
94
+ animation-delay: 0ms !important;
95
+ }
96
+ }
97
+
98
+ .gl-prefers-reduced-motion-animation\! {
99
+ @media (prefers-reduced-motion) {
100
+ animation-duration: .01ms !important;
101
+ animation-iteration-count: 1 !important;
102
+ animation-delay: 0ms !important;
85
103
  }
86
104
  }
87
105
 
@@ -1,6 +1,15 @@
1
1
  @mixin gl-prefers-reduced-motion-transition {
2
2
  @media (prefers-reduced-motion) {
3
3
  transition-duration: .01ms !important;
4
+ transition-delay: 0ms !important;
5
+ }
6
+ }
7
+
8
+ @mixin gl-prefers-reduced-motion-animation {
9
+ @media (prefers-reduced-motion) {
10
+ animation-duration: .01ms !important;
11
+ animation-iteration-count: 1 !important;
12
+ animation-delay: 0ms !important;
4
13
  }
5
14
  }
6
15