@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.
Files changed (167) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/components/base/alert/alert.js +1 -0
  3. package/dist/components/base/avatar/avatar.js +1 -0
  4. package/dist/components/base/avatar_labeled/avatar_labeled.js +1 -0
  5. package/dist/components/base/badge/badge.js +1 -0
  6. package/dist/components/base/breadcrumb/breadcrumb.js +1 -0
  7. package/dist/components/base/breadcrumb/breadcrumb_item.js +1 -0
  8. package/dist/components/base/broadcast_message/broadcast_message.js +1 -0
  9. package/dist/components/base/button/button.js +1 -0
  10. package/dist/components/base/button_group/button_group.js +1 -0
  11. package/dist/components/base/card/card.js +1 -0
  12. package/dist/components/base/carousel/carousel.js +1 -0
  13. package/dist/components/base/carousel/carousel_slide.js +1 -0
  14. package/dist/components/base/collapse/collapse.js +1 -0
  15. package/dist/components/base/datepicker/datepicker.js +1 -0
  16. package/dist/components/base/daterange_picker/daterange_picker.js +1 -0
  17. package/dist/components/base/drawer/drawer.js +1 -0
  18. package/dist/components/base/dropdown/dropdown.js +2 -0
  19. package/dist/components/base/dropdown/dropdown_divider.js +1 -0
  20. package/dist/components/base/dropdown/dropdown_form.js +1 -0
  21. package/dist/components/base/dropdown/dropdown_item.js +1 -0
  22. package/dist/components/base/dropdown/dropdown_section_header.js +1 -0
  23. package/dist/components/base/dropdown/dropdown_text.js +1 -0
  24. package/dist/components/base/form/form.js +1 -0
  25. package/dist/components/base/form/form_checkbox_tree/form_checkbox_tree.js +1 -0
  26. package/dist/components/base/form/form_group/form_group.js +1 -0
  27. package/dist/components/base/form/form_input/form_input.js +1 -0
  28. package/dist/components/base/form/form_radio_group/form_radio_group.js +1 -0
  29. package/dist/components/base/form/form_select/form_select.js +1 -0
  30. package/dist/components/base/form/form_textarea/form_textarea.js +1 -0
  31. package/dist/components/base/form/input_group_text/input_group_text.js +1 -0
  32. package/dist/components/base/icon/icon.js +1 -0
  33. package/dist/components/base/infinite_scroll/infinite_scroll.js +1 -0
  34. package/dist/components/base/label/label.js +1 -0
  35. package/dist/components/base/link/link.js +1 -0
  36. package/dist/components/base/loading_icon/loading_icon.js +1 -0
  37. package/dist/components/base/markdown/markdown.js +1 -0
  38. package/dist/components/base/modal/modal.js +1 -0
  39. package/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js +1 -0
  40. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown.js +5 -1
  41. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.js +4 -1
  42. package/dist/components/base/new_dropdowns/listbox/listbox.js +1 -0
  43. package/dist/components/base/new_dropdowns/listbox/listbox_group.js +1 -0
  44. package/dist/components/base/new_dropdowns/listbox/listbox_item.js +1 -0
  45. package/dist/components/base/new_dropdowns/listbox/listbox_search_input.js +1 -0
  46. package/dist/components/base/paginated_list/paginated_list.js +1 -0
  47. package/dist/components/base/path/path.js +1 -0
  48. package/dist/components/base/popover/popover.js +1 -0
  49. package/dist/components/base/progress_bar/progress_bar.js +1 -0
  50. package/dist/components/base/search_box_by_click/search_box_by_click.js +1 -0
  51. package/dist/components/base/search_box_by_type/search_box_by_type.js +1 -0
  52. package/dist/components/base/segmented_control/segmented_control.js +1 -0
  53. package/dist/components/base/skeleton_loading/skeleton_loading.js +1 -0
  54. package/dist/components/base/table/table.js +1 -0
  55. package/dist/components/base/table_lite/table_lite.js +1 -0
  56. package/dist/components/base/tabs/tab/tab.js +1 -0
  57. package/dist/components/base/tabs/tabs/scrollable_tabs.js +1 -0
  58. package/dist/components/base/tabs/tabs/tabs.js +1 -0
  59. package/dist/components/base/toggle/toggle.js +1 -0
  60. package/dist/components/base/token/token.js +1 -0
  61. package/dist/components/base/tooltip/tooltip.js +1 -0
  62. package/dist/components/charts/area/area.js +1 -0
  63. package/dist/components/charts/bar/bar.js +1 -0
  64. package/dist/components/charts/chart/chart.js +1 -0
  65. package/dist/components/charts/column/column.js +1 -0
  66. package/dist/components/charts/discrete_scatter/discrete_scatter.js +1 -0
  67. package/dist/components/charts/gauge/gauge.js +1 -0
  68. package/dist/components/charts/heatmap/heatmap.js +1 -0
  69. package/dist/components/charts/legend/legend.js +1 -0
  70. package/dist/components/charts/line/line.js +1 -0
  71. package/dist/components/charts/series_label/series_label.js +1 -0
  72. package/dist/components/charts/single_stat/single_stat.js +1 -0
  73. package/dist/components/charts/sparkline/sparkline.js +12 -13
  74. package/dist/components/charts/stacked_column/stacked_column.js +1 -0
  75. package/dist/components/charts/tooltip/tooltip.js +1 -0
  76. package/dist/components/regions/dashboard_skeleton/dashboard_skeleton.js +1 -0
  77. package/dist/components/regions/empty_state/empty_state.js +1 -0
  78. package/dist/components/shared_components/charts/tooltip_default_format.js +1 -0
  79. package/dist/components/shared_components/clear_icon_button/clear_icon_button.js +1 -0
  80. package/dist/components/utilities/friendly_wrap/friendly_wrap.js +1 -0
  81. package/dist/components/utilities/intersperse/intersperse.js +1 -0
  82. package/dist/components/utilities/sprintf/sprintf.js +1 -0
  83. package/dist/components/utilities/truncate/truncate.js +1 -0
  84. package/package.json +2 -2
  85. package/src/components/base/alert/alert.vue +1 -0
  86. package/src/components/base/avatar/avatar.vue +1 -0
  87. package/src/components/base/avatar_labeled/avatar_labeled.vue +1 -0
  88. package/src/components/base/badge/badge.vue +1 -0
  89. package/src/components/base/breadcrumb/breadcrumb.vue +1 -0
  90. package/src/components/base/breadcrumb/breadcrumb_item.vue +1 -0
  91. package/src/components/base/broadcast_message/broadcast_message.vue +1 -0
  92. package/src/components/base/button/button.vue +1 -0
  93. package/src/components/base/button_group/button_group.vue +1 -0
  94. package/src/components/base/card/card.vue +1 -0
  95. package/src/components/base/carousel/carousel.vue +1 -0
  96. package/src/components/base/carousel/carousel_slide.vue +1 -0
  97. package/src/components/base/collapse/collapse.vue +1 -0
  98. package/src/components/base/datepicker/datepicker.vue +1 -0
  99. package/src/components/base/daterange_picker/daterange_picker.vue +1 -0
  100. package/src/components/base/drawer/drawer.vue +1 -0
  101. package/src/components/base/dropdown/dropdown.vue +2 -0
  102. package/src/components/base/dropdown/dropdown_divider.vue +1 -0
  103. package/src/components/base/dropdown/dropdown_form.vue +1 -0
  104. package/src/components/base/dropdown/dropdown_item.vue +1 -0
  105. package/src/components/base/dropdown/dropdown_section_header.vue +1 -0
  106. package/src/components/base/dropdown/dropdown_text.vue +1 -0
  107. package/src/components/base/form/form.vue +1 -0
  108. package/src/components/base/form/form_checkbox_tree/form_checkbox_tree.vue +1 -0
  109. package/src/components/base/form/form_group/form_group.vue +1 -0
  110. package/src/components/base/form/form_input/form_input.vue +1 -0
  111. package/src/components/base/form/form_radio_group/form_radio_group.vue +1 -0
  112. package/src/components/base/form/form_select/form_select.vue +1 -0
  113. package/src/components/base/form/form_textarea/form_textarea.vue +1 -0
  114. package/src/components/base/form/input_group_text/input_group_text.vue +1 -0
  115. package/src/components/base/icon/icon.vue +1 -0
  116. package/src/components/base/infinite_scroll/infinite_scroll.vue +1 -0
  117. package/src/components/base/label/label.vue +1 -0
  118. package/src/components/base/link/link.vue +1 -0
  119. package/src/components/base/loading_icon/loading_icon.vue +1 -0
  120. package/src/components/base/markdown/markdown.vue +1 -0
  121. package/src/components/base/modal/modal.vue +1 -0
  122. package/src/components/base/new_dropdowns/base_dropdown/base_dropdown.vue +1 -0
  123. package/src/components/base/new_dropdowns/disclosure/disclosure_dropdown.vue +9 -2
  124. package/src/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.vue +5 -1
  125. package/src/components/base/new_dropdowns/listbox/listbox.vue +1 -0
  126. package/src/components/base/new_dropdowns/listbox/listbox_group.vue +1 -0
  127. package/src/components/base/new_dropdowns/listbox/listbox_item.vue +1 -0
  128. package/src/components/base/new_dropdowns/listbox/listbox_search_input.vue +1 -0
  129. package/src/components/base/paginated_list/paginated_list.vue +1 -0
  130. package/src/components/base/path/path.vue +1 -0
  131. package/src/components/base/popover/popover.vue +1 -0
  132. package/src/components/base/progress_bar/progress_bar.vue +1 -0
  133. package/src/components/base/search_box_by_click/search_box_by_click.vue +1 -0
  134. package/src/components/base/search_box_by_type/search_box_by_type.vue +1 -0
  135. package/src/components/base/segmented_control/segmented_control.vue +1 -0
  136. package/src/components/base/skeleton_loading/skeleton_loading.vue +1 -0
  137. package/src/components/base/table/table.vue +1 -0
  138. package/src/components/base/table_lite/table_lite.vue +1 -0
  139. package/src/components/base/tabs/tab/tab.vue +1 -0
  140. package/src/components/base/tabs/tabs/scrollable_tabs.vue +1 -0
  141. package/src/components/base/tabs/tabs/tabs.vue +1 -0
  142. package/src/components/base/toggle/toggle.vue +1 -0
  143. package/src/components/base/token/token.vue +1 -0
  144. package/src/components/base/tooltip/tooltip.vue +1 -0
  145. package/src/components/charts/area/area.vue +1 -0
  146. package/src/components/charts/bar/bar.vue +1 -0
  147. package/src/components/charts/chart/chart.vue +1 -0
  148. package/src/components/charts/column/column.vue +1 -0
  149. package/src/components/charts/discrete_scatter/discrete_scatter.vue +1 -0
  150. package/src/components/charts/gauge/gauge.vue +1 -0
  151. package/src/components/charts/heatmap/heatmap.vue +1 -0
  152. package/src/components/charts/legend/legend.vue +1 -0
  153. package/src/components/charts/line/line.vue +1 -0
  154. package/src/components/charts/series_label/series_label.vue +1 -0
  155. package/src/components/charts/single_stat/single_stat.vue +1 -0
  156. package/src/components/charts/sparkline/sparkline.spec.js +16 -0
  157. package/src/components/charts/sparkline/sparkline.vue +12 -11
  158. package/src/components/charts/stacked_column/stacked_column.vue +1 -0
  159. package/src/components/charts/tooltip/tooltip.vue +1 -0
  160. package/src/components/regions/dashboard_skeleton/dashboard_skeleton.vue +1 -0
  161. package/src/components/regions/empty_state/empty_state.vue +1 -0
  162. package/src/components/shared_components/charts/tooltip_default_format.vue +1 -0
  163. package/src/components/shared_components/clear_icon_button/clear_icon_button.vue +1 -0
  164. package/src/components/utilities/friendly_wrap/friendly_wrap.vue +1 -0
  165. package/src/components/utilities/intersperse/intersperse.vue +1 -0
  166. package/src/components/utilities/sprintf/sprintf.vue +1 -0
  167. 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
- <gl-disclosure-dropdown-item :key="item.text" :item="item" @action="handleAction">
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="groupItem.text"
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="item.text"
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,
@@ -2,6 +2,7 @@
2
2
  import uniqueId from 'lodash/uniqueId';
3
3
 
4
4
  export default {
5
+ name: 'GlListboxGroup',
5
6
  props: {
6
7
  name: {
7
8
  type: String,
@@ -4,6 +4,7 @@ import { ENTER, SPACE } from '../constants';
4
4
  import { stopEvent } from '../../../../utils/utils';
5
5
 
6
6
  export default {
7
+ name: 'GlListboxItem',
7
8
  components: {
8
9
  GlIcon,
9
10
  },
@@ -3,6 +3,7 @@ import GlClearIconButton from '../../../shared_components/clear_icon_button/clea
3
3
  import GlIcon from '../../icon/icon.vue';
4
4
 
5
5
  export default {
6
+ name: 'GlListboxSearchInput',
6
7
  components: {
7
8
  GlClearIconButton,
8
9
  GlIcon,
@@ -3,6 +3,7 @@ import GlPagination from '../pagination/pagination.vue';
3
3
  import GlSearchBoxByType from '../search_box_by_type/search_box_by_type.vue';
4
4
 
5
5
  export default {
6
+ name: 'GlPaginatedList',
6
7
  components: {
7
8
  GlSearchBoxByType,
8
9
  GlPagination,
@@ -12,6 +12,7 @@ const PATH_ITEM_CLASS = 'gl-path-button';
12
12
  const PATH_ACTIVE_ITEM_PREFIX = 'gl-path-active-item';
13
13
 
14
14
  export default {
15
+ name: 'GlPath',
15
16
  components: {
16
17
  GlIcon,
17
18
  },
@@ -8,6 +8,7 @@ import { popoverPlacements } from '../../../utils/constants';
8
8
  const popoverRefName = 'bPopover';
9
9
 
10
10
  export default {
11
+ name: 'GlPopover',
11
12
  components: {
12
13
  BPopover,
13
14
  CloseButton,
@@ -2,6 +2,7 @@
2
2
  import { BProgress } from 'bootstrap-vue';
3
3
 
4
4
  export default {
5
+ name: 'GlProgressBar',
5
6
  components: {
6
7
  BProgress,
7
8
  },
@@ -11,6 +11,7 @@ import GlFormInputGroup from '../form/form_input_group/form_input_group.vue';
11
11
  import GlIcon from '../icon/icon.vue';
12
12
 
13
13
  export default {
14
+ name: 'GlSearchboxByClick',
14
15
  components: {
15
16
  GlClearIconButton,
16
17
  GlIcon,
@@ -5,6 +5,7 @@ import GlIcon from '../icon/icon.vue';
5
5
  import GlLoadingIcon from '../loading_icon/loading_icon.vue';
6
6
 
7
7
  export default {
8
+ name: 'GlSearchboxByType',
8
9
  components: {
9
10
  GlClearIconButton,
10
11
  GlIcon,
@@ -4,6 +4,7 @@ import { BFormRadioGroup } from 'bootstrap-vue';
4
4
  const genericErrorMessage = 'Segmented button should always have valid option selected';
5
5
 
6
6
  export default {
7
+ name: 'GlSegmentedControl',
7
8
  components: {
8
9
  BFormRadioGroup,
9
10
  },
@@ -1,5 +1,6 @@
1
1
  <script>
2
2
  export default {
3
+ name: 'GlSkeletonLoading',
3
4
  props: {
4
5
  /**
5
6
  * Controls the number of lines.
@@ -14,6 +14,7 @@ const shouldUseFullTable = ({ $attrs, $scopedSlots }) => {
14
14
  const { tableClass } = BTable.options.props;
15
15
 
16
16
  export default {
17
+ name: 'GlTable',
17
18
  components: {
18
19
  BTable,
19
20
  },
@@ -4,6 +4,7 @@ import { BTableLite } from 'bootstrap-vue';
4
4
  const { tableClass } = BTableLite.options.props;
5
5
 
6
6
  export default {
7
+ name: 'GlTableLite',
7
8
  components: {
8
9
  BTableLite,
9
10
  },
@@ -6,6 +6,7 @@ import isPlainObject from 'lodash/isPlainObject';
6
6
  import { DEFAULT_TAB_TITLE_LINK_CLASS } from '../constants';
7
7
 
8
8
  export default {
9
+ name: 'GlTab',
9
10
  components: {
10
11
  BTab,
11
12
  },
@@ -7,6 +7,7 @@ import GlTabs from './tabs.vue';
7
7
  const NAV_CLASS = 'gl-scrollable-tabs-nav';
8
8
 
9
9
  export default {
10
+ name: 'GlScrollableTabs',
10
11
  components: {
11
12
  GlTabs,
12
13
  GlIcon,
@@ -8,6 +8,7 @@ const validatorHelper = (obj) =>
8
8
  Object.keys(obj).every((val) => val === 'text' || val === 'attributes');
9
9
 
10
10
  export default {
11
+ name: 'GlTabs',
11
12
  components: {
12
13
  BTabs,
13
14
  GlButton,
@@ -9,6 +9,7 @@ import GlLoadingIcon from '../loading_icon/loading_icon.vue';
9
9
  let uuid = 0;
10
10
 
11
11
  export default {
12
+ name: 'GlToggle',
12
13
  components: {
13
14
  GlIcon,
14
15
  GlLoadingIcon,
@@ -4,6 +4,7 @@ import { tokenVariants } from '../../../utils/constants';
4
4
  import CloseButton from '../../shared_components/close_button/close_button.vue';
5
5
 
6
6
  export default {
7
+ name: 'GlToken',
7
8
  components: {
8
9
  CloseButton,
9
10
  },
@@ -7,6 +7,7 @@ import tooltipMixin from '../../mixins/tooltip_mixin';
7
7
  const tooltipRefName = 'bvTooltip';
8
8
 
9
9
  export default {
10
+ name: 'GlTooltip',
10
11
  tooltipDelay,
11
12
  components: {
12
13
  BTooltip,
@@ -49,6 +49,7 @@ import ChartLegend from '../legend/legend.vue';
49
49
  import ChartTooltip from '../tooltip/tooltip.vue';
50
50
 
51
51
  export default {
52
+ name: 'GlAreaChart',
52
53
  components: {
53
54
  Chart,
54
55
  ChartLegend,
@@ -56,6 +56,7 @@ const defaultOptions = {
56
56
  };
57
57
 
58
58
  export default {
59
+ name: 'GlBarChart',
59
60
  components: {
60
61
  Chart,
61
62
  ChartTooltip,
@@ -27,6 +27,7 @@ const increaseChartGridTop = (options, increaseBy) => ({
27
27
  });
28
28
 
29
29
  export default {
30
+ name: 'GlChart',
30
31
  directives: {
31
32
  resizeObserver: GlResizeObserverDirective,
32
33
  },
@@ -33,6 +33,7 @@ const yAxisDefaults = {
33
33
  };
34
34
 
35
35
  export default {
36
+ name: 'GlColumnChart',
36
37
  components: {
37
38
  Chart,
38
39
  ChartTooltip,
@@ -14,6 +14,7 @@ import Chart from '../chart/chart.vue';
14
14
  import ChartTooltip from '../tooltip/tooltip.vue';
15
15
 
16
16
  export default {
17
+ name: 'GlDiscreteScatterChart',
17
18
  components: {
18
19
  Chart,
19
20
  ChartTooltip,
@@ -51,6 +51,7 @@ const gaugeChartSeries = ({ value, text, min, max, splitNumber, axisColor }) =>
51
51
  ];
52
52
 
53
53
  export default {
54
+ name: 'GlGaugeChart',
54
55
  components: {
55
56
  Chart,
56
57
  },
@@ -42,6 +42,7 @@ function getRange(series) {
42
42
  }
43
43
 
44
44
  export default {
45
+ name: 'GlHeatmap',
45
46
  components: {
46
47
  Chart,
47
48
  ChartLegend,
@@ -16,6 +16,7 @@ import GlTruncate from '../../utilities/truncate/truncate.vue';
16
16
  import GlChartSeriesLabel from '../series_label/series_label.vue';
17
17
 
18
18
  export default {
19
+ name: 'GlChartLegend',
19
20
  components: {
20
21
  GlChartSeriesLabel,
21
22
  GlTruncate,
@@ -52,6 +52,7 @@ import ChartLegend from '../legend/legend.vue';
52
52
  import ChartTooltip from '../tooltip/tooltip.vue';
53
53
 
54
54
  export default {
55
+ name: 'GlLineChart',
55
56
  components: {
56
57
  Chart,
57
58
  ChartLegend,
@@ -3,6 +3,7 @@ const makePathRect = (startX, startY, width, height) =>
3
3
  `M${startX},${startY}H${startX + width}V${startY + height}H${startX}Z`;
4
4
 
5
5
  export default {
6
+ name: 'GlChartSeriesLabel',
6
7
  props: {
7
8
  color: {
8
9
  type: String,
@@ -5,6 +5,7 @@ import GlIcon from '../../base/icon/icon.vue';
5
5
  import GlAnimatedNumber from '../../utilities/animated_number/animated_number.vue';
6
6
 
7
7
  export default {
8
+ name: 'GlSingleStat',
8
9
  components: {
9
10
  GlIcon,
10
11
  GlBadge,
@@ -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.xAxisLabelFormatter,
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
- xAxisLabelFormatter({ seriesData = [] }) {
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
- if (data) {
216
- this.tooltip.show = true;
217
- this.formatTooltipText(data);
218
- this.setTooltipPosition(data);
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,
@@ -38,6 +38,7 @@ const yAxisDefaults = {
38
38
  };
39
39
 
40
40
  export default {
41
+ name: 'GlStackedColumnChart',
41
42
  components: {
42
43
  Chart,
43
44
  ChartTooltip,
@@ -6,6 +6,7 @@ import GlPopover from '../../base/popover/popover.vue';
6
6
  import { popoverPlacements } from '../../../utils/constants';
7
7
 
8
8
  export default {
9
+ name: 'GlChartTooltip',
9
10
  components: {
10
11
  GlPopover,
11
12
  },
@@ -1,5 +1,6 @@
1
1
  <script>
2
2
  export default {
3
+ name: 'GlDashboardSkeleton',
3
4
  props: {
4
5
  /**
5
6
  * Number of cards to be shown
@@ -2,6 +2,7 @@
2
2
  import GlButton from '../../base/button/button.vue';
3
3
 
4
4
  export default {
5
+ name: 'GlEmptyState',
5
6
  components: {
6
7
  GlButton,
7
8
  },
@@ -2,6 +2,7 @@
2
2
  import SeriesLabel from '../../charts/series_label/series_label.vue';
3
3
 
4
4
  export default {
5
+ name: 'TooltipDefaultFormat',
5
6
  components: {
6
7
  SeriesLabel,
7
8
  },
@@ -3,6 +3,7 @@ import { GlTooltipDirective } from '../../../directives/tooltip';
3
3
  import GlButton from '../../base/button/button.vue';
4
4
 
5
5
  export default {
6
+ name: 'ClearIconButton',
6
7
  components: {
7
8
  GlButton,
8
9
  },
@@ -3,6 +3,7 @@ import { intersperse } from '../../../utils/data_utils';
3
3
  import { splitAfterSymbols } from '../../../utils/string_utils';
4
4
 
5
5
  export default {
6
+ name: 'GlFriendlyWrap',
6
7
  functional: true,
7
8
  props: {
8
9
  /**
@@ -27,6 +27,7 @@ const addLastSeparator = (lastSeparator) => (items) => {
27
27
  };
28
28
 
29
29
  export default {
30
+ name: 'GlIntersperse',
30
31
  functional: true,
31
32
  props: {
32
33
  separator: {
@@ -47,6 +47,7 @@ function getPlaceholderDefinition(chunk, placeholdersByStartTag) {
47
47
  }
48
48
 
49
49
  export default {
50
+ name: 'GlSprintf',
50
51
  functional: true,
51
52
  props: {
52
53
  /**
@@ -5,6 +5,7 @@ import { GlResizeObserverDirective } from '../../../directives/resize_observer/r
5
5
  import { POSITION } from './constants';
6
6
 
7
7
  export default {
8
+ name: 'GlTruncate',
8
9
  POSITION,
9
10
  directives: {
10
11
  GlTooltip: GlTooltipDirective,