@gitlab/ui 126.3.3 → 126.4.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.
Files changed (100) hide show
  1. package/dist/components/base/alert/alert.js +9 -0
  2. package/dist/components/base/breadcrumb/breadcrumb.js +3 -0
  3. package/dist/components/base/breadcrumb/breadcrumb_item.js +15 -0
  4. package/dist/components/base/datepicker/datepicker.js +54 -0
  5. package/dist/components/base/daterange_picker/daterange_picker.js +70 -1
  6. package/dist/components/base/filtered_search/filtered_search.js +1 -1
  7. package/dist/components/base/form/form_input_group/form_input_group.js +9 -1
  8. package/dist/components/base/path/data.js +1 -1
  9. package/dist/components/base/search_box_by_click/search_box_by_click.js +9 -1
  10. package/dist/components/charts/shared/tooltip/tooltip.js +2 -2
  11. package/dist/components/charts/stacked_column/stacked_column.js +16 -5
  12. package/dist/components/dashboards/dashboard_panel/dashboard_panel.js +10 -2
  13. package/dist/directives/resize_observer/resize_observer.js +10 -3
  14. package/dist/index.css +1 -1
  15. package/dist/index.css.map +1 -1
  16. package/dist/tailwind.css +1 -1
  17. package/dist/tailwind.css.map +1 -1
  18. package/dist/utils/charts/config.js +36 -1
  19. package/dist/utils/charts/mock_data.js +18 -1
  20. package/dist/vendor/bootstrap-vue/src/components/modal/modal.js +7 -2
  21. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-filtering.js +8 -0
  22. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js +4 -0
  23. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-provider.js +8 -4
  24. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +3 -19
  25. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +1 -16
  26. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +8 -2
  27. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js +4 -0
  28. package/dist/vendor/bootstrap-vue/src/components/toast/helpers/bv-toast.js +15 -7
  29. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-popper.js +15 -13
  30. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +24 -21
  31. package/dist/vendor/bootstrap-vue/src/components/tooltip/tooltip.js +10 -9
  32. package/dist/vendor/bootstrap-vue/src/components/transition/bv-transition.js +3 -0
  33. package/dist/vendor/bootstrap-vue/src/components/transporter/transporter.js +29 -21
  34. package/dist/vendor/bootstrap-vue/src/constants/events.js +1 -5
  35. package/dist/vendor/bootstrap-vue/src/directives/tooltip/tooltip.js +15 -13
  36. package/dist/vendor/bootstrap-vue/src/directives/visible/visible.js +15 -16
  37. package/dist/vendor/bootstrap-vue/src/mixins/attrs.js +1 -18
  38. package/dist/vendor/bootstrap-vue/src/mixins/dropdown.js +8 -3
  39. package/dist/vendor/bootstrap-vue/src/mixins/has-listener.js +1 -1
  40. package/dist/vendor/bootstrap-vue/src/mixins/listeners.js +13 -12
  41. package/dist/vendor/bootstrap-vue/src/utils/cache.js +35 -13
  42. package/dist/vendor/bootstrap-vue/src/utils/config-set.js +16 -11
  43. package/dist/vendor/bootstrap-vue/src/utils/config.js +4 -10
  44. package/dist/vendor/bootstrap-vue/src/utils/create-new-child-component.js +102 -3
  45. package/dist/vendor/bootstrap-vue/src/utils/element-to-vue-instance-registry.js +3 -9
  46. package/dist/vendor/bootstrap-vue/src/utils/get-instance-from-directive.js +1 -3
  47. package/dist/vendor/bootstrap-vue/src/utils/on-instance-destroy.js +22 -0
  48. package/dist/vendor/bootstrap-vue/src/utils/plugins.js +2 -21
  49. package/dist/vendor/bootstrap-vue/src/utils/router.js +15 -1
  50. package/dist/vendor/bootstrap-vue/src/utils/safe-vue-instance.js +1 -1
  51. package/dist/vendor/bootstrap-vue/src/vue.js +16 -81
  52. package/package.json +6 -6
  53. package/src/components/base/alert/alert.vue +9 -0
  54. package/src/components/base/breadcrumb/breadcrumb.vue +3 -0
  55. package/src/components/base/breadcrumb/breadcrumb_item.vue +15 -0
  56. package/src/components/base/datepicker/datepicker.vue +54 -0
  57. package/src/components/base/daterange_picker/daterange_picker.vue +70 -1
  58. package/src/components/base/filtered_search/filtered_search.vue +1 -1
  59. package/src/components/base/form/form_input_group/form_input_group.vue +9 -1
  60. package/src/components/base/new_dropdowns/dropdown_item.scss +1 -1
  61. package/src/components/base/path/data.js +1 -1
  62. package/src/components/base/search_box_by_click/search_box_by_click.vue +9 -0
  63. package/src/components/charts/shared/tooltip/tooltip.vue +2 -1
  64. package/src/components/charts/stacked_column/stacked_column.vue +16 -5
  65. package/src/components/dashboards/dashboard_panel/dashboard_panel.vue +27 -9
  66. package/src/directives/resize_observer/resize_observer.js +6 -0
  67. package/src/utils/charts/config.js +28 -0
  68. package/src/utils/charts/mock_data.js +7 -0
  69. package/src/vendor/bootstrap-vue/src/components/modal/modal.js +6 -1
  70. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-filtering.js +8 -0
  71. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js +4 -0
  72. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-provider.js +9 -4
  73. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +3 -24
  74. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +1 -20
  75. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +8 -2
  76. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js +4 -0
  77. package/src/vendor/bootstrap-vue/src/components/toast/helpers/bv-toast.js +15 -13
  78. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-popper.js +14 -13
  79. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +16 -23
  80. package/src/vendor/bootstrap-vue/src/components/tooltip/tooltip.js +10 -9
  81. package/src/vendor/bootstrap-vue/src/components/transition/bv-transition.js +4 -0
  82. package/src/vendor/bootstrap-vue/src/components/transporter/transporter.js +36 -26
  83. package/src/vendor/bootstrap-vue/src/constants/events.js +0 -5
  84. package/src/vendor/bootstrap-vue/src/directives/tooltip/tooltip.js +17 -13
  85. package/src/vendor/bootstrap-vue/src/directives/visible/visible.js +13 -9
  86. package/src/vendor/bootstrap-vue/src/mixins/attrs.js +1 -17
  87. package/src/vendor/bootstrap-vue/src/mixins/dropdown.js +8 -3
  88. package/src/vendor/bootstrap-vue/src/mixins/has-listener.js +1 -1
  89. package/src/vendor/bootstrap-vue/src/mixins/listeners.js +14 -14
  90. package/src/vendor/bootstrap-vue/src/utils/cache.js +27 -7
  91. package/src/vendor/bootstrap-vue/src/utils/config-set.js +16 -11
  92. package/src/vendor/bootstrap-vue/src/utils/config.js +4 -10
  93. package/src/vendor/bootstrap-vue/src/utils/create-new-child-component.js +85 -2
  94. package/src/vendor/bootstrap-vue/src/utils/element-to-vue-instance-registry.js +3 -10
  95. package/src/vendor/bootstrap-vue/src/utils/get-instance-from-directive.js +1 -4
  96. package/src/vendor/bootstrap-vue/src/utils/on-instance-destroy.js +21 -0
  97. package/src/vendor/bootstrap-vue/src/utils/plugins.js +1 -26
  98. package/src/vendor/bootstrap-vue/src/utils/router.js +13 -1
  99. package/src/vendor/bootstrap-vue/src/utils/safe-vue-instance.js +1 -1
  100. package/src/vendor/bootstrap-vue/src/vue.js +11 -98
@@ -15,6 +15,9 @@ var script = {
15
15
  GlButton
16
16
  },
17
17
  props: {
18
+ /**
19
+ * The title text to display in the alert header.
20
+ */
18
21
  title: {
19
22
  type: String,
20
23
  required: false,
@@ -36,6 +39,9 @@ var script = {
36
39
  required: false,
37
40
  default: () => translate('GlAlert.closeButtonTitle', 'Dismiss')
38
41
  },
42
+ /**
43
+ * The variant of the alert.
44
+ */
39
45
  variant: {
40
46
  type: String,
41
47
  required: false,
@@ -74,6 +80,9 @@ var script = {
74
80
  required: false,
75
81
  default: ''
76
82
  },
83
+ /**
84
+ * When true, the alert stays fixed at the top of its container.
85
+ */
77
86
  sticky: {
78
87
  type: Boolean,
79
88
  required: false,
@@ -40,6 +40,9 @@ var script = {
40
40
  });
41
41
  }
42
42
  },
43
+ /**
44
+ * Accessible label for the breadcrumb navigation.
45
+ */
43
46
  ariaLabel: {
44
47
  type: String,
45
48
  required: false,
@@ -9,21 +9,33 @@ var script = {
9
9
  },
10
10
  inheritAttrs: false,
11
11
  props: {
12
+ /**
13
+ * The text content to display in the breadcrumb item.
14
+ */
12
15
  text: {
13
16
  type: String,
14
17
  required: false,
15
18
  default: null
16
19
  },
20
+ /**
21
+ * Vue Router location object or path string for navigation.
22
+ */
17
23
  to: {
18
24
  type: [String, Object],
19
25
  required: false,
20
26
  default: null
21
27
  },
28
+ /**
29
+ * URL for the breadcrumb link when not using Vue Router.
30
+ */
22
31
  href: {
23
32
  type: String,
24
33
  required: false,
25
34
  default: null
26
35
  },
36
+ /**
37
+ * Indicates the current page within the breadcrumb trail for accessibility.
38
+ */
27
39
  ariaCurrent: {
28
40
  type: [String, Boolean],
29
41
  required: false,
@@ -32,6 +44,9 @@ var script = {
32
44
  return [false, 'page'].indexOf(value) !== -1;
33
45
  }
34
46
  },
47
+ /**
48
+ * The size variant of the breadcrumb item.
49
+ */
35
50
  size: {
36
51
  type: String,
37
52
  required: false,
@@ -85,26 +85,41 @@ var script = {
85
85
  required: false,
86
86
  default: ''
87
87
  },
88
+ /**
89
+ * The currently selected date.
90
+ */
88
91
  value: {
89
92
  type: Date,
90
93
  required: false,
91
94
  default: null
92
95
  },
96
+ /**
97
+ * The earliest selectable date.
98
+ */
93
99
  minDate: {
94
100
  type: Date,
95
101
  required: false,
96
102
  default: null
97
103
  },
104
+ /**
105
+ * The latest selectable date.
106
+ */
98
107
  maxDate: {
99
108
  type: Date,
100
109
  required: false,
101
110
  default: null
102
111
  },
112
+ /**
113
+ * Start date for range selection highlighting.
114
+ */
103
115
  startRange: {
104
116
  type: Date,
105
117
  required: false,
106
118
  default: null
107
119
  },
120
+ /**
121
+ * End date for range selection highlighting.
122
+ */
108
123
  endRange: {
109
124
  type: Date,
110
125
  required: false,
@@ -118,16 +133,25 @@ var script = {
118
133
  required: false,
119
134
  default: null
120
135
  },
136
+ /**
137
+ * First day of the week (0 = Sunday, 1 = Monday, etc.).
138
+ */
121
139
  firstDay: {
122
140
  type: Number,
123
141
  required: false,
124
142
  default: () => defaultConfig.firstDayOfWeek || 0 // Defaults to 0 (Sunday)
125
143
  },
144
+ /**
145
+ * Accessible label for the datepicker.
146
+ */
126
147
  ariaLabel: {
127
148
  type: String,
128
149
  required: false,
129
150
  default: ''
130
151
  },
152
+ /**
153
+ * Placeholder text for the input field.
154
+ */
131
155
  placeholder: {
132
156
  type: String,
133
157
  required: false,
@@ -141,16 +165,25 @@ var script = {
141
165
  required: false,
142
166
  default: ''
143
167
  },
168
+ /**
169
+ * Whether the datepicker is disabled.
170
+ */
144
171
  disabled: {
145
172
  type: Boolean,
146
173
  required: false,
147
174
  default: false
148
175
  },
176
+ /**
177
+ * Whether to display the default input field.
178
+ */
149
179
  displayField: {
150
180
  type: Boolean,
151
181
  required: false,
152
182
  default: true
153
183
  },
184
+ /**
185
+ * Whether the datepicker should be open on mount.
186
+ */
154
187
  startOpened: {
155
188
  type: Boolean,
156
189
  required: false,
@@ -164,31 +197,49 @@ var script = {
164
197
  required: false,
165
198
  default: null
166
199
  },
200
+ /**
201
+ * Internationalization object for Pikaday labels and month/day names.
202
+ */
167
203
  i18n: {
168
204
  type: Object,
169
205
  required: false,
170
206
  default: null
171
207
  },
208
+ /**
209
+ * Additional CSS class for the Pikaday calendar theme.
210
+ */
172
211
  theme: {
173
212
  type: String,
174
213
  required: false,
175
214
  default: ''
176
215
  },
216
+ /**
217
+ * Whether to show a clear button when a date is selected.
218
+ */
177
219
  showClearButton: {
178
220
  type: Boolean,
179
221
  required: false,
180
222
  default: false
181
223
  },
224
+ /**
225
+ * The id attribute for the input element.
226
+ */
182
227
  inputId: {
183
228
  type: String,
184
229
  required: false,
185
230
  default: null
186
231
  },
232
+ /**
233
+ * Accessible label for the input element.
234
+ */
187
235
  inputLabel: {
188
236
  type: String,
189
237
  required: false,
190
238
  default: 'Enter date'
191
239
  },
240
+ /**
241
+ * The name attribute for the input element.
242
+ */
192
243
  inputName: {
193
244
  type: String,
194
245
  required: false,
@@ -203,6 +254,9 @@ var script = {
203
254
  default: null,
204
255
  validator: value => Object.keys(datepickerWidthOptionsMap).includes(value)
205
256
  },
257
+ /**
258
+ * Validation state of the input. `true` for valid, `false` for invalid, `null` for no validation styling.
259
+ */
206
260
  state: {
207
261
  type: Boolean,
208
262
  required: false,
@@ -17,111 +17,177 @@ var script = {
17
17
  GlTooltip: GlTooltipDirective
18
18
  },
19
19
  props: {
20
+ /**
21
+ * Label text for the start date picker.
22
+ */
20
23
  fromLabel: {
21
24
  type: String,
22
25
  required: false,
23
26
  default: 'From'
24
27
  },
28
+ /**
29
+ * Label text for the end date picker.
30
+ */
25
31
  toLabel: {
26
32
  type: String,
27
33
  required: false,
28
34
  default: 'To'
29
35
  },
36
+ /**
37
+ * Accessible label for the start date input.
38
+ */
30
39
  fromAriaLabel: {
31
40
  type: String,
32
41
  required: false,
33
42
  default: 'From date'
34
43
  },
44
+ /**
45
+ * Accessible label for the end date input.
46
+ */
35
47
  toAriaLabel: {
36
48
  type: String,
37
49
  required: false,
38
50
  default: 'To date'
39
51
  },
52
+ /**
53
+ * The selected date range object containing `startDate` and `endDate` properties.
54
+ */
40
55
  value: {
41
56
  type: Object,
42
57
  required: false,
43
58
  default: null
44
59
  },
60
+ /**
61
+ * Internationalization object for Pikaday labels and month/day names.
62
+ */
45
63
  i18n: {
46
64
  type: Object,
47
65
  required: false,
48
66
  default: null
49
67
  },
68
+ /**
69
+ * The earliest selectable date for the start date picker.
70
+ */
50
71
  defaultMinDate: {
51
72
  type: Date,
52
73
  required: false,
53
74
  default: null
54
75
  },
76
+ /**
77
+ * The latest selectable date for the end date picker.
78
+ */
55
79
  defaultMaxDate: {
56
80
  type: Date,
57
81
  required: false,
58
82
  default: null
59
83
  },
84
+ /**
85
+ * Initial value for the start date.
86
+ */
60
87
  defaultStartDate: {
61
88
  type: Date,
62
89
  required: false,
63
90
  default: null
64
91
  },
92
+ /**
93
+ * Initial value for the end date.
94
+ */
65
95
  defaultEndDate: {
66
96
  type: Date,
67
97
  required: false,
68
98
  default: null
69
99
  },
100
+ /**
101
+ * Maximum number of days allowed between start and end date. Set to 0 for no limit.
102
+ */
70
103
  maxDateRange: {
71
104
  type: Number,
72
105
  required: false,
73
106
  default: 0
74
107
  },
108
+ /**
109
+ * Additional CSS class(es) for the start date picker container.
110
+ */
75
111
  startPickerClass: {
76
112
  type: String,
77
113
  required: false,
78
114
  default: ''
79
115
  },
116
+ /**
117
+ * Selector of element that triggers the start date picker.
118
+ */
80
119
  startPickerTarget: {
81
120
  type: String,
82
121
  required: false,
83
122
  default: ''
84
123
  },
124
+ /**
125
+ * DOM node selector to render the start date calendar into.
126
+ */
85
127
  startPickerContainer: {
86
128
  type: String,
87
129
  required: false,
88
130
  default: ''
89
131
  },
132
+ /**
133
+ * Validation state for the start date picker input.
134
+ */
90
135
  startPickerState: {
91
136
  type: Boolean,
92
137
  required: false,
93
138
  default: null
94
139
  },
140
+ /**
141
+ * Additional CSS class(es) for the end date picker container.
142
+ */
95
143
  endPickerClass: {
96
144
  type: String,
97
145
  required: false,
98
146
  default: ''
99
147
  },
148
+ /**
149
+ * Selector of element that triggers the end date picker.
150
+ */
100
151
  endPickerTarget: {
101
152
  type: String,
102
153
  required: false,
103
154
  default: ''
104
155
  },
156
+ /**
157
+ * DOM node selector to render the end date calendar into.
158
+ */
105
159
  endPickerContainer: {
106
160
  type: String,
107
161
  required: false,
108
162
  default: ''
109
163
  },
164
+ /**
165
+ * Validation state for the end date picker input.
166
+ */
110
167
  endPickerState: {
111
168
  type: Boolean,
112
169
  required: false,
113
170
  default: null
114
171
  },
172
+ /**
173
+ * Additional CSS class(es) for the label elements.
174
+ */
115
175
  labelClass: {
116
176
  type: String,
117
177
  required: false,
118
178
  default: ''
119
179
  },
180
+ /**
181
+ * Additional CSS class for the Pikaday calendar theme.
182
+ */
120
183
  theme: {
121
184
  type: String,
122
185
  required: false,
123
186
  default: ''
124
187
  },
188
+ /**
189
+ * Whether to allow selecting the same date for start and end.
190
+ */
125
191
  sameDaySelection: {
126
192
  type: Boolean,
127
193
  required: false,
@@ -143,13 +209,16 @@ var script = {
143
209
  required: false,
144
210
  default: ''
145
211
  },
212
+ /**
213
+ * Whether the start date picker should be open on mount.
214
+ */
146
215
  startOpened: {
147
216
  type: Boolean,
148
217
  required: false,
149
218
  default: false
150
219
  },
151
220
  /**
152
- * Maximum width of the Datepicker
221
+ * Maximum width of the Datepicker.
153
222
  */
154
223
  width: {
155
224
  type: String,
@@ -378,7 +378,7 @@ var script = {
378
378
  const __vue_script__ = script;
379
379
 
380
380
  /* template */
381
- var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-search-box-by-click',_vm._b({attrs:{"value":_vm.tokens,"history-items":_vm.historyItems,"clearable":_vm.hasValue,"search-button-attributes":_vm.searchButtonAttributes,"show-search-button":_vm.showSearchButton,"disabled":_vm.viewOnly,"data-testid":"filtered-search-input"},on:{"submit":_vm.submit,"input":_vm.applyNewValue,"history-item-selected":function($event){return _vm.$emit('history-item-selected', $event)},"clear":function($event){return _vm.$emit('clear')},"clear-history":function($event){return _vm.$emit('clear-history')}},scopedSlots:_vm._u([{key:"history-item",fn:function(slotScope){return [_vm._t("history-item",null,null,slotScope)]}},{key:"input",fn:function(){return [_c('div',{staticClass:"gl-filtered-search-scrollable-container",class:{
381
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-search-box-by-click',_vm._b({attrs:{"value":_vm.tokens,"history-items":_vm.historyItems,"clearable":_vm.hasValue,"search-button-attributes":_vm.searchButtonAttributes,"show-search-button":_vm.showSearchButton,"disabled":_vm.viewOnly,"wrapper-attributes":{ 'data-testid': 'filtered-search-input' }},on:{"submit":_vm.submit,"input":_vm.applyNewValue,"history-item-selected":function($event){return _vm.$emit('history-item-selected', $event)},"clear":function($event){return _vm.$emit('clear')},"clear-history":function($event){return _vm.$emit('clear-history')}},scopedSlots:_vm._u([{key:"history-item",fn:function(slotScope){return [_vm._t("history-item",null,null,slotScope)]}},{key:"input",fn:function(){return [_c('div',{staticClass:"gl-filtered-search-scrollable-container",class:{
382
382
  'gl-filtered-search-scrollable-container-with-search-button': _vm.showSearchButton,
383
383
  'gl-filtered-search-view-only': _vm.viewOnly,
384
384
  }},[_c('div',{staticClass:"gl-filtered-search-scrollable"},_vm._l((_vm.tokens),function(token,idx){return _c(_vm.getTokenComponent(token.type),{key:token.id,ref:"tokens",refInFor:true,tag:"component",class:_vm.getTokenClassList(idx),attrs:{"config":_vm.getTokenEntry(token.type),"active":_vm.activeTokenIdx === idx,"cursor-position":_vm.intendedCursorPosition,"available-tokens":_vm.currentAvailableTokens,"current-value":_vm.tokens,"index":idx,"placeholder":_vm.termPlaceholder,"show-friendly-text":_vm.showFriendlyText,"search-input-attributes":_vm.searchInputAttributes,"view-only":_vm.viewOnly,"is-last-token":_vm.isLastToken(idx),"search-text-option-label":_vm.searchTextOptionLabel,"applied-tokens":_vm.appliedTokens},on:{"activate":function($event){return _vm.activate(idx)},"deactivate":function($event){return _vm.deactivate(token)},"destroy":function($event){return _vm.destroyToken(idx, $event)},"replace":function($event){return _vm.replaceToken(idx, $event)},"complete":_vm.completeToken,"submit":_vm.submit,"split":function($event){return _vm.createTokens(idx, $event)},"previous":_vm.activatePreviousToken,"next":_vm.activateNextToken},model:{value:(token.value),callback:function ($$v) {_vm.$set(token, "value", $$v);},expression:"token.value"}})}),1)]),_vm._v(" "),_c('portal-target',{key:_vm.activeTokenIdx,ref:"menu",style:(_vm.suggestionsStyle),attrs:{"name":_vm.portalName,"slim":""}})]},proxy:true}],null,true)},'gl-search-box-by-click',_vm.$attrs,false))};
@@ -49,6 +49,14 @@ var script = {
49
49
  type: [String, Array, Object],
50
50
  required: false,
51
51
  default: ''
52
+ },
53
+ /**
54
+ * HTML attributes to apply to the wrapper element.
55
+ */
56
+ wrapperAttributes: {
57
+ type: Object,
58
+ required: false,
59
+ default: () => ({})
52
60
  }
53
61
  },
54
62
  data() {
@@ -77,7 +85,7 @@ var script = {
77
85
  const __vue_script__ = script;
78
86
 
79
87
  /* template */
80
- var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"input-group",attrs:{"role":"group"}},[(_vm.activeOption || _vm.$scopedSlots.prepend)?_c('div',{staticClass:"input-group-prepend"},[_vm._t("prepend"),_vm._v(" "),(_vm.activeOption)?_c('gl-dropdown',{attrs:{"text":_vm.activeOption}},_vm._l((_vm.predefinedOptions),function(option){return _c('gl-dropdown-item',{key:option.value,attrs:{"is-check-item":"","is-checked":_vm.activeOption === option.name},on:{"click":function($event){return _vm.updateValue(option)}}},[_vm._v("\n "+_vm._s(option.name)+"\n ")])}),1):_vm._e()],2):_vm._e(),_vm._v(" "),_vm._t("default",function(){return [_c('gl-form-input',_vm._g(_vm._b({ref:"input",class:_vm.inputClass,attrs:{"aria-label":_vm.label},on:{"click":_vm.handleClick},model:{value:(_vm.localValue),callback:function ($$v) {_vm.localValue=$$v;},expression:"localValue"}},'gl-form-input',_vm.$attrs,false),_vm.$listeners))]}),_vm._v(" "),(_vm.$scopedSlots.append)?_c('div',{staticClass:"input-group-append"},[_vm._t("append")],2):_vm._e()],2)};
88
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._b({staticClass:"input-group",attrs:{"role":"group"}},'div',_vm.wrapperAttributes,false),[(_vm.activeOption || _vm.$scopedSlots.prepend)?_c('div',{staticClass:"input-group-prepend"},[_vm._t("prepend"),_vm._v(" "),(_vm.activeOption)?_c('gl-dropdown',{attrs:{"text":_vm.activeOption}},_vm._l((_vm.predefinedOptions),function(option){return _c('gl-dropdown-item',{key:option.value,attrs:{"is-check-item":"","is-checked":_vm.activeOption === option.name},on:{"click":function($event){return _vm.updateValue(option)}}},[_vm._v("\n "+_vm._s(option.name)+"\n ")])}),1):_vm._e()],2):_vm._e(),_vm._v(" "),_vm._t("default",function(){return [_c('gl-form-input',_vm._g(_vm._b({ref:"input",class:_vm.inputClass,attrs:{"aria-label":_vm.label},on:{"click":_vm.handleClick},model:{value:(_vm.localValue),callback:function ($$v) {_vm.localValue=$$v;},expression:"localValue"}},'gl-form-input',_vm.$attrs,false),_vm.$listeners))]}),_vm._v(" "),(_vm.$scopedSlots.append)?_c('div',{staticClass:"input-group-append"},[_vm._t("append")],2):_vm._e()],2)};
81
89
  var __vue_staticRenderFns__ = [];
82
90
 
83
91
  /* style */
@@ -1,4 +1,4 @@
1
- const mockPathItems = [{
1
+ const mockPathItems = () => [{
2
2
  title: 'First',
3
3
  metric: '1d'
4
4
  }, {
@@ -123,6 +123,14 @@ var script = {
123
123
  type: Boolean,
124
124
  required: false,
125
125
  default: true
126
+ },
127
+ /**
128
+ * HTML attributes to apply to the wrapper element.
129
+ */
130
+ wrapperAttributes: {
131
+ type: Object,
132
+ required: false,
133
+ default: () => ({})
126
134
  }
127
135
  },
128
136
  data() {
@@ -202,7 +210,7 @@ var script = {
202
210
  const __vue_script__ = script;
203
211
 
204
212
  /* template */
205
- var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-form-input-group',{staticClass:"gl-search-box-by-click",class:{ 'gl-search-box-by-click-with-search-button': _vm.showSearchButton },scopedSlots:_vm._u([(_vm.historyItems)?{key:"prepend",fn:function(){return [_c('gl-disclosure-dropdown',{ref:"historyDropdown",staticClass:"gl-search-box-by-click-history",attrs:{"icon":"history","category":"tertiary","toggle-text":"Toggle search history","text-sr-only":"","fluid-width":"","disabled":_vm.disabled,"aria-label":"Recent searches history"},scopedSlots:_vm._u([{key:"header",fn:function(){return [_c('div',{staticClass:"gl-search-box-by-click-history-header gl-flex gl-min-h-8 gl-grow gl-items-center gl-border-b-1 gl-border-b-dropdown-divider !gl-p-4 gl-text-sm gl-font-bold gl-border-b-solid"},[_vm._v("\n "+_vm._s(_vm.recentSearchesHeader)+"\n ")])]},proxy:true},(_vm.historyItems.length)?{key:"footer",fn:function(){return [_c('div',{staticClass:"gl-flex gl-flex-col gl-border-t-1 gl-border-t-dropdown-divider gl-p-2 gl-border-t-solid"},[_c('gl-button',{ref:"clearHistory",staticClass:"!gl-justify-start",attrs:{"category":"tertiary"},on:{"click":_vm.emitClearHistory}},[_vm._v("\n "+_vm._s(_vm.clearRecentSearchesText)+"\n ")])],1)]},proxy:true}:null],null,true)},[_vm._v(" "),(_vm.historyItems.length)?_vm._l((_vm.historyItems),function(item,idx){return _c('gl-disclosure-dropdown-item',{key:idx,staticClass:"gl-search-box-by-click-history-item",attrs:{"aria-label":("Select recent search: " + (item || 'empty search'))},on:{"action":function($event){return _vm.selectHistoryItem(item)}},scopedSlots:_vm._u([{key:"list-item",fn:function(){return [_vm._t("history-item",function(){return [_vm._v(_vm._s(item))]},{"historyItem":item})]},proxy:true}],null,true)})}):_c('gl-disclosure-dropdown-item',{staticClass:"gl-px-4 gl-py-2 gl-text-sm gl-text-subtle",attrs:{"aria-label":("Select recent search: " + _vm.noRecentSearchesText)}},[_vm._v("\n "+_vm._s(_vm.noRecentSearchesText)+"\n ")])],2)]},proxy:true}:null,(_vm.showSearchButton)?{key:"append",fn:function(){return [_c('gl-button',_vm._b({ref:"searchButton",staticClass:"gl-search-box-by-click-search-button",attrs:{"category":"tertiary","icon":"search","disabled":_vm.disabled,"aria-label":"Search","data-testid":"search-button"},on:{"click":function($event){return _vm.search(_vm.currentValue)}}},'gl-button',_vm.searchButtonAttributes,false))]},proxy:true}:null],null,true)},[_vm._v(" "),_vm._t("input",function(){return [_c('gl-form-input',_vm._b({ref:"input",staticClass:"gl-search-box-by-click-input",class:{ '!gl-rounded-control': !_vm.showSearchButton },attrs:{"disabled":_vm.disabled},on:{"focus":function($event){_vm.isFocused = true;},"blur":function($event){_vm.isFocused = false;}},nativeOn:{"keydown":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }return _vm.search(_vm.currentValue)}},model:{value:(_vm.currentValue),callback:function ($$v) {_vm.currentValue=$$v;},expression:"currentValue"}},'gl-form-input',_vm.inputAttributes,false))]}),_vm._v(" "),(_vm.clearable && _vm.hasValue && !_vm.disabled)?_c('gl-clear-icon-button',{staticClass:"gl-search-box-by-click-icon-button gl-search-box-by-click-clear-button gl-clear-icon-button",attrs:{"title":_vm.clearButtonTitle,"tooltip-container":_vm.tooltipContainer,"data-testid":"filtered-search-clear-button"},on:{"click":_vm.clearInput}}):_vm._e()],2)};
213
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-form-input-group',{staticClass:"gl-search-box-by-click",class:{ 'gl-search-box-by-click-with-search-button': _vm.showSearchButton },attrs:{"wrapper-attributes":_vm.wrapperAttributes},scopedSlots:_vm._u([(_vm.historyItems)?{key:"prepend",fn:function(){return [_c('gl-disclosure-dropdown',{ref:"historyDropdown",staticClass:"gl-search-box-by-click-history",attrs:{"icon":"history","category":"tertiary","toggle-text":"Toggle search history","text-sr-only":"","fluid-width":"","disabled":_vm.disabled,"aria-label":"Recent searches history"},scopedSlots:_vm._u([{key:"header",fn:function(){return [_c('div',{staticClass:"gl-search-box-by-click-history-header gl-flex gl-min-h-8 gl-grow gl-items-center gl-border-b-1 gl-border-b-dropdown-divider !gl-p-4 gl-text-sm gl-font-bold gl-border-b-solid"},[_vm._v("\n "+_vm._s(_vm.recentSearchesHeader)+"\n ")])]},proxy:true},(_vm.historyItems.length)?{key:"footer",fn:function(){return [_c('div',{staticClass:"gl-flex gl-flex-col gl-border-t-1 gl-border-t-dropdown-divider gl-p-2 gl-border-t-solid"},[_c('gl-button',{ref:"clearHistory",staticClass:"!gl-justify-start",attrs:{"category":"tertiary"},on:{"click":_vm.emitClearHistory}},[_vm._v("\n "+_vm._s(_vm.clearRecentSearchesText)+"\n ")])],1)]},proxy:true}:null],null,true)},[_vm._v(" "),(_vm.historyItems.length)?_vm._l((_vm.historyItems),function(item,idx){return _c('gl-disclosure-dropdown-item',{key:idx,staticClass:"gl-search-box-by-click-history-item",attrs:{"aria-label":("Select recent search: " + (item || 'empty search'))},on:{"action":function($event){return _vm.selectHistoryItem(item)}},scopedSlots:_vm._u([{key:"list-item",fn:function(){return [_vm._t("history-item",function(){return [_vm._v(_vm._s(item))]},{"historyItem":item})]},proxy:true}],null,true)})}):_c('gl-disclosure-dropdown-item',{staticClass:"gl-px-4 gl-py-2 gl-text-sm gl-text-subtle",attrs:{"aria-label":("Select recent search: " + _vm.noRecentSearchesText)}},[_vm._v("\n "+_vm._s(_vm.noRecentSearchesText)+"\n ")])],2)]},proxy:true}:null,(_vm.showSearchButton)?{key:"append",fn:function(){return [_c('gl-button',_vm._b({ref:"searchButton",staticClass:"gl-search-box-by-click-search-button",attrs:{"category":"tertiary","icon":"search","disabled":_vm.disabled,"aria-label":"Search","data-testid":"search-button"},on:{"click":function($event){return _vm.search(_vm.currentValue)}}},'gl-button',_vm.searchButtonAttributes,false))]},proxy:true}:null],null,true)},[_vm._v(" "),_vm._t("input",function(){return [_c('gl-form-input',_vm._b({ref:"input",staticClass:"gl-search-box-by-click-input",class:{ '!gl-rounded-control': !_vm.showSearchButton },attrs:{"disabled":_vm.disabled},on:{"focus":function($event){_vm.isFocused = true;},"blur":function($event){_vm.isFocused = false;}},nativeOn:{"keydown":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }return _vm.search(_vm.currentValue)}},model:{value:(_vm.currentValue),callback:function ($$v) {_vm.currentValue=$$v;},expression:"currentValue"}},'gl-form-input',_vm.inputAttributes,false))]}),_vm._v(" "),(_vm.clearable && _vm.hasValue && !_vm.disabled)?_c('gl-clear-icon-button',{staticClass:"gl-search-box-by-click-icon-button gl-search-box-by-click-clear-button gl-clear-icon-button",attrs:{"title":_vm.clearButtonTitle,"tooltip-container":_vm.tooltipContainer,"data-testid":"filtered-search-clear-button"},on:{"click":_vm.clearInput}}):_vm._e()],2)};
206
214
  var __vue_staticRenderFns__ = [];
207
215
 
208
216
  /* style */
@@ -3,7 +3,7 @@ import { uid, debounceByAnimationFrame } from '../../../../utils/utils';
3
3
  import GlPopover from '../../../base/popover/popover';
4
4
  import { popoverPlacements } from '../../../../utils/constants';
5
5
  import { TOOLTIP_LEFT_OFFSET, TOOLTIP_TOP_OFFSET } from '../../../../utils/charts/constants';
6
- import { getTooltipAxisConfig, getTooltipTitle, getTooltipContent } from '../../../../utils/charts/config';
6
+ import { getTooltipAxisConfig, getTooltipTitle, getTooltipContent, getTooltipParams } from '../../../../utils/charts/config';
7
7
  import TooltipDefaultFormat from './tooltip_default_format/tooltip_default_format';
8
8
  import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
9
9
 
@@ -239,7 +239,7 @@ var script = {
239
239
  const valueAxisName = (_options$valueAxis = options[valueAxis]) === null || _options$valueAxis === void 0 ? void 0 : (_options$valueAxis$ = _options$valueAxis[0]) === null || _options$valueAxis$ === void 0 ? void 0 : _options$valueAxis$.name;
240
240
  this.title = getTooltipTitle(params, titleAxisName, dimensionIndex);
241
241
  this.content = getTooltipContent(params, valueAxisName, metricIndex);
242
- this.params = params;
242
+ this.params = getTooltipParams(params, options);
243
243
  }
244
244
  }
245
245
  }
@@ -1,4 +1,5 @@
1
1
  import merge from 'lodash/merge';
2
+ import groupBy from 'lodash/groupBy';
2
3
  import { yAxis, generateBarSeries, generateLineSeries, gridWithSecondaryYAxis, grid, defaultChartOptions, dataZoomAdjustments, mergeSeriesToOptions } from '../../../utils/charts/config';
3
4
  import { LEGEND_AVERAGE_TEXT, LEGEND_MAX_TEXT, LEGEND_MIN_TEXT, LEGEND_CURRENT_TEXT, LEGEND_LAYOUT_INLINE, LEGEND_LAYOUT_TABLE, CHART_DEFAULT_SERIES_STACK, CHART_DEFAULT_SERIES_SECONDARY_STACK, CHART_TYPE_LINE, HEIGHT_AUTO_CLASSES } from '../../../utils/charts/constants';
4
5
  import { colorFromDefaultPalette } from '../../../utils/charts/theme';
@@ -303,16 +304,26 @@ var script = {
303
304
  params
304
305
  } = _ref5;
305
306
  if (!params) return {};
306
- const tooltipContentEntries = params.seriesData.toSorted((a, b) => b.seriesIndex - a.seriesIndex) // Invert stacking order so it matches chart (see https://github.com/apache/echarts/issues/14700)
307
- .map(_ref6 => {
307
+
308
+ // Group by stack and invert order within so it matches `stacked` presentation (see https://github.com/apache/echarts/issues/14700).
309
+ const seriesDataGroupedByStack = groupBy(params.seriesData, _ref6 => {
310
+ let {
311
+ stack,
312
+ seriesIndex
313
+ } = _ref6;
314
+ return stack !== null && stack !== void 0 ? stack : seriesIndex;
315
+ });
316
+ const sortedSeriesData = Object.values(seriesDataGroupedByStack).flatMap(seriesDataStack => seriesDataStack.toSorted((a, b) => b.seriesIndex - a.seriesIndex));
317
+ const tooltipContentEntries = sortedSeriesData.map(_ref7 => {
308
318
  let {
309
319
  seriesName = '',
310
320
  value,
311
- borderColor
312
- } = _ref6;
321
+ borderColor,
322
+ color
323
+ } = _ref7;
313
324
  return [seriesName, {
314
325
  value,
315
- color: borderColor
326
+ color: borderColor !== null && borderColor !== void 0 ? borderColor : color
316
327
  }];
317
328
  });
318
329
  return Object.fromEntries(tooltipContentEntries);
@@ -94,6 +94,14 @@ var script = {
94
94
  required: false,
95
95
  default: ''
96
96
  },
97
+ /**
98
+ * The string to render as the panel subtitle.
99
+ */
100
+ subtitle: {
101
+ type: String,
102
+ required: false,
103
+ default: ''
104
+ },
97
105
  /**
98
106
  * Set to `true` to show the loading state.
99
107
  */
@@ -190,11 +198,11 @@ var script = {
190
198
  const __vue_script__ = script;
191
199
 
192
200
  /* template */
193
- var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"gl-border gl-h-full !gl-overflow-visible gl-rounded-lg gl-bg-default gl-p-5",class:_vm.containerClasses,attrs:{"id":_vm.panelId}},[_c('div',{staticClass:"gl-flex gl-h-full gl-flex-col"},[_c('div',{staticClass:"gl-flex gl-items-start gl-justify-between",attrs:{"data-testid":"panel-title"}},[_c('div',{staticClass:"gl-flex gl-items-center gl-overflow-hidden gl-pb-3"},[(_vm.hasTitleIcon)?_c('gl-icon',{staticClass:"gl-mr-2",class:_vm.titleIconClass,attrs:{"name":_vm.titleIcon,"data-testid":"panel-title-icon"}}):_vm._e(),_vm._v(" "),(_vm.hasTitle)?_c('gl-truncate',{staticClass:"gl-min-w-0 gl-font-bold gl-text-default",attrs:{"text":_vm.title,"with-tooltip":""}}):_vm._e(),_vm._v(" "),(_vm.hasTitlePopover)?[_c('gl-icon',{staticClass:"gl-ml-2 gl-min-w-5",attrs:{"id":_vm.titlePopoverId,"data-testid":"panel-title-popover-icon","name":"information-o","variant":"info"}}),_vm._v(" "),_c('gl-popover',{attrs:{"data-testid":"panel-title-popover","boundary":"viewport","target":_vm.titlePopoverId,"css-classes":_vm.titlePopoverClasses},scopedSlots:_vm._u([(_vm.hasInfoPopoverTitleSlot)?{key:"title",fn:function(){return [_vm._t("info-popover-title")]},proxy:true}:null],null,true)},[_vm._v(" "),(_vm.hasInfoPopoverContentSlot)?[_vm._t("info-popover-content")]:_vm._e(),_vm._v(" "),(!_vm.hasInfoPopoverContentSlot)?[(_vm.hasTitlePopoverLink)?_c('gl-sprintf',{attrs:{"message":_vm.titlePopover.description},scopedSlots:_vm._u([{key:"link",fn:function(ref){
201
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"gl-border gl-h-full !gl-overflow-visible gl-rounded-lg gl-bg-default gl-p-5",class:_vm.containerClasses,attrs:{"id":_vm.panelId}},[_c('div',{staticClass:"gl-flex gl-h-full gl-flex-col"},[_c('div',{staticClass:"gl-mb-3 gl-flex gl-items-start gl-justify-between",attrs:{"data-testid":"panel-title"}},[_c('div',{staticClass:"gl-flex gl-items-center gl-overflow-hidden"},[(_vm.hasTitleIcon)?_c('gl-icon',{staticClass:"gl-mr-2",class:_vm.titleIconClass,attrs:{"name":_vm.titleIcon,"data-testid":"panel-title-icon"}}):_vm._e(),_vm._v(" "),_c('div',{staticClass:"gl-min-w-0"},[(_vm.hasTitle)?_c('gl-truncate',{staticClass:"gl-font-bold gl-text-default",attrs:{"text":_vm.title,"with-tooltip":""}}):_vm._e(),_vm._v(" "),(_vm.subtitle)?_c('p',{staticClass:"gl-mb-0 gl-mt-1 gl-text-sm gl-text-subtle",attrs:{"data-testid":"panel-subtitle"}},[_vm._v("\n "+_vm._s(_vm.subtitle)+"\n ")]):_vm._e()],1),_vm._v(" "),(_vm.hasTitlePopover)?[_c('gl-icon',{staticClass:"gl-ml-2 gl-min-w-5",attrs:{"id":_vm.titlePopoverId,"data-testid":"panel-title-popover-icon","name":"information-o","variant":"info"}}),_vm._v(" "),_c('gl-popover',{attrs:{"data-testid":"panel-title-popover","boundary":"viewport","target":_vm.titlePopoverId,"css-classes":_vm.titlePopoverClasses},scopedSlots:_vm._u([(_vm.hasInfoPopoverTitleSlot)?{key:"title",fn:function(){return [_vm._t("info-popover-title")]},proxy:true}:null],null,true)},[_vm._v(" "),(_vm.hasInfoPopoverContentSlot)?[_vm._t("info-popover-content")]:_vm._e(),_vm._v(" "),(!_vm.hasInfoPopoverContentSlot)?[(_vm.hasTitlePopoverLink)?_c('gl-sprintf',{attrs:{"message":_vm.titlePopover.description},scopedSlots:_vm._u([{key:"link",fn:function(ref){
194
202
  var content = ref.content;
195
203
  return [_c('gl-link',{staticClass:"gl-text-sm",attrs:{"href":_vm.titlePopover.descriptionLink}},[_vm._v(_vm._s(content))])]}}],null,false,3051540671)}):[_vm._v(" "+_vm._s(_vm.titlePopover.description)+" ")]]:_vm._e()],2)]:_vm._e()],2),_vm._v(" "),(_vm.shouldShowActions || _vm.$scopedSlots.filters)?_c('div',{staticClass:"gl-flex gl-flex-col gl-items-end gl-gap-2",attrs:{"data-testid":"panel-actions-filters-container"}},[(_vm.shouldShowActions)?_c('gl-disclosure-dropdown',{attrs:{"items":_vm.actions,"icon":"ellipsis_v","toggle-text":_vm.actionsToggleText,"text-sr-only":"","no-caret":"","placement":"bottom-end","fluid-width":"","toggle-class":"gl-ml-1","category":"tertiary","positioning-strategy":"fixed","size":"small"},on:{"shown":function($event){return _vm.$emit('dropdownOpen')},"hidden":function($event){return _vm.$emit('dropdownClosed')}},scopedSlots:_vm._u([{key:"list-item",fn:function(ref){
196
204
  var item = ref.item;
197
- return [_c('span',[_vm._v(_vm._s(item.text))])]}}],null,false,3418607560)}):_vm._e(),_vm._v(" "),(_vm.$scopedSlots.filters)?_c('div',{staticClass:"gl-flex gl-items-center gl-justify-end gl-pb-2",attrs:{"data-testid":"panel-filters-container"}},[_vm._t("filters")],2):_vm._e()],1):_vm._e()]),_vm._v(" "),_c('div',{class:_vm.bodyClasses},[(_vm.loading)?[_c('gl-loading-icon',{staticClass:"gl-min-h-8 gl-w-full",attrs:{"size":"lg"}}),_vm._v(" "),(_vm.isLoadingDelayed)?_c('div',{staticClass:"gl-w-full gl-text-subtle",attrs:{"data-testId":"panel-loading-delayed-indicator"}},[_vm._v("\n "+_vm._s(_vm.loadingDelayedText)+"\n ")]):_vm._e()]:_vm._t("body")],2),_vm._v(" "),_vm._t("alert-message",null,{"panelId":_vm.panelId})],2)])};
205
+ return [_c('span',[_vm._v(_vm._s(item.text))])]}}],null,false,3418607560)}):_vm._e(),_vm._v(" "),(_vm.$scopedSlots.filters)?_c('div',{staticClass:"gl-flex gl-items-center gl-justify-end",attrs:{"data-testid":"panel-filters-container"}},[_vm._t("filters")],2):_vm._e()],1):_vm._e()]),_vm._v(" "),_c('div',{class:_vm.bodyClasses},[(_vm.loading)?[_c('gl-loading-icon',{staticClass:"gl-min-h-8 gl-w-full",attrs:{"size":"lg"}}),_vm._v(" "),(_vm.isLoadingDelayed)?_c('div',{staticClass:"gl-w-full gl-text-subtle",attrs:{"data-testId":"panel-loading-delayed-indicator"}},[_vm._v("\n "+_vm._s(_vm.loadingDelayedText)+"\n ")]):_vm._e()]:_vm._t("body")],2),_vm._v(" "),_vm._t("alert-message",null,{"panelId":_vm.panelId})],2)])};
198
206
  var __vue_staticRenderFns__ = [];
199
207
 
200
208
  /* style */
@@ -1,6 +1,13 @@
1
1
  import isFunction from 'lodash/isFunction';
2
2
 
3
3
  let observer = null;
4
+
5
+ // Exported for testing purposes only
6
+ const resetObserver = () => {
7
+ var _observer;
8
+ (_observer = observer) === null || _observer === void 0 ? void 0 : _observer.disconnect();
9
+ observer = null;
10
+ };
4
11
  const attachObserver = (el, resizeHandler) => {
5
12
  if (!isFunction(resizeHandler)) {
6
13
  throw TypeError('directive value must be a function');
@@ -19,9 +26,9 @@ const attachObserver = (el, resizeHandler) => {
19
26
  };
20
27
  const detachObserver = el => {
21
28
  if (el.glResizeHandler) {
22
- var _observer;
29
+ var _observer2;
23
30
  delete el.glResizeHandler;
24
- (_observer = observer) === null || _observer === void 0 ? void 0 : _observer.unobserve(el);
31
+ (_observer2 = observer) === null || _observer2 === void 0 ? void 0 : _observer2.unobserve(el);
25
32
  }
26
33
  };
27
34
  const GlResizeObserverDirective = {
@@ -48,4 +55,4 @@ const GlResizeObserverDirective = {
48
55
  unbind: detachObserver
49
56
  };
50
57
 
51
- export { GlResizeObserverDirective };
58
+ export { GlResizeObserverDirective, resetObserver };