@gitlab/ui 128.13.1 → 128.13.3
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/components/base/toast/toast.js +26 -24
- package/dist/components/base/toggle/toggle.js +9 -8
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/tokens/build/js/tokens.dark.js +2 -2
- package/dist/tokens/build/js/tokens.js +2 -2
- package/dist/vendor/bootstrap-vue/src/components/toast/helpers/bv-toast.js +17 -3
- package/dist/vendor/bootstrap-vue/src/components/toast/toast.js +6 -1
- package/package.json +4 -4
- package/src/components/base/alert/alert.scss +11 -6
- package/src/components/base/animated_icon/animated_icon.scss +31 -20
- package/src/components/base/avatar/avatar.scss +8 -9
- package/src/components/base/avatars_inline/avatars_inline.scss +12 -4
- package/src/components/base/breadcrumb/breadcrumb.scss +2 -2
- package/src/components/base/button/button.scss +16 -14
- package/src/components/base/button_group/button_group.scss +9 -9
- package/src/components/base/datepicker/datepicker.scss +6 -6
- package/src/components/base/drawer/drawer.scss +2 -2
- package/src/components/base/dropdown/dropdown.scss +4 -4
- package/src/components/base/dropdown/dropdown_divider.scss +1 -1
- package/src/components/base/form/form_checkbox/form_checkbox.scss +12 -12
- package/src/components/base/form/form_combobox/form_combobox.scss +3 -2
- package/src/components/base/form/form_input/form_input.scss +3 -1
- package/src/components/base/form/form_select/form_select.scss +2 -2
- package/src/components/base/label/label.scss +5 -2
- package/src/components/base/link/link.scss +1 -1
- package/src/components/base/loading_icon/loading_icon.scss +1 -1
- package/src/components/base/markdown/markdown.scss +1 -1
- package/src/components/base/new_dropdowns/dropdown.scss +15 -3
- package/src/components/base/new_dropdowns/dropdown_item.scss +3 -2
- package/src/components/base/pagination/pagination.scss +5 -4
- package/src/components/base/path/path.scss +8 -3
- package/src/components/base/progress_bar/progress_bar.scss +2 -2
- package/src/components/base/table/table.scss +4 -4
- package/src/components/base/tabs/tabs/tabs.scss +7 -6
- package/src/components/base/toast/toast.js +31 -29
- package/src/components/base/toast/toast.scss +2 -2
- package/src/components/base/toggle/toggle.vue +45 -46
- package/src/components/charts/legend/legend.scss +12 -8
- package/src/components/charts/single_stat/single_stat.scss +2 -2
- package/src/components/dashboards/dashboard_layout/grid_layout/grid_layout.scss +1 -1
- package/src/components/regions/empty_state/empty_state.scss +1 -1
- package/src/components/utilities/truncate/truncate.scss +1 -1
- package/src/scss/bootstrap.scss +34 -34
- package/src/scss/bootstrap_vue.scss +10 -10
- package/src/scss/components.scss +77 -77
- package/src/scss/fonts.scss +10 -10
- package/src/scss/functions.scss +6 -6
- package/src/scss/gitlab_ui.scss +10 -10
- package/src/scss/mixins.scss +23 -23
- package/src/scss/storybook.scss +14 -15
- package/src/scss/tokens.scss +2 -2
- package/src/scss/typescale/_index.scss +1 -1
- package/src/scss/typescale/typescale_demo.scss +4 -4
- package/src/scss/typography.scss +16 -6
- package/src/scss/variables.scss +29 -14
- package/src/tokens/build/css/tokens.css +2 -2
- package/src/tokens/build/css/tokens.dark.css +2 -2
- package/src/tokens/build/docs/tokens-tailwind-docs.dark.json +4 -0
- package/src/tokens/build/docs/tokens-tailwind-docs.json +4 -0
- package/src/tokens/build/figma/constants.dark.json +2 -2
- package/src/tokens/build/figma/constants.json +2 -2
- package/src/tokens/build/js/tokens.dark.js +2 -0
- package/src/tokens/build/js/tokens.js +2 -0
- package/src/tokens/build/json/tokens.dark.json +4 -0
- package/src/tokens/build/json/tokens.json +4 -0
- package/src/tokens/build/scss/_tokens.dark.scss +2 -2
- package/src/tokens/build/scss/_tokens.scss +2 -2
- package/src/tokens/constant/font.tokens.json +2 -0
- package/src/vendor/bootstrap-vue/src/components/toast/helpers/bv-toast.js +19 -3
- package/src/vendor/bootstrap-vue/src/components/toast/toast.js +6 -1
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
border-color: var(--gl-control-border-color-focus);
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
.custom-control-input:checked
|
|
83
|
+
.custom-control-input:checked ~ .custom-control-label::before {
|
|
84
84
|
background-color: var(--gl-control-background-color-selected-default);
|
|
85
85
|
border-color: var(--gl-control-border-color-selected-default);
|
|
86
86
|
|
|
@@ -90,9 +90,9 @@
|
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
.custom-control-input[type=
|
|
94
|
-
.custom-control-input[type=
|
|
95
|
-
.custom-control-input[type=
|
|
93
|
+
.custom-control-input[type="checkbox"]:checked ~ .custom-control-label,
|
|
94
|
+
.custom-control-input[type="checkbox"]:indeterminate ~ .custom-control-label,
|
|
95
|
+
.custom-control-input[type="radio"]:checked ~ .custom-control-label {
|
|
96
96
|
&::after {
|
|
97
97
|
background: 50% 50% no-repeat;
|
|
98
98
|
background-color: var(--gl-control-indicator-color-selected);
|
|
@@ -101,24 +101,24 @@
|
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
.custom-control-input[type=
|
|
104
|
+
.custom-control-input[type="checkbox"]:checked ~ .custom-control-label::after {
|
|
105
105
|
background-color: var(--gl-control-indicator-color-selected);
|
|
106
|
-
mask-image: url(
|
|
106
|
+
mask-image: url("#{$gl-icon-check}");
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
.custom-control-input[type=
|
|
109
|
+
.custom-control-input[type="checkbox"]:indeterminate ~ .custom-control-label::after {
|
|
110
110
|
background-color: var(--gl-control-indicator-color-selected);
|
|
111
|
-
mask-image: url(
|
|
111
|
+
mask-image: url("#{$gl-icon-indeterminate}");
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
-
.custom-control-input[type=
|
|
114
|
+
.custom-control-input[type="radio"]:checked ~ .custom-control-label::after {
|
|
115
115
|
background-color: var(--gl-control-indicator-color-selected);
|
|
116
|
-
mask-image: url(
|
|
116
|
+
mask-image: url("#{$gl-icon-radio}");
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
.custom-control-input:not(:disabled):checked ~ .custom-control-label:hover,
|
|
120
120
|
.custom-control-input:not(:disabled):hover:checked ~ .custom-control-label {
|
|
121
|
-
&::before
|
|
121
|
+
&::before {
|
|
122
122
|
background-color: var(--gl-control-background-color-selected-hover);
|
|
123
123
|
border-color: var(--gl-control-border-color-selected-hover);
|
|
124
124
|
}
|
|
@@ -185,7 +185,7 @@
|
|
|
185
185
|
}
|
|
186
186
|
|
|
187
187
|
.custom-control-input:checked:disabled ~ .custom-control-label,
|
|
188
|
-
.custom-control-input[type=
|
|
188
|
+
.custom-control-input[type="checkbox"]:indeterminate:disabled ~ .custom-control-label {
|
|
189
189
|
&::before {
|
|
190
190
|
background-color: var(--gl-control-background-color-disabled);
|
|
191
191
|
border-color: var(--gl-control-border-color-disabled);
|
|
@@ -34,8 +34,9 @@
|
|
|
34
34
|
|
|
35
35
|
// Target the actual Bootstrap dropdown item element
|
|
36
36
|
.dropdown-item {
|
|
37
|
-
transition:
|
|
38
|
-
|
|
37
|
+
transition:
|
|
38
|
+
background-color $gl-transition-duration-fast $gl-easing-out-cubic,
|
|
39
|
+
box-shadow $gl-transition-duration-medium $gl-easing-out-cubic;
|
|
39
40
|
@apply gl-rounded-default;
|
|
40
41
|
@apply gl-border-0;
|
|
41
42
|
@apply gl-w-full;
|
|
@@ -22,7 +22,9 @@
|
|
|
22
22
|
box-shadow: inset 0 0 0 $gl-border-size-1 var(--gl-control-border-color-hover);
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
&:not(.gl-form-input-not-readonly):not(:disabled):not(.form-control-plaintext):not(
|
|
25
|
+
&:not(.gl-form-input-not-readonly):not(:disabled):not(.form-control-plaintext):not(
|
|
26
|
+
[type="color"]
|
|
27
|
+
):read-only {
|
|
26
28
|
background: var(--gl-control-background-color-readonly);
|
|
27
29
|
box-shadow: none;
|
|
28
30
|
}
|
|
@@ -72,7 +72,7 @@ See: https://gitlab.com/gitlab-org/gitlab/issues/30055
|
|
|
72
72
|
&::after {
|
|
73
73
|
content: "";
|
|
74
74
|
background-color: var(--gl-icon-color-default);
|
|
75
|
-
mask-image: url(
|
|
75
|
+
mask-image: url("#{$gl-icon-select-chevron-down}");
|
|
76
76
|
mask-repeat: no-repeat;
|
|
77
77
|
mask-position: center center;
|
|
78
78
|
pointer-events: none;
|
|
@@ -88,7 +88,7 @@ See: https://gitlab.com/gitlab-org/gitlab/issues/30055
|
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
-
&:has(
|
|
91
|
+
&:has(> .gl-form-select:disabled) {
|
|
92
92
|
&::after {
|
|
93
93
|
background-color: var(--gl-icon-color-disabled);
|
|
94
94
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
$label-max-width: 100%;
|
|
2
|
-
$label-close-button:
|
|
2
|
+
$label-close-button: ".gl-label-close.gl-button";
|
|
3
3
|
$label-padding-horizontal: 0.75 * $grid-size;
|
|
4
4
|
$label-padding-horizontal-half: 0.375 * $grid-size;
|
|
5
5
|
|
|
@@ -24,7 +24,10 @@ $label-padding-horizontal-half: 0.375 * $grid-size;
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
&:has(*:first-child:focus) {
|
|
27
|
-
@include gl-focus(
|
|
27
|
+
@include gl-focus(
|
|
28
|
+
$color: var(--label-background-color, var(--gl-background-color-default)),
|
|
29
|
+
$important: true
|
|
30
|
+
);
|
|
28
31
|
}
|
|
29
32
|
|
|
30
33
|
.gl-label-link {
|
|
@@ -184,12 +184,20 @@
|
|
|
184
184
|
&.top-scrim-light {
|
|
185
185
|
height: 2.25rem;
|
|
186
186
|
border-radius: 0.375rem 0.375rem 0 0;
|
|
187
|
-
background: linear-gradient(
|
|
187
|
+
background: linear-gradient(
|
|
188
|
+
180deg,
|
|
189
|
+
var(--gl-dropdown-background-color) 0%,
|
|
190
|
+
var(--gl-color-alpha-0)
|
|
191
|
+
);
|
|
188
192
|
}
|
|
189
193
|
|
|
190
194
|
&.top-scrim-dark {
|
|
191
195
|
height: 0.25rem;
|
|
192
|
-
background: linear-gradient(
|
|
196
|
+
background: linear-gradient(
|
|
197
|
+
180deg,
|
|
198
|
+
var(--gl-shadow-color-default) 0%,
|
|
199
|
+
var(--gl-color-alpha-0) 100%
|
|
200
|
+
);
|
|
193
201
|
}
|
|
194
202
|
}
|
|
195
203
|
}
|
|
@@ -203,7 +211,11 @@
|
|
|
203
211
|
position: relative;
|
|
204
212
|
top: calc(-2.25rem + #{$dropdown-content-padding});
|
|
205
213
|
border-radius: 0 0 0.375rem 0.375rem;
|
|
206
|
-
background: linear-gradient(
|
|
214
|
+
background: linear-gradient(
|
|
215
|
+
180deg,
|
|
216
|
+
var(--gl-color-alpha-0) 0%,
|
|
217
|
+
var(--gl-dropdown-background-color)
|
|
218
|
+
);
|
|
207
219
|
}
|
|
208
220
|
}
|
|
209
221
|
|
|
@@ -101,8 +101,9 @@
|
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
.gl-new-dropdown-item-content {
|
|
104
|
-
transition:
|
|
105
|
-
|
|
104
|
+
transition:
|
|
105
|
+
background-color $gl-transition-duration-fast $gl-easing-out-cubic,
|
|
106
|
+
box-shadow $gl-transition-duration-medium $gl-easing-out-cubic;
|
|
106
107
|
@apply gl-rounded-default;
|
|
107
108
|
@apply gl-border-0;
|
|
108
109
|
@apply gl-w-full;
|
|
@@ -16,10 +16,11 @@
|
|
|
16
16
|
|
|
17
17
|
.gl-pagination-item {
|
|
18
18
|
border-radius: var(--gl-action-border-radius);
|
|
19
|
-
transition:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
transition:
|
|
20
|
+
color $gl-transition-duration-medium $gl-easing-out-cubic,
|
|
21
|
+
background-color $gl-transition-duration-medium $gl-easing-out-cubic,
|
|
22
|
+
border-color $gl-transition-duration-medium $gl-easing-out-cubic,
|
|
23
|
+
box-shadow $gl-transition-duration-medium $gl-easing-out-cubic;
|
|
23
24
|
@apply gl-flex;
|
|
24
25
|
@apply gl-justify-center;
|
|
25
26
|
@apply gl-p-3;
|
|
@@ -12,7 +12,7 @@ $path-chevron-right-margin: px-to-rem(14px);
|
|
|
12
12
|
// Mixins
|
|
13
13
|
@mixin gl-path-chevron {
|
|
14
14
|
@apply gl-bg-inherit;
|
|
15
|
-
content:
|
|
15
|
+
content: "";
|
|
16
16
|
position: absolute;
|
|
17
17
|
top: $path-chevron-top;
|
|
18
18
|
right: $path-chevron-right;
|
|
@@ -79,7 +79,9 @@ $path-chevron-right-margin: px-to-rem(14px);
|
|
|
79
79
|
display: none;
|
|
80
80
|
z-index: 2;
|
|
81
81
|
right: calc(-0.75rem + 1px);
|
|
82
|
-
box-shadow:
|
|
82
|
+
box-shadow:
|
|
83
|
+
0 0 0 1px var(--gl-focus-ring-inner-color),
|
|
84
|
+
0.5px -0.5px 0 2.5px var(--gl-focus-ring-outer-color);
|
|
83
85
|
clip-path: polygon(0% 0%, 0% -30%, 160% 0%, 75% 130%, 100% 100%);
|
|
84
86
|
transform: rotate(45deg) skew(14deg, 14deg) scale(0.99);
|
|
85
87
|
}
|
|
@@ -103,7 +105,10 @@ $path-chevron-right-margin: px-to-rem(14px);
|
|
|
103
105
|
&:focus,
|
|
104
106
|
&:focus:active {
|
|
105
107
|
// Custom focus to account for path shape
|
|
106
|
-
box-shadow:
|
|
108
|
+
box-shadow:
|
|
109
|
+
5px -3px 0 -2px var(--gl-focus-ring-inner-color),
|
|
110
|
+
5px 3px 0 -2px var(--gl-focus-ring-inner-color),
|
|
111
|
+
0 0 0 1px var(--gl-focus-ring-inner-color),
|
|
107
112
|
0 0 0 3px var(--gl-focus-ring-outer-color);
|
|
108
113
|
outline: none;
|
|
109
114
|
border-top-right-radius: 1px;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.gl-progress-bar {
|
|
2
2
|
background-color: var(--gl-progress-bar-track-color);
|
|
3
3
|
}
|
|
4
|
-
|
|
4
|
+
|
|
5
5
|
.gl-progress {
|
|
6
6
|
@apply gl-flex-col;
|
|
7
7
|
@apply gl-justify-center;
|
|
@@ -27,4 +27,4 @@
|
|
|
27
27
|
|
|
28
28
|
.gl-progress-bar-danger {
|
|
29
29
|
background-color: var(--gl-progress-bar-indicator-color-danger);
|
|
30
|
-
}
|
|
30
|
+
}
|
|
@@ -24,7 +24,7 @@ table.gl-table {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
thead tr th {
|
|
27
|
-
@apply gl-
|
|
27
|
+
@apply gl-font-bold gl-text-heading;
|
|
28
28
|
|
|
29
29
|
.gl-table-th-sort-icon-wrapper {
|
|
30
30
|
@apply gl-ml-2;
|
|
@@ -38,7 +38,7 @@ table.gl-table {
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
[name=
|
|
41
|
+
[name="sort-icon"] {
|
|
42
42
|
user-select: none;
|
|
43
43
|
color: var(--gl-table-sorting-icon-color);
|
|
44
44
|
}
|
|
@@ -68,7 +68,7 @@ table.gl-table {
|
|
|
68
68
|
@mixin gl-tmp-stacked-override {
|
|
69
69
|
tbody > tr {
|
|
70
70
|
&::after {
|
|
71
|
-
content:
|
|
71
|
+
content: "";
|
|
72
72
|
@apply gl-h-6;
|
|
73
73
|
@apply gl-w-full;
|
|
74
74
|
@apply gl-block;
|
|
@@ -123,7 +123,7 @@ table.gl-table {
|
|
|
123
123
|
thead th:hover {
|
|
124
124
|
background-color: transparent !important;
|
|
125
125
|
|
|
126
|
-
[name=
|
|
126
|
+
[name="sort-icon"] {
|
|
127
127
|
display: flex !important;
|
|
128
128
|
}
|
|
129
129
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
.gl-tabs-wrapper {
|
|
2
|
-
@apply gl-relative gl-flex gl-flex-wrap
|
|
2
|
+
@apply gl-border-b gl-relative gl-flex gl-flex-wrap;
|
|
3
3
|
}
|
|
4
4
|
|
|
5
5
|
.gl-tabs-nav {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
border-radius $gl-transition-duration-fast $gl-easing-out-cubic;
|
|
24
24
|
|
|
25
25
|
&::before {
|
|
26
|
-
content:
|
|
26
|
+
content: "";
|
|
27
27
|
position: absolute;
|
|
28
28
|
border-bottom: $gl-border-size-2 solid transparent;
|
|
29
29
|
translate: 0 $gl-border-size-2;
|
|
@@ -37,8 +37,9 @@
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
@media (prefers-reduced-motion: reduce) {
|
|
40
|
-
&,
|
|
41
|
-
|
|
40
|
+
&,
|
|
41
|
+
&::before {
|
|
42
|
+
transition-duration: 0.01ms;
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
45
|
|
|
@@ -140,7 +141,7 @@
|
|
|
140
141
|
}
|
|
141
142
|
|
|
142
143
|
.gl-tabs-fade {
|
|
143
|
-
@apply gl-absolute gl-
|
|
144
|
+
@apply gl-absolute gl-bottom-0 gl-top-0 gl-z-2;
|
|
144
145
|
@apply gl-w-8;
|
|
145
146
|
@apply gl-p-2;
|
|
146
147
|
@apply gl-flex;
|
|
@@ -152,7 +153,7 @@
|
|
|
152
153
|
}
|
|
153
154
|
|
|
154
155
|
.gl-tabs-fade-right {
|
|
155
|
-
@apply gl-
|
|
156
|
+
@apply gl-right-0 gl-justify-end;
|
|
156
157
|
@include gl-bg-gradient-blur(right, var(--gl-background-color-default));
|
|
157
158
|
}
|
|
158
159
|
|
|
@@ -14,35 +14,37 @@ const DEFAULT_OPTIONS = {
|
|
|
14
14
|
|
|
15
15
|
let toastsCount = 0;
|
|
16
16
|
|
|
17
|
-
function renderTitle(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}),
|
|
25
|
-
];
|
|
26
|
-
if (options.action) {
|
|
27
|
-
const { onClick, text, href } = options.action;
|
|
28
|
-
nodes.unshift(
|
|
29
|
-
h(
|
|
30
|
-
'a',
|
|
31
|
-
{
|
|
32
|
-
attrs: {
|
|
33
|
-
role: href ? undefined : 'button',
|
|
34
|
-
href,
|
|
35
|
-
},
|
|
36
|
-
class: ['gl-toast-action'],
|
|
37
|
-
on: {
|
|
38
|
-
click: (e) => onClick(e, toast),
|
|
39
|
-
},
|
|
17
|
+
function renderTitle(toast, options) {
|
|
18
|
+
return (h) => {
|
|
19
|
+
const nodes = [
|
|
20
|
+
h(CloseButton, {
|
|
21
|
+
class: ['gl-toast-close-button'],
|
|
22
|
+
on: {
|
|
23
|
+
click: toast.hide,
|
|
40
24
|
},
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
)
|
|
44
|
-
|
|
45
|
-
|
|
25
|
+
}),
|
|
26
|
+
];
|
|
27
|
+
if (options.action) {
|
|
28
|
+
const { onClick, text, href } = options.action;
|
|
29
|
+
nodes.unshift(
|
|
30
|
+
h(
|
|
31
|
+
'a',
|
|
32
|
+
{
|
|
33
|
+
attrs: {
|
|
34
|
+
role: href ? undefined : 'button',
|
|
35
|
+
href,
|
|
36
|
+
},
|
|
37
|
+
class: ['gl-toast-action'],
|
|
38
|
+
on: {
|
|
39
|
+
click: (e) => onClick(e, toast),
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
text,
|
|
43
|
+
),
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
return nodes;
|
|
47
|
+
};
|
|
46
48
|
}
|
|
47
49
|
|
|
48
50
|
function showToast(message, options = {}) {
|
|
@@ -73,7 +75,7 @@ function showToast(message, options = {}) {
|
|
|
73
75
|
...DEFAULT_OPTIONS,
|
|
74
76
|
...updatedAutoHideDelay,
|
|
75
77
|
id,
|
|
76
|
-
title: renderTitle(
|
|
78
|
+
title: renderTitle(toast, options),
|
|
77
79
|
});
|
|
78
80
|
return toast;
|
|
79
81
|
}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
// Fallback for Firefox
|
|
18
18
|
// Fixes a bug where the view transition
|
|
19
19
|
// doesn’t work properly
|
|
20
|
-
@supports (-moz-appearance:none) {
|
|
20
|
+
@supports (-moz-appearance: none) {
|
|
21
21
|
view-transition-name: unset;
|
|
22
22
|
}
|
|
23
23
|
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
// Fallback for Firefox
|
|
34
34
|
// Fixes a bug where the view transition
|
|
35
35
|
// doesn’t work properly
|
|
36
|
-
@supports (-moz-appearance:none) {
|
|
36
|
+
@supports (-moz-appearance: none) {
|
|
37
37
|
transition: all $gl-transition-duration-medium $gl-easing-out-cubic;
|
|
38
38
|
}
|
|
39
39
|
}
|
|
@@ -95,7 +95,7 @@ export default {
|
|
|
95
95
|
},
|
|
96
96
|
shouldRenderHelp() {
|
|
97
97
|
// eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots
|
|
98
|
-
return Boolean(this.$slots.help || this.help);
|
|
98
|
+
return Boolean(this.$slots.help || this.help) && this.isVerticalLayout;
|
|
99
99
|
},
|
|
100
100
|
toggleClasses() {
|
|
101
101
|
return [
|
|
@@ -139,56 +139,55 @@ export default {
|
|
|
139
139
|
</script>
|
|
140
140
|
|
|
141
141
|
<template>
|
|
142
|
-
<div
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
142
|
+
<div
|
|
143
|
+
class="gl-toggle-wrapper gl-mb-0 gl-flex"
|
|
144
|
+
:class="{
|
|
145
|
+
'gl-flex-col': isVerticalLayout,
|
|
146
|
+
'gl-toggle-label-inline': !isVerticalLayout,
|
|
147
|
+
'is-disabled': disabled,
|
|
148
|
+
}"
|
|
149
|
+
data-testid="toggle-wrapper"
|
|
150
|
+
>
|
|
151
|
+
<span
|
|
152
|
+
:id="labelId"
|
|
153
|
+
:class="toggleClasses"
|
|
154
|
+
class="gl-toggle-label gl-shrink-0"
|
|
155
|
+
data-testid="toggle-label"
|
|
156
|
+
>
|
|
157
|
+
<!-- @slot The toggle's label. -->
|
|
158
|
+
<slot name="label">{{ label }}</slot>
|
|
159
|
+
</span>
|
|
160
|
+
<span
|
|
161
|
+
v-if="shouldRenderDescription"
|
|
162
|
+
class="gl-description-label gl-mb-3"
|
|
163
|
+
data-testid="toggle-description"
|
|
164
|
+
>
|
|
165
|
+
<!-- @slot A description text to be shown below the label. Unavailable when the label is positioned on the left. -->
|
|
166
|
+
<slot name="description">{{ description }}</slot>
|
|
167
|
+
</span>
|
|
168
|
+
<input v-if="name" :name="name" :value="value" type="hidden" />
|
|
169
|
+
<button
|
|
170
|
+
role="switch"
|
|
171
|
+
:aria-checked="isChecked"
|
|
172
|
+
:aria-labelledby="labelId"
|
|
173
|
+
:aria-describedby="helpId"
|
|
174
|
+
:aria-disabled="disabled"
|
|
146
175
|
:class="{
|
|
147
|
-
'
|
|
148
|
-
'
|
|
176
|
+
'is-checked': value,
|
|
177
|
+
'is-disabled': disabled || isLoading,
|
|
149
178
|
}"
|
|
179
|
+
class="gl-toggle gl-shrink-0"
|
|
180
|
+
type="button"
|
|
181
|
+
:disabled="disabled"
|
|
182
|
+
@click.prevent="toggleFeature"
|
|
150
183
|
>
|
|
151
|
-
<
|
|
152
|
-
|
|
153
|
-
:
|
|
154
|
-
class="gl-toggle-label gl-shrink-0"
|
|
155
|
-
data-testid="toggle-label"
|
|
156
|
-
>
|
|
157
|
-
<!-- @slot The toggle's label. -->
|
|
158
|
-
<slot name="label">{{ label }}</slot>
|
|
159
|
-
</span>
|
|
160
|
-
<span
|
|
161
|
-
v-if="shouldRenderDescription"
|
|
162
|
-
class="gl-description-label gl-mb-3"
|
|
163
|
-
data-testid="toggle-description"
|
|
164
|
-
>
|
|
165
|
-
<!-- @slot A description text to be shown below the label. Unavailable when the label is positioned on the left. -->
|
|
166
|
-
<slot name="description">{{ description }}</slot>
|
|
184
|
+
<gl-loading-icon v-if="isLoading" color="dark" class="toggle-loading" />
|
|
185
|
+
<span v-else class="toggle-icon">
|
|
186
|
+
<gl-icon :name="icon" :size="12" />
|
|
167
187
|
</span>
|
|
168
|
-
|
|
169
|
-
<button
|
|
170
|
-
role="switch"
|
|
171
|
-
:aria-checked="isChecked"
|
|
172
|
-
:aria-labelledby="labelId"
|
|
173
|
-
:aria-describedby="helpId"
|
|
174
|
-
:aria-disabled="disabled"
|
|
175
|
-
:class="{
|
|
176
|
-
'is-checked': value,
|
|
177
|
-
'is-disabled': disabled || isLoading,
|
|
178
|
-
}"
|
|
179
|
-
class="gl-toggle gl-shrink-0"
|
|
180
|
-
type="button"
|
|
181
|
-
:disabled="disabled"
|
|
182
|
-
@click.prevent="toggleFeature"
|
|
183
|
-
>
|
|
184
|
-
<gl-loading-icon v-if="isLoading" color="dark" class="toggle-loading" />
|
|
185
|
-
<span v-else class="toggle-icon">
|
|
186
|
-
<gl-icon :name="icon" :size="12" />
|
|
187
|
-
</span>
|
|
188
|
-
</button>
|
|
189
|
-
</div>
|
|
188
|
+
</button>
|
|
190
189
|
<span v-if="shouldRenderHelp" :id="helpId" class="gl-help-label" data-testid="toggle-help">
|
|
191
|
-
<!-- @slot A help text to be shown below the toggle. -->
|
|
190
|
+
<!-- @slot A help text to be shown below the toggle. Unavailable when the label is positioned on the left. -->
|
|
192
191
|
<slot name="help">{{ help }}</slot>
|
|
193
192
|
</span>
|
|
194
193
|
</div>
|
|
@@ -8,18 +8,22 @@ $legend-body-h: $gl-spacing-scale-13 - $gl-spacing-scale-4;
|
|
|
8
8
|
|
|
9
9
|
.gl-chart-h-auto {
|
|
10
10
|
.gl-legend-inline {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
// match the height of gl-legend-tabular (header + body)
|
|
12
|
+
max-height: $gl-line-height-24 + $legend-body-h;
|
|
13
|
+
@apply gl-overflow-auto;
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
.gl-legend-tabular.gl-legend-b-fade,
|
|
18
18
|
.gl-chart-h-auto .gl-legend-inline.gl-legend-b-fade {
|
|
19
19
|
&::after {
|
|
20
|
-
background-image: linear-gradient(
|
|
20
|
+
background-image: linear-gradient(
|
|
21
|
+
to bottom,
|
|
22
|
+
$transparent-rgba,
|
|
23
|
+
var(--gl-background-color-default)
|
|
24
|
+
);
|
|
21
25
|
bottom: 0;
|
|
22
|
-
content:
|
|
26
|
+
content: "";
|
|
23
27
|
@apply gl-block;
|
|
24
28
|
@apply gl-h-4;
|
|
25
29
|
position: absolute;
|
|
@@ -28,9 +32,9 @@ $legend-body-h: $gl-spacing-scale-13 - $gl-spacing-scale-4;
|
|
|
28
32
|
}
|
|
29
33
|
|
|
30
34
|
.gl-legend-inline {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
35
|
+
@apply gl-flex;
|
|
36
|
+
@apply gl-flex-wrap;
|
|
37
|
+
@apply gl-shrink-0;
|
|
34
38
|
|
|
35
39
|
.gl-legend-inline-series {
|
|
36
40
|
@apply gl-flex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@import
|
|
1
|
+
@import "gridstack/dist/gridstack";
|