@gitlab/ui 61.1.1 → 61.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/components/base/alert/alert.js +1 -0
- package/dist/components/base/avatar/avatar.js +1 -0
- package/dist/components/base/avatar_labeled/avatar_labeled.js +1 -0
- package/dist/components/base/badge/badge.js +1 -0
- package/dist/components/base/breadcrumb/breadcrumb.js +1 -0
- package/dist/components/base/breadcrumb/breadcrumb_item.js +1 -0
- package/dist/components/base/broadcast_message/broadcast_message.js +1 -0
- package/dist/components/base/button/button.js +1 -0
- package/dist/components/base/button_group/button_group.js +1 -0
- package/dist/components/base/card/card.js +1 -0
- package/dist/components/base/carousel/carousel.js +1 -0
- package/dist/components/base/carousel/carousel_slide.js +1 -0
- package/dist/components/base/collapse/collapse.js +1 -0
- package/dist/components/base/datepicker/datepicker.js +1 -0
- package/dist/components/base/daterange_picker/daterange_picker.js +1 -0
- package/dist/components/base/drawer/drawer.js +1 -0
- package/dist/components/base/dropdown/dropdown.js +2 -0
- package/dist/components/base/dropdown/dropdown_divider.js +1 -0
- package/dist/components/base/dropdown/dropdown_form.js +1 -0
- package/dist/components/base/dropdown/dropdown_item.js +1 -0
- package/dist/components/base/dropdown/dropdown_section_header.js +1 -0
- package/dist/components/base/dropdown/dropdown_text.js +1 -0
- package/dist/components/base/form/form.js +1 -0
- package/dist/components/base/form/form_checkbox_tree/form_checkbox_tree.js +1 -0
- package/dist/components/base/form/form_group/form_group.js +1 -0
- package/dist/components/base/form/form_input/form_input.js +1 -0
- package/dist/components/base/form/form_radio_group/form_radio_group.js +1 -0
- package/dist/components/base/form/form_select/form_select.js +1 -0
- package/dist/components/base/form/form_textarea/form_textarea.js +1 -0
- package/dist/components/base/form/input_group_text/input_group_text.js +1 -0
- package/dist/components/base/icon/icon.js +1 -0
- package/dist/components/base/infinite_scroll/infinite_scroll.js +1 -0
- package/dist/components/base/label/label.js +1 -0
- package/dist/components/base/link/link.js +1 -0
- package/dist/components/base/loading_icon/loading_icon.js +1 -0
- package/dist/components/base/markdown/markdown.js +1 -0
- package/dist/components/base/modal/modal.js +1 -0
- package/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js +1 -0
- package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown.js +5 -1
- package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.js +4 -1
- package/dist/components/base/new_dropdowns/listbox/listbox.js +1 -0
- package/dist/components/base/new_dropdowns/listbox/listbox_group.js +1 -0
- package/dist/components/base/new_dropdowns/listbox/listbox_item.js +1 -0
- package/dist/components/base/new_dropdowns/listbox/listbox_search_input.js +1 -0
- package/dist/components/base/paginated_list/paginated_list.js +1 -0
- package/dist/components/base/path/path.js +1 -0
- package/dist/components/base/popover/popover.js +1 -0
- package/dist/components/base/progress_bar/progress_bar.js +1 -0
- package/dist/components/base/search_box_by_click/search_box_by_click.js +1 -0
- package/dist/components/base/search_box_by_type/search_box_by_type.js +1 -0
- package/dist/components/base/segmented_control/segmented_control.js +1 -0
- package/dist/components/base/skeleton_loading/skeleton_loading.js +1 -0
- package/dist/components/base/table/table.js +1 -0
- package/dist/components/base/table_lite/table_lite.js +1 -0
- package/dist/components/base/tabs/tab/tab.js +1 -0
- package/dist/components/base/tabs/tabs/scrollable_tabs.js +1 -0
- package/dist/components/base/tabs/tabs/tabs.js +1 -0
- package/dist/components/base/toggle/toggle.js +1 -0
- package/dist/components/base/token/token.js +1 -0
- package/dist/components/base/tooltip/tooltip.js +1 -0
- package/dist/components/charts/area/area.js +1 -0
- package/dist/components/charts/bar/bar.js +1 -0
- package/dist/components/charts/chart/chart.js +1 -0
- package/dist/components/charts/column/column.js +1 -0
- package/dist/components/charts/discrete_scatter/discrete_scatter.js +1 -0
- package/dist/components/charts/gauge/gauge.js +1 -0
- package/dist/components/charts/heatmap/heatmap.js +1 -0
- package/dist/components/charts/legend/legend.js +1 -0
- package/dist/components/charts/line/line.js +1 -0
- package/dist/components/charts/series_label/series_label.js +1 -0
- package/dist/components/charts/single_stat/single_stat.js +1 -0
- package/dist/components/charts/sparkline/sparkline.js +12 -13
- package/dist/components/charts/stacked_column/stacked_column.js +1 -0
- package/dist/components/charts/tooltip/tooltip.js +1 -0
- package/dist/components/regions/dashboard_skeleton/dashboard_skeleton.js +1 -0
- package/dist/components/regions/empty_state/empty_state.js +1 -0
- package/dist/components/shared_components/charts/tooltip_default_format.js +1 -0
- package/dist/components/shared_components/clear_icon_button/clear_icon_button.js +1 -0
- package/dist/components/utilities/friendly_wrap/friendly_wrap.js +1 -0
- package/dist/components/utilities/intersperse/intersperse.js +1 -0
- package/dist/components/utilities/sprintf/sprintf.js +1 -0
- package/dist/components/utilities/truncate/truncate.js +1 -0
- package/package.json +2 -2
- package/src/components/base/alert/alert.vue +1 -0
- package/src/components/base/avatar/avatar.vue +1 -0
- package/src/components/base/avatar_labeled/avatar_labeled.vue +1 -0
- package/src/components/base/badge/badge.vue +1 -0
- package/src/components/base/breadcrumb/breadcrumb.vue +1 -0
- package/src/components/base/breadcrumb/breadcrumb_item.vue +1 -0
- package/src/components/base/broadcast_message/broadcast_message.vue +1 -0
- package/src/components/base/button/button.vue +1 -0
- package/src/components/base/button_group/button_group.vue +1 -0
- package/src/components/base/card/card.vue +1 -0
- package/src/components/base/carousel/carousel.vue +1 -0
- package/src/components/base/carousel/carousel_slide.vue +1 -0
- package/src/components/base/collapse/collapse.vue +1 -0
- package/src/components/base/datepicker/datepicker.vue +1 -0
- package/src/components/base/daterange_picker/daterange_picker.vue +1 -0
- package/src/components/base/drawer/drawer.vue +1 -0
- package/src/components/base/dropdown/dropdown.vue +2 -0
- package/src/components/base/dropdown/dropdown_divider.vue +1 -0
- package/src/components/base/dropdown/dropdown_form.vue +1 -0
- package/src/components/base/dropdown/dropdown_item.vue +1 -0
- package/src/components/base/dropdown/dropdown_section_header.vue +1 -0
- package/src/components/base/dropdown/dropdown_text.vue +1 -0
- package/src/components/base/form/form.vue +1 -0
- package/src/components/base/form/form_checkbox_tree/form_checkbox_tree.vue +1 -0
- package/src/components/base/form/form_group/form_group.vue +1 -0
- package/src/components/base/form/form_input/form_input.vue +1 -0
- package/src/components/base/form/form_radio_group/form_radio_group.vue +1 -0
- package/src/components/base/form/form_select/form_select.vue +1 -0
- package/src/components/base/form/form_textarea/form_textarea.vue +1 -0
- package/src/components/base/form/input_group_text/input_group_text.vue +1 -0
- package/src/components/base/icon/icon.vue +1 -0
- package/src/components/base/infinite_scroll/infinite_scroll.vue +1 -0
- package/src/components/base/label/label.vue +1 -0
- package/src/components/base/link/link.vue +1 -0
- package/src/components/base/loading_icon/loading_icon.vue +1 -0
- package/src/components/base/markdown/markdown.vue +1 -0
- package/src/components/base/modal/modal.vue +1 -0
- package/src/components/base/new_dropdowns/base_dropdown/base_dropdown.vue +1 -0
- package/src/components/base/new_dropdowns/disclosure/disclosure_dropdown.vue +9 -2
- package/src/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.vue +5 -1
- package/src/components/base/new_dropdowns/listbox/listbox.vue +1 -0
- package/src/components/base/new_dropdowns/listbox/listbox_group.vue +1 -0
- package/src/components/base/new_dropdowns/listbox/listbox_item.vue +1 -0
- package/src/components/base/new_dropdowns/listbox/listbox_search_input.vue +1 -0
- package/src/components/base/paginated_list/paginated_list.vue +1 -0
- package/src/components/base/path/path.vue +1 -0
- package/src/components/base/popover/popover.vue +1 -0
- package/src/components/base/progress_bar/progress_bar.vue +1 -0
- package/src/components/base/search_box_by_click/search_box_by_click.vue +1 -0
- package/src/components/base/search_box_by_type/search_box_by_type.vue +1 -0
- package/src/components/base/segmented_control/segmented_control.vue +1 -0
- package/src/components/base/skeleton_loading/skeleton_loading.vue +1 -0
- package/src/components/base/table/table.vue +1 -0
- package/src/components/base/table_lite/table_lite.vue +1 -0
- package/src/components/base/tabs/tab/tab.vue +1 -0
- package/src/components/base/tabs/tabs/scrollable_tabs.vue +1 -0
- package/src/components/base/tabs/tabs/tabs.vue +1 -0
- package/src/components/base/toggle/toggle.vue +1 -0
- package/src/components/base/token/token.vue +1 -0
- package/src/components/base/tooltip/tooltip.vue +1 -0
- package/src/components/charts/area/area.vue +1 -0
- package/src/components/charts/bar/bar.vue +1 -0
- package/src/components/charts/chart/chart.vue +1 -0
- package/src/components/charts/column/column.vue +1 -0
- package/src/components/charts/discrete_scatter/discrete_scatter.vue +1 -0
- package/src/components/charts/gauge/gauge.vue +1 -0
- package/src/components/charts/heatmap/heatmap.vue +1 -0
- package/src/components/charts/legend/legend.vue +1 -0
- package/src/components/charts/line/line.vue +1 -0
- package/src/components/charts/series_label/series_label.vue +1 -0
- package/src/components/charts/single_stat/single_stat.vue +1 -0
- package/src/components/charts/sparkline/sparkline.spec.js +16 -0
- package/src/components/charts/sparkline/sparkline.vue +12 -11
- package/src/components/charts/stacked_column/stacked_column.vue +1 -0
- package/src/components/charts/tooltip/tooltip.vue +1 -0
- package/src/components/regions/dashboard_skeleton/dashboard_skeleton.vue +1 -0
- package/src/components/regions/empty_state/empty_state.vue +1 -0
- package/src/components/shared_components/charts/tooltip_default_format.vue +1 -0
- package/src/components/shared_components/clear_icon_button/clear_icon_button.vue +1 -0
- package/src/components/utilities/friendly_wrap/friendly_wrap.vue +1 -0
- package/src/components/utilities/intersperse/intersperse.vue +1 -0
- package/src/components/utilities/sprintf/sprintf.vue +1 -0
- package/src/components/utilities/truncate/truncate.vue +1 -0
|
@@ -24,6 +24,7 @@ import GlDisclosureDropdownGroup from './disclosure_dropdown_group.vue';
|
|
|
24
24
|
import { itemsValidator, isItem, hasOnlyListItems } from './utils';
|
|
25
25
|
|
|
26
26
|
export default {
|
|
27
|
+
name: 'GlDisclosureDropdown',
|
|
27
28
|
events: {
|
|
28
29
|
GL_DROPDOWN_SHOWN,
|
|
29
30
|
GL_DROPDOWN_HIDDEN,
|
|
@@ -266,6 +267,9 @@ export default {
|
|
|
266
267
|
*/
|
|
267
268
|
this.$emit('action', action);
|
|
268
269
|
},
|
|
270
|
+
uniqueItemId() {
|
|
271
|
+
return uniqueId(`disclosure-item-`);
|
|
272
|
+
},
|
|
269
273
|
isItem,
|
|
270
274
|
},
|
|
271
275
|
};
|
|
@@ -314,7 +318,8 @@ export default {
|
|
|
314
318
|
<slot>
|
|
315
319
|
<template v-for="(item, index) in items">
|
|
316
320
|
<template v-if="isItem(item)">
|
|
317
|
-
|
|
321
|
+
<!-- eslint-disable-next-line vue/valid-v-for -->
|
|
322
|
+
<gl-disclosure-dropdown-item :key="uniqueItemId()" :item="item" @action="handleAction">
|
|
318
323
|
<template #list-item>
|
|
319
324
|
<!-- @slot Custom template of the disclosure dropdown item -->
|
|
320
325
|
<slot name="list-item" :item="item"></slot>
|
|
@@ -335,9 +340,10 @@ export default {
|
|
|
335
340
|
</template>
|
|
336
341
|
|
|
337
342
|
<template v-if="$scopedSlots['list-item']">
|
|
343
|
+
<!-- eslint-disable vue/valid-v-for -->
|
|
338
344
|
<gl-disclosure-dropdown-item
|
|
339
345
|
v-for="groupItem in item.items"
|
|
340
|
-
:key="
|
|
346
|
+
:key="uniqueItemId()"
|
|
341
347
|
:item="groupItem"
|
|
342
348
|
@action="handleAction"
|
|
343
349
|
>
|
|
@@ -346,6 +352,7 @@ export default {
|
|
|
346
352
|
<slot name="list-item" :item="groupItem"></slot>
|
|
347
353
|
</template>
|
|
348
354
|
</gl-disclosure-dropdown-item>
|
|
355
|
+
<!-- eslint-enable vue/valid-v-for -->
|
|
349
356
|
</template>
|
|
350
357
|
</gl-disclosure-dropdown-group>
|
|
351
358
|
</template>
|
|
@@ -49,6 +49,9 @@ export default {
|
|
|
49
49
|
handleAction(action) {
|
|
50
50
|
this.$emit('action', action);
|
|
51
51
|
},
|
|
52
|
+
uniqueItemId() {
|
|
53
|
+
return uniqueId(`disclosure-item-`);
|
|
54
|
+
},
|
|
52
55
|
},
|
|
53
56
|
};
|
|
54
57
|
</script>
|
|
@@ -65,9 +68,10 @@ export default {
|
|
|
65
68
|
</div>
|
|
66
69
|
<ul role="group" :aria-labelledby="groupLabeledBy" class="gl-mb-0 gl-pl-0 gl-list-style-none">
|
|
67
70
|
<slot>
|
|
71
|
+
<!-- eslint-disable vue/valid-v-for -->
|
|
68
72
|
<gl-disclosure-dropdown-item
|
|
69
73
|
v-for="item in group.items"
|
|
70
|
-
:key="
|
|
74
|
+
:key="uniqueItemId()"
|
|
71
75
|
:item="item"
|
|
72
76
|
@action="handleAction"
|
|
73
77
|
>
|
|
@@ -34,6 +34,7 @@ const GROUP_TOP_BORDER_CLASSES = ['gl-border-t', 'gl-pt-1', 'gl-mt-2'];
|
|
|
34
34
|
export const SEARCH_INPUT_SELECTOR = '.gl-listbox-search-input';
|
|
35
35
|
|
|
36
36
|
export default {
|
|
37
|
+
name: 'GlCollapsibleListbox',
|
|
37
38
|
HEADER_ITEMS_BORDER_CLASSES,
|
|
38
39
|
events: {
|
|
39
40
|
GL_DROPDOWN_SHOWN,
|
|
@@ -149,6 +149,22 @@ describe('sparkline chart component', () => {
|
|
|
149
149
|
expect(getTooltip().attributes('show')).toBe(undefined);
|
|
150
150
|
});
|
|
151
151
|
|
|
152
|
+
it.each`
|
|
153
|
+
label | content
|
|
154
|
+
${null} | ${5}
|
|
155
|
+
${5} | ${null}
|
|
156
|
+
${undefined} | ${0}
|
|
157
|
+
${-10} | ${undefined}
|
|
158
|
+
`(`hides the tooltip when seriesData = ($label, $content)`, async ({ label, content }) => {
|
|
159
|
+
expect(getTooltip().attributes('show')).toBe(undefined);
|
|
160
|
+
|
|
161
|
+
const mockData = { seriesData: [{ data: [label, content] }] };
|
|
162
|
+
getXAxisLabelFormatter()(mockData);
|
|
163
|
+
|
|
164
|
+
await wrapper.vm.$nextTick();
|
|
165
|
+
expect(getTooltip().attributes('show')).toBe(undefined);
|
|
166
|
+
});
|
|
167
|
+
|
|
152
168
|
it('adds the right content to the tooltip', async () => {
|
|
153
169
|
const xValue = 'foo';
|
|
154
170
|
const yValue = 'bar';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<!-- eslint-disable vue/multi-word-component-names -->
|
|
2
2
|
<script>
|
|
3
3
|
import merge from 'lodash/merge';
|
|
4
|
+
import isNil from 'lodash/isNil';
|
|
4
5
|
import { graphic } from 'echarts';
|
|
5
6
|
import { GlResizeObserverDirective } from '../../../directives/resize_observer/resize_observer';
|
|
6
7
|
import {
|
|
@@ -29,6 +30,7 @@ const generateGradient = (colors) => {
|
|
|
29
30
|
};
|
|
30
31
|
|
|
31
32
|
export default {
|
|
33
|
+
name: 'GlSparklineChart',
|
|
32
34
|
components: { Chart, ChartTooltip },
|
|
33
35
|
directives: {
|
|
34
36
|
resizeObserver: GlResizeObserverDirective,
|
|
@@ -116,7 +118,7 @@ export default {
|
|
|
116
118
|
show: true,
|
|
117
119
|
type: 'none',
|
|
118
120
|
label: {
|
|
119
|
-
formatter: this.
|
|
121
|
+
formatter: this.generateTooltip,
|
|
120
122
|
},
|
|
121
123
|
},
|
|
122
124
|
},
|
|
@@ -191,10 +193,6 @@ export default {
|
|
|
191
193
|
hideTooltip() {
|
|
192
194
|
this.tooltip.show = false;
|
|
193
195
|
},
|
|
194
|
-
formatTooltipText([xValue, yValue]) {
|
|
195
|
-
this.tooltip.title = xValue;
|
|
196
|
-
this.tooltip.content = yValue;
|
|
197
|
-
},
|
|
198
196
|
setTooltipPosition(data) {
|
|
199
197
|
const [left, top] = this.chartInstance.convertToPixel('grid', data);
|
|
200
198
|
this.tooltip.position = {
|
|
@@ -205,18 +203,21 @@ export default {
|
|
|
205
203
|
// This function is called any time the axis pointer is changed (the black bubble showing which
|
|
206
204
|
// point on the line is selected). Note that it will not trigger if the axis pointer is removed,
|
|
207
205
|
// only when it changes from one point to another or is shown for the first time.
|
|
208
|
-
|
|
206
|
+
generateTooltip({ seriesData = [] }) {
|
|
209
207
|
// seriesData is an array of nearby data point coordinates
|
|
210
208
|
// seriesData[0] is the nearest point at which the tooltip is displayed
|
|
211
209
|
// https://echarts.apache.org/en/option.html#xAxis.axisPointer.label.formatter
|
|
212
210
|
const [firstEntry = {}] = seriesData;
|
|
213
211
|
const { data } = firstEntry;
|
|
212
|
+
if (!data) return;
|
|
214
213
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
214
|
+
const [title, content] = data;
|
|
215
|
+
if (isNil(title) || isNil(content)) return;
|
|
216
|
+
|
|
217
|
+
this.tooltip.show = true;
|
|
218
|
+
this.tooltip.title = title;
|
|
219
|
+
this.tooltip.content = content;
|
|
220
|
+
this.setTooltipPosition(data);
|
|
220
221
|
},
|
|
221
222
|
},
|
|
222
223
|
HEIGHT_AUTO_HORIZONTAL_LAYOUT_CLASSES,
|