@gitlab/ui 113.7.0 → 114.0.1
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/CHANGELOG.md +25 -0
- package/dist/components/base/button/button.js +251 -8
- package/dist/components/charts/column/column.js +3 -4
- package/dist/components/charts/stacked_column/stacked_column.js +12 -10
- package/dist/tailwind.css +1 -1
- package/dist/tailwind.css.map +1 -1
- package/dist/utils/charts/config.js +1 -2
- package/dist/utils/charts/constants.js +5 -1
- package/dist/utils/constants.js +2 -2
- package/package.json +1 -1
- package/src/components/base/button/button.md +61 -3
- package/src/components/base/button/button.vue +248 -13
- package/src/components/charts/column/column.vue +15 -9
- package/src/components/charts/stacked_column/stacked_column.vue +28 -8
- package/src/utils/charts/config.js +1 -8
- package/src/utils/charts/constants.js +4 -0
- package/src/utils/constants.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,28 @@
|
|
|
1
|
+
## [114.0.1](https://gitlab.com/gitlab-org/gitlab-ui/compare/v114.0.0...v114.0.1) (2025-05-16)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **GlColumnChart:** Use correct stack values ([6565a48](https://gitlab.com/gitlab-org/gitlab-ui/commit/6565a4895b9ec4fb907c9f0292c1bf49321cf310))
|
|
7
|
+
|
|
8
|
+
# [114.0.0](https://gitlab.com/gitlab-org/gitlab-ui/compare/v113.7.0...v114.0.0) (2025-05-15)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **GlButton:** remove BButton from GlButton ([fcdca4e](https://gitlab.com/gitlab-org/gitlab-ui/commit/fcdca4ee51ed98d71d93a94a2ffa741cf720c4db))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### BREAKING CHANGES
|
|
17
|
+
|
|
18
|
+
* **GlButton:** support for following props have been dropped:
|
|
19
|
+
- pressed
|
|
20
|
+
- router-component-name
|
|
21
|
+
- exact
|
|
22
|
+
- exact-path
|
|
23
|
+
- exact-path-active-class (replaced with exact-active-class)
|
|
24
|
+
- no-prefetch (use prefetch instead)
|
|
25
|
+
|
|
1
26
|
# [113.7.0](https://gitlab.com/gitlab-org/gitlab-ui/compare/v113.6.0...v113.7.0) (2025-05-15)
|
|
2
27
|
|
|
3
28
|
|
|
@@ -1,74 +1,213 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { buttonCategoryOptions, buttonVariantOptions, buttonSizeOptions } from '../../../utils/constants';
|
|
3
|
-
import { logWarning } from '../../../utils/utils';
|
|
1
|
+
import GlLink from '../link/link';
|
|
2
|
+
import { buttonCategoryOptions, buttonVariantOptions, buttonSizeOptions, linkVariantUnstyled } from '../../../utils/constants';
|
|
3
|
+
import { logWarning, stopEvent } from '../../../utils/utils';
|
|
4
4
|
import { isSlotEmpty } from '../../../utils/is_slot_empty';
|
|
5
5
|
import { SafeLinkMixin } from '../../mixins/safe_link_mixin';
|
|
6
|
+
import { isEvent } from '../../../vendor/bootstrap-vue/src/utils/inspect';
|
|
6
7
|
import GlIcon from '../icon/icon';
|
|
7
8
|
import GlLoadingIcon from '../loading_icon/loading_icon';
|
|
9
|
+
import { SPACE, ENTER } from '../new_dropdowns/constants';
|
|
8
10
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
9
11
|
|
|
10
12
|
//
|
|
11
13
|
var script = {
|
|
12
14
|
name: 'GlButton',
|
|
13
15
|
components: {
|
|
14
|
-
BButton,
|
|
15
16
|
GlIcon,
|
|
16
17
|
GlLoadingIcon
|
|
17
18
|
},
|
|
18
19
|
mixins: [SafeLinkMixin],
|
|
19
20
|
props: {
|
|
21
|
+
/**
|
|
22
|
+
* Set the category of the button.
|
|
23
|
+
*/
|
|
20
24
|
category: {
|
|
21
25
|
type: String,
|
|
22
26
|
required: false,
|
|
23
27
|
default: buttonCategoryOptions.primary,
|
|
24
28
|
validator: value => Object.keys(buttonCategoryOptions).includes(value)
|
|
25
29
|
},
|
|
30
|
+
/**
|
|
31
|
+
* Set the variant of the button.
|
|
32
|
+
*/
|
|
26
33
|
variant: {
|
|
27
34
|
type: String,
|
|
28
35
|
required: false,
|
|
29
36
|
default: buttonVariantOptions.default,
|
|
30
37
|
validator: value => Object.keys(buttonVariantOptions).includes(value)
|
|
31
38
|
},
|
|
39
|
+
/**
|
|
40
|
+
* Specify the size of the button. Options are `small` and `medium`.
|
|
41
|
+
*/
|
|
32
42
|
size: {
|
|
33
43
|
type: String,
|
|
34
44
|
required: false,
|
|
35
45
|
default: 'medium',
|
|
36
46
|
validator: value => Object.keys(buttonSizeOptions).includes(value)
|
|
37
47
|
},
|
|
48
|
+
/**
|
|
49
|
+
* Style the button as selected.
|
|
50
|
+
*/
|
|
38
51
|
selected: {
|
|
39
52
|
type: Boolean,
|
|
40
53
|
required: false,
|
|
41
54
|
default: false
|
|
42
55
|
},
|
|
56
|
+
/**
|
|
57
|
+
* Specify an icon to render in the button.
|
|
58
|
+
*/
|
|
43
59
|
icon: {
|
|
44
60
|
type: String,
|
|
45
61
|
required: false,
|
|
46
62
|
default: ''
|
|
47
63
|
},
|
|
64
|
+
/**
|
|
65
|
+
* Render a non-interactive label button, a `span` styled as a button.
|
|
66
|
+
*/
|
|
48
67
|
label: {
|
|
49
68
|
type: Boolean,
|
|
50
69
|
required: false,
|
|
51
70
|
default: false
|
|
52
71
|
},
|
|
72
|
+
/**
|
|
73
|
+
* Set the loading state of the button.
|
|
74
|
+
*/
|
|
53
75
|
loading: {
|
|
54
76
|
type: Boolean,
|
|
55
77
|
required: false,
|
|
56
78
|
default: false
|
|
57
79
|
},
|
|
80
|
+
/**
|
|
81
|
+
* CSS classes to add to the button text.
|
|
82
|
+
*/
|
|
58
83
|
buttonTextClasses: {
|
|
59
84
|
type: String,
|
|
60
85
|
required: false,
|
|
61
86
|
default: ''
|
|
62
87
|
},
|
|
88
|
+
/**
|
|
89
|
+
* Renders a 100% width button (expands to the width of its parent container).
|
|
90
|
+
*/
|
|
63
91
|
block: {
|
|
64
92
|
type: Boolean,
|
|
65
93
|
required: false,
|
|
66
94
|
default: false
|
|
67
95
|
},
|
|
96
|
+
/**
|
|
97
|
+
* Specify the HTML tag to render instead of the default tag.
|
|
98
|
+
*/
|
|
99
|
+
tag: {
|
|
100
|
+
type: String,
|
|
101
|
+
required: false,
|
|
102
|
+
default: 'button'
|
|
103
|
+
},
|
|
104
|
+
/**
|
|
105
|
+
* The value to set the button's `type` attribute to. Can be one of `button`, `submit`, or `reset`.
|
|
106
|
+
*/
|
|
107
|
+
type: {
|
|
108
|
+
type: String,
|
|
109
|
+
required: false,
|
|
110
|
+
default: 'button',
|
|
111
|
+
validator: value => ['button', 'submit', 'reset'].includes(value)
|
|
112
|
+
},
|
|
113
|
+
/**
|
|
114
|
+
* Disables the component's functionality and places it in a disabled state.
|
|
115
|
+
*/
|
|
68
116
|
disabled: {
|
|
69
117
|
type: Boolean,
|
|
70
118
|
required: false,
|
|
71
119
|
default: false
|
|
120
|
+
},
|
|
121
|
+
/**
|
|
122
|
+
* Denotes the target URL of the link for standard links.
|
|
123
|
+
*/
|
|
124
|
+
href: {
|
|
125
|
+
type: String,
|
|
126
|
+
required: false,
|
|
127
|
+
default: undefined
|
|
128
|
+
},
|
|
129
|
+
/**
|
|
130
|
+
* Skips sanitization of href if true. This should be used sparingly.
|
|
131
|
+
* Consult security team before setting to true.
|
|
132
|
+
*/
|
|
133
|
+
isUnsafeLink: {
|
|
134
|
+
type: Boolean,
|
|
135
|
+
required: false,
|
|
136
|
+
default: false
|
|
137
|
+
},
|
|
138
|
+
/**
|
|
139
|
+
* Sets the 'rel' attribute on the rendered link.
|
|
140
|
+
*/
|
|
141
|
+
rel: {
|
|
142
|
+
type: String,
|
|
143
|
+
required: false,
|
|
144
|
+
default: null
|
|
145
|
+
},
|
|
146
|
+
/**
|
|
147
|
+
* Sets the 'target' attribute on the rendered link.
|
|
148
|
+
*/
|
|
149
|
+
target: {
|
|
150
|
+
type: String,
|
|
151
|
+
required: false,
|
|
152
|
+
default: null
|
|
153
|
+
},
|
|
154
|
+
/**
|
|
155
|
+
* Places the component in the active state with active styling
|
|
156
|
+
*/
|
|
157
|
+
active: {
|
|
158
|
+
type: Boolean,
|
|
159
|
+
required: false,
|
|
160
|
+
default: false
|
|
161
|
+
},
|
|
162
|
+
/**
|
|
163
|
+
* <router-link> prop: Denotes the target route of the link.
|
|
164
|
+
* When clicked, the value of the to prop will be passed to `router.push()` internally,
|
|
165
|
+
* so the value can be either a string or a Location descriptor object.
|
|
166
|
+
*/
|
|
167
|
+
to: {
|
|
168
|
+
type: [Object, String],
|
|
169
|
+
required: false,
|
|
170
|
+
default: undefined
|
|
171
|
+
},
|
|
172
|
+
/**
|
|
173
|
+
* <router-link> prop: Configure the active CSS class applied when the link is active.
|
|
174
|
+
*/
|
|
175
|
+
activeClass: {
|
|
176
|
+
type: String,
|
|
177
|
+
required: false,
|
|
178
|
+
default: undefined
|
|
179
|
+
},
|
|
180
|
+
/**
|
|
181
|
+
* <router-link> prop: Configure the active CSS class applied when the link is active with exact match.
|
|
182
|
+
*/
|
|
183
|
+
exactActiveClass: {
|
|
184
|
+
type: String,
|
|
185
|
+
required: false,
|
|
186
|
+
default: undefined
|
|
187
|
+
},
|
|
188
|
+
/**
|
|
189
|
+
* <router-link> prop: Setting the replace prop will call `router.replace()` instead of `router.push()`
|
|
190
|
+
* when clicked, so the navigation will not leave a history record.
|
|
191
|
+
*/
|
|
192
|
+
replace: {
|
|
193
|
+
type: Boolean,
|
|
194
|
+
required: false,
|
|
195
|
+
default: false
|
|
196
|
+
},
|
|
197
|
+
/**
|
|
198
|
+
* <nuxt-link> prop: To improve the responsiveness of your Nuxt.js applications, when the link will be displayed within the viewport,
|
|
199
|
+
* Nuxt.js will automatically prefetch the code splitted page. Setting `prefetch` to `true` or `false` will overwrite the default value of `router.prefetchLinks`
|
|
200
|
+
*/
|
|
201
|
+
prefetch: {
|
|
202
|
+
type: Boolean,
|
|
203
|
+
required: false,
|
|
204
|
+
// Must be `null` to fall back to the value defined in the
|
|
205
|
+
// `nuxt.config.js` configuration file for `router.prefetchLinks`
|
|
206
|
+
// We convert `null` to `undefined`, so that Nuxt.js will use the
|
|
207
|
+
// compiled default
|
|
208
|
+
// Vue treats `undefined` as default of `false` for Boolean props,
|
|
209
|
+
// so we must set it as `null` here to be a true tri-state prop
|
|
210
|
+
default: null
|
|
72
211
|
}
|
|
73
212
|
},
|
|
74
213
|
computed: {
|
|
@@ -82,17 +221,19 @@ var script = {
|
|
|
82
221
|
return this.disabled || this.loading;
|
|
83
222
|
},
|
|
84
223
|
buttonClasses() {
|
|
85
|
-
const classes = ['gl-button'];
|
|
224
|
+
const classes = ['btn', 'gl-button', `btn-${this.variant}`, `btn-${this.buttonSize}`];
|
|
86
225
|
if (this.category !== buttonCategoryOptions.primary) {
|
|
87
226
|
classes.push(`btn-${this.variant}-${this.category}`);
|
|
88
227
|
}
|
|
89
228
|
classes.push({
|
|
90
229
|
'btn-icon': this.hasIconOnly,
|
|
91
230
|
'button-ellipsis-horizontal': this.hasIconOnly && this.icon === 'ellipsis_h',
|
|
92
|
-
selected: this.selected
|
|
231
|
+
selected: this.selected,
|
|
232
|
+
'btn-block': this.displayBlock,
|
|
233
|
+
disabled: this.disabled
|
|
93
234
|
});
|
|
94
235
|
if (this.label) {
|
|
95
|
-
classes.push('btn', 'btn-label'
|
|
236
|
+
classes.push('btn', 'btn-label');
|
|
96
237
|
}
|
|
97
238
|
return classes;
|
|
98
239
|
},
|
|
@@ -101,6 +242,84 @@ var script = {
|
|
|
101
242
|
},
|
|
102
243
|
displayBlock() {
|
|
103
244
|
return !this.label && this.block;
|
|
245
|
+
},
|
|
246
|
+
isLink() {
|
|
247
|
+
return this.href || this.to;
|
|
248
|
+
},
|
|
249
|
+
isHashLink() {
|
|
250
|
+
return this.isLink && this.href === '#';
|
|
251
|
+
},
|
|
252
|
+
isButton() {
|
|
253
|
+
return this.componentIs === 'button';
|
|
254
|
+
},
|
|
255
|
+
isNonStandardTag() {
|
|
256
|
+
if (this.label) {
|
|
257
|
+
return false;
|
|
258
|
+
}
|
|
259
|
+
return !this.isLink && !this.isButton;
|
|
260
|
+
},
|
|
261
|
+
tabindex() {
|
|
262
|
+
// When disabled remove links and non-standard tags from tab order
|
|
263
|
+
if (this.disabled) {
|
|
264
|
+
return this.isLink || this.isNonStandardTag ? '-1' : this.$attrs.tabindex;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
// Add hash links and non-standard tags to tab order
|
|
268
|
+
return this.isNonStandardTag || this.isHashLink ? '0' : this.$attrs.tabindex;
|
|
269
|
+
},
|
|
270
|
+
computedPropsAndAttributes() {
|
|
271
|
+
var _this$$attrs;
|
|
272
|
+
const base = {
|
|
273
|
+
// Type only used for "real" buttons
|
|
274
|
+
type: this.isButton ? this.type : null,
|
|
275
|
+
// Disabled only set on "real" buttons
|
|
276
|
+
disabled: this.isButton ? this.isButtonDisabled : null,
|
|
277
|
+
// We add a role of button when the tag is not a link or button or when link has `href` of `#`
|
|
278
|
+
role: this.isNonStandardTag || this.isHashLink ? 'button' : (_this$$attrs = this.$attrs) === null || _this$$attrs === void 0 ? void 0 : _this$$attrs.role,
|
|
279
|
+
// We set the `aria-disabled` state for non-standard tags
|
|
280
|
+
...(this.isNonStandardTag ? {
|
|
281
|
+
'aria-disabled': String(this.disabled)
|
|
282
|
+
} : {}),
|
|
283
|
+
tabindex: this.tabindex
|
|
284
|
+
};
|
|
285
|
+
if (this.isLink) {
|
|
286
|
+
return {
|
|
287
|
+
...this.$attrs,
|
|
288
|
+
...base,
|
|
289
|
+
variant: linkVariantUnstyled,
|
|
290
|
+
disabled: this.disabled,
|
|
291
|
+
href: this.href,
|
|
292
|
+
isUnsafeLink: this.isUnsafeLink,
|
|
293
|
+
rel: this.rel,
|
|
294
|
+
target: this.target,
|
|
295
|
+
active: this.active,
|
|
296
|
+
to: this.to,
|
|
297
|
+
activeClass: this.activeClass,
|
|
298
|
+
exactActiveClass: this.exactActiveClass,
|
|
299
|
+
replace: this.replace,
|
|
300
|
+
prefetch: this.prefetch
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
return {
|
|
304
|
+
...this.$attrs,
|
|
305
|
+
...base
|
|
306
|
+
};
|
|
307
|
+
},
|
|
308
|
+
computedListeners() {
|
|
309
|
+
return {
|
|
310
|
+
click: this.onClick,
|
|
311
|
+
keydown: this.onKeydown,
|
|
312
|
+
...this.$listeners
|
|
313
|
+
};
|
|
314
|
+
},
|
|
315
|
+
componentIs() {
|
|
316
|
+
if (this.label) {
|
|
317
|
+
return 'span';
|
|
318
|
+
}
|
|
319
|
+
if (this.isLink) {
|
|
320
|
+
return GlLink;
|
|
321
|
+
}
|
|
322
|
+
return this.tag;
|
|
104
323
|
}
|
|
105
324
|
},
|
|
106
325
|
mounted() {
|
|
@@ -108,6 +327,30 @@ var script = {
|
|
|
108
327
|
if (!this.$slots.default && !this.$attrs['aria-label'] && !this.$props.label) {
|
|
109
328
|
logWarning('[gl-button]: Accessible name missing. Please add inner text or aria-label.', this.$el);
|
|
110
329
|
}
|
|
330
|
+
},
|
|
331
|
+
methods: {
|
|
332
|
+
onKeydown(event) {
|
|
333
|
+
// Skip if disabled
|
|
334
|
+
// Add SPACE keydown handler for link has `href` of `#`
|
|
335
|
+
// Add ENTER handler for non-standard tags
|
|
336
|
+
if (!this.disabled && (this.isNonStandardTag || this.isHashLink)) {
|
|
337
|
+
const {
|
|
338
|
+
code
|
|
339
|
+
} = event;
|
|
340
|
+
if (code === SPACE || code === ENTER && this.isNonStandardTag) {
|
|
341
|
+
const target = event.currentTarget || event.target;
|
|
342
|
+
stopEvent(event, {
|
|
343
|
+
propagation: false
|
|
344
|
+
});
|
|
345
|
+
target.click();
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
onClick(event) {
|
|
350
|
+
if (this.disabled && isEvent(event)) {
|
|
351
|
+
stopEvent(event);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
111
354
|
}
|
|
112
355
|
};
|
|
113
356
|
|
|
@@ -115,7 +358,7 @@ var script = {
|
|
|
115
358
|
const __vue_script__ = script;
|
|
116
359
|
|
|
117
360
|
/* template */
|
|
118
|
-
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.
|
|
361
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.componentIs,_vm._g(_vm._b({directives:[{name:"safe-link",rawName:"v-safe-link:[safeLinkConfig]",arg:_vm.safeLinkConfig}],tag:"component",class:_vm.buttonClasses},'component',_vm.computedPropsAndAttributes,false),_vm.computedListeners),[(_vm.loading)?_c('gl-loading-icon',{staticClass:"gl-button-icon gl-button-loading-indicator",attrs:{"inline":""}}):_vm._e(),_vm._v(" "),(_vm.hasIcon && !(_vm.hasIconOnly && _vm.loading))?_c('gl-icon',{staticClass:"gl-button-icon",attrs:{"name":_vm.icon}}):_vm._e(),_vm._v(" "),_vm._t("emoji"),_vm._v(" "),(!_vm.hasIconOnly)?_c('span',{staticClass:"gl-button-text",class:_vm.buttonTextClasses},[_vm._t("default")],2):_vm._e()],2)};
|
|
119
362
|
var __vue_staticRenderFns__ = [];
|
|
120
363
|
|
|
121
364
|
/* style */
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import merge from 'lodash/merge';
|
|
2
2
|
import { yAxis, generateBarSeries, generateLineSeries, defaultChartOptions, gridWithSecondaryYAxis, grid, dataZoomAdjustments, mergeSeriesToOptions } from '../../../utils/charts/config';
|
|
3
|
-
import { CHART_TYPE_LINE, HEIGHT_AUTO_CLASSES } from '../../../utils/charts/constants';
|
|
3
|
+
import { CHART_TYPE_LINE, HEIGHT_AUTO_CLASSES, CHART_DEFAULT_SERIES_STACK, CHART_DEFAULT_SERIES_SECONDARY_STACK } from '../../../utils/charts/constants';
|
|
4
4
|
import { colorFromDefaultPalette } from '../../../utils/charts/theme';
|
|
5
|
-
import { columnOptions } from '../../../utils/constants';
|
|
6
5
|
import Chart from '../chart/chart';
|
|
7
6
|
import ChartTooltip from '../shared/tooltip/tooltip';
|
|
8
7
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
@@ -84,7 +83,7 @@ var script = {
|
|
|
84
83
|
let {
|
|
85
84
|
name,
|
|
86
85
|
data,
|
|
87
|
-
stack
|
|
86
|
+
stack = CHART_DEFAULT_SERIES_STACK
|
|
88
87
|
} = _ref;
|
|
89
88
|
const color = colorFromDefaultPalette(index);
|
|
90
89
|
return generateBarSeries({
|
|
@@ -117,7 +116,7 @@ var script = {
|
|
|
117
116
|
name,
|
|
118
117
|
data,
|
|
119
118
|
type,
|
|
120
|
-
stack =
|
|
119
|
+
stack = CHART_DEFAULT_SERIES_SECONDARY_STACK
|
|
121
120
|
} = _ref3;
|
|
122
121
|
const color = colorFromDefaultPalette(offset + index);
|
|
123
122
|
return type === CHART_TYPE_LINE ? generateLineSeries({
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import merge from 'lodash/merge';
|
|
2
2
|
import { yAxis, generateBarSeries, generateLineSeries, gridWithSecondaryYAxis, grid, defaultChartOptions, dataZoomAdjustments, mergeSeriesToOptions } from '../../../utils/charts/config';
|
|
3
|
-
import { LEGEND_AVERAGE_TEXT, LEGEND_MAX_TEXT, LEGEND_MIN_TEXT, LEGEND_CURRENT_TEXT, LEGEND_LAYOUT_INLINE, LEGEND_LAYOUT_TABLE, CHART_TYPE_LINE, HEIGHT_AUTO_CLASSES } from '../../../utils/charts/constants';
|
|
3
|
+
import { LEGEND_AVERAGE_TEXT, LEGEND_MAX_TEXT, LEGEND_MIN_TEXT, LEGEND_CURRENT_TEXT, LEGEND_LAYOUT_INLINE, LEGEND_LAYOUT_TABLE, CHART_DEFAULT_SERIES_STACK, CHART_DEFAULT_SERIES_SECONDARY_STACK, CHART_TYPE_LINE, HEIGHT_AUTO_CLASSES } from '../../../utils/charts/constants';
|
|
4
4
|
import { colorFromDefaultPalette } from '../../../utils/charts/theme';
|
|
5
|
-
import {
|
|
5
|
+
import { stackedPresentationOptions } from '../../../utils/constants';
|
|
6
6
|
import TooltipDefaultFormat from '../shared/tooltip/tooltip_default_format/tooltip_default_format';
|
|
7
7
|
import Chart from '../chart/chart';
|
|
8
8
|
import ChartLegend from '../legend/legend';
|
|
@@ -49,8 +49,8 @@ var script = {
|
|
|
49
49
|
presentation: {
|
|
50
50
|
type: String,
|
|
51
51
|
required: false,
|
|
52
|
-
default:
|
|
53
|
-
validator: value =>
|
|
52
|
+
default: stackedPresentationOptions.stacked,
|
|
53
|
+
validator: value => Object.values(stackedPresentationOptions).indexOf(value) !== -1
|
|
54
54
|
},
|
|
55
55
|
groupBy: {
|
|
56
56
|
type: Array,
|
|
@@ -151,12 +151,13 @@ var script = {
|
|
|
151
151
|
return this.bars.map((_ref, index) => {
|
|
152
152
|
let {
|
|
153
153
|
name,
|
|
154
|
-
data
|
|
154
|
+
data,
|
|
155
|
+
stack
|
|
155
156
|
} = _ref;
|
|
156
|
-
const stack = this.presentation === 'stacked' ? this.groupBy : null;
|
|
157
157
|
const color = this.getColor(index);
|
|
158
|
+
const seriesStack = this.presentation === stackedPresentationOptions.stacked ? stack || CHART_DEFAULT_SERIES_STACK : null;
|
|
158
159
|
return generateBarSeries({
|
|
159
|
-
stack,
|
|
160
|
+
stack: seriesStack,
|
|
160
161
|
name,
|
|
161
162
|
data,
|
|
162
163
|
color
|
|
@@ -185,9 +186,10 @@ var script = {
|
|
|
185
186
|
name,
|
|
186
187
|
data,
|
|
187
188
|
type,
|
|
188
|
-
stack
|
|
189
|
+
stack
|
|
189
190
|
} = _ref3;
|
|
190
191
|
const color = this.getColor(offset + index);
|
|
192
|
+
const seriesStack = this.presentation === stackedPresentationOptions.stacked ? stack || CHART_DEFAULT_SERIES_SECONDARY_STACK : null;
|
|
191
193
|
return type === CHART_TYPE_LINE ? generateLineSeries({
|
|
192
194
|
color,
|
|
193
195
|
name,
|
|
@@ -197,8 +199,8 @@ var script = {
|
|
|
197
199
|
color,
|
|
198
200
|
name,
|
|
199
201
|
data,
|
|
200
|
-
|
|
201
|
-
|
|
202
|
+
stack: seriesStack,
|
|
203
|
+
yAxisIndex: 1
|
|
202
204
|
});
|
|
203
205
|
});
|
|
204
206
|
},
|
package/dist/tailwind.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.gl-animate-skeleton-loader{background-color:var(--gl-skeleton-loader-background-color);background-image:linear-gradient(to right,var(--gl-skeleton-loader-background-color) 0,var(--gl-skeleton-loader-shimmer-color) 23%,var(--gl-skeleton-loader-shimmer-color) 27%,var(--gl-skeleton-loader-background-color) 50%);background-position:-32rem 0;background-repeat:no-repeat;background-size:32rem 100%;max-width:32rem;overflow:hidden}@media (prefers-reduced-motion:no-preference){.gl-animate-skeleton-loader{animation:gl-keyframes-skeleton-loader 2.5s linear;animation-delay:inherit;animation-iteration-count:3}}@keyframes gl-keyframes-skeleton-loader{0%{background-position-x:-32rem}to{background-position-x:32rem}}.gl-border{border-color:var(--gl-border-color-default);border-style:solid}.gl-border-t{border-top-color:var(--gl-border-color-default);border-top-style:solid}.gl-border-b{border-bottom-color:var(--gl-border-color-default);border-bottom-style:solid}.gl-heading-4{font-size:1rem;letter-spacing:inherit}.gl-heading-2,.gl-heading-4{color:var(--gl-text-color-heading);font-weight:600;line-height:1.25;margin-bottom:1rem;margin-top:0}.gl-heading-2{font-size:clamp(1.3125rem,.8680555556rem + .9259259259vw,1.5625rem);letter-spacing:-.01em}.gl-sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.gl-pointer-events-none{pointer-events:none}.gl-pointer-events-auto{pointer-events:auto}.gl-invisible{visibility:hidden}.gl-collapse{visibility:collapse}.gl-static{position:static}.gl-fixed{position:fixed}.\!gl-absolute{position:absolute!important}.gl-absolute{position:absolute}.gl-relative{position:relative}.gl-sticky{position:sticky}.gl-top-0{top:0}.\!gl-z-9999{z-index:9999!important}.gl-z-9999{z-index:9999}.gl-float-right{float:right}.\!gl-m-0{margin:0!important}.gl-m-0{margin:0}.gl-m-7{margin:2rem}.gl-m-auto{margin:auto}.\!gl-mx-2{margin-left:.25rem!important;margin-right:.25rem!important}.-gl-mx-1{margin-left:-.125rem;margin-right:-.125rem}.-gl-mx-4{margin-left:-.75rem;margin-right:-.75rem}.-gl-my-1{margin-bottom:-.125rem;margin-top:-.125rem}.-gl-my-3{margin-bottom:-.5rem;margin-top:-.5rem}.gl-mx-2{margin-left:.25rem;margin-right:.25rem}.gl-mx-4{margin-left:.75rem;margin-right:.75rem}.gl-mx-auto{margin-left:auto;margin-right:auto}.gl-my-0{margin-bottom:0;margin-top:0}.gl-my-3{margin-bottom:.5rem;margin-top:.5rem}.gl-my-5{margin-bottom:1rem;margin-top:1rem}.\!gl-mb-2{margin-bottom:.25rem!important}.\!gl-mb-4{margin-bottom:.75rem!important}.\!gl-mt-2{margin-top:.25rem!important}.-gl-ml-2{margin-left:-.25rem}.-gl-mr-3{margin-right:-.5rem}.-gl-mt-2{margin-top:-.25rem}.gl-mb-0{margin-bottom:0}.gl-mb-2{margin-bottom:.25rem}.gl-mb-3{margin-bottom:.5rem}.gl-mb-4{margin-bottom:.75rem}.gl-mb-5{margin-bottom:1rem}.gl-mb-8{margin-bottom:2.5rem}.gl-ml-1{margin-left:.125rem}.gl-ml-2{margin-left:.25rem}.gl-ml-3{margin-left:.5rem}.gl-ml-5{margin-left:1rem}.gl-ml-6{margin-left:1.5rem}.gl-mr-1{margin-right:.125rem}.gl-mr-2{margin-right:.25rem}.gl-mr-3{margin-right:.5rem}.gl-mr-4{margin-right:.75rem}.gl-mr-auto{margin-right:auto}.gl-mt-0{margin-top:0}.gl-mt-2{margin-top:.25rem}.gl-mt-3{margin-top:.5rem}.gl-mt-4{margin-top:.75rem}.gl-mt-5{margin-top:1rem}.gl-mt-6{margin-top:1.5rem}.\!gl-block{display:block!important}.gl-block{display:block}.gl-inline-block{display:inline-block}.\!gl-flex{display:flex!important}.gl-flex{display:flex}.gl-inline-flex{display:inline-flex}.gl-table{display:table}.gl-grid{display:grid}.\!gl-hidden{display:none!important}.gl-hidden{display:none}.gl-h-0{height:0}.gl-h-11{height:4rem}.gl-h-4{height:.75rem}.gl-h-5{height:1rem}.gl-h-62{height:31rem}.gl-h-auto{height:auto}.gl-h-full{height:100%}.gl-h-screen{height:100vh}.gl-min-h-8{min-height:2.5rem}.\!gl-w-31{width:15.5rem!important}.\!gl-w-auto{width:auto!important}.gl-w-1\/5{width:20%}.gl-w-10{width:3.5rem}.gl-w-12{width:5rem}.gl-w-20{width:10rem}.gl-w-3\/4{width:75%}.gl-w-30{width:15rem}.gl-w-4\/10{width:40%}.gl-w-5{width:1rem}.gl-w-auto{width:auto}.gl-w-full{width:100%}.gl-min-w-0{min-width:0}.\!gl-max-w-20{max-width:10rem!important}.\!gl-max-w-26{max-width:13rem!important}.\!gl-max-w-30{max-width:15rem!important}.gl-max-w-1\/2{max-width:50%}.gl-max-w-48{max-width:24rem}.gl-max-w-75{max-width:37.5rem}.gl-max-w-full{max-width:100%}.gl-flex-1{flex:1 1 0%}.gl-flex-auto{flex:1 1 auto}.gl-flex-shrink-0,.gl-shrink-0{flex-shrink:0}.gl-grow{flex-grow:1}.gl-basis-0{flex-basis:0}.\!gl-cursor-not-allowed{cursor:not-allowed!important}.\!gl-cursor-text{cursor:text!important}.gl-cursor-default{cursor:default}.gl-cursor-pointer{cursor:pointer}.gl-cursor-text{cursor:text}.gl-select-none{-webkit-user-select:none;user-select:none}.gl-list-none{list-style-type:none}.gl-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.gl-flex-row{flex-direction:row}.gl-flex-col{flex-direction:column}.gl-flex-wrap{flex-wrap:wrap}.gl-flex-nowrap{flex-wrap:nowrap}.gl-place-items-center{place-items:center}.gl-content-center{align-content:center}.gl-items-start{align-items:flex-start}.gl-items-center{align-items:center}.gl-items-baseline{align-items:baseline}.\!gl-justify-start{justify-content:flex-start!important}.gl-justify-end{justify-content:flex-end}.gl-justify-center{justify-content:center}.gl-justify-between{justify-content:space-between}.gl-gap-2{gap:.25rem}.gl-gap-3{gap:.5rem}.gl-gap-5{gap:1rem}.gl-gap-6{gap:1.5rem}.gl-gap-x-3{column-gap:.5rem}.gl-self-start{align-self:flex-start}.gl-self-center{align-self:center}.gl-overflow-hidden{overflow:hidden}.\!gl-overflow-visible{overflow:visible!important}.gl-overflow-visible{overflow:visible}.gl-overflow-y-auto{overflow-y:auto}.gl-overflow-x-hidden{overflow-x:hidden}.gl-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\!gl-text-ellipsis{text-overflow:ellipsis!important}.gl-text-ellipsis{text-overflow:ellipsis}.gl-whitespace-nowrap{white-space:nowrap}.gl-whitespace-pre-line{white-space:pre-line}.gl-break-words{overflow-wrap:break-word}.\!gl-rounded-base{border-radius:.25rem!important}.\!gl-rounded-none{border-radius:0!important}.gl-rounded-base{border-radius:.25rem}.gl-rounded-full{border-radius:50%}.gl-rounded-lg{border-radius:.5rem}.gl-rounded-t-base{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.gl-border{border-width:1px}.\!gl-border-b-0{border-bottom-width:0!important}.gl-border-b,.gl-border-b-1{border-bottom-width:1px}.gl-border-t,.gl-border-t-1{border-top-width:1px}.gl-border-t-2{border-top-width:2px}.gl-border-dashed{border-style:dashed}.gl-border-none{border-style:none}.gl-border-default{border-color:var(--gl-border-color-default,var(--gl-color-neutral-100,#dcdcde))}.gl-border-dropdown{border-color:var(--gl-dropdown-border-color,var(--gl-border-color-strong,#bfbfc3))}.gl-border-gray-500{border-color:var(--gray-500,#737278)}.gl-border-red-500{border-color:var(--red-500,#dd2b0e)}.gl-border-section{border-color:var(--gl-border-color-section,var(--gl-border-color-default,#dcdcde))}.gl-border-strong{border-color:var(--gl-border-color-strong,var(--gl-color-neutral-200,#bfbfc3))}.gl-border-subtle{border-color:var(--gl-border-color-subtle,var(--gl-color-neutral-50,#ececef))}.gl-border-b-dropdown-divider{border-bottom-color:var(--gl-dropdown-divider-color,var(--gl-border-color-default,#dcdcde))}.gl-border-b-section{border-bottom-color:var(--gl-border-color-section,var(--gl-border-color-default,#dcdcde))}.gl-border-t-blue-500{border-top-color:var(--blue-500,#1f75cb)}.gl-border-t-dropdown-divider{border-top-color:var(--gl-dropdown-divider-color,var(--gl-border-color-default,#dcdcde))}.gl-border-t-red-500{border-top-color:var(--red-500,#dd2b0e)}.\!gl-bg-data-viz-green-700{background-color:var(--data-viz-green-700,#366800)!important}.\!gl-bg-data-viz-magenta-950{background-color:var(--data-viz-magenta-950,#541d31)!important}.gl-bg-blue-100{background-color:var(--blue-100,#cbe2f9)}.gl-bg-default{background-color:var(--gl-background-color-default,var(--gl-color-neutral-0,#fff))}.gl-bg-dropdown{background-color:var(--gl-dropdown-background-color,var(--gl-background-color-overlap,#fff))}.gl-bg-feedback-danger{background-color:var(--gl-feedback-danger-background-color,var(--gl-color-red-50,#fcf1ef))}.gl-bg-feedback-info{background-color:var(--gl-feedback-info-background-color,var(--gl-color-blue-50,#e9f3fc))}.gl-bg-feedback-neutral{background-color:var(--gl-feedback-neutral-background-color,var(--gl-color-neutral-50,#ececef))}.gl-bg-feedback-strong{background-color:var(--gl-feedback-strong-background-color,var(--gl-color-neutral-800,#3a383f))}.gl-bg-feedback-success{background-color:var(--gl-feedback-success-background-color,var(--gl-color-green-50,#ecf4ee))}.gl-bg-feedback-warning{background-color:var(--gl-feedback-warning-background-color,var(--gl-color-orange-50,#fdf1dd))}.gl-bg-gray-50{background-color:var(--gray-50,#ececef)}.gl-bg-gray-900{background-color:var(--gray-900,#28272d)}.gl-bg-gray-950{background-color:var(--gray-950,#18171d)}.gl-bg-green-100{background-color:var(--green-100,#c3e6cd)}.gl-bg-overlap{background-color:var(--gl-background-color-overlap,var(--gl-color-neutral-0,#fff))}.gl-bg-overlay{background-color:var(--gl-background-color-overlay,var(--gl-color-alpha-dark-24,#0505063d))}.gl-bg-purple-50{background-color:var(--purple-50,#f4f0ff)}.gl-bg-red-100{background-color:var(--red-100,#fdd4cd)}.gl-bg-section{background-color:var(--gl-background-color-section,var(--gl-color-neutral-0,#fff))}.gl-bg-status-brand{background-color:var(--gl-status-brand-background-color,var(--gl-color-purple-100,#e1d8f9))}.gl-bg-status-danger{background-color:var(--gl-status-danger-background-color,var(--gl-color-red-100,#fdd4cd))}.gl-bg-status-info{background-color:var(--gl-status-info-background-color,var(--gl-color-blue-100,#cbe2f9))}.gl-bg-status-neutral{background-color:var(--gl-status-neutral-background-color,var(--gl-color-neutral-100,#dcdcde))}.gl-bg-status-success{background-color:var(--gl-status-success-background-color,var(--gl-color-green-100,#c3e6cd))}.gl-bg-status-warning{background-color:var(--gl-status-warning-background-color,var(--gl-color-orange-100,#f5d9a8))}.gl-bg-strong{background-color:var(--gl-background-color-strong,var(--gl-color-neutral-50,#ececef))}.gl-bg-subtle{background-color:var(--gl-background-color-subtle,var(--gl-color-neutral-10,#fbfafd))}.gl-bg-transparent{background-color:initial}.gl-bg-white{background-color:var(--white,#fff)}.gl-fill-current{fill:currentColor}.gl-fill-feedback-danger{fill:var(--gl-feedback-danger-icon-color,var(--gl-color-red-600,#c02f12))}.gl-fill-feedback-info{fill:var(--gl-feedback-info-icon-color,var(--gl-color-blue-600,#2f68b4))}.gl-fill-feedback-neutral{fill:var(--gl-feedback-neutral-icon-color,var(--gl-color-neutral-600,#626168))}.gl-fill-feedback-strong{fill:var(--gl-feedback-strong-icon-color,var(--gl-color-neutral-0,#fff))}.gl-fill-feedback-success{fill:var(--gl-feedback-success-icon-color,var(--gl-color-green-600,#2f7549))}.gl-fill-feedback-warning{fill:var(--gl-feedback-warning-icon-color,var(--gl-color-orange-600,#995715))}.gl-fill-icon-danger{fill:var(--gl-icon-color-danger,var(--gl-text-color-danger,#c02f12))}.gl-fill-icon-default{fill:var(--gl-icon-color-default,var(--gl-text-color-default,#3a383f))}.gl-fill-icon-disabled{fill:var(--gl-icon-color-disabled,var(--gl-text-color-disabled,#89888d))}.gl-fill-icon-info{fill:var(--gl-icon-color-info,var(--gl-color-blue-700,#2f5ca0))}.gl-fill-icon-link{fill:var(--gl-icon-color-link,var(--gl-text-color-link,#2f5ca0))}.gl-fill-icon-strong{fill:var(--gl-icon-color-strong,var(--gl-text-color-strong,#18171d))}.gl-fill-icon-subtle{fill:var(--gl-icon-color-subtle,var(--gl-text-color-subtle,#626168))}.gl-fill-icon-success{fill:var(--gl-icon-color-success,var(--gl-text-color-success,#2f7549))}.gl-fill-icon-warning{fill:var(--gl-icon-color-warning,var(--gl-text-color-warning,#995715))}.gl-fill-status-brand{fill:var(--gl-status-brand-icon-color,var(--gl-color-purple-500,#7b58cf))}.gl-fill-status-danger{fill:var(--gl-status-danger-icon-color,var(--gl-color-red-500,#dd2b0e))}.gl-fill-status-info{fill:var(--gl-status-info-icon-color,var(--gl-color-blue-500,#1f75cb))}.gl-fill-status-neutral{fill:var(--gl-status-neutral-icon-color,var(--gl-color-neutral-500,#737278))}.gl-fill-status-success{fill:var(--gl-status-success-icon-color,var(--gl-color-green-500,#108548))}.gl-fill-status-warning{fill:var(--gl-status-warning-icon-color,var(--gl-color-orange-500,#ab6100))}.\!gl-p-0{padding:0!important}.\!gl-p-2{padding:.25rem!important}.\!gl-p-4{padding:.75rem!important}.gl-p-0{padding:0}.gl-p-1{padding:.125rem}.gl-p-2{padding:.25rem}.gl-p-3{padding:.5rem}.gl-p-4{padding:.75rem}.gl-p-5{padding:1rem}.gl-p-7{padding:2rem}.gl-p-8{padding:2.5rem}.\!gl-px-2{padding-left:.25rem!important;padding-right:.25rem!important}.\!gl-px-3{padding-left:.5rem!important;padding-right:.5rem!important}.\!gl-py-2{padding-bottom:.25rem!important;padding-top:.25rem!important}.gl-px-1{padding-left:.125rem;padding-right:.125rem}.gl-px-2{padding-left:.25rem;padding-right:.25rem}.gl-px-3{padding-left:.5rem;padding-right:.5rem}.gl-px-4{padding-left:.75rem;padding-right:.75rem}.gl-px-5{padding-left:1rem;padding-right:1rem}.gl-py-2{padding-bottom:.25rem;padding-top:.25rem}.gl-py-3{padding-bottom:.5rem;padding-top:.5rem}.gl-py-4{padding-bottom:.75rem;padding-top:.75rem}.gl-py-5{padding-bottom:1rem;padding-top:1rem}.gl-py-6{padding-bottom:1.5rem;padding-top:1.5rem}.\!gl-pr-7{padding-right:2rem!important}.\!gl-pr-9{padding-right:3rem!important}.\!gl-pt-0{padding-top:0!important}.gl-pb-10{padding-bottom:3.5rem}.gl-pb-2{padding-bottom:.25rem}.gl-pb-3{padding-bottom:.5rem}.gl-pb-5{padding-bottom:1rem}.gl-pl-0{padding-left:0}.gl-pl-2{padding-left:.25rem}.gl-pl-4{padding-left:.75rem}.gl-pl-5{padding-left:1rem}.gl-pl-6{padding-left:1.5rem}.gl-pl-7{padding-left:2rem}.gl-pr-10{padding-right:3.5rem}.gl-pr-2{padding-right:.25rem}.gl-pr-5{padding-right:1rem}.gl-pr-6{padding-right:1.5rem}.gl-pr-8{padding-right:2.5rem}.gl-pt-1{padding-top:.125rem}.gl-pt-2{padding-top:.25rem}.gl-pt-3{padding-top:.5rem}.\!gl-text-left{text-align:left!important}.gl-text-center{text-align:center}.gl-text-right{text-align:right}.gl-align-middle{vertical-align:middle}.\!gl-align-text-bottom{vertical-align:text-bottom!important}.gl-font-regular{font-family:var(--default-regular-font,"GitLab Sans"),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.\!gl-text-sm{font-size:.75rem!important}.gl-text-base{font-size:.875rem}.gl-text-lg{font-size:1rem}.gl-text-size-h-display{font-size:1.75rem}.gl-text-sm{font-size:.75rem}.gl-text-xs{font-size:.625rem}.gl-font-bold{font-weight:600}.gl-font-normal{font-weight:400}.gl-capitalize{text-transform:capitalize}.gl-leading-1{line-height:1}.gl-leading-36{line-height:2.25rem}.gl-leading-normal{line-height:1rem}.\!gl-text-red-500{color:var(--red-500,#dd2b0e)!important}.\!gl-text-subtle{color:var(--gl-text-color-subtle,var(--gl-color-neutral-600,#626168))!important}.\!gl-text-white{color:var(--white,#fff)!important}.gl-text-blue-100{color:var(--blue-100,#cbe2f9)}.gl-text-blue-500{color:var(--blue-500,#1f75cb)}.gl-text-danger{color:var(--gl-text-color-danger,var(--gl-color-red-600,#c02f12))}.gl-text-default{color:var(--gl-text-color-default,var(--gl-color-neutral-800,#3a383f))}.gl-text-feedback-danger{color:var(--gl-feedback-danger-text-color,var(--gl-color-red-700,#a32c12))}.gl-text-feedback-info{color:var(--gl-feedback-info-text-color,var(--gl-color-blue-700,#2f5ca0))}.gl-text-feedback-neutral{color:var(--gl-feedback-neutral-text-color,var(--gl-color-neutral-700,#4c4b51))}.gl-text-feedback-strong{color:var(--gl-feedback-strong-text-color,var(--gl-color-neutral-0,#fff))}.gl-text-feedback-success{color:var(--gl-feedback-success-text-color,var(--gl-color-green-700,#306440))}.gl-text-feedback-warning{color:var(--gl-feedback-warning-text-color,var(--gl-color-orange-700,#894b16))}.gl-text-gray-500{color:var(--gray-500,#737278)}.gl-text-gray-700{color:var(--gray-700,#4c4b51)}.gl-text-gray-900{color:var(--gray-900,#28272d)}.gl-text-green-500{color:var(--green-500,#108548)}.gl-text-green-600{color:var(--green-600,#2f7549)}.gl-text-inherit{color:inherit}.gl-text-neutral-0{color:var(--gl-color-neutral-0,#fff)}.gl-text-neutral-950{color:var(--gl-color-neutral-950,#18171d)}.gl-text-orange-500{color:var(--orange-500,#ab6100)}.gl-text-red-300{color:var(--red-300,#f57f6c)}.gl-text-red-500{color:var(--red-500,#dd2b0e)}.gl-text-secondary{color:var(--gl-text-secondary,#737278)}.gl-text-status-brand{color:var(--gl-status-brand-text-color,var(--gl-color-purple-700,#5c47a6))}.gl-text-status-danger{color:var(--gl-status-danger-text-color,var(--gl-color-red-700,#a32c12))}.gl-text-status-info{color:var(--gl-status-info-text-color,var(--gl-color-blue-700,#2f5ca0))}.gl-text-status-neutral{color:var(--gl-status-neutral-text-color,var(--gl-color-neutral-700,#4c4b51))}.gl-text-status-success{color:var(--gl-status-success-text-color,var(--gl-color-green-700,#306440))}.gl-text-status-warning{color:var(--gl-status-warning-text-color,var(--gl-color-orange-700,#894b16))}.gl-text-strong{color:var(--gl-text-color-strong,var(--gl-color-neutral-950,#18171d))}.gl-text-subtle{color:var(--gl-text-color-subtle,var(--gl-color-neutral-600,#626168))}.gl-text-white{color:var(--white,#fff)}.\!gl-opacity-0{opacity:0!important}.gl-opacity-10{opacity:1}.gl-shadow-inner-1-red-300{--tw-shadow:inset 0 0 0 1px var(--red-300,#f57f6c);--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)}.gl-shadow-inner-1-red-300,.gl-shadow-inner-1-red-500{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.gl-shadow-inner-1-red-500{--tw-shadow:inset 0 0 0 1px var(--red-500,#dd2b0e);--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)}.gl-shadow-lg{--tw-shadow:0 0 2px var(--gl-shadow-color-default,#05050629),0 0 2px var(--gl-shadow-color-default,#05050629),0 4px 12px var(--gl-shadow-color-default,#05050629);--tw-shadow-colored:0 0 2px var(--tw-shadow-color),0 0 2px var(--tw-shadow-color),0 4px 12px var(--tw-shadow-color)}.gl-shadow-lg,.gl-shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.gl-shadow-md{--tw-shadow:0 0 1px var(--gl-shadow-color-default,#05050629),0 0 2px var(--gl-shadow-color-default,#05050629),0 2px 8px var(--gl-shadow-color-default,#05050629);--tw-shadow-colored:0 0 1px var(--tw-shadow-color),0 0 2px var(--tw-shadow-color),0 2px 8px var(--tw-shadow-color)}.gl-shadow-sm{--tw-shadow:0 0 2px var(--gl-shadow-color-default,#05050629),0 1px 4px var(--gl-shadow-color-default,#05050629);--tw-shadow-colored:0 0 2px var(--tw-shadow-color),0 1px 4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.gl-outline-none{outline:2px solid #0000;outline-offset:2px}.gl-transition-all{transition-duration:.2s;transition-property:all;transition-timing-function:ease}.gl-font-monospace{font-family:var(--default-mono-font,"GitLab Mono"),"JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace;font-variant-ligatures:none}.gl-border-b-solid{border-bottom-style:solid}.gl-border-t-solid{border-top-style:solid}.hover\:\!gl-cursor-not-allowed:hover{cursor:not-allowed!important}.hover\:gl-cursor-pointer:hover{cursor:pointer}.focus\:\!gl-focus-inset:focus{box-shadow:inset 0 0 0 2px var(--gl-focus-ring-outer-color),inset 0 0 0 3px var(--gl-focus-ring-inner-color),inset 0 0 0 1px var(--gl-focus-ring-inner-color)!important;outline:none!important}@media (min-width:576px){.sm\:gl-block{display:block}.sm\:\!gl-hidden{display:none!important}.sm\:gl-flex-nowrap{flex-wrap:nowrap}.sm\:gl-gap-3{gap:.5rem}}@media (min-width:768px){.md\:gl-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}
|
|
1
|
+
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.gl-animate-skeleton-loader{background-color:var(--gl-skeleton-loader-background-color);background-image:linear-gradient(to right,var(--gl-skeleton-loader-background-color) 0,var(--gl-skeleton-loader-shimmer-color) 23%,var(--gl-skeleton-loader-shimmer-color) 27%,var(--gl-skeleton-loader-background-color) 50%);background-position:-32rem 0;background-repeat:no-repeat;background-size:32rem 100%;max-width:32rem;overflow:hidden}@media (prefers-reduced-motion:no-preference){.gl-animate-skeleton-loader{animation:gl-keyframes-skeleton-loader 2.5s linear;animation-delay:inherit;animation-iteration-count:3}}@keyframes gl-keyframes-skeleton-loader{0%{background-position-x:-32rem}to{background-position-x:32rem}}.gl-border{border-color:var(--gl-border-color-default);border-style:solid}.gl-border-t{border-top-color:var(--gl-border-color-default);border-top-style:solid}.gl-border-b{border-bottom-color:var(--gl-border-color-default);border-bottom-style:solid}.gl-heading-4{font-size:1rem;letter-spacing:inherit}.gl-heading-2,.gl-heading-4{color:var(--gl-text-color-heading);font-weight:600;line-height:1.25;margin-bottom:1rem;margin-top:0}.gl-heading-2{font-size:clamp(1.3125rem,.8680555556rem + .9259259259vw,1.5625rem);letter-spacing:-.01em}.gl-sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.gl-pointer-events-none{pointer-events:none}.gl-pointer-events-auto{pointer-events:auto}.gl-invisible{visibility:hidden}.gl-collapse{visibility:collapse}.gl-static{position:static}.gl-fixed{position:fixed}.\!gl-absolute{position:absolute!important}.gl-absolute{position:absolute}.gl-relative{position:relative}.gl-sticky{position:sticky}.gl-top-0{top:0}.\!gl-z-9999{z-index:9999!important}.gl-z-9999{z-index:9999}.gl-float-right{float:right}.\!gl-m-0{margin:0!important}.gl-m-0{margin:0}.gl-m-7{margin:2rem}.gl-m-auto{margin:auto}.\!gl-mx-2{margin-left:.25rem!important;margin-right:.25rem!important}.-gl-mx-1{margin-left:-.125rem;margin-right:-.125rem}.-gl-mx-4{margin-left:-.75rem;margin-right:-.75rem}.-gl-my-1{margin-bottom:-.125rem;margin-top:-.125rem}.-gl-my-3{margin-bottom:-.5rem;margin-top:-.5rem}.gl-mx-2{margin-left:.25rem;margin-right:.25rem}.gl-mx-4{margin-left:.75rem;margin-right:.75rem}.gl-mx-auto{margin-left:auto;margin-right:auto}.gl-my-0{margin-bottom:0;margin-top:0}.gl-my-3{margin-bottom:.5rem;margin-top:.5rem}.gl-my-5{margin-bottom:1rem;margin-top:1rem}.\!gl-mb-2{margin-bottom:.25rem!important}.\!gl-mb-4{margin-bottom:.75rem!important}.\!gl-mt-2{margin-top:.25rem!important}.-gl-ml-2{margin-left:-.25rem}.-gl-mr-3{margin-right:-.5rem}.-gl-mt-2{margin-top:-.25rem}.gl-mb-0{margin-bottom:0}.gl-mb-2{margin-bottom:.25rem}.gl-mb-3{margin-bottom:.5rem}.gl-mb-4{margin-bottom:.75rem}.gl-mb-5{margin-bottom:1rem}.gl-mb-8{margin-bottom:2.5rem}.gl-ml-1{margin-left:.125rem}.gl-ml-2{margin-left:.25rem}.gl-ml-3{margin-left:.5rem}.gl-ml-5{margin-left:1rem}.gl-ml-6{margin-left:1.5rem}.gl-mr-1{margin-right:.125rem}.gl-mr-2{margin-right:.25rem}.gl-mr-3{margin-right:.5rem}.gl-mr-4{margin-right:.75rem}.gl-mr-auto{margin-right:auto}.gl-mt-0{margin-top:0}.gl-mt-2{margin-top:.25rem}.gl-mt-3{margin-top:.5rem}.gl-mt-4{margin-top:.75rem}.gl-mt-5{margin-top:1rem}.gl-mt-6{margin-top:1.5rem}.\!gl-block{display:block!important}.gl-block{display:block}.gl-inline-block{display:inline-block}.\!gl-flex{display:flex!important}.gl-flex{display:flex}.gl-inline-flex{display:inline-flex}.gl-table{display:table}.gl-grid{display:grid}.\!gl-hidden{display:none!important}.gl-hidden{display:none}.gl-h-0{height:0}.gl-h-11{height:4rem}.gl-h-4{height:.75rem}.gl-h-5{height:1rem}.gl-h-62{height:31rem}.gl-h-auto{height:auto}.gl-h-full{height:100%}.gl-h-screen{height:100vh}.gl-min-h-8{min-height:2.5rem}.\!gl-w-31{width:15.5rem!important}.\!gl-w-auto{width:auto!important}.gl-w-1\/5{width:20%}.gl-w-10{width:3.5rem}.gl-w-12{width:5rem}.gl-w-20{width:10rem}.gl-w-3\/4{width:75%}.gl-w-30{width:15rem}.gl-w-4\/10{width:40%}.gl-w-5{width:1rem}.gl-w-auto{width:auto}.gl-w-full{width:100%}.gl-min-w-0{min-width:0}.\!gl-max-w-20{max-width:10rem!important}.\!gl-max-w-26{max-width:13rem!important}.\!gl-max-w-30{max-width:15rem!important}.gl-max-w-1\/2{max-width:50%}.gl-max-w-48{max-width:24rem}.gl-max-w-75{max-width:37.5rem}.gl-max-w-full{max-width:100%}.gl-flex-1{flex:1 1 0%}.gl-flex-auto{flex:1 1 auto}.gl-flex-shrink-0,.gl-shrink-0{flex-shrink:0}.gl-grow{flex-grow:1}.gl-basis-0{flex-basis:0}.\!gl-cursor-not-allowed{cursor:not-allowed!important}.\!gl-cursor-text{cursor:text!important}.gl-cursor-default{cursor:default}.gl-cursor-pointer{cursor:pointer}.gl-cursor-text{cursor:text}.gl-select-none{-webkit-user-select:none;user-select:none}.gl-list-none{list-style-type:none}.gl-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.gl-flex-row{flex-direction:row}.gl-flex-col{flex-direction:column}.gl-flex-wrap{flex-wrap:wrap}.gl-flex-nowrap{flex-wrap:nowrap}.gl-place-items-center{place-items:center}.gl-content-center{align-content:center}.gl-items-start{align-items:flex-start}.gl-items-center{align-items:center}.gl-items-baseline{align-items:baseline}.\!gl-justify-start{justify-content:flex-start!important}.gl-justify-end{justify-content:flex-end}.gl-justify-center{justify-content:center}.gl-justify-between{justify-content:space-between}.gl-gap-2{gap:.25rem}.gl-gap-3{gap:.5rem}.gl-gap-5{gap:1rem}.gl-gap-6{gap:1.5rem}.gl-gap-x-3{column-gap:.5rem}.gl-self-start{align-self:flex-start}.gl-self-center{align-self:center}.gl-overflow-hidden{overflow:hidden}.\!gl-overflow-visible{overflow:visible!important}.gl-overflow-visible{overflow:visible}.gl-overflow-y-auto{overflow-y:auto}.gl-overflow-x-hidden{overflow-x:hidden}.gl-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\!gl-text-ellipsis{text-overflow:ellipsis!important}.gl-text-ellipsis{text-overflow:ellipsis}.gl-whitespace-nowrap{white-space:nowrap}.gl-whitespace-pre-line{white-space:pre-line}.gl-break-words{overflow-wrap:break-word}.\!gl-rounded-base{border-radius:.25rem!important}.\!gl-rounded-none{border-radius:0!important}.gl-rounded-base{border-radius:.25rem}.gl-rounded-full{border-radius:50%}.gl-rounded-lg{border-radius:.5rem}.gl-rounded-t-base{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.gl-border{border-width:1px}.\!gl-border-b-0{border-bottom-width:0!important}.gl-border-b,.gl-border-b-1{border-bottom-width:1px}.gl-border-t,.gl-border-t-1{border-top-width:1px}.gl-border-t-2{border-top-width:2px}.gl-border-dashed{border-style:dashed}.gl-border-none{border-style:none}.gl-border-default{border-color:var(--gl-border-color-default,var(--gl-color-neutral-100,#dcdcde))}.gl-border-dropdown{border-color:var(--gl-dropdown-border-color,var(--gl-border-color-strong,#bfbfc3))}.gl-border-gray-500{border-color:var(--gray-500,#737278)}.gl-border-section{border-color:var(--gl-border-color-section,var(--gl-border-color-default,#dcdcde))}.gl-border-strong{border-color:var(--gl-border-color-strong,var(--gl-color-neutral-200,#bfbfc3))}.gl-border-subtle{border-color:var(--gl-border-color-subtle,var(--gl-color-neutral-50,#ececef))}.gl-border-b-dropdown-divider{border-bottom-color:var(--gl-dropdown-divider-color,var(--gl-border-color-default,#dcdcde))}.gl-border-b-section{border-bottom-color:var(--gl-border-color-section,var(--gl-border-color-default,#dcdcde))}.gl-border-t-blue-500{border-top-color:var(--blue-500,#1f75cb)}.gl-border-t-dropdown-divider{border-top-color:var(--gl-dropdown-divider-color,var(--gl-border-color-default,#dcdcde))}.gl-border-t-red-500{border-top-color:var(--red-500,#dd2b0e)}.\!gl-bg-data-viz-green-700{background-color:var(--data-viz-green-700,#366800)!important}.\!gl-bg-data-viz-magenta-950{background-color:var(--data-viz-magenta-950,#541d31)!important}.gl-bg-blue-100{background-color:var(--blue-100,#cbe2f9)}.gl-bg-default{background-color:var(--gl-background-color-default,var(--gl-color-neutral-0,#fff))}.gl-bg-dropdown{background-color:var(--gl-dropdown-background-color,var(--gl-background-color-overlap,#fff))}.gl-bg-feedback-danger{background-color:var(--gl-feedback-danger-background-color,var(--gl-color-red-50,#fcf1ef))}.gl-bg-feedback-info{background-color:var(--gl-feedback-info-background-color,var(--gl-color-blue-50,#e9f3fc))}.gl-bg-feedback-neutral{background-color:var(--gl-feedback-neutral-background-color,var(--gl-color-neutral-50,#ececef))}.gl-bg-feedback-strong{background-color:var(--gl-feedback-strong-background-color,var(--gl-color-neutral-800,#3a383f))}.gl-bg-feedback-success{background-color:var(--gl-feedback-success-background-color,var(--gl-color-green-50,#ecf4ee))}.gl-bg-feedback-warning{background-color:var(--gl-feedback-warning-background-color,var(--gl-color-orange-50,#fdf1dd))}.gl-bg-gray-50{background-color:var(--gray-50,#ececef)}.gl-bg-gray-900{background-color:var(--gray-900,#28272d)}.gl-bg-gray-950{background-color:var(--gray-950,#18171d)}.gl-bg-green-100{background-color:var(--green-100,#c3e6cd)}.gl-bg-overlap{background-color:var(--gl-background-color-overlap,var(--gl-color-neutral-0,#fff))}.gl-bg-overlay{background-color:var(--gl-background-color-overlay,var(--gl-color-alpha-dark-24,#0505063d))}.gl-bg-purple-50{background-color:var(--purple-50,#f4f0ff)}.gl-bg-red-100{background-color:var(--red-100,#fdd4cd)}.gl-bg-section{background-color:var(--gl-background-color-section,var(--gl-color-neutral-0,#fff))}.gl-bg-status-brand{background-color:var(--gl-status-brand-background-color,var(--gl-color-purple-100,#e1d8f9))}.gl-bg-status-danger{background-color:var(--gl-status-danger-background-color,var(--gl-color-red-100,#fdd4cd))}.gl-bg-status-info{background-color:var(--gl-status-info-background-color,var(--gl-color-blue-100,#cbe2f9))}.gl-bg-status-neutral{background-color:var(--gl-status-neutral-background-color,var(--gl-color-neutral-100,#dcdcde))}.gl-bg-status-success{background-color:var(--gl-status-success-background-color,var(--gl-color-green-100,#c3e6cd))}.gl-bg-status-warning{background-color:var(--gl-status-warning-background-color,var(--gl-color-orange-100,#f5d9a8))}.gl-bg-strong{background-color:var(--gl-background-color-strong,var(--gl-color-neutral-50,#ececef))}.gl-bg-subtle{background-color:var(--gl-background-color-subtle,var(--gl-color-neutral-10,#fbfafd))}.gl-bg-transparent{background-color:initial}.gl-bg-white{background-color:var(--white,#fff)}.gl-fill-current{fill:currentColor}.gl-fill-feedback-danger{fill:var(--gl-feedback-danger-icon-color,var(--gl-color-red-600,#c02f12))}.gl-fill-feedback-info{fill:var(--gl-feedback-info-icon-color,var(--gl-color-blue-600,#2f68b4))}.gl-fill-feedback-neutral{fill:var(--gl-feedback-neutral-icon-color,var(--gl-color-neutral-600,#626168))}.gl-fill-feedback-strong{fill:var(--gl-feedback-strong-icon-color,var(--gl-color-neutral-0,#fff))}.gl-fill-feedback-success{fill:var(--gl-feedback-success-icon-color,var(--gl-color-green-600,#2f7549))}.gl-fill-feedback-warning{fill:var(--gl-feedback-warning-icon-color,var(--gl-color-orange-600,#995715))}.gl-fill-icon-danger{fill:var(--gl-icon-color-danger,var(--gl-text-color-danger,#c02f12))}.gl-fill-icon-default{fill:var(--gl-icon-color-default,var(--gl-text-color-default,#3a383f))}.gl-fill-icon-disabled{fill:var(--gl-icon-color-disabled,var(--gl-text-color-disabled,#89888d))}.gl-fill-icon-info{fill:var(--gl-icon-color-info,var(--gl-color-blue-700,#2f5ca0))}.gl-fill-icon-link{fill:var(--gl-icon-color-link,var(--gl-text-color-link,#2f5ca0))}.gl-fill-icon-strong{fill:var(--gl-icon-color-strong,var(--gl-text-color-strong,#18171d))}.gl-fill-icon-subtle{fill:var(--gl-icon-color-subtle,var(--gl-text-color-subtle,#626168))}.gl-fill-icon-success{fill:var(--gl-icon-color-success,var(--gl-text-color-success,#2f7549))}.gl-fill-icon-warning{fill:var(--gl-icon-color-warning,var(--gl-text-color-warning,#995715))}.gl-fill-status-brand{fill:var(--gl-status-brand-icon-color,var(--gl-color-purple-500,#7b58cf))}.gl-fill-status-danger{fill:var(--gl-status-danger-icon-color,var(--gl-color-red-500,#dd2b0e))}.gl-fill-status-info{fill:var(--gl-status-info-icon-color,var(--gl-color-blue-500,#1f75cb))}.gl-fill-status-neutral{fill:var(--gl-status-neutral-icon-color,var(--gl-color-neutral-500,#737278))}.gl-fill-status-success{fill:var(--gl-status-success-icon-color,var(--gl-color-green-500,#108548))}.gl-fill-status-warning{fill:var(--gl-status-warning-icon-color,var(--gl-color-orange-500,#ab6100))}.\!gl-p-0{padding:0!important}.\!gl-p-2{padding:.25rem!important}.\!gl-p-4{padding:.75rem!important}.gl-p-0{padding:0}.gl-p-1{padding:.125rem}.gl-p-2{padding:.25rem}.gl-p-3{padding:.5rem}.gl-p-4{padding:.75rem}.gl-p-5{padding:1rem}.gl-p-7{padding:2rem}.gl-p-8{padding:2.5rem}.\!gl-px-2{padding-left:.25rem!important;padding-right:.25rem!important}.\!gl-px-3{padding-left:.5rem!important;padding-right:.5rem!important}.\!gl-py-2{padding-bottom:.25rem!important;padding-top:.25rem!important}.gl-px-1{padding-left:.125rem;padding-right:.125rem}.gl-px-2{padding-left:.25rem;padding-right:.25rem}.gl-px-3{padding-left:.5rem;padding-right:.5rem}.gl-px-4{padding-left:.75rem;padding-right:.75rem}.gl-px-5{padding-left:1rem;padding-right:1rem}.gl-py-2{padding-bottom:.25rem;padding-top:.25rem}.gl-py-3{padding-bottom:.5rem;padding-top:.5rem}.gl-py-4{padding-bottom:.75rem;padding-top:.75rem}.gl-py-5{padding-bottom:1rem;padding-top:1rem}.gl-py-6{padding-bottom:1.5rem;padding-top:1.5rem}.\!gl-pr-7{padding-right:2rem!important}.\!gl-pr-9{padding-right:3rem!important}.\!gl-pt-0{padding-top:0!important}.gl-pb-10{padding-bottom:3.5rem}.gl-pb-2{padding-bottom:.25rem}.gl-pb-3{padding-bottom:.5rem}.gl-pb-5{padding-bottom:1rem}.gl-pl-0{padding-left:0}.gl-pl-2{padding-left:.25rem}.gl-pl-4{padding-left:.75rem}.gl-pl-5{padding-left:1rem}.gl-pl-6{padding-left:1.5rem}.gl-pl-7{padding-left:2rem}.gl-pr-10{padding-right:3.5rem}.gl-pr-2{padding-right:.25rem}.gl-pr-5{padding-right:1rem}.gl-pr-6{padding-right:1.5rem}.gl-pr-8{padding-right:2.5rem}.gl-pt-1{padding-top:.125rem}.gl-pt-2{padding-top:.25rem}.gl-pt-3{padding-top:.5rem}.\!gl-text-left{text-align:left!important}.gl-text-center{text-align:center}.gl-text-right{text-align:right}.gl-align-middle{vertical-align:middle}.\!gl-align-text-bottom{vertical-align:text-bottom!important}.gl-font-regular{font-family:var(--default-regular-font,"GitLab Sans"),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.\!gl-text-sm{font-size:.75rem!important}.gl-text-base{font-size:.875rem}.gl-text-lg{font-size:1rem}.gl-text-size-h-display{font-size:1.75rem}.gl-text-sm{font-size:.75rem}.gl-text-xs{font-size:.625rem}.gl-font-bold{font-weight:600}.gl-font-normal{font-weight:400}.gl-capitalize{text-transform:capitalize}.gl-leading-1{line-height:1}.gl-leading-36{line-height:2.25rem}.gl-leading-normal{line-height:1rem}.\!gl-text-red-500{color:var(--red-500,#dd2b0e)!important}.\!gl-text-subtle{color:var(--gl-text-color-subtle,var(--gl-color-neutral-600,#626168))!important}.\!gl-text-white{color:var(--white,#fff)!important}.gl-text-blue-100{color:var(--blue-100,#cbe2f9)}.gl-text-blue-500{color:var(--blue-500,#1f75cb)}.gl-text-danger{color:var(--gl-text-color-danger,var(--gl-color-red-600,#c02f12))}.gl-text-default{color:var(--gl-text-color-default,var(--gl-color-neutral-800,#3a383f))}.gl-text-feedback-danger{color:var(--gl-feedback-danger-text-color,var(--gl-color-red-700,#a32c12))}.gl-text-feedback-info{color:var(--gl-feedback-info-text-color,var(--gl-color-blue-700,#2f5ca0))}.gl-text-feedback-neutral{color:var(--gl-feedback-neutral-text-color,var(--gl-color-neutral-700,#4c4b51))}.gl-text-feedback-strong{color:var(--gl-feedback-strong-text-color,var(--gl-color-neutral-0,#fff))}.gl-text-feedback-success{color:var(--gl-feedback-success-text-color,var(--gl-color-green-700,#306440))}.gl-text-feedback-warning{color:var(--gl-feedback-warning-text-color,var(--gl-color-orange-700,#894b16))}.gl-text-gray-500{color:var(--gray-500,#737278)}.gl-text-gray-700{color:var(--gray-700,#4c4b51)}.gl-text-gray-900{color:var(--gray-900,#28272d)}.gl-text-green-500{color:var(--green-500,#108548)}.gl-text-green-600{color:var(--green-600,#2f7549)}.gl-text-inherit{color:inherit}.gl-text-neutral-0{color:var(--gl-color-neutral-0,#fff)}.gl-text-neutral-950{color:var(--gl-color-neutral-950,#18171d)}.gl-text-orange-500{color:var(--orange-500,#ab6100)}.gl-text-red-300{color:var(--red-300,#f57f6c)}.gl-text-red-500{color:var(--red-500,#dd2b0e)}.gl-text-secondary{color:var(--gl-text-secondary,#737278)}.gl-text-status-brand{color:var(--gl-status-brand-text-color,var(--gl-color-purple-700,#5c47a6))}.gl-text-status-danger{color:var(--gl-status-danger-text-color,var(--gl-color-red-700,#a32c12))}.gl-text-status-info{color:var(--gl-status-info-text-color,var(--gl-color-blue-700,#2f5ca0))}.gl-text-status-neutral{color:var(--gl-status-neutral-text-color,var(--gl-color-neutral-700,#4c4b51))}.gl-text-status-success{color:var(--gl-status-success-text-color,var(--gl-color-green-700,#306440))}.gl-text-status-warning{color:var(--gl-status-warning-text-color,var(--gl-color-orange-700,#894b16))}.gl-text-strong{color:var(--gl-text-color-strong,var(--gl-color-neutral-950,#18171d))}.gl-text-subtle{color:var(--gl-text-color-subtle,var(--gl-color-neutral-600,#626168))}.gl-text-white{color:var(--white,#fff)}.\!gl-opacity-0{opacity:0!important}.gl-opacity-10{opacity:1}.gl-shadow-inner-1-red-300{--tw-shadow:inset 0 0 0 1px var(--red-300,#f57f6c);--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)}.gl-shadow-inner-1-red-300,.gl-shadow-inner-1-red-500{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.gl-shadow-inner-1-red-500{--tw-shadow:inset 0 0 0 1px var(--red-500,#dd2b0e);--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)}.gl-shadow-lg{--tw-shadow:0 0 2px var(--gl-shadow-color-default,#05050629),0 0 2px var(--gl-shadow-color-default,#05050629),0 4px 12px var(--gl-shadow-color-default,#05050629);--tw-shadow-colored:0 0 2px var(--tw-shadow-color),0 0 2px var(--tw-shadow-color),0 4px 12px var(--tw-shadow-color)}.gl-shadow-lg,.gl-shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.gl-shadow-md{--tw-shadow:0 0 1px var(--gl-shadow-color-default,#05050629),0 0 2px var(--gl-shadow-color-default,#05050629),0 2px 8px var(--gl-shadow-color-default,#05050629);--tw-shadow-colored:0 0 1px var(--tw-shadow-color),0 0 2px var(--tw-shadow-color),0 2px 8px var(--tw-shadow-color)}.gl-shadow-sm{--tw-shadow:0 0 2px var(--gl-shadow-color-default,#05050629),0 1px 4px var(--gl-shadow-color-default,#05050629);--tw-shadow-colored:0 0 2px var(--tw-shadow-color),0 1px 4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.gl-outline-none{outline:2px solid #0000;outline-offset:2px}.gl-transition-all{transition-duration:.2s;transition-property:all;transition-timing-function:ease}.gl-font-monospace{font-family:var(--default-mono-font,"GitLab Mono"),"JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace;font-variant-ligatures:none}.gl-border-b-solid{border-bottom-style:solid}.gl-border-t-solid{border-top-style:solid}.hover\:\!gl-cursor-not-allowed:hover{cursor:not-allowed!important}.hover\:gl-cursor-pointer:hover{cursor:pointer}.focus\:\!gl-focus-inset:focus{box-shadow:inset 0 0 0 2px var(--gl-focus-ring-outer-color),inset 0 0 0 3px var(--gl-focus-ring-inner-color),inset 0 0 0 1px var(--gl-focus-ring-inner-color)!important;outline:none!important}@media (min-width:576px){.sm\:gl-block{display:block}.sm\:\!gl-hidden{display:none!important}.sm\:gl-flex-nowrap{flex-wrap:nowrap}.sm\:gl-gap-3{gap:.5rem}}@media (min-width:768px){.md\:gl-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}
|
|
2
2
|
/*# sourceMappingURL=tailwind.css.map */
|
package/dist/tailwind.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["tailwind.css"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["tailwind.css"],"names":[],"mappings":"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","file":"tailwind.css","sourcesContent":["@tailwind base;\n@tailwind components;\n@tailwind utilities;\n"]}
|
|
@@ -2,7 +2,6 @@ import castArray from 'lodash/castArray';
|
|
|
2
2
|
import merge from 'lodash/merge';
|
|
3
3
|
import { BLUE_500 } from '../../tokens/build/js/tokens';
|
|
4
4
|
import { GlBreakpointInstance } from '../breakpoints';
|
|
5
|
-
import { columnOptions } from '../constants';
|
|
6
5
|
import { areDatesEqual } from '../datetime_utility';
|
|
7
6
|
import { engineeringNotation } from '../number_utils';
|
|
8
7
|
import { hexToRgba } from '../utils';
|
|
@@ -415,8 +414,8 @@ const generateBarSeries = _ref4 => {
|
|
|
415
414
|
let {
|
|
416
415
|
name,
|
|
417
416
|
color,
|
|
417
|
+
stack,
|
|
418
418
|
data = [],
|
|
419
|
-
stack = columnOptions.stacked,
|
|
420
419
|
yAxisIndex = 0
|
|
421
420
|
} = _ref4;
|
|
422
421
|
return {
|
|
@@ -58,8 +58,12 @@ const arrowSymbol = 'path://m5 229 5 8h-10z';
|
|
|
58
58
|
const CHART_TYPE_BAR = 'bar';
|
|
59
59
|
const CHART_TYPE_LINE = 'line';
|
|
60
60
|
|
|
61
|
+
// Constants for "series.stack" option, series with the same value stack on top of each other
|
|
62
|
+
const CHART_DEFAULT_SERIES_STACK = 'default-series-stack';
|
|
63
|
+
const CHART_DEFAULT_SERIES_SECONDARY_STACK = 'default-series-secondary-stack';
|
|
64
|
+
|
|
61
65
|
// Constants for height "auto"
|
|
62
66
|
const HEIGHT_AUTO_CLASSES = 'gl-chart-h-auto gl-flex gl-flex-col gl-h-full';
|
|
63
67
|
const HEIGHT_AUTO_HORIZONTAL_LAYOUT_CLASSES = 'gl-flex gl-h-full';
|
|
64
68
|
|
|
65
|
-
export { ANNOTATIONS_COMPONENT_TYPE, ANNOTATIONS_SERIES_NAME, CHART_TYPE_BAR, CHART_TYPE_LINE, HEIGHT_AUTO_CLASSES, HEIGHT_AUTO_HORIZONTAL_LAYOUT_CLASSES, LEGEND_AVERAGE_TEXT, LEGEND_CURRENT_TEXT, LEGEND_LAYOUT_INLINE, LEGEND_LAYOUT_TABLE, LEGEND_MAX_TEXT, LEGEND_MIN_TEXT, TOOLTIP_LEFT_OFFSET, TOOLTIP_TOP_OFFSET, arrowSymbol };
|
|
69
|
+
export { ANNOTATIONS_COMPONENT_TYPE, ANNOTATIONS_SERIES_NAME, CHART_DEFAULT_SERIES_SECONDARY_STACK, CHART_DEFAULT_SERIES_STACK, CHART_TYPE_BAR, CHART_TYPE_LINE, HEIGHT_AUTO_CLASSES, HEIGHT_AUTO_HORIZONTAL_LAYOUT_CLASSES, LEGEND_AVERAGE_TEXT, LEGEND_CURRENT_TEXT, LEGEND_LAYOUT_INLINE, LEGEND_LAYOUT_TABLE, LEGEND_MAX_TEXT, LEGEND_MIN_TEXT, TOOLTIP_LEFT_OFFSET, TOOLTIP_TOP_OFFSET, arrowSymbol };
|
package/dist/utils/constants.js
CHANGED
|
@@ -207,7 +207,7 @@ const popoverPlacements = {
|
|
|
207
207
|
bottom: 'bottom',
|
|
208
208
|
left: 'left'
|
|
209
209
|
};
|
|
210
|
-
const
|
|
210
|
+
const stackedPresentationOptions = {
|
|
211
211
|
stacked: 'stacked',
|
|
212
212
|
tiled: 'tiled'
|
|
213
213
|
};
|
|
@@ -325,4 +325,4 @@ const loadingIconVariants = {
|
|
|
325
325
|
};
|
|
326
326
|
const isVue3 = Boolean(Vue.Fragment);
|
|
327
327
|
|
|
328
|
-
export { COMMA, CONTRAST_LEVELS, HEX_REGEX, LEFT_MOUSE_BUTTON, alertVariantIconMap, alertVariantOptions, alignOptions, animatedIconVariantOptions, avatarShapeOptions, avatarSizeOptions, avatarsInlineSizeOptions, badgeForButtonOptions, badgeIconSizeOptions, badgeSizeOptions, badgeVariantOptions, bannerVariants, breadCrumbSizeOptions, buttonCategoryOptions, buttonSizeOptions, buttonVariantOptions, colorThemes,
|
|
328
|
+
export { COMMA, CONTRAST_LEVELS, HEX_REGEX, LEFT_MOUSE_BUTTON, alertVariantIconMap, alertVariantOptions, alignOptions, animatedIconVariantOptions, avatarShapeOptions, avatarSizeOptions, avatarsInlineSizeOptions, badgeForButtonOptions, badgeIconSizeOptions, badgeSizeOptions, badgeVariantOptions, bannerVariants, breadCrumbSizeOptions, buttonCategoryOptions, buttonSizeOptions, buttonVariantOptions, colorThemes, datepickerWidthOptionsMap, defaultDateFormat, drawerVariants, dropdownAllowedAutoPlacements, dropdownItemVariantOptions, dropdownPlacements, dropdownVariantOptions, focusableTags, formInputWidths, formStateOptions, iconSizeOptions, iconVariantOptions, isVue3, keyboard, labelColorOptions, linkVariantInline, linkVariantMention, linkVariantMentionCurrent, linkVariantMeta, linkVariantOptions, linkVariantUnstyled, loadingIconSizes, loadingIconVariants, maxZIndex, modalButtonDefaults, modalSizeOptions, popoverPlacements, progressBarVariantOptions, resizeDebounceTime, stackedPresentationOptions, tabsButtonDefaults, targetOptions, toggleLabelPosition, tokenVariants, tooltipActionEvents, tooltipDelay, tooltipPlacements, triggerVariantOptions, truncateOptions, variantCssColorMap, viewModeOptions };
|
package/package.json
CHANGED
|
@@ -7,13 +7,11 @@ button variant.
|
|
|
7
7
|
|
|
8
8
|
A button link is a link that is styled to look like a button, semantically speaking it's a `<a>` tag
|
|
9
9
|
with the necessary classes added to make it look like a button, it shares the same functionality as
|
|
10
|
-
[
|
|
10
|
+
[<gl-link>](?path=/docs/base-link--docs)
|
|
11
11
|
|
|
12
12
|
> Note: Setting a `target` attribute without a `href` attribute, will not create any side effects.
|
|
13
13
|
> Without the presence of a `href` attribute, this component will render a `<button>`.
|
|
14
14
|
|
|
15
|
-
[`<gl-link>`]: ./?path=/story/base-link--default-link
|
|
16
|
-
|
|
17
15
|
## Icon-only button
|
|
18
16
|
|
|
19
17
|
Icon-only buttons must have an accessible name.
|
|
@@ -23,6 +21,66 @@ You can provide one with the `aria-label` attribute, which is read out by screen
|
|
|
23
21
|
<gl-button icon="close" aria-label="Close" />
|
|
24
22
|
```
|
|
25
23
|
|
|
24
|
+
## Type
|
|
25
|
+
|
|
26
|
+
You can specify the button's type by setting the prop `type` to `button`, `submit` or `reset`.
|
|
27
|
+
The default type is `button`.
|
|
28
|
+
|
|
29
|
+
Note the `type` prop has no effect when either `href` or `to` props are set.
|
|
30
|
+
|
|
31
|
+
## Sizing
|
|
32
|
+
|
|
33
|
+
Specify `small` or `medium` via the `size` prop. Defaults to `medium`.
|
|
34
|
+
|
|
35
|
+
```html
|
|
36
|
+
<gl-button size="small">Small Button</gl-button>
|
|
37
|
+
<gl-button>Default Button (medium)</gl-button>
|
|
38
|
+
<gl-button size="medium">Medium Button</gl-button>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Categories
|
|
42
|
+
|
|
43
|
+
Use the `category` prop to set the button category to `primary`, `secondary`, or `tertiary`.
|
|
44
|
+
Defaults to `primary`.
|
|
45
|
+
|
|
46
|
+
## Variants
|
|
47
|
+
|
|
48
|
+
Use the `variant` prop to set the button variant to `default`, `confirm`, `danger`, `dashed`, or `link`.
|
|
49
|
+
Defaults to `default`.
|
|
50
|
+
|
|
51
|
+
## Block level buttons
|
|
52
|
+
|
|
53
|
+
Create block level buttons, those that span the full width of a parent, by setting the `block`
|
|
54
|
+
prop.
|
|
55
|
+
|
|
56
|
+
```html
|
|
57
|
+
<gl-button block>Block Level Button</gl-button>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Disabled state
|
|
61
|
+
|
|
62
|
+
Set the `disabled` prop to disable button default functionality. `disabled` also works with buttons
|
|
63
|
+
rendered as `<a>` elements and `<router-link>` (i.e. with the `href` or `to` prop set).
|
|
64
|
+
|
|
65
|
+
```html
|
|
66
|
+
<gl-button disabled>Disabled</gl-button>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Router link support
|
|
70
|
+
|
|
71
|
+
Refer to the [Router support](?path=/docs/base-link--docs#router-links) reference docs for
|
|
72
|
+
the various supported `<router-link>` related props.
|
|
73
|
+
|
|
74
|
+
## Accessibility
|
|
75
|
+
|
|
76
|
+
When the `href` prop is set to `'#'`, `<gl-button>` will render a link (`<a>`) element with attribute
|
|
77
|
+
`role="button"` set and appropriate keydown listeners (<kbd>Enter</kbd> and <kbd>Space</kbd>) so
|
|
78
|
+
that the link acts like a native HTML `<button>` for screen reader and keyboard-only users. When
|
|
79
|
+
disabled, the `aria-disabled="true"` attribute will be set on the `<a>` element.
|
|
80
|
+
|
|
81
|
+
When the `href` is set to any other value (or the `to` prop is used), `role="button"` will not be
|
|
82
|
+
added, nor will the keyboard event listeners be enabled.
|
|
83
|
+
|
|
26
84
|
## Label button
|
|
27
85
|
|
|
28
86
|
A label button renders a non-interactive `span` styled as a button. This can be especially useful
|
|
@@ -1,79 +1,219 @@
|
|
|
1
1
|
<!-- eslint-disable vue/multi-word-component-names -->
|
|
2
2
|
<script>
|
|
3
|
-
import
|
|
3
|
+
import GlLink from '../link/link.vue';
|
|
4
4
|
import {
|
|
5
5
|
buttonCategoryOptions,
|
|
6
6
|
buttonVariantOptions,
|
|
7
7
|
buttonSizeOptions,
|
|
8
|
+
linkVariantUnstyled,
|
|
8
9
|
} from '../../../utils/constants';
|
|
9
|
-
import { logWarning } from '../../../utils/utils';
|
|
10
|
+
import { logWarning, stopEvent } from '../../../utils/utils';
|
|
10
11
|
import { isSlotEmpty } from '../../../utils/is_slot_empty';
|
|
11
12
|
import { SafeLinkMixin } from '../../mixins/safe_link_mixin';
|
|
13
|
+
import { isEvent } from '../../../vendor/bootstrap-vue/src/utils/inspect';
|
|
12
14
|
import GlIcon from '../icon/icon.vue';
|
|
13
15
|
import GlLoadingIcon from '../loading_icon/loading_icon.vue';
|
|
16
|
+
import { ENTER, SPACE } from '../new_dropdowns/constants';
|
|
14
17
|
|
|
15
18
|
export default {
|
|
16
19
|
name: 'GlButton',
|
|
17
20
|
components: {
|
|
18
|
-
BButton,
|
|
19
21
|
GlIcon,
|
|
20
22
|
GlLoadingIcon,
|
|
21
23
|
},
|
|
22
24
|
mixins: [SafeLinkMixin],
|
|
23
25
|
props: {
|
|
26
|
+
/**
|
|
27
|
+
* Set the category of the button.
|
|
28
|
+
*/
|
|
24
29
|
category: {
|
|
25
30
|
type: String,
|
|
26
31
|
required: false,
|
|
27
32
|
default: buttonCategoryOptions.primary,
|
|
28
33
|
validator: (value) => Object.keys(buttonCategoryOptions).includes(value),
|
|
29
34
|
},
|
|
35
|
+
/**
|
|
36
|
+
* Set the variant of the button.
|
|
37
|
+
*/
|
|
30
38
|
variant: {
|
|
31
39
|
type: String,
|
|
32
40
|
required: false,
|
|
33
41
|
default: buttonVariantOptions.default,
|
|
34
42
|
validator: (value) => Object.keys(buttonVariantOptions).includes(value),
|
|
35
43
|
},
|
|
44
|
+
/**
|
|
45
|
+
* Specify the size of the button. Options are `small` and `medium`.
|
|
46
|
+
*/
|
|
36
47
|
size: {
|
|
37
48
|
type: String,
|
|
38
49
|
required: false,
|
|
39
50
|
default: 'medium',
|
|
40
51
|
validator: (value) => Object.keys(buttonSizeOptions).includes(value),
|
|
41
52
|
},
|
|
53
|
+
/**
|
|
54
|
+
* Style the button as selected.
|
|
55
|
+
*/
|
|
42
56
|
selected: {
|
|
43
57
|
type: Boolean,
|
|
44
58
|
required: false,
|
|
45
59
|
default: false,
|
|
46
60
|
},
|
|
61
|
+
/**
|
|
62
|
+
* Specify an icon to render in the button.
|
|
63
|
+
*/
|
|
47
64
|
icon: {
|
|
48
65
|
type: String,
|
|
49
66
|
required: false,
|
|
50
67
|
default: '',
|
|
51
68
|
},
|
|
69
|
+
/**
|
|
70
|
+
* Render a non-interactive label button, a `span` styled as a button.
|
|
71
|
+
*/
|
|
52
72
|
label: {
|
|
53
73
|
type: Boolean,
|
|
54
74
|
required: false,
|
|
55
75
|
default: false,
|
|
56
76
|
},
|
|
77
|
+
/**
|
|
78
|
+
* Set the loading state of the button.
|
|
79
|
+
*/
|
|
57
80
|
loading: {
|
|
58
81
|
type: Boolean,
|
|
59
82
|
required: false,
|
|
60
83
|
default: false,
|
|
61
84
|
},
|
|
85
|
+
/**
|
|
86
|
+
* CSS classes to add to the button text.
|
|
87
|
+
*/
|
|
62
88
|
buttonTextClasses: {
|
|
63
89
|
type: String,
|
|
64
90
|
required: false,
|
|
65
91
|
default: '',
|
|
66
92
|
},
|
|
93
|
+
/**
|
|
94
|
+
* Renders a 100% width button (expands to the width of its parent container).
|
|
95
|
+
*/
|
|
67
96
|
block: {
|
|
68
97
|
type: Boolean,
|
|
69
98
|
required: false,
|
|
70
99
|
default: false,
|
|
71
100
|
},
|
|
101
|
+
/**
|
|
102
|
+
* Specify the HTML tag to render instead of the default tag.
|
|
103
|
+
*/
|
|
104
|
+
tag: {
|
|
105
|
+
type: String,
|
|
106
|
+
required: false,
|
|
107
|
+
default: 'button',
|
|
108
|
+
},
|
|
109
|
+
/**
|
|
110
|
+
* The value to set the button's `type` attribute to. Can be one of `button`, `submit`, or `reset`.
|
|
111
|
+
*/
|
|
112
|
+
type: {
|
|
113
|
+
type: String,
|
|
114
|
+
required: false,
|
|
115
|
+
default: 'button',
|
|
116
|
+
validator: (value) => ['button', 'submit', 'reset'].includes(value),
|
|
117
|
+
},
|
|
118
|
+
/**
|
|
119
|
+
* Disables the component's functionality and places it in a disabled state.
|
|
120
|
+
*/
|
|
72
121
|
disabled: {
|
|
73
122
|
type: Boolean,
|
|
74
123
|
required: false,
|
|
75
124
|
default: false,
|
|
76
125
|
},
|
|
126
|
+
/**
|
|
127
|
+
* Denotes the target URL of the link for standard links.
|
|
128
|
+
*/
|
|
129
|
+
href: {
|
|
130
|
+
type: String,
|
|
131
|
+
required: false,
|
|
132
|
+
default: undefined,
|
|
133
|
+
},
|
|
134
|
+
/**
|
|
135
|
+
* Skips sanitization of href if true. This should be used sparingly.
|
|
136
|
+
* Consult security team before setting to true.
|
|
137
|
+
*/
|
|
138
|
+
isUnsafeLink: {
|
|
139
|
+
type: Boolean,
|
|
140
|
+
required: false,
|
|
141
|
+
default: false,
|
|
142
|
+
},
|
|
143
|
+
/**
|
|
144
|
+
* Sets the 'rel' attribute on the rendered link.
|
|
145
|
+
*/
|
|
146
|
+
rel: {
|
|
147
|
+
type: String,
|
|
148
|
+
required: false,
|
|
149
|
+
default: null,
|
|
150
|
+
},
|
|
151
|
+
/**
|
|
152
|
+
* Sets the 'target' attribute on the rendered link.
|
|
153
|
+
*/
|
|
154
|
+
target: {
|
|
155
|
+
type: String,
|
|
156
|
+
required: false,
|
|
157
|
+
default: null,
|
|
158
|
+
},
|
|
159
|
+
/**
|
|
160
|
+
* Places the component in the active state with active styling
|
|
161
|
+
*/
|
|
162
|
+
active: {
|
|
163
|
+
type: Boolean,
|
|
164
|
+
required: false,
|
|
165
|
+
default: false,
|
|
166
|
+
},
|
|
167
|
+
/**
|
|
168
|
+
* <router-link> prop: Denotes the target route of the link.
|
|
169
|
+
* When clicked, the value of the to prop will be passed to `router.push()` internally,
|
|
170
|
+
* so the value can be either a string or a Location descriptor object.
|
|
171
|
+
*/
|
|
172
|
+
to: {
|
|
173
|
+
type: [Object, String],
|
|
174
|
+
required: false,
|
|
175
|
+
default: undefined,
|
|
176
|
+
},
|
|
177
|
+
/**
|
|
178
|
+
* <router-link> prop: Configure the active CSS class applied when the link is active.
|
|
179
|
+
*/
|
|
180
|
+
activeClass: {
|
|
181
|
+
type: String,
|
|
182
|
+
required: false,
|
|
183
|
+
default: undefined,
|
|
184
|
+
},
|
|
185
|
+
/**
|
|
186
|
+
* <router-link> prop: Configure the active CSS class applied when the link is active with exact match.
|
|
187
|
+
*/
|
|
188
|
+
exactActiveClass: {
|
|
189
|
+
type: String,
|
|
190
|
+
required: false,
|
|
191
|
+
default: undefined,
|
|
192
|
+
},
|
|
193
|
+
/**
|
|
194
|
+
* <router-link> prop: Setting the replace prop will call `router.replace()` instead of `router.push()`
|
|
195
|
+
* when clicked, so the navigation will not leave a history record.
|
|
196
|
+
*/
|
|
197
|
+
replace: {
|
|
198
|
+
type: Boolean,
|
|
199
|
+
required: false,
|
|
200
|
+
default: false,
|
|
201
|
+
},
|
|
202
|
+
/**
|
|
203
|
+
* <nuxt-link> prop: To improve the responsiveness of your Nuxt.js applications, when the link will be displayed within the viewport,
|
|
204
|
+
* Nuxt.js will automatically prefetch the code splitted page. Setting `prefetch` to `true` or `false` will overwrite the default value of `router.prefetchLinks`
|
|
205
|
+
*/
|
|
206
|
+
prefetch: {
|
|
207
|
+
type: Boolean,
|
|
208
|
+
required: false,
|
|
209
|
+
// Must be `null` to fall back to the value defined in the
|
|
210
|
+
// `nuxt.config.js` configuration file for `router.prefetchLinks`
|
|
211
|
+
// We convert `null` to `undefined`, so that Nuxt.js will use the
|
|
212
|
+
// compiled default
|
|
213
|
+
// Vue treats `undefined` as default of `false` for Boolean props,
|
|
214
|
+
// so we must set it as `null` here to be a true tri-state prop
|
|
215
|
+
default: null,
|
|
216
|
+
},
|
|
77
217
|
},
|
|
78
218
|
computed: {
|
|
79
219
|
hasIcon() {
|
|
@@ -86,7 +226,7 @@ export default {
|
|
|
86
226
|
return this.disabled || this.loading;
|
|
87
227
|
},
|
|
88
228
|
buttonClasses() {
|
|
89
|
-
const classes = ['gl-button'];
|
|
229
|
+
const classes = ['btn', 'gl-button', `btn-${this.variant}`, `btn-${this.buttonSize}`];
|
|
90
230
|
|
|
91
231
|
if (this.category !== buttonCategoryOptions.primary) {
|
|
92
232
|
classes.push(`btn-${this.variant}-${this.category}`);
|
|
@@ -96,10 +236,12 @@ export default {
|
|
|
96
236
|
'btn-icon': this.hasIconOnly,
|
|
97
237
|
'button-ellipsis-horizontal': this.hasIconOnly && this.icon === 'ellipsis_h',
|
|
98
238
|
selected: this.selected,
|
|
239
|
+
'btn-block': this.displayBlock,
|
|
240
|
+
disabled: this.disabled,
|
|
99
241
|
});
|
|
100
242
|
|
|
101
243
|
if (this.label) {
|
|
102
|
-
classes.push('btn', 'btn-label'
|
|
244
|
+
classes.push('btn', 'btn-label');
|
|
103
245
|
}
|
|
104
246
|
|
|
105
247
|
return classes;
|
|
@@ -110,6 +252,83 @@ export default {
|
|
|
110
252
|
displayBlock() {
|
|
111
253
|
return !this.label && this.block;
|
|
112
254
|
},
|
|
255
|
+
isLink() {
|
|
256
|
+
return this.href || this.to;
|
|
257
|
+
},
|
|
258
|
+
isHashLink() {
|
|
259
|
+
return this.isLink && this.href === '#';
|
|
260
|
+
},
|
|
261
|
+
isButton() {
|
|
262
|
+
return this.componentIs === 'button';
|
|
263
|
+
},
|
|
264
|
+
isNonStandardTag() {
|
|
265
|
+
if (this.label) {
|
|
266
|
+
return false;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
return !this.isLink && !this.isButton;
|
|
270
|
+
},
|
|
271
|
+
tabindex() {
|
|
272
|
+
// When disabled remove links and non-standard tags from tab order
|
|
273
|
+
if (this.disabled) {
|
|
274
|
+
return this.isLink || this.isNonStandardTag ? '-1' : this.$attrs.tabindex;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
// Add hash links and non-standard tags to tab order
|
|
278
|
+
return this.isNonStandardTag || this.isHashLink ? '0' : this.$attrs.tabindex;
|
|
279
|
+
},
|
|
280
|
+
computedPropsAndAttributes() {
|
|
281
|
+
const base = {
|
|
282
|
+
// Type only used for "real" buttons
|
|
283
|
+
type: this.isButton ? this.type : null,
|
|
284
|
+
// Disabled only set on "real" buttons
|
|
285
|
+
disabled: this.isButton ? this.isButtonDisabled : null,
|
|
286
|
+
// We add a role of button when the tag is not a link or button or when link has `href` of `#`
|
|
287
|
+
role: this.isNonStandardTag || this.isHashLink ? 'button' : this.$attrs?.role,
|
|
288
|
+
// We set the `aria-disabled` state for non-standard tags
|
|
289
|
+
...(this.isNonStandardTag ? { 'aria-disabled': String(this.disabled) } : {}),
|
|
290
|
+
tabindex: this.tabindex,
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
if (this.isLink) {
|
|
294
|
+
return {
|
|
295
|
+
...this.$attrs,
|
|
296
|
+
...base,
|
|
297
|
+
variant: linkVariantUnstyled,
|
|
298
|
+
disabled: this.disabled,
|
|
299
|
+
href: this.href,
|
|
300
|
+
isUnsafeLink: this.isUnsafeLink,
|
|
301
|
+
rel: this.rel,
|
|
302
|
+
target: this.target,
|
|
303
|
+
active: this.active,
|
|
304
|
+
to: this.to,
|
|
305
|
+
activeClass: this.activeClass,
|
|
306
|
+
exactActiveClass: this.exactActiveClass,
|
|
307
|
+
replace: this.replace,
|
|
308
|
+
prefetch: this.prefetch,
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
return { ...this.$attrs, ...base };
|
|
313
|
+
},
|
|
314
|
+
computedListeners() {
|
|
315
|
+
return {
|
|
316
|
+
click: this.onClick,
|
|
317
|
+
keydown: this.onKeydown,
|
|
318
|
+
...this.$listeners,
|
|
319
|
+
};
|
|
320
|
+
},
|
|
321
|
+
componentIs() {
|
|
322
|
+
if (this.label) {
|
|
323
|
+
return 'span';
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
if (this.isLink) {
|
|
327
|
+
return GlLink;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
return this.tag;
|
|
331
|
+
},
|
|
113
332
|
},
|
|
114
333
|
mounted() {
|
|
115
334
|
// eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots
|
|
@@ -120,20 +339,36 @@ export default {
|
|
|
120
339
|
);
|
|
121
340
|
}
|
|
122
341
|
},
|
|
342
|
+
methods: {
|
|
343
|
+
onKeydown(event) {
|
|
344
|
+
// Skip if disabled
|
|
345
|
+
// Add SPACE keydown handler for link has `href` of `#`
|
|
346
|
+
// Add ENTER handler for non-standard tags
|
|
347
|
+
if (!this.disabled && (this.isNonStandardTag || this.isHashLink)) {
|
|
348
|
+
const { code } = event;
|
|
349
|
+
|
|
350
|
+
if (code === SPACE || (code === ENTER && this.isNonStandardTag)) {
|
|
351
|
+
const target = event.currentTarget || event.target;
|
|
352
|
+
stopEvent(event, { propagation: false });
|
|
353
|
+
target.click();
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
},
|
|
357
|
+
onClick(event) {
|
|
358
|
+
if (this.disabled && isEvent(event)) {
|
|
359
|
+
stopEvent(event);
|
|
360
|
+
}
|
|
361
|
+
},
|
|
362
|
+
},
|
|
123
363
|
};
|
|
124
364
|
</script>
|
|
125
365
|
<template>
|
|
126
366
|
<component
|
|
127
|
-
:is="
|
|
128
|
-
v-bind="
|
|
367
|
+
:is="componentIs"
|
|
368
|
+
v-bind="computedPropsAndAttributes"
|
|
129
369
|
v-safe-link:[safeLinkConfig]
|
|
130
|
-
:block="displayBlock"
|
|
131
|
-
:target="target"
|
|
132
|
-
:variant="variant"
|
|
133
|
-
:size="buttonSize"
|
|
134
|
-
:disabled="isButtonDisabled"
|
|
135
370
|
:class="buttonClasses"
|
|
136
|
-
v-on="
|
|
371
|
+
v-on="computedListeners"
|
|
137
372
|
>
|
|
138
373
|
<gl-loading-icon v-if="loading" inline class="gl-button-icon gl-button-loading-indicator" />
|
|
139
374
|
<gl-icon v-if="hasIcon && !(hasIconOnly && loading)" class="gl-button-icon" :name="icon" />
|
|
@@ -11,9 +11,13 @@ import {
|
|
|
11
11
|
generateBarSeries,
|
|
12
12
|
generateLineSeries,
|
|
13
13
|
} from '../../../utils/charts/config';
|
|
14
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
CHART_TYPE_LINE,
|
|
16
|
+
HEIGHT_AUTO_CLASSES,
|
|
17
|
+
CHART_DEFAULT_SERIES_STACK,
|
|
18
|
+
CHART_DEFAULT_SERIES_SECONDARY_STACK,
|
|
19
|
+
} from '../../../utils/charts/constants';
|
|
15
20
|
import { colorFromDefaultPalette } from '../../../utils/charts/theme';
|
|
16
|
-
import { columnOptions } from '../../../utils/constants';
|
|
17
21
|
import Chart from '../chart/chart.vue';
|
|
18
22
|
import ChartTooltip from '../shared/tooltip/tooltip.vue';
|
|
19
23
|
|
|
@@ -90,7 +94,7 @@ export default {
|
|
|
90
94
|
return Boolean(this.secondaryData.length);
|
|
91
95
|
},
|
|
92
96
|
barSeries() {
|
|
93
|
-
return this.bars.map(({ name, data, stack }, index) => {
|
|
97
|
+
return this.bars.map(({ name, data, stack = CHART_DEFAULT_SERIES_STACK }, index) => {
|
|
94
98
|
const color = colorFromDefaultPalette(index);
|
|
95
99
|
return generateBarSeries({ name, data, stack, color });
|
|
96
100
|
});
|
|
@@ -104,12 +108,14 @@ export default {
|
|
|
104
108
|
},
|
|
105
109
|
secondarySeries() {
|
|
106
110
|
const offset = this.bars.length + this.lines.length;
|
|
107
|
-
return this.secondaryData.map(
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
return this.secondaryData.map(
|
|
112
|
+
({ name, data, type, stack = CHART_DEFAULT_SERIES_SECONDARY_STACK }, index) => {
|
|
113
|
+
const color = colorFromDefaultPalette(offset + index);
|
|
114
|
+
return type === CHART_TYPE_LINE
|
|
115
|
+
? generateLineSeries({ color, name, data, yAxisIndex: 1 })
|
|
116
|
+
: generateBarSeries({ color, name, data, yAxisIndex: 1, stack });
|
|
117
|
+
}
|
|
118
|
+
);
|
|
113
119
|
},
|
|
114
120
|
series() {
|
|
115
121
|
return [...this.barSeries, ...this.lineSeries, ...this.secondarySeries];
|
|
@@ -19,9 +19,11 @@ import {
|
|
|
19
19
|
LEGEND_MAX_TEXT,
|
|
20
20
|
CHART_TYPE_LINE,
|
|
21
21
|
HEIGHT_AUTO_CLASSES,
|
|
22
|
+
CHART_DEFAULT_SERIES_STACK,
|
|
23
|
+
CHART_DEFAULT_SERIES_SECONDARY_STACK,
|
|
22
24
|
} from '../../../utils/charts/constants';
|
|
23
25
|
import { colorFromDefaultPalette } from '../../../utils/charts/theme';
|
|
24
|
-
import {
|
|
26
|
+
import { stackedPresentationOptions } from '../../../utils/constants';
|
|
25
27
|
import TooltipDefaultFormat from '../shared/tooltip/tooltip_default_format/tooltip_default_format.vue';
|
|
26
28
|
import Chart from '../chart/chart.vue';
|
|
27
29
|
import ChartLegend from '../legend/legend.vue';
|
|
@@ -68,8 +70,8 @@ export default {
|
|
|
68
70
|
presentation: {
|
|
69
71
|
type: String,
|
|
70
72
|
required: false,
|
|
71
|
-
default:
|
|
72
|
-
validator: (value) =>
|
|
73
|
+
default: stackedPresentationOptions.stacked,
|
|
74
|
+
validator: (value) => Object.values(stackedPresentationOptions).indexOf(value) !== -1,
|
|
73
75
|
},
|
|
74
76
|
groupBy: {
|
|
75
77
|
type: Array,
|
|
@@ -167,10 +169,18 @@ export default {
|
|
|
167
169
|
return Boolean(this.secondaryData.length);
|
|
168
170
|
},
|
|
169
171
|
barSeries() {
|
|
170
|
-
return this.bars.map(({ name, data }, index) => {
|
|
171
|
-
const stack = this.presentation === 'stacked' ? this.groupBy : null;
|
|
172
|
+
return this.bars.map(({ name, data, stack }, index) => {
|
|
172
173
|
const color = this.getColor(index);
|
|
173
|
-
|
|
174
|
+
const seriesStack =
|
|
175
|
+
this.presentation === stackedPresentationOptions.stacked
|
|
176
|
+
? stack || CHART_DEFAULT_SERIES_STACK
|
|
177
|
+
: null;
|
|
178
|
+
return generateBarSeries({
|
|
179
|
+
stack: seriesStack,
|
|
180
|
+
name,
|
|
181
|
+
data,
|
|
182
|
+
color,
|
|
183
|
+
});
|
|
174
184
|
});
|
|
175
185
|
},
|
|
176
186
|
lineSeries() {
|
|
@@ -182,11 +192,21 @@ export default {
|
|
|
182
192
|
},
|
|
183
193
|
secondarySeries() {
|
|
184
194
|
const offset = this.bars.length + this.lines.length;
|
|
185
|
-
return this.secondaryData.map(({ name, data, type, stack
|
|
195
|
+
return this.secondaryData.map(({ name, data, type, stack }, index) => {
|
|
186
196
|
const color = this.getColor(offset + index);
|
|
197
|
+
const seriesStack =
|
|
198
|
+
this.presentation === stackedPresentationOptions.stacked
|
|
199
|
+
? stack || CHART_DEFAULT_SERIES_SECONDARY_STACK
|
|
200
|
+
: null;
|
|
187
201
|
return type === CHART_TYPE_LINE
|
|
188
202
|
? generateLineSeries({ color, name, data, yAxisIndex: 1 })
|
|
189
|
-
: generateBarSeries({
|
|
203
|
+
: generateBarSeries({
|
|
204
|
+
color,
|
|
205
|
+
name,
|
|
206
|
+
data,
|
|
207
|
+
stack: seriesStack,
|
|
208
|
+
yAxisIndex: 1,
|
|
209
|
+
});
|
|
190
210
|
});
|
|
191
211
|
},
|
|
192
212
|
series() {
|
|
@@ -2,7 +2,6 @@ import castArray from 'lodash/castArray';
|
|
|
2
2
|
import merge from 'lodash/merge';
|
|
3
3
|
import { BLUE_500 } from '../../tokens/build/js/tokens';
|
|
4
4
|
import { GlBreakpointInstance } from '../breakpoints';
|
|
5
|
-
import { columnOptions } from '../constants';
|
|
6
5
|
import { areDatesEqual } from '../datetime_utility';
|
|
7
6
|
import { engineeringNotation } from '../number_utils';
|
|
8
7
|
import { hexToRgba } from '../utils';
|
|
@@ -395,13 +394,7 @@ export const generateAnnotationSeries = (annotations, yAxisIndex = 1) => {
|
|
|
395
394
|
* @param {number} [options.yAxisIndex] - specifies the yAxis to use (if there are multiple)
|
|
396
395
|
* @returns {Object} Bar chart series
|
|
397
396
|
*/
|
|
398
|
-
export const generateBarSeries = ({
|
|
399
|
-
name,
|
|
400
|
-
color,
|
|
401
|
-
data = [],
|
|
402
|
-
stack = columnOptions.stacked,
|
|
403
|
-
yAxisIndex = 0,
|
|
404
|
-
}) => ({
|
|
397
|
+
export const generateBarSeries = ({ name, color, stack, data = [], yAxisIndex = 0 }) => ({
|
|
405
398
|
type: CHART_TYPE_BAR,
|
|
406
399
|
name,
|
|
407
400
|
data,
|
|
@@ -58,6 +58,10 @@ export const arrowSymbol = 'path://m5 229 5 8h-10z';
|
|
|
58
58
|
export const CHART_TYPE_BAR = 'bar';
|
|
59
59
|
export const CHART_TYPE_LINE = 'line';
|
|
60
60
|
|
|
61
|
+
// Constants for "series.stack" option, series with the same value stack on top of each other
|
|
62
|
+
export const CHART_DEFAULT_SERIES_STACK = 'default-series-stack';
|
|
63
|
+
export const CHART_DEFAULT_SERIES_SECONDARY_STACK = 'default-series-secondary-stack';
|
|
64
|
+
|
|
61
65
|
// Constants for height "auto"
|
|
62
66
|
export const HEIGHT_AUTO_CLASSES = 'gl-chart-h-auto gl-flex gl-flex-col gl-h-full';
|
|
63
67
|
export const HEIGHT_AUTO_HORIZONTAL_LAYOUT_CLASSES = 'gl-flex gl-h-full';
|