@gitlab/ui 122.4.0 → 122.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/charts/bar/bar.js +3 -58
- package/dist/components/charts/shared/tooltip/tooltip.js +26 -7
- package/dist/components/dashboards/dashboard_panel/dashboard_panel.js +12 -3
- package/dist/index.css +2 -2
- package/dist/index.css.map +1 -1
- package/dist/tailwind.css +1 -1
- package/dist/tailwind.css.map +1 -1
- package/dist/tokens/build/js/tokens.dark.js +33 -1
- package/dist/tokens/build/js/tokens.js +33 -1
- package/dist/tokens/css/tokens.css +32 -0
- package/dist/tokens/css/tokens.dark.css +32 -0
- package/dist/tokens/docs/tokens-tailwind-docs.dark.json +802 -0
- package/dist/tokens/docs/tokens-tailwind-docs.json +802 -0
- package/dist/tokens/figma/constants.tokens.json +226 -0
- package/dist/tokens/js/tokens.dark.js +32 -0
- package/dist/tokens/js/tokens.js +32 -0
- package/dist/tokens/json/tokens.dark.json +770 -0
- package/dist/tokens/json/tokens.json +770 -0
- package/dist/tokens/scss/_tokens.dark.scss +32 -0
- package/dist/tokens/scss/_tokens.scss +32 -0
- package/dist/tokens/scss/_tokens_custom_properties.scss +32 -0
- package/dist/tokens/tailwind/tokens.cjs +2 -0
- package/dist/utils/charts/config.js +26 -7
- package/package.json +1 -1
- package/src/components/charts/bar/bar.vue +14 -55
- package/src/components/charts/shared/tooltip/tooltip.vue +29 -6
- package/src/components/dashboards/dashboard_panel/dashboard_panel.vue +33 -10
- package/src/scss/variables.scss +0 -29
- package/src/tokens/build/css/tokens.css +32 -0
- package/src/tokens/build/css/tokens.dark.css +32 -0
- package/src/tokens/build/docs/tokens-tailwind-docs.dark.json +802 -0
- package/src/tokens/build/docs/tokens-tailwind-docs.json +802 -0
- package/src/tokens/build/figma/constants.tokens.json +226 -0
- package/src/tokens/build/js/tokens.dark.js +32 -0
- package/src/tokens/build/js/tokens.js +32 -0
- package/src/tokens/build/json/tokens.dark.json +770 -0
- package/src/tokens/build/json/tokens.json +770 -0
- package/src/tokens/build/scss/_tokens.dark.scss +32 -0
- package/src/tokens/build/scss/_tokens.scss +32 -0
- package/src/tokens/build/scss/_tokens_custom_properties.scss +32 -0
- package/src/tokens/build/tailwind/tokens.cjs +35 -0
- package/src/tokens/constant/spacing_scale.tokens.json +228 -0
- package/src/utils/charts/config.js +22 -11
- package/tailwind.defaults.js +1 -38
|
@@ -237,6 +237,38 @@ $gl-line-height-36: 2.25rem;
|
|
|
237
237
|
$gl-line-height-42: 2.625rem;
|
|
238
238
|
$gl-line-height-44: 2.75rem;
|
|
239
239
|
$gl-line-height-52: 3.25rem;
|
|
240
|
+
$gl-spacing-scale-0: 0;
|
|
241
|
+
$gl-spacing-scale-1: 0.125rem;
|
|
242
|
+
$gl-spacing-scale-2: 0.25rem;
|
|
243
|
+
$gl-spacing-scale-3: 0.5rem;
|
|
244
|
+
$gl-spacing-scale-4: 0.75rem;
|
|
245
|
+
$gl-spacing-scale-5: 1rem;
|
|
246
|
+
$gl-spacing-scale-6: 1.5rem;
|
|
247
|
+
$gl-spacing-scale-7: 2rem;
|
|
248
|
+
$gl-spacing-scale-8: 2.5rem;
|
|
249
|
+
$gl-spacing-scale-9: 3rem;
|
|
250
|
+
$gl-spacing-scale-10: 3.5rem;
|
|
251
|
+
$gl-spacing-scale-11: 4rem;
|
|
252
|
+
$gl-spacing-scale-12: 5rem;
|
|
253
|
+
$gl-spacing-scale-13: 6rem;
|
|
254
|
+
$gl-spacing-scale-15: 7.5rem;
|
|
255
|
+
$gl-spacing-scale-18: 9rem;
|
|
256
|
+
$gl-spacing-scale-20: 10rem;
|
|
257
|
+
$gl-spacing-scale-26: 13rem;
|
|
258
|
+
$gl-spacing-scale-28: 14rem;
|
|
259
|
+
$gl-spacing-scale-30: 15rem;
|
|
260
|
+
$gl-spacing-scale-31: 15.5rem;
|
|
261
|
+
$gl-spacing-scale-33: 16.5rem;
|
|
262
|
+
$gl-spacing-scale-34: 17rem;
|
|
263
|
+
$gl-spacing-scale-37: 18.5rem;
|
|
264
|
+
$gl-spacing-scale-48: 24rem;
|
|
265
|
+
$gl-spacing-scale-62: 31rem;
|
|
266
|
+
$gl-spacing-scale-75: 37.5rem;
|
|
267
|
+
$gl-spacing-scale-80: 40rem;
|
|
268
|
+
$gl-spacing-scale-88: 44rem;
|
|
269
|
+
$gl-spacing-scale-px: 1px;
|
|
270
|
+
$gl-spacing-scale-2-5: 0.375rem;
|
|
271
|
+
$gl-spacing-scale-11-5: 4.5rem;
|
|
240
272
|
$gl-avatar-fallback-background-color-red: #fcb5aa3d; // Red background for avatar fallback with no particular meaning.
|
|
241
273
|
$gl-avatar-fallback-background-color-purple: #cbbbf23d; // Purple background for avatar fallback with no particular meaning.
|
|
242
274
|
$gl-avatar-fallback-background-color-blue: #9dc7f13d; // Blue background for avatar fallback with no particular meaning.
|
|
@@ -237,6 +237,38 @@ $gl-line-height-36: 2.25rem;
|
|
|
237
237
|
$gl-line-height-42: 2.625rem;
|
|
238
238
|
$gl-line-height-44: 2.75rem;
|
|
239
239
|
$gl-line-height-52: 3.25rem;
|
|
240
|
+
$gl-spacing-scale-0: 0;
|
|
241
|
+
$gl-spacing-scale-1: 0.125rem;
|
|
242
|
+
$gl-spacing-scale-2: 0.25rem;
|
|
243
|
+
$gl-spacing-scale-3: 0.5rem;
|
|
244
|
+
$gl-spacing-scale-4: 0.75rem;
|
|
245
|
+
$gl-spacing-scale-5: 1rem;
|
|
246
|
+
$gl-spacing-scale-6: 1.5rem;
|
|
247
|
+
$gl-spacing-scale-7: 2rem;
|
|
248
|
+
$gl-spacing-scale-8: 2.5rem;
|
|
249
|
+
$gl-spacing-scale-9: 3rem;
|
|
250
|
+
$gl-spacing-scale-10: 3.5rem;
|
|
251
|
+
$gl-spacing-scale-11: 4rem;
|
|
252
|
+
$gl-spacing-scale-12: 5rem;
|
|
253
|
+
$gl-spacing-scale-13: 6rem;
|
|
254
|
+
$gl-spacing-scale-15: 7.5rem;
|
|
255
|
+
$gl-spacing-scale-18: 9rem;
|
|
256
|
+
$gl-spacing-scale-20: 10rem;
|
|
257
|
+
$gl-spacing-scale-26: 13rem;
|
|
258
|
+
$gl-spacing-scale-28: 14rem;
|
|
259
|
+
$gl-spacing-scale-30: 15rem;
|
|
260
|
+
$gl-spacing-scale-31: 15.5rem;
|
|
261
|
+
$gl-spacing-scale-33: 16.5rem;
|
|
262
|
+
$gl-spacing-scale-34: 17rem;
|
|
263
|
+
$gl-spacing-scale-37: 18.5rem;
|
|
264
|
+
$gl-spacing-scale-48: 24rem;
|
|
265
|
+
$gl-spacing-scale-62: 31rem;
|
|
266
|
+
$gl-spacing-scale-75: 37.5rem;
|
|
267
|
+
$gl-spacing-scale-80: 40rem;
|
|
268
|
+
$gl-spacing-scale-88: 44rem;
|
|
269
|
+
$gl-spacing-scale-px: 1px;
|
|
270
|
+
$gl-spacing-scale-2-5: 0.375rem;
|
|
271
|
+
$gl-spacing-scale-11-5: 4.5rem;
|
|
240
272
|
$gl-avatar-fallback-background-color-red: #fcb5aa3d; // Red background for avatar fallback with no particular meaning.
|
|
241
273
|
$gl-avatar-fallback-background-color-purple: #cbbbf23d; // Purple background for avatar fallback with no particular meaning.
|
|
242
274
|
$gl-avatar-fallback-background-color-blue: #9dc7f13d; // Blue background for avatar fallback with no particular meaning.
|
|
@@ -238,6 +238,38 @@ $gl-line-height-36: var(--gl-line-height-36);
|
|
|
238
238
|
$gl-line-height-42: var(--gl-line-height-42);
|
|
239
239
|
$gl-line-height-44: var(--gl-line-height-44);
|
|
240
240
|
$gl-line-height-52: var(--gl-line-height-52);
|
|
241
|
+
$gl-spacing-scale-0: var(--gl-spacing-scale-0);
|
|
242
|
+
$gl-spacing-scale-1: var(--gl-spacing-scale-1);
|
|
243
|
+
$gl-spacing-scale-2: var(--gl-spacing-scale-2);
|
|
244
|
+
$gl-spacing-scale-3: var(--gl-spacing-scale-3);
|
|
245
|
+
$gl-spacing-scale-4: var(--gl-spacing-scale-4);
|
|
246
|
+
$gl-spacing-scale-5: var(--gl-spacing-scale-5);
|
|
247
|
+
$gl-spacing-scale-6: var(--gl-spacing-scale-6);
|
|
248
|
+
$gl-spacing-scale-7: var(--gl-spacing-scale-7);
|
|
249
|
+
$gl-spacing-scale-8: var(--gl-spacing-scale-8);
|
|
250
|
+
$gl-spacing-scale-9: var(--gl-spacing-scale-9);
|
|
251
|
+
$gl-spacing-scale-10: var(--gl-spacing-scale-10);
|
|
252
|
+
$gl-spacing-scale-11: var(--gl-spacing-scale-11);
|
|
253
|
+
$gl-spacing-scale-12: var(--gl-spacing-scale-12);
|
|
254
|
+
$gl-spacing-scale-13: var(--gl-spacing-scale-13);
|
|
255
|
+
$gl-spacing-scale-15: var(--gl-spacing-scale-15);
|
|
256
|
+
$gl-spacing-scale-18: var(--gl-spacing-scale-18);
|
|
257
|
+
$gl-spacing-scale-20: var(--gl-spacing-scale-20);
|
|
258
|
+
$gl-spacing-scale-26: var(--gl-spacing-scale-26);
|
|
259
|
+
$gl-spacing-scale-28: var(--gl-spacing-scale-28);
|
|
260
|
+
$gl-spacing-scale-30: var(--gl-spacing-scale-30);
|
|
261
|
+
$gl-spacing-scale-31: var(--gl-spacing-scale-31);
|
|
262
|
+
$gl-spacing-scale-33: var(--gl-spacing-scale-33);
|
|
263
|
+
$gl-spacing-scale-34: var(--gl-spacing-scale-34);
|
|
264
|
+
$gl-spacing-scale-37: var(--gl-spacing-scale-37);
|
|
265
|
+
$gl-spacing-scale-48: var(--gl-spacing-scale-48);
|
|
266
|
+
$gl-spacing-scale-62: var(--gl-spacing-scale-62);
|
|
267
|
+
$gl-spacing-scale-75: var(--gl-spacing-scale-75);
|
|
268
|
+
$gl-spacing-scale-80: var(--gl-spacing-scale-80);
|
|
269
|
+
$gl-spacing-scale-88: var(--gl-spacing-scale-88);
|
|
270
|
+
$gl-spacing-scale-px: var(--gl-spacing-scale-px);
|
|
271
|
+
$gl-spacing-scale-2-5: var(--gl-spacing-scale-2-5);
|
|
272
|
+
$gl-spacing-scale-11-5: var(--gl-spacing-scale-11-5);
|
|
241
273
|
$gl-alert-neutral-title-color: var(--gl-alert-neutral-title-color);
|
|
242
274
|
$gl-alert-neutral-background-color: var(--gl-alert-neutral-background-color);
|
|
243
275
|
$gl-alert-neutral-border-top-color: var(--gl-alert-neutral-border-top-color);
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
const feedbackBackgroundColors = {"feedback-strong":"var(--gl-feedback-strong-background-color, var(--gl-color-neutral-800, #3a383f))","feedback-neutral":"var(--gl-feedback-neutral-background-color, var(--gl-color-neutral-50, #ececef))","feedback-info":"var(--gl-feedback-info-background-color, var(--gl-color-blue-50, #e9f3fc))","feedback-success":"var(--gl-feedback-success-background-color, var(--gl-color-green-50, #ecf4ee))","feedback-warning":"var(--gl-feedback-warning-background-color, var(--gl-color-orange-50, #fdf1dd))","feedback-danger":"var(--gl-feedback-danger-background-color, var(--gl-color-red-50, #fcf1ef))"};
|
|
21
21
|
const feedbackTextColors = {"feedback-strong":"var(--gl-feedback-strong-text-color, var(--gl-color-neutral-0, #fff))","feedback-neutral":"var(--gl-feedback-neutral-text-color, var(--gl-color-neutral-700, #4c4b51))","feedback-info":"var(--gl-feedback-info-text-color, var(--gl-color-blue-700, #2f5ca0))","feedback-success":"var(--gl-feedback-success-text-color, var(--gl-color-green-700, #306440))","feedback-warning":"var(--gl-feedback-warning-text-color, var(--gl-color-orange-700, #894b16))","feedback-danger":"var(--gl-feedback-danger-text-color, var(--gl-color-red-700, #a32c12))"};
|
|
22
22
|
const feedbackIconColors = {"feedback-strong":"var(--gl-feedback-strong-icon-color, var(--gl-color-neutral-0, #fff))","feedback-neutral":"var(--gl-feedback-neutral-icon-color, var(--gl-color-neutral-600, #626168))","feedback-info":"var(--gl-feedback-info-icon-color, var(--gl-color-blue-600, #2f68b4))","feedback-success":"var(--gl-feedback-success-icon-color, var(--gl-color-green-600, #2f7549))","feedback-warning":"var(--gl-feedback-warning-icon-color, var(--gl-color-orange-600, #995715))","feedback-danger":"var(--gl-feedback-danger-icon-color, var(--gl-color-red-600, #c02f12))"};
|
|
23
|
+
const spacingScale = {"0":"var(--gl-spacing-scale-0, 0)","1":"var(--gl-spacing-scale-1, 0.125rem)","2":"var(--gl-spacing-scale-2, 0.25rem)","3":"var(--gl-spacing-scale-3, 0.5rem)","4":"var(--gl-spacing-scale-4, 0.75rem)","5":"var(--gl-spacing-scale-5, 1rem)","6":"var(--gl-spacing-scale-6, 1.5rem)","7":"var(--gl-spacing-scale-7, 2rem)","8":"var(--gl-spacing-scale-8, 2.5rem)","9":"var(--gl-spacing-scale-9, 3rem)","10":"var(--gl-spacing-scale-10, 3.5rem)","11":"var(--gl-spacing-scale-11, 4rem)","12":"var(--gl-spacing-scale-12, 5rem)","13":"var(--gl-spacing-scale-13, 6rem)","15":"var(--gl-spacing-scale-15, 7.5rem)","18":"var(--gl-spacing-scale-18, 9rem)","20":"var(--gl-spacing-scale-20, 10rem)","26":"var(--gl-spacing-scale-26, 13rem)","28":"var(--gl-spacing-scale-28, 14rem)","30":"var(--gl-spacing-scale-30, 15rem)","31":"var(--gl-spacing-scale-31, 15.5rem)","33":"var(--gl-spacing-scale-33, 16.5rem)","34":"var(--gl-spacing-scale-34, 17rem)","37":"var(--gl-spacing-scale-37, 18.5rem)","48":"var(--gl-spacing-scale-48, 24rem)","62":"var(--gl-spacing-scale-62, 31rem)","75":"var(--gl-spacing-scale-75, 37.5rem)","80":"var(--gl-spacing-scale-80, 40rem)","88":"var(--gl-spacing-scale-88, 44rem)","px":"var(--gl-spacing-scale-px, 1px)","2-5":"var(--gl-spacing-scale-2-5, 0.375rem)","11-5":"var(--gl-spacing-scale-11-5, 4.5rem)"};
|
|
23
24
|
|
|
24
25
|
const colors = {
|
|
25
26
|
inherit: 'inherit',
|
|
@@ -99,5 +100,6 @@
|
|
|
99
100
|
outlineColor,
|
|
100
101
|
textColor,
|
|
101
102
|
fill,
|
|
103
|
+
spacing: spacingScale,
|
|
102
104
|
}
|
|
103
105
|
|
|
@@ -468,24 +468,44 @@ const generateLineSeries = _ref5 => {
|
|
|
468
468
|
}
|
|
469
469
|
};
|
|
470
470
|
};
|
|
471
|
+
const getTooltipAxisConfig = dimensionAxis => {
|
|
472
|
+
if (!['xAxis', 'yAxis'].includes(dimensionAxis)) {
|
|
473
|
+
throw new Error(`\`dimensionAxis\` must be "xAxis" or "yAxis", received ${dimensionAxis}`);
|
|
474
|
+
}
|
|
475
|
+
if (dimensionAxis === 'xAxis') {
|
|
476
|
+
return {
|
|
477
|
+
dimensionIndex: 0,
|
|
478
|
+
metricIndex: 1,
|
|
479
|
+
valueAxis: 'yAxis'
|
|
480
|
+
};
|
|
481
|
+
}
|
|
482
|
+
return {
|
|
483
|
+
dimensionIndex: 1,
|
|
484
|
+
metricIndex: 0,
|
|
485
|
+
valueAxis: 'xAxis'
|
|
486
|
+
};
|
|
487
|
+
};
|
|
471
488
|
const getTooltipTitle = function () {
|
|
472
489
|
let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
473
490
|
let titleAxisName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
491
|
+
let dimensionIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
474
492
|
if (!params) return '';
|
|
475
493
|
const title = params.seriesData.reduce((acc, _ref6) => {
|
|
476
494
|
let {
|
|
477
495
|
value
|
|
478
496
|
} = _ref6;
|
|
479
|
-
|
|
497
|
+
const dimension = value[dimensionIndex];
|
|
498
|
+
if (acc.includes(dimension)) {
|
|
480
499
|
return acc;
|
|
481
500
|
}
|
|
482
|
-
return [...acc,
|
|
501
|
+
return [...acc, dimension];
|
|
483
502
|
}, []).join(', ');
|
|
484
503
|
return titleAxisName ? `${title} (${titleAxisName})` : title;
|
|
485
504
|
};
|
|
486
505
|
const getTooltipContent = function () {
|
|
487
506
|
let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
488
507
|
let valueAxisName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
508
|
+
let metricIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
489
509
|
if (!params) {
|
|
490
510
|
return {};
|
|
491
511
|
}
|
|
@@ -494,12 +514,12 @@ const getTooltipContent = function () {
|
|
|
494
514
|
} = params;
|
|
495
515
|
if (seriesData.length === 1) {
|
|
496
516
|
const {
|
|
497
|
-
value
|
|
517
|
+
value,
|
|
498
518
|
seriesName
|
|
499
519
|
} = seriesData[0];
|
|
500
520
|
return {
|
|
501
521
|
[valueAxisName || seriesName]: {
|
|
502
|
-
value:
|
|
522
|
+
value: value[metricIndex],
|
|
503
523
|
color: '' // ignore color when showing a single series
|
|
504
524
|
}
|
|
505
525
|
};
|
|
@@ -510,9 +530,8 @@ const getTooltipContent = function () {
|
|
|
510
530
|
seriesName,
|
|
511
531
|
color
|
|
512
532
|
} = _ref7;
|
|
513
|
-
const yValue = value[1];
|
|
514
533
|
acc[seriesName] = {
|
|
515
|
-
value:
|
|
534
|
+
value: value[metricIndex],
|
|
516
535
|
color
|
|
517
536
|
};
|
|
518
537
|
return acc;
|
|
@@ -560,4 +579,4 @@ const getDefaultTooltipContent = function (params) {
|
|
|
560
579
|
};
|
|
561
580
|
};
|
|
562
581
|
|
|
563
|
-
export { annotationsYAxisCoords, axes, dataZoomAdjustments, defaultAreaOpacity, defaultChartOptions, defaultFontSize, defaultHeight, defaultWidth, generateAnnotationSeries, generateBarSeries, generateLineSeries, getAnnotationsConfig, getDataZoomConfig, getDefaultTooltipContent, getThresholdConfig, getTooltipContent, getTooltipTitle, grid, gridWithSecondaryYAxis, lineStyle, mergeAnnotationAxisToOptions, mergeSeriesToOptions, parseAnnotations, symbolSize, toolboxHeight, validRenderers, xAxis, yAxis };
|
|
582
|
+
export { annotationsYAxisCoords, axes, dataZoomAdjustments, defaultAreaOpacity, defaultChartOptions, defaultFontSize, defaultHeight, defaultWidth, generateAnnotationSeries, generateBarSeries, generateLineSeries, getAnnotationsConfig, getDataZoomConfig, getDefaultTooltipContent, getThresholdConfig, getTooltipAxisConfig, getTooltipContent, getTooltipTitle, grid, gridWithSecondaryYAxis, lineStyle, mergeAnnotationAxisToOptions, mergeSeriesToOptions, parseAnnotations, symbolSize, toolboxHeight, validRenderers, xAxis, yAxis };
|
package/package.json
CHANGED
|
@@ -7,7 +7,6 @@ import { CHART_DEFAULT_SERIES_STACK, HEIGHT_AUTO_CLASSES } from '../../../utils/
|
|
|
7
7
|
import { colorFromDefaultPalette } from '../../../utils/charts/theme';
|
|
8
8
|
import { engineeringNotation } from '../../../utils/number_utils';
|
|
9
9
|
import { hexToRgba } from '../../../utils/utils';
|
|
10
|
-
import TooltipDefaultFormat from '../shared/tooltip/tooltip_default_format/tooltip_default_format.vue';
|
|
11
10
|
import Chart from '../chart/chart.vue';
|
|
12
11
|
import ChartTooltip from '../shared/tooltip/tooltip.vue';
|
|
13
12
|
import { stackedPresentationOptions } from '../../../utils/constants';
|
|
@@ -64,7 +63,6 @@ export default {
|
|
|
64
63
|
components: {
|
|
65
64
|
Chart,
|
|
66
65
|
ChartTooltip,
|
|
67
|
-
TooltipDefaultFormat,
|
|
68
66
|
},
|
|
69
67
|
inheritAttrs: false,
|
|
70
68
|
props: {
|
|
@@ -113,8 +111,6 @@ export default {
|
|
|
113
111
|
data() {
|
|
114
112
|
return {
|
|
115
113
|
chart: null,
|
|
116
|
-
tooltipTitle: '',
|
|
117
|
-
tooltipContent: {},
|
|
118
114
|
};
|
|
119
115
|
},
|
|
120
116
|
computed: {
|
|
@@ -162,13 +158,6 @@ export default {
|
|
|
162
158
|
axisTick: {
|
|
163
159
|
show: true,
|
|
164
160
|
},
|
|
165
|
-
axisPointer: {
|
|
166
|
-
show: true,
|
|
167
|
-
type: 'none',
|
|
168
|
-
label: {
|
|
169
|
-
formatter: this.onLabelChange,
|
|
170
|
-
},
|
|
171
|
-
},
|
|
172
161
|
},
|
|
173
162
|
},
|
|
174
163
|
this.option,
|
|
@@ -187,46 +176,6 @@ export default {
|
|
|
187
176
|
this.chart = chart;
|
|
188
177
|
this.$emit('created', chart);
|
|
189
178
|
},
|
|
190
|
-
onLabelChange(params) {
|
|
191
|
-
const { yLabels, tooltipContent } = this.getTooltipContent(params, this.xAxisTitle);
|
|
192
|
-
|
|
193
|
-
this.$set(this, 'tooltipContent', tooltipContent);
|
|
194
|
-
this.tooltipTitle = yLabels.join(', ');
|
|
195
|
-
},
|
|
196
|
-
/**
|
|
197
|
-
* For bar charts, the tooltip should be against x-axis values.
|
|
198
|
-
* This method will be removed after https://gitlab.com/gitlab-org/gitlab-ui/-/issues/674
|
|
199
|
-
*
|
|
200
|
-
* @param {Object} params series data
|
|
201
|
-
* @param {String} xAxisTitle x-axis title
|
|
202
|
-
* @returns {Object} tooltip title and content
|
|
203
|
-
*/
|
|
204
|
-
getTooltipContent(params, xAxisTitle = null) {
|
|
205
|
-
const seriesDataLength = params.seriesData.length;
|
|
206
|
-
const { yLabels, tooltipContent } = params.seriesData.reduce(
|
|
207
|
-
(acc, chartItem) => {
|
|
208
|
-
const [value, title] = chartItem.value || [];
|
|
209
|
-
// The x axis title is used instead of y axis
|
|
210
|
-
const seriesName =
|
|
211
|
-
seriesDataLength === 1 && xAxisTitle ? xAxisTitle : chartItem.seriesName;
|
|
212
|
-
const color = seriesDataLength === 1 ? '' : chartItem.color;
|
|
213
|
-
acc.tooltipContent[seriesName] = {
|
|
214
|
-
value,
|
|
215
|
-
color,
|
|
216
|
-
};
|
|
217
|
-
if (!acc.yLabels.includes(title)) {
|
|
218
|
-
acc.yLabels.push(title);
|
|
219
|
-
}
|
|
220
|
-
return acc;
|
|
221
|
-
},
|
|
222
|
-
{
|
|
223
|
-
yLabels: [],
|
|
224
|
-
tooltipContent: {},
|
|
225
|
-
},
|
|
226
|
-
);
|
|
227
|
-
|
|
228
|
-
return { yLabels, tooltipContent };
|
|
229
|
-
},
|
|
230
179
|
},
|
|
231
180
|
HEIGHT_AUTO_CLASSES,
|
|
232
181
|
};
|
|
@@ -242,11 +191,21 @@ export default {
|
|
|
242
191
|
v-on="$listeners"
|
|
243
192
|
@created="onCreated"
|
|
244
193
|
/>
|
|
245
|
-
<chart-tooltip
|
|
246
|
-
|
|
247
|
-
|
|
194
|
+
<chart-tooltip
|
|
195
|
+
v-if="chart"
|
|
196
|
+
:chart="chart"
|
|
197
|
+
:use-default-tooltip-formatter="true"
|
|
198
|
+
dimension-axis="yAxis"
|
|
199
|
+
>
|
|
200
|
+
<template v-if="$scopedSlots['tooltip-title']" #title="scope">
|
|
201
|
+
<slot name="tooltip-title" v-bind="scope"></slot>
|
|
202
|
+
</template>
|
|
203
|
+
<template v-if="$scopedSlots['tooltip-content']" #default="scope">
|
|
204
|
+
<slot name="tooltip-content" v-bind="scope"></slot>
|
|
205
|
+
</template>
|
|
206
|
+
<template v-if="$scopedSlots['tooltip-value']" #tooltip-value="scope">
|
|
207
|
+
<slot name="tooltip-value" v-bind="scope"></slot>
|
|
248
208
|
</template>
|
|
249
|
-
<tooltip-default-format :tooltip-content="tooltipContent" />
|
|
250
209
|
</chart-tooltip>
|
|
251
210
|
</div>
|
|
252
211
|
</template>
|
|
@@ -5,7 +5,11 @@ import { uid, debounceByAnimationFrame } from '../../../../utils/utils';
|
|
|
5
5
|
import GlPopover from '../../../base/popover/popover.vue';
|
|
6
6
|
import { popoverPlacements } from '../../../../utils/constants';
|
|
7
7
|
import { TOOLTIP_LEFT_OFFSET, TOOLTIP_TOP_OFFSET } from '../../../../utils/charts/constants';
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
getTooltipTitle,
|
|
10
|
+
getTooltipContent,
|
|
11
|
+
getTooltipAxisConfig,
|
|
12
|
+
} from '../../../../utils/charts/config';
|
|
9
13
|
|
|
10
14
|
import TooltipDefaultFormat from './tooltip_default_format/tooltip_default_format.vue';
|
|
11
15
|
|
|
@@ -127,6 +131,20 @@ export default {
|
|
|
127
131
|
required: false,
|
|
128
132
|
default: false,
|
|
129
133
|
},
|
|
134
|
+
/**
|
|
135
|
+
* Specifies which axis contains the dimensional data used in the tooltip.
|
|
136
|
+
* When `xAxis`, x-axis value becomes the tooltip's title and
|
|
137
|
+
* y-axis values become the tooltip's values.
|
|
138
|
+
* When `yAxis`, roles are reversed.
|
|
139
|
+
*/
|
|
140
|
+
dimensionAxis: {
|
|
141
|
+
type: String,
|
|
142
|
+
required: false,
|
|
143
|
+
default: 'xAxis',
|
|
144
|
+
validator(value) {
|
|
145
|
+
return value === 'xAxis' || value === 'yAxis';
|
|
146
|
+
},
|
|
147
|
+
},
|
|
130
148
|
},
|
|
131
149
|
data() {
|
|
132
150
|
return {
|
|
@@ -208,17 +226,22 @@ export default {
|
|
|
208
226
|
|
|
209
227
|
if (this.useDefaultTooltipFormatter) {
|
|
210
228
|
this.chart.setOption({
|
|
211
|
-
|
|
229
|
+
[this.dimensionAxis]: {
|
|
212
230
|
axisPointer: {
|
|
213
231
|
show: true,
|
|
214
232
|
label: {
|
|
215
233
|
formatter: (params) => {
|
|
216
234
|
const options = this.chart.getOption();
|
|
217
|
-
const titleAxisName = options.xAxis?.[0]?.name;
|
|
218
|
-
const valueAxisName = options.yAxis?.[0]?.name;
|
|
219
235
|
|
|
220
|
-
|
|
221
|
-
|
|
236
|
+
const { dimensionIndex, metricIndex, valueAxis } = getTooltipAxisConfig(
|
|
237
|
+
this.dimensionAxis,
|
|
238
|
+
);
|
|
239
|
+
|
|
240
|
+
const titleAxisName = options[this.dimensionAxis]?.[0]?.name;
|
|
241
|
+
const valueAxisName = options[valueAxis]?.[0]?.name;
|
|
242
|
+
|
|
243
|
+
this.title = getTooltipTitle(params, titleAxisName, dimensionIndex);
|
|
244
|
+
this.content = getTooltipContent(params, valueAxisName, metricIndex);
|
|
222
245
|
this.params = params;
|
|
223
246
|
},
|
|
224
247
|
},
|
|
@@ -71,12 +71,15 @@ export default {
|
|
|
71
71
|
},
|
|
72
72
|
/**
|
|
73
73
|
* Configuration object for the title popover. Expected structure:
|
|
74
|
+
* **Deprecated:** Use slots `#info-popover-content` and `#info-popover-title` instead.
|
|
74
75
|
*
|
|
75
76
|
* - `description`: The popover text content with interpolation placeholders.
|
|
76
77
|
* Uses `%{linkStart}` and `%{linkEnd}` as markers for where a link should be inserted.
|
|
77
78
|
*
|
|
78
79
|
* - `descriptionLink`: The optional URL that will be used for the link portion
|
|
79
80
|
* of the description text between the linkStart and linkEnd markers.
|
|
81
|
+
*
|
|
82
|
+
* @deprecated Use slots `#info-popover-content` and `#info-popover-title` instead.
|
|
80
83
|
*/
|
|
81
84
|
titlePopover: {
|
|
82
85
|
type: Object,
|
|
@@ -153,8 +156,18 @@ export default {
|
|
|
153
156
|
hasTitle() {
|
|
154
157
|
return Boolean(this.title);
|
|
155
158
|
},
|
|
159
|
+
hasInfoPopoverContentSlot() {
|
|
160
|
+
return Boolean(this.$scopedSlots['info-popover-content']);
|
|
161
|
+
},
|
|
162
|
+
hasInfoPopoverTitleSlot() {
|
|
163
|
+
return Boolean(this.$scopedSlots['info-popover-title']);
|
|
164
|
+
},
|
|
156
165
|
hasTitlePopover() {
|
|
157
|
-
return
|
|
166
|
+
return (
|
|
167
|
+
Boolean(this.titlePopover?.description) ||
|
|
168
|
+
this.hasInfoPopoverContentSlot ||
|
|
169
|
+
this.hasInfoPopoverTitleSlot
|
|
170
|
+
);
|
|
158
171
|
},
|
|
159
172
|
hasTitlePopoverLink() {
|
|
160
173
|
return Boolean(this.titlePopover?.descriptionLink);
|
|
@@ -206,15 +219,25 @@ export default {
|
|
|
206
219
|
boundary="viewport"
|
|
207
220
|
:target="titlePopoverId"
|
|
208
221
|
>
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
222
|
+
<!-- @slot The title of the info popover. -->
|
|
223
|
+
<template v-if="hasInfoPopoverTitleSlot" #title>
|
|
224
|
+
<slot name="info-popover-title"></slot>
|
|
225
|
+
</template>
|
|
226
|
+
|
|
227
|
+
<!-- @slot The content of the info popover. -->
|
|
228
|
+
<template v-if="hasInfoPopoverContentSlot">
|
|
229
|
+
<slot name="info-popover-content"></slot>
|
|
230
|
+
</template>
|
|
231
|
+
|
|
232
|
+
<template v-if="!hasInfoPopoverContentSlot">
|
|
233
|
+
<gl-sprintf v-if="hasTitlePopoverLink" :message="titlePopover.description">
|
|
234
|
+
<template #link="{ content }">
|
|
235
|
+
<gl-link :href="titlePopover.descriptionLink" class="gl-text-sm">{{
|
|
236
|
+
content
|
|
237
|
+
}}</gl-link>
|
|
238
|
+
</template>
|
|
239
|
+
</gl-sprintf>
|
|
240
|
+
<template v-else> {{ titlePopover.description }} </template>
|
|
218
241
|
</template>
|
|
219
242
|
</gl-popover>
|
|
220
243
|
</template>
|
package/src/scss/variables.scss
CHANGED
|
@@ -4,35 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
// Layout
|
|
6
6
|
$grid-size: px-to-rem(8px);
|
|
7
|
-
$gl-spacing-scale-1: 0.25 * $grid-size;
|
|
8
|
-
$gl-spacing-scale-2: 0.5 * $grid-size;
|
|
9
|
-
$gl-spacing-scale-3: $grid-size;
|
|
10
|
-
$gl-spacing-scale-4: 1.5 * $grid-size;
|
|
11
|
-
$gl-spacing-scale-5: 2 * $grid-size;
|
|
12
|
-
$gl-spacing-scale-6: 3 * $grid-size;
|
|
13
|
-
$gl-spacing-scale-7: 4 * $grid-size;
|
|
14
|
-
$gl-spacing-scale-8: 5 * $grid-size;
|
|
15
|
-
$gl-spacing-scale-9: 6 * $grid-size;
|
|
16
|
-
$gl-spacing-scale-10: 7 * $grid-size;
|
|
17
|
-
$gl-spacing-scale-11: 8 * $grid-size;
|
|
18
|
-
$gl-spacing-scale-11-5: 9 * $grid-size;
|
|
19
|
-
$gl-spacing-scale-12: 10 * $grid-size;
|
|
20
|
-
$gl-spacing-scale-13: 12 * $grid-size;
|
|
21
|
-
$gl-spacing-scale-15: 15 * $grid-size;
|
|
22
|
-
$gl-spacing-scale-18: 18 * $grid-size;
|
|
23
|
-
$gl-spacing-scale-20: 20 * $grid-size;
|
|
24
|
-
$gl-spacing-scale-26: 26 * $grid-size;
|
|
25
|
-
$gl-spacing-scale-28: 28 * $grid-size;
|
|
26
|
-
$gl-spacing-scale-30: 30 * $grid-size;
|
|
27
|
-
$gl-spacing-scale-31: 31 * $grid-size;
|
|
28
|
-
$gl-spacing-scale-33: 33 * $grid-size;
|
|
29
|
-
$gl-spacing-scale-34: 34 * $grid-size;
|
|
30
|
-
$gl-spacing-scale-37: 37 * $grid-size;
|
|
31
|
-
$gl-spacing-scale-48: 48 * $grid-size;
|
|
32
|
-
$gl-spacing-scale-62: 62 * $grid-size;
|
|
33
|
-
$gl-spacing-scale-75: 75 * $grid-size;
|
|
34
|
-
$gl-spacing-scale-80: 80 * $grid-size;
|
|
35
|
-
$gl-spacing-scale-88: 88 * $grid-size;
|
|
36
7
|
|
|
37
8
|
// Responsive breakpoints
|
|
38
9
|
|
|
@@ -239,6 +239,38 @@
|
|
|
239
239
|
--gl-line-height-42: 2.625rem;
|
|
240
240
|
--gl-line-height-44: 2.75rem;
|
|
241
241
|
--gl-line-height-52: 3.25rem;
|
|
242
|
+
--gl-spacing-scale-0: 0;
|
|
243
|
+
--gl-spacing-scale-1: 0.125rem;
|
|
244
|
+
--gl-spacing-scale-2: 0.25rem;
|
|
245
|
+
--gl-spacing-scale-3: 0.5rem;
|
|
246
|
+
--gl-spacing-scale-4: 0.75rem;
|
|
247
|
+
--gl-spacing-scale-5: 1rem;
|
|
248
|
+
--gl-spacing-scale-6: 1.5rem;
|
|
249
|
+
--gl-spacing-scale-7: 2rem;
|
|
250
|
+
--gl-spacing-scale-8: 2.5rem;
|
|
251
|
+
--gl-spacing-scale-9: 3rem;
|
|
252
|
+
--gl-spacing-scale-10: 3.5rem;
|
|
253
|
+
--gl-spacing-scale-11: 4rem;
|
|
254
|
+
--gl-spacing-scale-12: 5rem;
|
|
255
|
+
--gl-spacing-scale-13: 6rem;
|
|
256
|
+
--gl-spacing-scale-15: 7.5rem;
|
|
257
|
+
--gl-spacing-scale-18: 9rem;
|
|
258
|
+
--gl-spacing-scale-20: 10rem;
|
|
259
|
+
--gl-spacing-scale-26: 13rem;
|
|
260
|
+
--gl-spacing-scale-28: 14rem;
|
|
261
|
+
--gl-spacing-scale-30: 15rem;
|
|
262
|
+
--gl-spacing-scale-31: 15.5rem;
|
|
263
|
+
--gl-spacing-scale-33: 16.5rem;
|
|
264
|
+
--gl-spacing-scale-34: 17rem;
|
|
265
|
+
--gl-spacing-scale-37: 18.5rem;
|
|
266
|
+
--gl-spacing-scale-48: 24rem;
|
|
267
|
+
--gl-spacing-scale-62: 31rem;
|
|
268
|
+
--gl-spacing-scale-75: 37.5rem;
|
|
269
|
+
--gl-spacing-scale-80: 40rem;
|
|
270
|
+
--gl-spacing-scale-88: 44rem;
|
|
271
|
+
--gl-spacing-scale-px: 1px;
|
|
272
|
+
--gl-spacing-scale-2-5: 0.375rem;
|
|
273
|
+
--gl-spacing-scale-11-5: 4.5rem;
|
|
242
274
|
--gl-avatar-fallback-background-color-red: #fcb5aa3d; /** Red background for avatar fallback with no particular meaning. */
|
|
243
275
|
--gl-avatar-fallback-background-color-purple: #cbbbf23d; /** Purple background for avatar fallback with no particular meaning. */
|
|
244
276
|
--gl-avatar-fallback-background-color-blue: #9dc7f13d; /** Blue background for avatar fallback with no particular meaning. */
|
|
@@ -239,6 +239,38 @@
|
|
|
239
239
|
--gl-line-height-42: 2.625rem;
|
|
240
240
|
--gl-line-height-44: 2.75rem;
|
|
241
241
|
--gl-line-height-52: 3.25rem;
|
|
242
|
+
--gl-spacing-scale-0: 0;
|
|
243
|
+
--gl-spacing-scale-1: 0.125rem;
|
|
244
|
+
--gl-spacing-scale-2: 0.25rem;
|
|
245
|
+
--gl-spacing-scale-3: 0.5rem;
|
|
246
|
+
--gl-spacing-scale-4: 0.75rem;
|
|
247
|
+
--gl-spacing-scale-5: 1rem;
|
|
248
|
+
--gl-spacing-scale-6: 1.5rem;
|
|
249
|
+
--gl-spacing-scale-7: 2rem;
|
|
250
|
+
--gl-spacing-scale-8: 2.5rem;
|
|
251
|
+
--gl-spacing-scale-9: 3rem;
|
|
252
|
+
--gl-spacing-scale-10: 3.5rem;
|
|
253
|
+
--gl-spacing-scale-11: 4rem;
|
|
254
|
+
--gl-spacing-scale-12: 5rem;
|
|
255
|
+
--gl-spacing-scale-13: 6rem;
|
|
256
|
+
--gl-spacing-scale-15: 7.5rem;
|
|
257
|
+
--gl-spacing-scale-18: 9rem;
|
|
258
|
+
--gl-spacing-scale-20: 10rem;
|
|
259
|
+
--gl-spacing-scale-26: 13rem;
|
|
260
|
+
--gl-spacing-scale-28: 14rem;
|
|
261
|
+
--gl-spacing-scale-30: 15rem;
|
|
262
|
+
--gl-spacing-scale-31: 15.5rem;
|
|
263
|
+
--gl-spacing-scale-33: 16.5rem;
|
|
264
|
+
--gl-spacing-scale-34: 17rem;
|
|
265
|
+
--gl-spacing-scale-37: 18.5rem;
|
|
266
|
+
--gl-spacing-scale-48: 24rem;
|
|
267
|
+
--gl-spacing-scale-62: 31rem;
|
|
268
|
+
--gl-spacing-scale-75: 37.5rem;
|
|
269
|
+
--gl-spacing-scale-80: 40rem;
|
|
270
|
+
--gl-spacing-scale-88: 44rem;
|
|
271
|
+
--gl-spacing-scale-px: 1px;
|
|
272
|
+
--gl-spacing-scale-2-5: 0.375rem;
|
|
273
|
+
--gl-spacing-scale-11-5: 4.5rem;
|
|
242
274
|
--gl-avatar-fallback-background-color-red: #fcb5aa3d; /** Red background for avatar fallback with no particular meaning. */
|
|
243
275
|
--gl-avatar-fallback-background-color-purple: #cbbbf23d; /** Purple background for avatar fallback with no particular meaning. */
|
|
244
276
|
--gl-avatar-fallback-background-color-blue: #9dc7f13d; /** Blue background for avatar fallback with no particular meaning. */
|