@gitlab/ui 49.0.1 → 49.0.2
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 +7 -0
- package/dist/components/base/accordion/accordion.js +2 -8
- package/dist/components/base/accordion/accordion_item.js +0 -14
- package/dist/components/base/alert/alert.js +4 -22
- package/dist/components/base/avatar/avatar.js +0 -7
- package/dist/components/base/avatar_labeled/avatar_labeled.js +0 -2
- package/dist/components/base/avatars_inline/avatars_inline.js +2 -10
- package/dist/components/base/badge/badge.js +0 -8
- package/dist/components/base/banner/banner.js +0 -10
- package/dist/components/base/breadcrumb/breadcrumb.js +0 -12
- package/dist/components/base/breadcrumb/breadcrumb_item.js +0 -2
- package/dist/components/base/broadcast_message/broadcast_message.js +0 -3
- package/dist/components/base/button/button.js +0 -11
- package/dist/components/base/card/card.js +1 -2
- package/dist/components/base/datepicker/datepicker.js +7 -42
- package/dist/components/base/daterange_picker/daterange_picker.js +0 -23
- package/dist/components/base/drawer/drawer.js +0 -13
- package/dist/components/base/dropdown/dropdown.js +3 -17
- package/dist/components/base/dropdown/dropdown_item.js +2 -8
- package/dist/components/base/filtered_search/common_story_options.js +1 -2
- package/dist/components/base/filtered_search/filtered_search.js +9 -61
- package/dist/components/base/filtered_search/filtered_search_suggestion.js +0 -6
- package/dist/components/base/filtered_search/filtered_search_suggestion_list.js +0 -16
- package/dist/components/base/filtered_search/filtered_search_term.js +0 -9
- package/dist/components/base/filtered_search/filtered_search_token.js +10 -49
- package/dist/components/base/filtered_search/filtered_search_token_segment.js +3 -56
- package/dist/components/base/filtered_search/filtered_search_utils.js +7 -24
- package/dist/components/base/form/form_checkbox/form_checkbox.js +0 -2
- package/dist/components/base/form/form_checkbox_tree/checkbox_tree_node.js +0 -4
- package/dist/components/base/form/form_checkbox_tree/form_checkbox_tree.js +0 -10
- package/dist/components/base/form/form_checkbox_tree/models/node.js +1 -10
- package/dist/components/base/form/form_checkbox_tree/models/tree.js +16 -37
- package/dist/components/base/form/form_combobox/form_combobox.js +2 -36
- package/dist/components/base/form/form_group/form_group.js +2 -7
- package/dist/components/base/form/form_input/form_input.js +2 -8
- package/dist/components/base/form/form_input_group/form_input_group.js +0 -5
- package/dist/components/base/form/form_input_group/form_input_group_mixin.js +0 -8
- package/dist/components/base/form/form_radio_group/form_radio_group.js +0 -2
- package/dist/components/base/form/form_select/form_select.js +0 -3
- package/dist/components/base/form/form_textarea/form_textarea.js +2 -7
- package/dist/components/base/icon/icon.js +4 -14
- package/dist/components/base/infinite_scroll/infinite_scroll.js +7 -21
- package/dist/components/base/keyset_pagination/keyset_pagination.js +0 -9
- package/dist/components/base/label/label.js +0 -12
- package/dist/components/base/loading_icon/loading_icon.js +7 -10
- package/dist/components/base/markdown/markdown.js +1 -0
- package/dist/components/base/modal/modal.js +7 -27
- package/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js +0 -25
- package/dist/components/base/new_dropdowns/constants.js +4 -2
- package/dist/components/base/new_dropdowns/listbox/listbox.js +0 -63
- package/dist/components/base/new_dropdowns/listbox/listbox_group.js +0 -2
- package/dist/components/base/new_dropdowns/listbox/listbox_item.js +0 -5
- package/dist/components/base/new_dropdowns/listbox/utils.js +0 -7
- package/dist/components/base/paginated_list/paginated_list.js +0 -15
- package/dist/components/base/pagination/pagination.js +14 -72
- package/dist/components/base/path/path.js +0 -29
- package/dist/components/base/popover/popover.js +0 -5
- package/dist/components/base/search_box_by_click/search_box_by_click.js +1 -26
- package/dist/components/base/search_box_by_type/search_box_by_type.js +2 -12
- package/dist/components/base/segmented_control/segmented_control.js +0 -10
- package/dist/components/base/skeleton_loader/skeleton_loader.js +0 -19
- package/dist/components/base/skeleton_loading/skeleton_loading.js +0 -3
- package/dist/components/base/sorting/sorting.js +1 -9
- package/dist/components/base/sorting/sorting_item.js +4 -6
- package/dist/components/base/table/table.js +0 -4
- package/dist/components/base/tabs/tab/tab.js +2 -6
- package/dist/components/base/tabs/tabs/scrollable_tabs.js +0 -21
- package/dist/components/base/tabs/tabs/tabs.js +8 -33
- package/dist/components/base/toast/toast.js +3 -15
- package/dist/components/base/toggle/toggle.js +0 -18
- package/dist/components/base/token/token.js +0 -4
- package/dist/components/base/token_selector/token_container.js +0 -24
- package/dist/components/base/token_selector/token_selector.js +10 -61
- package/dist/components/base/token_selector/token_selector_dropdown.js +4 -32
- package/dist/components/charts/area/area.js +8 -32
- package/dist/components/charts/bar/bar.js +7 -19
- package/dist/components/charts/chart/chart.js +1 -22
- package/dist/components/charts/column/column.js +8 -18
- package/dist/components/charts/discrete_scatter/discrete_scatter.js +2 -13
- package/dist/components/charts/gauge/gauge.js +0 -15
- package/dist/components/charts/heatmap/heatmap.js +3 -16
- package/dist/components/charts/legend/legend.js +2 -24
- package/dist/components/charts/line/line.js +8 -34
- package/dist/components/charts/series_label/series_label.js +0 -12
- package/dist/components/charts/single_stat/single_stat.js +0 -8
- package/dist/components/charts/sparkline/sparkline.js +1 -16
- package/dist/components/charts/stacked_column/stacked_column.js +8 -26
- package/dist/components/charts/tooltip/tooltip.js +0 -6
- package/dist/components/mixins/button_mixin.js +0 -1
- package/dist/components/mixins/safe_link_mixin.js +0 -1
- package/dist/components/mixins/toolbox_mixin.js +0 -1
- package/dist/components/mixins/tooltip_mixin.js +1 -2
- package/dist/components/regions/empty_state/empty_state.js +0 -12
- package/dist/components/utilities/animated_number/animated_number.js +0 -16
- package/dist/components/utilities/friendly_wrap/friendly_wrap.js +0 -3
- package/dist/components/utilities/intersection_observer/intersection_observer.js +0 -7
- package/dist/components/utilities/intersperse/intersperse.js +3 -9
- package/dist/components/utilities/sprintf/sprintf.js +9 -23
- package/dist/components/utilities/truncate/truncate.js +0 -10
- package/dist/config.js +3 -4
- package/dist/directives/hover_load/hover_load.js +2 -8
- package/dist/directives/outside/get_event_like_time_stamp.js +4 -2
- package/dist/directives/outside/outside.js +5 -20
- package/dist/directives/resize_observer/resize_observer.js +0 -10
- package/dist/directives/safe_html/safe_html.js +5 -6
- package/dist/directives/safe_link/mock_data.js +1 -1
- package/dist/directives/safe_link/safe_link.js +0 -13
- package/dist/utils/breakpoints.js +0 -3
- package/dist/utils/charts/config.js +29 -42
- package/dist/utils/charts/constants.js +8 -8
- package/dist/utils/charts/mock_data.js +2 -2
- package/dist/utils/charts/story_config.js +1 -1
- package/dist/utils/charts/theme.js +1 -3
- package/dist/utils/charts/utils.js +2 -6
- package/dist/utils/constants.js +10 -7
- package/dist/utils/data_utils.js +5 -4
- package/dist/utils/datetime_utility.js +4 -4
- package/dist/utils/number_utils.js +7 -11
- package/dist/utils/stories_utils.js +1 -1
- package/dist/utils/story_decorators/container.js +0 -1
- package/dist/utils/string_utils.js +0 -14
- package/dist/utils/test_utils.js +3 -2
- package/dist/utils/use_fake_date.js +0 -4
- package/dist/utils/use_mock_intersection_observer.js +4 -19
- package/dist/utils/utils.js +5 -14
- package/package.json +3 -3
- package/src/components/base/pagination/pagination.vue +2 -2
|
@@ -49,30 +49,24 @@ var script = {
|
|
|
49
49
|
required: true
|
|
50
50
|
}
|
|
51
51
|
},
|
|
52
|
-
|
|
53
52
|
data() {
|
|
54
53
|
return {
|
|
55
54
|
focusedDropdownItemIndex: 0
|
|
56
55
|
};
|
|
57
56
|
},
|
|
58
|
-
|
|
59
57
|
computed: {
|
|
60
58
|
focusedDropdownItem() {
|
|
61
59
|
return this.dropdownItems[this.focusedDropdownItemIndex];
|
|
62
60
|
}
|
|
63
|
-
|
|
64
61
|
},
|
|
65
62
|
watch: {
|
|
66
63
|
focusedDropdownItem(newValue, oldValue) {
|
|
67
64
|
if ((newValue === null || newValue === void 0 ? void 0 : newValue.id) !== (oldValue === null || oldValue === void 0 ? void 0 : oldValue.id)) {
|
|
68
65
|
this.$emit('input', newValue);
|
|
69
|
-
|
|
70
66
|
if (!newValue) {
|
|
71
67
|
return;
|
|
72
68
|
}
|
|
73
|
-
|
|
74
69
|
const dropdownItemRef = this.getDropdownItemRef(newValue);
|
|
75
|
-
|
|
76
70
|
if (dropdownItemRef !== null && dropdownItemRef !== void 0 && dropdownItemRef.$el) {
|
|
77
71
|
dropdownItemRef.$el.scrollIntoView({
|
|
78
72
|
block: 'nearest',
|
|
@@ -81,9 +75,7 @@ var script = {
|
|
|
81
75
|
}
|
|
82
76
|
}
|
|
83
77
|
}
|
|
84
|
-
|
|
85
78
|
},
|
|
86
|
-
|
|
87
79
|
created() {
|
|
88
80
|
this.registerDropdownEventHandlers({
|
|
89
81
|
handleUpArrow: this.handleUpArrow,
|
|
@@ -94,97 +86,77 @@ var script = {
|
|
|
94
86
|
this.registerResetFocusedDropdownItem(this.resetFocusedDropdownItem);
|
|
95
87
|
this.$emit('input', this.focusedDropdownItem);
|
|
96
88
|
},
|
|
97
|
-
|
|
98
89
|
methods: {
|
|
99
90
|
handleDropdownItemClick(dropdownItem) {
|
|
100
91
|
this.$emit('dropdown-item-click', dropdownItem);
|
|
101
92
|
},
|
|
102
|
-
|
|
103
93
|
handleMousedown(dropdownItem) {
|
|
104
94
|
// `event.relatedTarget` returns `null` on Safari because buttons are not focused on click (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#Clicking_and_focus)
|
|
105
95
|
// Because of this we need to manually focus on the button. We do this in `mousedown` because it is fired before the `blur` event
|
|
106
96
|
const dropdownItemRef = dropdownItem === null ? this.$refs.userDefinedTokenDropdownItem : this.getDropdownItemRef(dropdownItem);
|
|
107
|
-
|
|
108
97
|
if (dropdownItemRef !== null && dropdownItemRef !== void 0 && dropdownItemRef.$el) {
|
|
109
98
|
dropdownItemRef.$el.querySelector('button').focus();
|
|
110
99
|
}
|
|
111
100
|
},
|
|
112
|
-
|
|
113
101
|
handleUpArrow() {
|
|
114
102
|
if (!this.show) {
|
|
115
103
|
return;
|
|
116
|
-
}
|
|
117
|
-
|
|
104
|
+
}
|
|
118
105
|
|
|
106
|
+
// First dropdown item has been reached
|
|
119
107
|
if (this.focusedDropdownItemIndex === 0) {
|
|
120
108
|
return;
|
|
121
109
|
}
|
|
122
|
-
|
|
123
110
|
this.focusPrevDropdownItem();
|
|
124
111
|
},
|
|
125
|
-
|
|
126
112
|
handleDownArrow() {
|
|
127
113
|
if (!this.show) {
|
|
128
114
|
this.$emit('show');
|
|
129
115
|
return;
|
|
130
|
-
}
|
|
131
|
-
|
|
116
|
+
}
|
|
132
117
|
|
|
118
|
+
// Last dropdown item has been reached
|
|
133
119
|
if (this.focusedDropdownItemIndex === this.dropdownItems.length - 1) {
|
|
134
120
|
return;
|
|
135
121
|
}
|
|
136
|
-
|
|
137
122
|
this.focusNextDropdownItem();
|
|
138
123
|
},
|
|
139
|
-
|
|
140
124
|
handleHomeKey(event) {
|
|
141
125
|
event.preventDefault();
|
|
142
126
|
this.focusFirstDropdownItem();
|
|
143
127
|
},
|
|
144
|
-
|
|
145
128
|
handleEndKey(event) {
|
|
146
129
|
event.preventDefault();
|
|
147
130
|
this.focusLastDropdownItem();
|
|
148
131
|
},
|
|
149
|
-
|
|
150
132
|
focusLastDropdownItem() {
|
|
151
133
|
this.focusedDropdownItemIndex = this.dropdownItems.length - 1;
|
|
152
134
|
},
|
|
153
|
-
|
|
154
135
|
focusFirstDropdownItem() {
|
|
155
136
|
this.focusedDropdownItemIndex = 0;
|
|
156
137
|
},
|
|
157
|
-
|
|
158
138
|
focusNextDropdownItem() {
|
|
159
139
|
this.focusedDropdownItemIndex += 1;
|
|
160
140
|
},
|
|
161
|
-
|
|
162
141
|
focusPrevDropdownItem() {
|
|
163
142
|
this.focusedDropdownItemIndex -= 1;
|
|
164
143
|
},
|
|
165
|
-
|
|
166
144
|
resetFocusedDropdownItem() {
|
|
167
145
|
this.focusedDropdownItemIndex = 0;
|
|
168
146
|
},
|
|
169
|
-
|
|
170
147
|
dropdownItemIsFocused(dropdownItem) {
|
|
171
148
|
if (!this.focusedDropdownItem) {
|
|
172
149
|
return false;
|
|
173
150
|
}
|
|
174
|
-
|
|
175
151
|
return dropdownItem.id === this.focusedDropdownItem.id;
|
|
176
152
|
},
|
|
177
|
-
|
|
178
153
|
getDropdownItemRef(dropdownItem) {
|
|
179
154
|
var _this$$refs$dropdownI;
|
|
180
|
-
|
|
181
155
|
return (_this$$refs$dropdownI = this.$refs.dropdownItems) === null || _this$$refs$dropdownI === void 0 ? void 0 : _this$$refs$dropdownI.find(ref => ref.$attrs['data-dropdown-item-id'] === dropdownItem.id);
|
|
182
156
|
},
|
|
183
|
-
|
|
184
157
|
dropdownItemIdAttribute(dropdownItem) {
|
|
185
158
|
return dropdownItem ? `${this.componentId}-dropdown-item-${dropdownItem.id}` : null;
|
|
186
159
|
}
|
|
187
|
-
|
|
188
160
|
}
|
|
189
161
|
};
|
|
190
162
|
|
|
@@ -80,14 +80,11 @@ var script = {
|
|
|
80
80
|
type: String,
|
|
81
81
|
required: false,
|
|
82
82
|
default: LEGEND_LAYOUT_INLINE,
|
|
83
|
-
|
|
84
83
|
validator(layout) {
|
|
85
84
|
return [LEGEND_LAYOUT_INLINE, LEGEND_LAYOUT_TABLE].indexOf(layout) !== -1;
|
|
86
85
|
}
|
|
87
|
-
|
|
88
86
|
}
|
|
89
87
|
},
|
|
90
|
-
|
|
91
88
|
data() {
|
|
92
89
|
// Part of the tooltip related data can be
|
|
93
90
|
// moved into the tooltip component.
|
|
@@ -113,14 +110,11 @@ var script = {
|
|
|
113
110
|
selectedFormatTooltipText: this.formatTooltipText || this.defaultFormatTooltipText
|
|
114
111
|
};
|
|
115
112
|
},
|
|
116
|
-
|
|
117
113
|
computed: {
|
|
118
114
|
series() {
|
|
119
115
|
const dataSeries = this.data.map((series, index) => {
|
|
120
116
|
const defaultColor = colorFromDefaultPalette(index);
|
|
121
|
-
|
|
122
117
|
const getColor = type => series[type] && series[type].color ? series[type].color : defaultColor;
|
|
123
|
-
|
|
124
118
|
return merge({
|
|
125
119
|
areaStyle: {
|
|
126
120
|
opacity: defaultAreaOpacity,
|
|
@@ -134,20 +128,17 @@ var script = {
|
|
|
134
128
|
color: getColor('itemStyle')
|
|
135
129
|
}
|
|
136
130
|
}, lineStyle, series, getThresholdConfig(this.thresholds));
|
|
137
|
-
});
|
|
131
|
+
});
|
|
132
|
+
// if annotation series exists, append it
|
|
138
133
|
// along with data series
|
|
139
|
-
|
|
140
134
|
if (this.annotationSeries) {
|
|
141
135
|
return [...dataSeries, this.annotationSeries];
|
|
142
136
|
}
|
|
143
|
-
|
|
144
137
|
return dataSeries;
|
|
145
138
|
},
|
|
146
|
-
|
|
147
139
|
annotationSeries() {
|
|
148
140
|
return generateAnnotationSeries(this.annotations);
|
|
149
141
|
},
|
|
150
|
-
|
|
151
142
|
options() {
|
|
152
143
|
const defaultAreaChartOptions = {
|
|
153
144
|
xAxis: {
|
|
@@ -170,12 +161,11 @@ var script = {
|
|
|
170
161
|
show: false
|
|
171
162
|
}
|
|
172
163
|
};
|
|
173
|
-
const mergedOptions = merge({}, defaultChartOptions, defaultAreaChartOptions, this.option, dataZoomAdjustments(this.option.dataZoom), this.toolboxAdjustments);
|
|
164
|
+
const mergedOptions = merge({}, defaultChartOptions, defaultAreaChartOptions, this.option, dataZoomAdjustments(this.option.dataZoom), this.toolboxAdjustments);
|
|
165
|
+
// All chart options can be merged but series
|
|
174
166
|
// needs to be handled specially.
|
|
175
|
-
|
|
176
167
|
return mergeSeriesToOptions(mergeAnnotationAxisToOptions(mergedOptions, this.hasAnnotations), this.series);
|
|
177
168
|
},
|
|
178
|
-
|
|
179
169
|
/**
|
|
180
170
|
* Annotations currently are passed as series options in monitoring dashboard.
|
|
181
171
|
* Once https://gitlab.com/gitlab-org/gitlab/-/issues/213390 is closed,
|
|
@@ -186,21 +176,17 @@ var script = {
|
|
|
186
176
|
hasAnnotations() {
|
|
187
177
|
return this.annotations.length !== 0 || seriesHasAnnotations(this.option.series);
|
|
188
178
|
},
|
|
189
|
-
|
|
190
179
|
shouldShowAnnotationsTooltip() {
|
|
191
180
|
return this.chart && this.hasAnnotations;
|
|
192
181
|
},
|
|
193
|
-
|
|
194
182
|
compiledOptions() {
|
|
195
183
|
return this.chart ? this.chart.getOption() : null;
|
|
196
184
|
},
|
|
197
|
-
|
|
198
185
|
legendStyle() {
|
|
199
186
|
return {
|
|
200
187
|
paddingLeft: `${grid.left}px`
|
|
201
188
|
};
|
|
202
189
|
},
|
|
203
|
-
|
|
204
190
|
seriesInfo() {
|
|
205
191
|
return this.compiledOptions.series.reduce((acc, series, index) => {
|
|
206
192
|
if (series.type === 'line') {
|
|
@@ -211,20 +197,16 @@ var script = {
|
|
|
211
197
|
data: this.includeLegendAvgMax ? series.data.map(data => data[1]) : undefined
|
|
212
198
|
});
|
|
213
199
|
}
|
|
214
|
-
|
|
215
200
|
return acc;
|
|
216
201
|
}, []);
|
|
217
202
|
}
|
|
218
|
-
|
|
219
203
|
},
|
|
220
|
-
|
|
221
204
|
beforeDestroy() {
|
|
222
205
|
this.chart.getDom().removeEventListener('mousemove', this.debouncedShowHideTooltip);
|
|
223
206
|
this.chart.getDom().removeEventListener('mouseout', this.debouncedShowHideTooltip);
|
|
224
207
|
this.chart.off('mouseout', this.hideAnnotationsTooltip);
|
|
225
208
|
this.chart.off('mouseover', this.onChartMouseOver);
|
|
226
209
|
},
|
|
227
|
-
|
|
228
210
|
methods: {
|
|
229
211
|
defaultFormatTooltipText(params) {
|
|
230
212
|
const {
|
|
@@ -234,26 +216,26 @@ var script = {
|
|
|
234
216
|
this.$set(this, 'dataTooltipContent', tooltipContent);
|
|
235
217
|
this.dataTooltipTitle = xLabels.join(', ');
|
|
236
218
|
},
|
|
237
|
-
|
|
238
219
|
defaultAnnotationTooltipText(params) {
|
|
239
220
|
var _params$data$tooltipD;
|
|
240
|
-
|
|
241
221
|
return {
|
|
242
222
|
title: params.data.xAxis,
|
|
243
223
|
content: (_params$data$tooltipD = params.data.tooltipData) === null || _params$data$tooltipD === void 0 ? void 0 : _params$data$tooltipD.content
|
|
244
224
|
};
|
|
245
225
|
},
|
|
246
|
-
|
|
247
226
|
onCreated(chart) {
|
|
248
227
|
// These listeners are used to show/hide data tooltips
|
|
249
228
|
// when the mouse is hovered over the parent container
|
|
250
229
|
// of echarts' svg element. This works only for data points
|
|
251
230
|
// and not markPoints.
|
|
252
231
|
chart.getDom().addEventListener('mousemove', this.debouncedShowHideTooltip);
|
|
253
|
-
chart.getDom().addEventListener('mouseout', this.debouncedShowHideTooltip);
|
|
232
|
+
chart.getDom().addEventListener('mouseout', this.debouncedShowHideTooltip);
|
|
233
|
+
|
|
234
|
+
// eCharts inbuild mouse events
|
|
254
235
|
// https://echarts.apache.org/en/api.html#events.Mouse%20events
|
|
255
236
|
// is used to attach listeners to markPoints. These listeners
|
|
256
237
|
// are currently used for annotation arrows at the bottom of the chart.
|
|
238
|
+
|
|
257
239
|
// Because data points and annotations arrows are in different
|
|
258
240
|
// sections of the charts with their own mouseovers and mouseouts,
|
|
259
241
|
// there shouldn't be an overlapping situation where both tooltips
|
|
@@ -263,11 +245,9 @@ var script = {
|
|
|
263
245
|
chart.on('mouseout', this.onChartDataPointMouseOut);
|
|
264
246
|
chart.on('mouseover', this.onChartDataPointMouseOver);
|
|
265
247
|
}
|
|
266
|
-
|
|
267
248
|
this.chart = chart;
|
|
268
249
|
this.$emit('created', chart);
|
|
269
250
|
},
|
|
270
|
-
|
|
271
251
|
showHideTooltip(mouseEvent) {
|
|
272
252
|
this.showDataTooltip = this.chart.containPixel('grid', [mouseEvent.zrX, mouseEvent.zrY]);
|
|
273
253
|
this.dataTooltipPosition = {
|
|
@@ -275,11 +255,9 @@ var script = {
|
|
|
275
255
|
top: `${mouseEvent.zrY}px`
|
|
276
256
|
};
|
|
277
257
|
},
|
|
278
|
-
|
|
279
258
|
onChartDataPointMouseOut() {
|
|
280
259
|
this.showAnnotationsTooltip = false;
|
|
281
260
|
},
|
|
282
|
-
|
|
283
261
|
/**
|
|
284
262
|
* Check if the hovered data point is an annotation
|
|
285
263
|
* point to show the annotation tooltip.
|
|
@@ -303,11 +281,9 @@ var script = {
|
|
|
303
281
|
};
|
|
304
282
|
}
|
|
305
283
|
},
|
|
306
|
-
|
|
307
284
|
onLabelChange(params) {
|
|
308
285
|
this.selectedFormatTooltipText(params);
|
|
309
286
|
}
|
|
310
|
-
|
|
311
287
|
}
|
|
312
288
|
};
|
|
313
289
|
|
|
@@ -12,25 +12,25 @@ import ChartTooltip from '../tooltip/tooltip';
|
|
|
12
12
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
13
13
|
|
|
14
14
|
//
|
|
15
|
+
|
|
15
16
|
/**
|
|
16
17
|
* `nameGap` in charts/config is set to 50 but it is not
|
|
17
18
|
* used for bar charts as the axes are flipped. That is why
|
|
18
19
|
* we're explicitly setting it here
|
|
19
20
|
*/
|
|
20
|
-
|
|
21
21
|
const DEFAULT_NAME_GAP = 50;
|
|
22
|
+
|
|
22
23
|
/**
|
|
23
24
|
* This is the magic number at which the y-axis name
|
|
24
25
|
* and y-axis labels don't overlap
|
|
25
26
|
* @Number
|
|
26
27
|
*/
|
|
27
|
-
|
|
28
28
|
const AXIS_LABEL_LENGTH = 7;
|
|
29
|
+
|
|
29
30
|
/**
|
|
30
31
|
* Because the axes are reversed in bar charts defaultChartOptions
|
|
31
32
|
* xAxis and yAxis needs to be handled specifically.
|
|
32
33
|
*/
|
|
33
|
-
|
|
34
34
|
const defaultOptions = {
|
|
35
35
|
grid,
|
|
36
36
|
xAxis: {
|
|
@@ -87,7 +87,6 @@ var script = {
|
|
|
87
87
|
default: 'value'
|
|
88
88
|
}
|
|
89
89
|
},
|
|
90
|
-
|
|
91
90
|
data() {
|
|
92
91
|
return {
|
|
93
92
|
chart: null,
|
|
@@ -101,7 +100,6 @@ var script = {
|
|
|
101
100
|
debouncedMoveShowTooltip: debounceByAnimationFrame(this.moveShowTooltip)
|
|
102
101
|
};
|
|
103
102
|
},
|
|
104
|
-
|
|
105
103
|
computed: {
|
|
106
104
|
series() {
|
|
107
105
|
return Object.keys(this.data).map((key, index) => {
|
|
@@ -125,7 +123,6 @@ var script = {
|
|
|
125
123
|
};
|
|
126
124
|
});
|
|
127
125
|
},
|
|
128
|
-
|
|
129
126
|
options() {
|
|
130
127
|
const mergedOptions = merge({}, defaultOptions, {
|
|
131
128
|
xAxis: {
|
|
@@ -152,21 +149,18 @@ var script = {
|
|
|
152
149
|
legend: {
|
|
153
150
|
show: false
|
|
154
151
|
}
|
|
155
|
-
}, this.option, dataZoomAdjustments(this.option.dataZoom), this.toolboxAdjustments);
|
|
152
|
+
}, this.option, dataZoomAdjustments(this.option.dataZoom), this.toolboxAdjustments);
|
|
153
|
+
// All chart options can be merged but series
|
|
156
154
|
// needs to be handled specially
|
|
157
|
-
|
|
158
155
|
return mergeSeriesToOptions(mergedOptions, this.series);
|
|
159
156
|
}
|
|
160
|
-
|
|
161
157
|
},
|
|
162
|
-
|
|
163
158
|
beforeDestroy() {
|
|
164
159
|
if (this.chart) {
|
|
165
160
|
this.chart.getDom().removeEventListener('mousemove', this.debouncedMoveShowTooltip);
|
|
166
161
|
this.chart.getDom().removeEventListener('mouseout', this.debouncedMoveShowTooltip);
|
|
167
162
|
}
|
|
168
163
|
},
|
|
169
|
-
|
|
170
164
|
methods: {
|
|
171
165
|
moveShowTooltip(mouseEvent) {
|
|
172
166
|
this.tooltipPosition = {
|
|
@@ -175,14 +169,12 @@ var script = {
|
|
|
175
169
|
};
|
|
176
170
|
this.showTooltip = this.chart.containPixel('grid', [mouseEvent.zrX, mouseEvent.zrY]);
|
|
177
171
|
},
|
|
178
|
-
|
|
179
172
|
onCreated(chart) {
|
|
180
173
|
this.chart = chart;
|
|
181
174
|
this.$emit('created', chart);
|
|
182
175
|
chart.getDom().addEventListener('mousemove', this.debouncedMoveShowTooltip);
|
|
183
176
|
chart.getDom().addEventListener('mouseout', this.debouncedMoveShowTooltip);
|
|
184
177
|
},
|
|
185
|
-
|
|
186
178
|
onLabelChange(params) {
|
|
187
179
|
const {
|
|
188
180
|
yLabels,
|
|
@@ -191,7 +183,6 @@ var script = {
|
|
|
191
183
|
this.$set(this, 'tooltipContent', tooltipContent);
|
|
192
184
|
this.tooltipTitle = yLabels.join(', ');
|
|
193
185
|
},
|
|
194
|
-
|
|
195
186
|
/**
|
|
196
187
|
* The existing getDefaultTooltipContent in utils works against the y-axis value.
|
|
197
188
|
* However, for bar charts, the tooltip should be against x-axis values.
|
|
@@ -208,19 +199,17 @@ var script = {
|
|
|
208
199
|
yLabels,
|
|
209
200
|
tooltipContent
|
|
210
201
|
} = params.seriesData.reduce((acc, chartItem) => {
|
|
211
|
-
const [value, title] = chartItem.value || [];
|
|
212
|
-
|
|
202
|
+
const [value, title] = chartItem.value || [];
|
|
203
|
+
// The x axis title is used instead of y axis
|
|
213
204
|
const seriesName = seriesDataLength === 1 && xAxisTitle ? xAxisTitle : chartItem.seriesName;
|
|
214
205
|
const color = seriesDataLength === 1 ? '' : chartItem.color;
|
|
215
206
|
acc.tooltipContent[seriesName] = {
|
|
216
207
|
value,
|
|
217
208
|
color
|
|
218
209
|
};
|
|
219
|
-
|
|
220
210
|
if (!acc.yLabels.includes(title)) {
|
|
221
211
|
acc.yLabels.push(title);
|
|
222
212
|
}
|
|
223
|
-
|
|
224
213
|
return acc;
|
|
225
214
|
}, {
|
|
226
215
|
yLabels: [],
|
|
@@ -231,7 +220,6 @@ var script = {
|
|
|
231
220
|
tooltipContent
|
|
232
221
|
};
|
|
233
222
|
}
|
|
234
|
-
|
|
235
223
|
}
|
|
236
224
|
};
|
|
237
225
|
|
|
@@ -5,13 +5,12 @@ import { GlResizeObserverDirective } from '../../../directives/resize_observer/r
|
|
|
5
5
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
6
6
|
|
|
7
7
|
//
|
|
8
|
+
|
|
8
9
|
/**
|
|
9
10
|
* Allowed values by eCharts
|
|
10
11
|
* https://echarts.apache.org/en/api.html#echartsInstance.resize
|
|
11
12
|
*/
|
|
12
|
-
|
|
13
13
|
const sizeValidator = size => Number.isFinite(size) || size === 'auto' || size == null;
|
|
14
|
-
|
|
15
14
|
var script = {
|
|
16
15
|
directives: {
|
|
17
16
|
resizeObserver: GlResizeObserverDirective
|
|
@@ -21,7 +20,6 @@ var script = {
|
|
|
21
20
|
type: Object,
|
|
22
21
|
required: true
|
|
23
22
|
},
|
|
24
|
-
|
|
25
23
|
/**
|
|
26
24
|
* Warning: this prop is deprecated and will soon be removed
|
|
27
25
|
* Please do not utilize `disableTheme` for formatting
|
|
@@ -53,11 +51,9 @@ var script = {
|
|
|
53
51
|
type: String,
|
|
54
52
|
required: false,
|
|
55
53
|
default: 'svg',
|
|
56
|
-
|
|
57
54
|
validator(renderer) {
|
|
58
55
|
return validRenderers.includes(renderer);
|
|
59
56
|
}
|
|
60
|
-
|
|
61
57
|
},
|
|
62
58
|
responsive: {
|
|
63
59
|
type: Boolean,
|
|
@@ -65,36 +61,29 @@ var script = {
|
|
|
65
61
|
default: false
|
|
66
62
|
}
|
|
67
63
|
},
|
|
68
|
-
|
|
69
64
|
data() {
|
|
70
65
|
return {
|
|
71
66
|
chart: null
|
|
72
67
|
};
|
|
73
68
|
},
|
|
74
|
-
|
|
75
69
|
watch: {
|
|
76
70
|
options() {
|
|
77
71
|
if (this.chart) {
|
|
78
72
|
this.draw();
|
|
79
73
|
}
|
|
80
74
|
},
|
|
81
|
-
|
|
82
75
|
width() {
|
|
83
76
|
this.setChartSize();
|
|
84
77
|
},
|
|
85
|
-
|
|
86
78
|
height() {
|
|
87
79
|
this.setChartSize();
|
|
88
80
|
}
|
|
89
|
-
|
|
90
81
|
},
|
|
91
|
-
|
|
92
82
|
created() {
|
|
93
83
|
if (!this.disableTheme) {
|
|
94
84
|
echarts.registerTheme(themeName, createTheme(this.options));
|
|
95
85
|
}
|
|
96
86
|
},
|
|
97
|
-
|
|
98
87
|
async mounted() {
|
|
99
88
|
await this.$nextTick();
|
|
100
89
|
this.chart = echarts.init(this.$refs.chart, this.disableTheme ? null : themeName, {
|
|
@@ -102,43 +91,35 @@ var script = {
|
|
|
102
91
|
width: defaultWidth,
|
|
103
92
|
height: defaultHeight
|
|
104
93
|
});
|
|
105
|
-
|
|
106
94
|
if (this.groupId.length) {
|
|
107
95
|
this.chart.group = this.groupId;
|
|
108
96
|
echarts.connect(this.groupId);
|
|
109
97
|
}
|
|
110
|
-
|
|
111
98
|
this.chart.on('click', this.handleClick);
|
|
112
99
|
/**
|
|
113
100
|
* Emitted after calling `echarts.init`
|
|
114
101
|
*/
|
|
115
|
-
|
|
116
102
|
this.$emit('created', this.chart);
|
|
117
103
|
this.draw();
|
|
118
104
|
this.setChartSize();
|
|
119
105
|
},
|
|
120
|
-
|
|
121
106
|
beforeDestroy() {
|
|
122
107
|
this.chart.off('click', this.handleClick);
|
|
123
108
|
},
|
|
124
|
-
|
|
125
109
|
methods: {
|
|
126
110
|
draw() {
|
|
127
111
|
this.chart.setOption(this.options);
|
|
128
112
|
/**
|
|
129
113
|
* Emitted after calling `echarts.setOption`
|
|
130
114
|
*/
|
|
131
|
-
|
|
132
115
|
this.$emit('updated', this.chart);
|
|
133
116
|
},
|
|
134
|
-
|
|
135
117
|
setChartSize() {
|
|
136
118
|
this.chart.resize({
|
|
137
119
|
width: this.width || 'auto',
|
|
138
120
|
height: this.height || defaultHeight
|
|
139
121
|
});
|
|
140
122
|
},
|
|
141
|
-
|
|
142
123
|
handleClick(params) {
|
|
143
124
|
/**
|
|
144
125
|
* Emitted when clicked on a data item in the chart (e.g., a bar/column).
|
|
@@ -151,11 +132,9 @@ var script = {
|
|
|
151
132
|
params
|
|
152
133
|
});
|
|
153
134
|
},
|
|
154
|
-
|
|
155
135
|
handleResize() {
|
|
156
136
|
if (this.responsive) this.chart.resize();
|
|
157
137
|
}
|
|
158
|
-
|
|
159
138
|
}
|
|
160
139
|
};
|
|
161
140
|
|
|
@@ -11,7 +11,8 @@ import ChartTooltip from '../tooltip/tooltip';
|
|
|
11
11
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
12
12
|
|
|
13
13
|
//
|
|
14
|
-
const yAxisDefaults = {
|
|
14
|
+
const yAxisDefaults = {
|
|
15
|
+
...yAxis,
|
|
15
16
|
nameLocation: 'center',
|
|
16
17
|
axisTick: {
|
|
17
18
|
show: false
|
|
@@ -65,7 +66,6 @@ var script = {
|
|
|
65
66
|
validator: value => ['value', 'category', 'time', 'log'].indexOf(value) !== -1
|
|
66
67
|
}
|
|
67
68
|
},
|
|
68
|
-
|
|
69
69
|
data() {
|
|
70
70
|
return {
|
|
71
71
|
chart: null,
|
|
@@ -79,12 +79,10 @@ var script = {
|
|
|
79
79
|
debouncedMoveShowTooltip: debounceByAnimationFrame(this.moveShowTooltip)
|
|
80
80
|
};
|
|
81
81
|
},
|
|
82
|
-
|
|
83
82
|
computed: {
|
|
84
83
|
hasSecondaryAxis() {
|
|
85
84
|
return Boolean(this.secondaryData.length);
|
|
86
85
|
},
|
|
87
|
-
|
|
88
86
|
barSeries() {
|
|
89
87
|
return this.bars.map((_ref, index) => {
|
|
90
88
|
let {
|
|
@@ -99,7 +97,6 @@ var script = {
|
|
|
99
97
|
});
|
|
100
98
|
});
|
|
101
99
|
},
|
|
102
|
-
|
|
103
100
|
lineSeries() {
|
|
104
101
|
const offset = this.bars.length;
|
|
105
102
|
return this.lines.map((_ref2, index) => {
|
|
@@ -115,7 +112,6 @@ var script = {
|
|
|
115
112
|
});
|
|
116
113
|
});
|
|
117
114
|
},
|
|
118
|
-
|
|
119
115
|
secondarySeries() {
|
|
120
116
|
const offset = this.bars.length + this.lines.length;
|
|
121
117
|
return this.secondaryData.map((_ref3, index) => {
|
|
@@ -140,13 +136,12 @@ var script = {
|
|
|
140
136
|
});
|
|
141
137
|
});
|
|
142
138
|
},
|
|
143
|
-
|
|
144
139
|
series() {
|
|
145
140
|
return [...this.barSeries, ...this.lineSeries, ...this.secondarySeries];
|
|
146
141
|
},
|
|
147
|
-
|
|
148
142
|
options() {
|
|
149
|
-
const yAxisPrimary = {
|
|
143
|
+
const yAxisPrimary = {
|
|
144
|
+
...yAxisDefaults,
|
|
150
145
|
name: this.yAxisTitle
|
|
151
146
|
};
|
|
152
147
|
const mergedOptions = merge({}, defaultChartOptions, {
|
|
@@ -170,26 +165,24 @@ var script = {
|
|
|
170
165
|
name: this.xAxisTitle,
|
|
171
166
|
type: this.xAxisType
|
|
172
167
|
},
|
|
173
|
-
yAxis: this.hasSecondaryAxis ? [yAxisPrimary, {
|
|
168
|
+
yAxis: this.hasSecondaryAxis ? [yAxisPrimary, {
|
|
169
|
+
...yAxisDefaults,
|
|
174
170
|
name: this.secondaryDataTitle,
|
|
175
171
|
show: this.hasSecondaryAxis
|
|
176
172
|
}] : yAxisPrimary,
|
|
177
173
|
legend: {
|
|
178
174
|
show: false
|
|
179
175
|
}
|
|
180
|
-
}, this.option, dataZoomAdjustments(this.option.dataZoom), this.toolboxAdjustments);
|
|
176
|
+
}, this.option, dataZoomAdjustments(this.option.dataZoom), this.toolboxAdjustments);
|
|
177
|
+
// All chart options can be merged but series
|
|
181
178
|
// needs to be handled specially
|
|
182
|
-
|
|
183
179
|
return mergeSeriesToOptions(mergedOptions, this.series);
|
|
184
180
|
}
|
|
185
|
-
|
|
186
181
|
},
|
|
187
|
-
|
|
188
182
|
beforeDestroy() {
|
|
189
183
|
this.chart.getDom().removeEventListener('mousemove', this.debouncedMoveShowTooltip);
|
|
190
184
|
this.chart.getDom().removeEventListener('mouseout', this.debouncedMoveShowTooltip);
|
|
191
185
|
},
|
|
192
|
-
|
|
193
186
|
methods: {
|
|
194
187
|
moveShowTooltip(mouseEvent) {
|
|
195
188
|
this.tooltipPosition = {
|
|
@@ -198,14 +191,12 @@ var script = {
|
|
|
198
191
|
};
|
|
199
192
|
this.showTooltip = this.chart.containPixel('grid', [mouseEvent.zrX, mouseEvent.zrY]);
|
|
200
193
|
},
|
|
201
|
-
|
|
202
194
|
onCreated(chart) {
|
|
203
195
|
chart.getDom().addEventListener('mousemove', this.debouncedMoveShowTooltip);
|
|
204
196
|
chart.getDom().addEventListener('mouseout', this.debouncedMoveShowTooltip);
|
|
205
197
|
this.chart = chart;
|
|
206
198
|
this.$emit('created', chart);
|
|
207
199
|
},
|
|
208
|
-
|
|
209
200
|
onLabelChange(params) {
|
|
210
201
|
const {
|
|
211
202
|
xLabels,
|
|
@@ -214,7 +205,6 @@ var script = {
|
|
|
214
205
|
this.$set(this, 'tooltipContent', tooltipContent);
|
|
215
206
|
this.tooltipTitle = xLabels.join(', ');
|
|
216
207
|
}
|
|
217
|
-
|
|
218
208
|
}
|
|
219
209
|
};
|
|
220
210
|
|