@gitlab/ui 132.0.0 → 132.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.
Files changed (403) hide show
  1. package/dist/charts.js +13 -0
  2. package/dist/components/base/accordion/accordion.js +69 -0
  3. package/dist/components/base/accordion/accordion_item.js +160 -0
  4. package/dist/components/base/accordion/constants.js +3 -0
  5. package/dist/components/base/alert/alert.js +263 -0
  6. package/dist/components/base/animated_icon/animated_chevron_down_up_icon.js +45 -0
  7. package/dist/components/base/animated_icon/animated_chevron_lg_down_up_icon.js +45 -0
  8. package/dist/components/base/animated_icon/animated_chevron_lg_right_down_icon.js +45 -0
  9. package/dist/components/base/animated_icon/animated_chevron_right_down_icon.js +45 -0
  10. package/dist/components/base/animated_icon/animated_duo_chat_icon.js +45 -0
  11. package/dist/components/base/animated_icon/animated_loader_icon.js +45 -0
  12. package/dist/components/base/animated_icon/animated_notifications_icon.js +45 -0
  13. package/dist/components/base/animated_icon/animated_sidebar_icon.js +45 -0
  14. package/dist/components/base/animated_icon/animated_smile_icon.js +45 -0
  15. package/dist/components/base/animated_icon/animated_sort_icon.js +45 -0
  16. package/dist/components/base/animated_icon/animated_star_icon.js +45 -0
  17. package/dist/components/base/animated_icon/animated_todo_icon.js +45 -0
  18. package/dist/components/base/animated_icon/animated_upload_icon.js +45 -0
  19. package/dist/components/base/animated_icon/base_animated_icon.js +77 -0
  20. package/dist/components/base/attribute_list/attribute_list.js +100 -0
  21. package/dist/components/base/avatar/avatar.js +175 -0
  22. package/dist/components/base/avatar/utils.js +17 -0
  23. package/dist/components/base/avatar_labeled/avatar_labeled.js +198 -0
  24. package/dist/components/base/avatar_link/avatar_link.js +47 -0
  25. package/dist/components/base/avatars_inline/avatars_inline.js +139 -0
  26. package/dist/components/base/badge/badge.js +197 -0
  27. package/dist/components/base/banner/banner.js +149 -0
  28. package/dist/components/base/breadcrumb/breadcrumb.js +282 -0
  29. package/dist/components/base/breadcrumb/breadcrumb_item.js +96 -0
  30. package/dist/components/base/broadcast_message/broadcast_message.js +113 -0
  31. package/dist/components/base/broadcast_message/constants.js +5 -0
  32. package/dist/components/base/button/button.js +419 -0
  33. package/dist/components/base/button_group/button_group.js +53 -0
  34. package/dist/components/base/card/card.js +69 -0
  35. package/dist/components/base/collapse/collapse.js +163 -0
  36. package/dist/components/base/color_mode_toggle/color_mode_toggle.js +92 -0
  37. package/dist/components/base/datepicker/datepicker.js +475 -0
  38. package/dist/components/base/daterange_picker/daterange_picker.js +394 -0
  39. package/dist/components/base/drawer/drawer.js +156 -0
  40. package/dist/components/base/dropdown/dropdown.js +330 -0
  41. package/dist/components/base/dropdown/dropdown_divider.js +48 -0
  42. package/dist/components/base/dropdown/dropdown_form.js +48 -0
  43. package/dist/components/base/dropdown/dropdown_item.js +175 -0
  44. package/dist/components/base/dropdown/dropdown_section_header.js +48 -0
  45. package/dist/components/base/dropdown/dropdown_text.js +48 -0
  46. package/dist/components/base/filtered_search/common_story_options.js +14 -0
  47. package/dist/components/base/filtered_search/filtered_search.js +428 -0
  48. package/dist/components/base/filtered_search/filtered_search_suggestion.js +95 -0
  49. package/dist/components/base/filtered_search/filtered_search_suggestion_list.js +139 -0
  50. package/dist/components/base/filtered_search/filtered_search_term.js +217 -0
  51. package/dist/components/base/filtered_search/filtered_search_token.js +383 -0
  52. package/dist/components/base/filtered_search/filtered_search_token_segment.js +444 -0
  53. package/dist/components/base/filtered_search/filtered_search_utils.js +241 -0
  54. package/dist/components/base/form/form.js +43 -0
  55. package/dist/components/base/form/form_character_count/form_character_count.js +107 -0
  56. package/dist/components/base/form/form_checkbox/form_checkbox.js +342 -0
  57. package/dist/components/base/form/form_checkbox/form_checkbox_group.js +188 -0
  58. package/dist/components/base/form/form_combobox/constants.js +55 -0
  59. package/dist/components/base/form/form_combobox/form_combobox.js +239 -0
  60. package/dist/components/base/form/form_date/form_date.js +143 -0
  61. package/dist/components/base/form/form_fields/form_field_validator.js +93 -0
  62. package/dist/components/base/form/form_fields/form_fields.js +289 -0
  63. package/dist/components/base/form/form_fields/form_fields_loop.js +75 -0
  64. package/dist/components/base/form/form_fields/mappers.js +13 -0
  65. package/dist/components/base/form/form_fields/validators.js +48 -0
  66. package/dist/components/base/form/form_group/form_group.js +119 -0
  67. package/dist/components/base/form/form_input/form_input.js +695 -0
  68. package/dist/components/base/form/form_input_group/form_input_group.js +120 -0
  69. package/dist/components/base/form/form_input_group/form_input_group_mixin.js +41 -0
  70. package/dist/components/base/form/form_radio/form_radio.js +259 -0
  71. package/dist/components/base/form/form_radio_group/form_radio_group.js +189 -0
  72. package/dist/components/base/form/form_select/constants.js +12 -0
  73. package/dist/components/base/form/form_select/form_select.js +96 -0
  74. package/dist/components/base/form/form_textarea/form_textarea.js +166 -0
  75. package/dist/components/base/form/input_group_text/input_group_text.js +43 -0
  76. package/dist/components/base/icon/icon.js +113 -0
  77. package/dist/components/base/illustration/illustration.js +80 -0
  78. package/dist/components/base/infinite_scroll/infinite_scroll.js +196 -0
  79. package/dist/components/base/keyset_pagination/keyset_pagination.js +152 -0
  80. package/dist/components/base/label/label.js +174 -0
  81. package/dist/components/base/link/link.js +330 -0
  82. package/dist/components/base/loading_icon/loading_icon.js +120 -0
  83. package/dist/components/base/markdown/markdown.js +50 -0
  84. package/dist/components/base/modal/modal.js +259 -0
  85. package/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js +716 -0
  86. package/dist/components/base/new_dropdowns/base_dropdown/constants.js +5 -0
  87. package/dist/components/base/new_dropdowns/base_dropdown/dropdown_container.js +32 -0
  88. package/dist/components/base/new_dropdowns/constants.js +24 -0
  89. package/dist/components/base/new_dropdowns/disclosure/constants.js +8 -0
  90. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown.js +400 -0
  91. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.js +112 -0
  92. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_item.js +196 -0
  93. package/dist/components/base/new_dropdowns/disclosure/mock_data.js +168 -0
  94. package/dist/components/base/new_dropdowns/disclosure/utils.js +84 -0
  95. package/dist/components/base/new_dropdowns/listbox/listbox.js +997 -0
  96. package/dist/components/base/new_dropdowns/listbox/listbox_group.js +58 -0
  97. package/dist/components/base/new_dropdowns/listbox/listbox_item.js +112 -0
  98. package/dist/components/base/new_dropdowns/listbox/listbox_search_input.js +94 -0
  99. package/dist/components/base/new_dropdowns/listbox/mock_data.js +131 -0
  100. package/dist/components/base/new_dropdowns/listbox/utils.js +33 -0
  101. package/dist/components/base/pagination/pagination.js +397 -0
  102. package/dist/components/base/path/data.js +34 -0
  103. package/dist/components/base/path/path.js +177 -0
  104. package/dist/components/base/popover/popover.js +142 -0
  105. package/dist/components/base/progress_bar/progress_bar.js +117 -0
  106. package/dist/components/base/search_box_by_click/search_box_by_click.js +245 -0
  107. package/dist/components/base/search_box_by_type/search_box_by_type.js +187 -0
  108. package/dist/components/base/segmented_control/segmented_control.js +73 -0
  109. package/dist/components/base/skeleton_loader/skeleton_loader.js +232 -0
  110. package/dist/components/base/sorting/sorting.js +180 -0
  111. package/dist/components/base/table/constants.js +5 -0
  112. package/dist/components/base/table/table.js +187 -0
  113. package/dist/components/base/table_lite/table_lite.js +80 -0
  114. package/dist/components/base/tabs/constants.js +3 -0
  115. package/dist/components/base/tabs/tab/tab.js +113 -0
  116. package/dist/components/base/tabs/tabs/scrollable_tabs.js +162 -0
  117. package/dist/components/base/tabs/tabs/tabs.js +223 -0
  118. package/dist/components/base/toast/index.js +66 -0
  119. package/dist/components/base/toast/toast.js +125 -0
  120. package/dist/components/base/toast/toaster.js +87 -0
  121. package/dist/components/base/toggle/toggle.js +178 -0
  122. package/dist/components/base/token/token.js +97 -0
  123. package/dist/components/base/token_selector/helpers.js +5 -0
  124. package/dist/components/base/token_selector/token_container.js +160 -0
  125. package/dist/components/base/token_selector/token_selector.js +454 -0
  126. package/dist/components/base/token_selector/token_selector_dropdown.js +223 -0
  127. package/dist/components/base/tooltip/tooltip.js +54 -0
  128. package/dist/components/charts/area/area.js +329 -0
  129. package/dist/components/charts/bar/bar.js +207 -0
  130. package/dist/components/charts/chart/chart.js +215 -0
  131. package/dist/components/charts/column/column.js +221 -0
  132. package/dist/components/charts/discrete_scatter/discrete_scatter.js +199 -0
  133. package/dist/components/charts/gauge/gauge.js +205 -0
  134. package/dist/components/charts/heatmap/heatmap.js +299 -0
  135. package/dist/components/charts/heatmap/index.js +2 -0
  136. package/dist/components/charts/legend/legend.js +245 -0
  137. package/dist/components/charts/line/line.js +340 -0
  138. package/dist/components/charts/series_label/series_label.js +101 -0
  139. package/dist/components/charts/shared/tooltip/tooltip.js +369 -0
  140. package/dist/components/charts/shared/tooltip/tooltip_default_format/tooltip_default_format.js +53 -0
  141. package/dist/components/charts/single_stat/single_stat.js +164 -0
  142. package/dist/components/charts/sparkline/sparkline.js +299 -0
  143. package/dist/components/charts/stacked_column/stacked_column.js +380 -0
  144. package/dist/components/dashboards/dashboard_layout/dashboard_layout.js +125 -0
  145. package/dist/components/dashboards/dashboard_layout/grid_layout/grid_layout.js +326 -0
  146. package/dist/components/dashboards/dashboard_layout/validators.js +14 -0
  147. package/dist/components/dashboards/dashboard_panel/dashboard_panel.js +236 -0
  148. package/dist/components/dashboards/mock_data.js +49 -0
  149. package/dist/components/experimental/experiment_badge/constants.js +4 -0
  150. package/dist/components/experimental/experiment_badge/experiment_badge.js +102 -0
  151. package/dist/components/extended/multi_step_form_template/multi_step_form_template.js +87 -0
  152. package/dist/components/index.js +107 -0
  153. package/dist/components/mixins/button_mixin.js +11 -0
  154. package/dist/components/mixins/safe_link_mixin.js +30 -0
  155. package/dist/components/mixins/tooltip_mixin.js +21 -0
  156. package/dist/components/regions/dashboard_skeleton/dashboard_skeleton.js +53 -0
  157. package/dist/components/regions/empty_state/empty_state.js +181 -0
  158. package/dist/components/shared_components/clear_icon_button/clear_icon_button.js +64 -0
  159. package/dist/components/shared_components/clipboard_button/clipboard_button.js +100 -0
  160. package/dist/components/shared_components/close_button/close_button.js +55 -0
  161. package/dist/components/utilities/animated_number/animated_number.js +131 -0
  162. package/dist/components/utilities/friendly_wrap/friendly_wrap.js +75 -0
  163. package/dist/components/utilities/intersection_observer/intersection_observer.js +88 -0
  164. package/dist/components/utilities/intersperse/intersperse.js +104 -0
  165. package/dist/components/utilities/sprintf/sprintf.js +171 -0
  166. package/dist/components/utilities/truncate/constants.js +8 -0
  167. package/dist/components/utilities/truncate/truncate.js +154 -0
  168. package/dist/components/utilities/truncate_text/constants.js +7 -0
  169. package/dist/components/utilities/truncate_text/truncate_text.js +146 -0
  170. package/dist/config.js +53 -0
  171. package/dist/directives/hover_load/hover_load.js +45 -0
  172. package/dist/directives/index.js +8 -0
  173. package/dist/directives/modal.js +1 -0
  174. package/dist/directives/outside/outside.js +149 -0
  175. package/dist/directives/resize_observer/resize_observer.js +58 -0
  176. package/dist/directives/safe_html/constants.js +6 -0
  177. package/dist/directives/safe_html/safe_html.js +39 -0
  178. package/dist/directives/safe_link/mock_data.js +10 -0
  179. package/dist/directives/safe_link/safe_link.js +67 -0
  180. package/dist/directives/tooltip/container.js +7 -0
  181. package/dist/directives/tooltip/tooltip.js +18 -0
  182. package/dist/index.css +7 -0
  183. package/dist/index.css.map +1 -0
  184. package/dist/index.js +2 -0
  185. package/dist/tailwind.css +2 -0
  186. package/dist/tailwind.css.map +1 -0
  187. package/dist/tokens/build/js/tokens.dark.js +1410 -0
  188. package/dist/tokens/build/js/tokens.js +1410 -0
  189. package/dist/tokens/common_story_options.js +29 -0
  190. package/dist/tokens/tokens_story.js +76 -0
  191. package/dist/utils/breakpoints.js +20 -0
  192. package/dist/utils/charts/config.js +616 -0
  193. package/dist/utils/charts/constants.js +69 -0
  194. package/dist/utils/charts/mock_data.js +191 -0
  195. package/dist/utils/charts/story_config.js +24 -0
  196. package/dist/utils/charts/theme.js +200 -0
  197. package/dist/utils/charts/utils.js +54 -0
  198. package/dist/utils/constants.js +331 -0
  199. package/dist/utils/data_utils.js +19 -0
  200. package/dist/utils/datetime_utility.js +61 -0
  201. package/dist/utils/equality_utils.js +84 -0
  202. package/dist/utils/form_options_utils.js +46 -0
  203. package/dist/utils/i18n.js +65 -0
  204. package/dist/utils/is_slot_empty.js +34 -0
  205. package/dist/utils/number_utils.js +132 -0
  206. package/dist/utils/play_utils.js +11 -0
  207. package/dist/utils/set_utils.js +25 -0
  208. package/dist/utils/stories_constants.js +29 -0
  209. package/dist/utils/stories_utils.js +62 -0
  210. package/dist/utils/story_decorators/container.js +19 -0
  211. package/dist/utils/string_utils.js +69 -0
  212. package/dist/utils/svgs/svg_paths.js +7 -0
  213. package/dist/utils/test_utils.js +33 -0
  214. package/dist/utils/use_fake_date.js +29 -0
  215. package/dist/utils/use_mock_intersection_observer.js +105 -0
  216. package/dist/utils/utils.js +205 -0
  217. package/dist/utils/vue_utils.js +57 -0
  218. package/dist/utils.js +5 -0
  219. package/dist/vendor/bootstrap-vue/src/bv-config.js +8 -0
  220. package/dist/vendor/bootstrap-vue/src/components/button/button-close.js +81 -0
  221. package/dist/vendor/bootstrap-vue/src/components/button/button.js +204 -0
  222. package/dist/vendor/bootstrap-vue/src/components/button/index.js +2 -0
  223. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.js +41 -0
  224. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.js +52 -0
  225. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.js +75 -0
  226. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.js +52 -0
  227. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.js +85 -0
  228. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-item.js +97 -0
  229. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.js +60 -0
  230. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown.js +270 -0
  231. package/dist/vendor/bootstrap-vue/src/components/dropdown/index.js +8 -0
  232. package/dist/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.js +53 -0
  233. package/dist/vendor/bootstrap-vue/src/components/form/form-text.js +55 -0
  234. package/dist/vendor/bootstrap-vue/src/components/form/form-valid-feedback.js +53 -0
  235. package/dist/vendor/bootstrap-vue/src/components/form/form.js +56 -0
  236. package/dist/vendor/bootstrap-vue/src/components/form/index.js +4 -0
  237. package/dist/vendor/bootstrap-vue/src/components/form-group/form-group.js +347 -0
  238. package/dist/vendor/bootstrap-vue/src/components/form-group/index.js +1 -0
  239. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.js +54 -0
  240. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option.js +41 -0
  241. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select.js +143 -0
  242. package/dist/vendor/bootstrap-vue/src/components/form-select/helpers/mixin-options.js +56 -0
  243. package/dist/vendor/bootstrap-vue/src/components/form-select/index.js +3 -0
  244. package/dist/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.js +217 -0
  245. package/dist/vendor/bootstrap-vue/src/components/form-textarea/index.js +1 -0
  246. package/dist/vendor/bootstrap-vue/src/components/layout/col.js +155 -0
  247. package/dist/vendor/bootstrap-vue/src/components/layout/form-row.js +34 -0
  248. package/dist/vendor/bootstrap-vue/src/components/layout/index.js +2 -0
  249. package/dist/vendor/bootstrap-vue/src/components/link/index.js +1 -0
  250. package/dist/vendor/bootstrap-vue/src/components/link/link.js +283 -0
  251. package/dist/vendor/bootstrap-vue/src/components/modal/helpers/bv-modal-event.class.js +21 -0
  252. package/dist/vendor/bootstrap-vue/src/components/modal/helpers/modal-manager.js +212 -0
  253. package/dist/vendor/bootstrap-vue/src/components/modal/index.js +1 -0
  254. package/dist/vendor/bootstrap-vue/src/components/modal/modal.js +1059 -0
  255. package/dist/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover-template.js +55 -0
  256. package/dist/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover.js +31 -0
  257. package/dist/vendor/bootstrap-vue/src/components/popover/index.js +1 -0
  258. package/dist/vendor/bootstrap-vue/src/components/popover/popover.js +49 -0
  259. package/dist/vendor/bootstrap-vue/src/components/table/helpers/constants.js +22 -0
  260. package/dist/vendor/bootstrap-vue/src/components/table/helpers/default-sort-compare.js +64 -0
  261. package/dist/vendor/bootstrap-vue/src/components/table/helpers/filter-event.js +40 -0
  262. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-bottom-row.js +43 -0
  263. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-busy.js +83 -0
  264. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js +50 -0
  265. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-colgroup.js +32 -0
  266. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-empty.js +82 -0
  267. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-filtering.js +292 -0
  268. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js +154 -0
  269. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-pagination.js +44 -0
  270. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-provider.js +191 -0
  271. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +213 -0
  272. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +274 -0
  273. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js +39 -0
  274. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js +186 -0
  275. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js +338 -0
  276. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +243 -0
  277. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js +50 -0
  278. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js +218 -0
  279. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-top-row.js +42 -0
  280. package/dist/vendor/bootstrap-vue/src/components/table/helpers/normalize-fields.js +86 -0
  281. package/dist/vendor/bootstrap-vue/src/components/table/helpers/sanitize-row.js +31 -0
  282. package/dist/vendor/bootstrap-vue/src/components/table/helpers/stringify-record-values.js +11 -0
  283. package/dist/vendor/bootstrap-vue/src/components/table/helpers/text-selection-active.js +14 -0
  284. package/dist/vendor/bootstrap-vue/src/components/table/index.js +9 -0
  285. package/dist/vendor/bootstrap-vue/src/components/table/table-lite.js +51 -0
  286. package/dist/vendor/bootstrap-vue/src/components/table/table-simple.js +44 -0
  287. package/dist/vendor/bootstrap-vue/src/components/table/table.js +67 -0
  288. package/dist/vendor/bootstrap-vue/src/components/table/tbody.js +116 -0
  289. package/dist/vendor/bootstrap-vue/src/components/table/td.js +204 -0
  290. package/dist/vendor/bootstrap-vue/src/components/table/tfoot.js +96 -0
  291. package/dist/vendor/bootstrap-vue/src/components/table/th.js +26 -0
  292. package/dist/vendor/bootstrap-vue/src/components/table/thead.js +99 -0
  293. package/dist/vendor/bootstrap-vue/src/components/table/tr.js +121 -0
  294. package/dist/vendor/bootstrap-vue/src/components/tabs/index.js +2 -0
  295. package/dist/vendor/bootstrap-vue/src/components/tabs/tab.js +238 -0
  296. package/dist/vendor/bootstrap-vue/src/components/tabs/tabs.js +690 -0
  297. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-popper.js +251 -0
  298. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip-template.js +118 -0
  299. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +932 -0
  300. package/dist/vendor/bootstrap-vue/src/components/tooltip/index.js +1 -0
  301. package/dist/vendor/bootstrap-vue/src/components/tooltip/tooltip.js +337 -0
  302. package/dist/vendor/bootstrap-vue/src/components/transition/bv-transition.js +103 -0
  303. package/dist/vendor/bootstrap-vue/src/components/transporter/transporter.js +205 -0
  304. package/dist/vendor/bootstrap-vue/src/constants/components.js +55 -0
  305. package/dist/vendor/bootstrap-vue/src/constants/config.js +11 -0
  306. package/dist/vendor/bootstrap-vue/src/constants/env.js +36 -0
  307. package/dist/vendor/bootstrap-vue/src/constants/events.js +56 -0
  308. package/dist/vendor/bootstrap-vue/src/constants/key-codes.js +11 -0
  309. package/dist/vendor/bootstrap-vue/src/constants/popper.js +10 -0
  310. package/dist/vendor/bootstrap-vue/src/constants/props.js +24 -0
  311. package/dist/vendor/bootstrap-vue/src/constants/regex.js +35 -0
  312. package/dist/vendor/bootstrap-vue/src/constants/safe-types.js +15 -0
  313. package/dist/vendor/bootstrap-vue/src/constants/slots.js +36 -0
  314. package/dist/vendor/bootstrap-vue/src/directives/modal/index.js +1 -0
  315. package/dist/vendor/bootstrap-vue/src/directives/modal/modal.js +112 -0
  316. package/dist/vendor/bootstrap-vue/src/directives/tooltip/index.js +1 -0
  317. package/dist/vendor/bootstrap-vue/src/directives/tooltip/tooltip.js +267 -0
  318. package/dist/vendor/bootstrap-vue/src/directives/visible/index.js +1 -0
  319. package/dist/vendor/bootstrap-vue/src/directives/visible/visible.js +187 -0
  320. package/dist/vendor/bootstrap-vue/src/mixins/attrs.js +5 -0
  321. package/dist/vendor/bootstrap-vue/src/mixins/click-out.js +54 -0
  322. package/dist/vendor/bootstrap-vue/src/mixins/dropdown.js +470 -0
  323. package/dist/vendor/bootstrap-vue/src/mixins/focus-in.js +46 -0
  324. package/dist/vendor/bootstrap-vue/src/mixins/form-control.js +73 -0
  325. package/dist/vendor/bootstrap-vue/src/mixins/form-custom.js +26 -0
  326. package/dist/vendor/bootstrap-vue/src/mixins/form-options.js +91 -0
  327. package/dist/vendor/bootstrap-vue/src/mixins/form-selection.js +62 -0
  328. package/dist/vendor/bootstrap-vue/src/mixins/form-size.js +26 -0
  329. package/dist/vendor/bootstrap-vue/src/mixins/form-state.js +50 -0
  330. package/dist/vendor/bootstrap-vue/src/mixins/form-text.js +293 -0
  331. package/dist/vendor/bootstrap-vue/src/mixins/form-validity.js +50 -0
  332. package/dist/vendor/bootstrap-vue/src/mixins/has-listener.js +29 -0
  333. package/dist/vendor/bootstrap-vue/src/mixins/id.js +57 -0
  334. package/dist/vendor/bootstrap-vue/src/mixins/listen-on-document.js +62 -0
  335. package/dist/vendor/bootstrap-vue/src/mixins/listen-on-root.js +120 -0
  336. package/dist/vendor/bootstrap-vue/src/mixins/listen-on-window.js +62 -0
  337. package/dist/vendor/bootstrap-vue/src/mixins/listeners.js +25 -0
  338. package/dist/vendor/bootstrap-vue/src/mixins/model.js +10 -0
  339. package/dist/vendor/bootstrap-vue/src/mixins/normalize-slot.js +30 -0
  340. package/dist/vendor/bootstrap-vue/src/mixins/scoped-style.js +18 -0
  341. package/dist/vendor/bootstrap-vue/src/mixins/use-parent.js +14 -0
  342. package/dist/vendor/bootstrap-vue/src/utils/array.js +27 -0
  343. package/dist/vendor/bootstrap-vue/src/utils/bv-event.class.js +60 -0
  344. package/dist/vendor/bootstrap-vue/src/utils/cache.js +60 -0
  345. package/dist/vendor/bootstrap-vue/src/utils/clone-deep.js +18 -0
  346. package/dist/vendor/bootstrap-vue/src/utils/config-set.js +86 -0
  347. package/dist/vendor/bootstrap-vue/src/utils/config.js +71 -0
  348. package/dist/vendor/bootstrap-vue/src/utils/create-new-child-component.js +133 -0
  349. package/dist/vendor/bootstrap-vue/src/utils/css-escape.js +70 -0
  350. package/dist/vendor/bootstrap-vue/src/utils/dom.js +298 -0
  351. package/dist/vendor/bootstrap-vue/src/utils/element-to-vue-instance-registry.js +28 -0
  352. package/dist/vendor/bootstrap-vue/src/utils/env.js +16 -0
  353. package/dist/vendor/bootstrap-vue/src/utils/events.js +78 -0
  354. package/dist/vendor/bootstrap-vue/src/utils/get-event-root.js +5 -0
  355. package/dist/vendor/bootstrap-vue/src/utils/get-instance-from-directive.js +3 -0
  356. package/dist/vendor/bootstrap-vue/src/utils/get-scope-id.js +9 -0
  357. package/dist/vendor/bootstrap-vue/src/utils/get.js +63 -0
  358. package/dist/vendor/bootstrap-vue/src/utils/html.js +16 -0
  359. package/dist/vendor/bootstrap-vue/src/utils/identity.js +3 -0
  360. package/dist/vendor/bootstrap-vue/src/utils/inspect.js +35 -0
  361. package/dist/vendor/bootstrap-vue/src/utils/locale.js +18 -0
  362. package/dist/vendor/bootstrap-vue/src/utils/loose-equal.js +59 -0
  363. package/dist/vendor/bootstrap-vue/src/utils/loose-index-of.js +13 -0
  364. package/dist/vendor/bootstrap-vue/src/utils/math.js +9 -0
  365. package/dist/vendor/bootstrap-vue/src/utils/memoize.js +14 -0
  366. package/dist/vendor/bootstrap-vue/src/utils/model.js +33 -0
  367. package/dist/vendor/bootstrap-vue/src/utils/noop.js +3 -0
  368. package/dist/vendor/bootstrap-vue/src/utils/normalize-slot.js +51 -0
  369. package/dist/vendor/bootstrap-vue/src/utils/number.js +23 -0
  370. package/dist/vendor/bootstrap-vue/src/utils/object.js +72 -0
  371. package/dist/vendor/bootstrap-vue/src/utils/observe-dom.js +76 -0
  372. package/dist/vendor/bootstrap-vue/src/utils/on-instance-destroy.js +22 -0
  373. package/dist/vendor/bootstrap-vue/src/utils/plugins.js +124 -0
  374. package/dist/vendor/bootstrap-vue/src/utils/props.js +67 -0
  375. package/dist/vendor/bootstrap-vue/src/utils/router.js +150 -0
  376. package/dist/vendor/bootstrap-vue/src/utils/safe-vue-instance.js +14 -0
  377. package/dist/vendor/bootstrap-vue/src/utils/stable-sort.js +28 -0
  378. package/dist/vendor/bootstrap-vue/src/utils/string.js +47 -0
  379. package/dist/vendor/bootstrap-vue/src/utils/stringify-object-values.js +31 -0
  380. package/dist/vendor/bootstrap-vue/src/utils/warn.js +45 -0
  381. package/dist/vendor/bootstrap-vue/src/vue.js +55 -0
  382. package/package.json +6 -5
  383. package/src/components/base/link/link.vue +5 -8
  384. package/src/utils/constants.js +0 -3
  385. package/src/utils/vue_utils.js +56 -0
  386. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown.js +2 -2
  387. package/src/vendor/bootstrap-vue/src/components/form-group/form-group.js +2 -2
  388. package/src/vendor/bootstrap-vue/src/components/layout/col.js +2 -2
  389. package/src/vendor/bootstrap-vue/src/components/modal/modal.js +219 -52
  390. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-filtering.js +30 -11
  391. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +3 -3
  392. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +1 -2
  393. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +4 -4
  394. package/src/vendor/bootstrap-vue/src/components/table/helpers/sanitize-row.js +2 -3
  395. package/src/vendor/bootstrap-vue/src/components/tabs/tabs.js +2 -2
  396. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +8 -9
  397. package/src/vendor/bootstrap-vue/src/constants/config.js +2 -2
  398. package/src/vendor/bootstrap-vue/src/directives/tooltip/tooltip.js +1 -1
  399. package/src/vendor/bootstrap-vue/src/mixins/listen-on-document.js +1 -2
  400. package/src/vendor/bootstrap-vue/src/mixins/listen-on-root.js +1 -2
  401. package/src/vendor/bootstrap-vue/src/mixins/listen-on-window.js +1 -2
  402. package/src/vendor/bootstrap-vue/src/utils/array.js +0 -1
  403. package/src/vendor/bootstrap-vue/src/utils/locale.js +1 -2
@@ -0,0 +1,245 @@
1
+ import * as echarts from 'echarts';
2
+ import { defaultFontSize } from '../../../utils/charts/config';
3
+ import { LEGEND_AVERAGE_TEXT, LEGEND_CURRENT_TEXT, LEGEND_MIN_TEXT, LEGEND_MAX_TEXT, LEGEND_LAYOUT_INLINE, LEGEND_LAYOUT_TABLE } from '../../../utils/charts/constants';
4
+ import { engineeringNotation, average } from '../../../utils/number_utils';
5
+ import GlTruncate from '../../utilities/truncate/truncate';
6
+ import GlChartSeriesLabel from '../series_label/series_label';
7
+ import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
8
+
9
+ var script = {
10
+ name: 'GlChartLegend',
11
+ components: {
12
+ GlChartSeriesLabel,
13
+ GlTruncate
14
+ },
15
+ props: {
16
+ chart: {
17
+ type: Object,
18
+ required: true,
19
+ validator(chart) {
20
+ return Object.is(chart, echarts.getInstanceByDom(chart.getDom()));
21
+ }
22
+ },
23
+ seriesInfo: {
24
+ type: Array,
25
+ required: true,
26
+ validator(seriesInfo) {
27
+ return seriesInfo.every(series => series.type && series.name && series.color);
28
+ }
29
+ },
30
+ textStyle: {
31
+ type: Object,
32
+ required: false,
33
+ default: () => ({})
34
+ },
35
+ /**
36
+ * Text for data average (overridden by prop if needed for internationalization)
37
+ */
38
+ averageText: {
39
+ type: String,
40
+ required: false,
41
+ default: LEGEND_AVERAGE_TEXT
42
+ },
43
+ currentText: {
44
+ type: String,
45
+ required: false,
46
+ default: LEGEND_CURRENT_TEXT
47
+ },
48
+ minText: {
49
+ type: String,
50
+ required: false,
51
+ default: LEGEND_MIN_TEXT
52
+ },
53
+ /**
54
+ * Text for max amount (overridden by prop if needed for internationalization)
55
+ */
56
+ maxText: {
57
+ type: String,
58
+ required: false,
59
+ default: LEGEND_MAX_TEXT
60
+ },
61
+ /**
62
+ * Sets the display layout
63
+ */
64
+ layout: {
65
+ type: String,
66
+ required: false,
67
+ default: LEGEND_LAYOUT_INLINE,
68
+ validator(layout) {
69
+ return [LEGEND_LAYOUT_INLINE, LEGEND_LAYOUT_TABLE].indexOf(layout) !== -1;
70
+ }
71
+ }
72
+ },
73
+ data() {
74
+ return {
75
+ disabledSeries: {},
76
+ lastActiveSeriesLabel: null,
77
+ shouldApplyFadeClass: false
78
+ };
79
+ },
80
+ computed: {
81
+ fontStyle() {
82
+ return {
83
+ fontFamily: this.textStyle.fontFamily || 'sans-serif',
84
+ fontSize: `${this.textStyle.fontSize || defaultFontSize}px`
85
+ };
86
+ },
87
+ hasOneSeriesElement() {
88
+ return this.seriesInfo.length === 1;
89
+ }
90
+ },
91
+ created() {
92
+ this.chart.on('legendselectchanged', this.suppressLastActiveSeriesLabelToggle);
93
+ },
94
+ mounted() {
95
+ this.applyFadeClass();
96
+ },
97
+ async updated() {
98
+ await this.$nextTick();
99
+ this.applyFadeClass();
100
+ },
101
+ beforeDestroy() {
102
+ this.chart.off('legendselectchanged', this.suppressLastActiveSeriesLabelToggle);
103
+ },
104
+ methods: {
105
+ sanitizeSeriesData(seriesData) {
106
+ var _seriesData$filter;
107
+ return (_seriesData$filter = seriesData === null || seriesData === void 0 ? void 0 : seriesData.filter(d => !Number.isNaN(d))) !== null && _seriesData$filter !== void 0 ? _seriesData$filter : [];
108
+ },
109
+ seriesAverage(seriesData) {
110
+ const sanitized = this.sanitizeSeriesData(seriesData);
111
+ return engineeringNotation(average(...sanitized));
112
+ },
113
+ seriesMax(seriesData) {
114
+ const sanitized = this.sanitizeSeriesData(seriesData);
115
+ return engineeringNotation(Math.max(...sanitized));
116
+ },
117
+ seriesMin(seriesData) {
118
+ const sanitized = this.sanitizeSeriesData(seriesData);
119
+ return engineeringNotation(Math.min(...sanitized));
120
+ },
121
+ seriesLast(seriesData) {
122
+ const sanitized = this.sanitizeSeriesData(seriesData);
123
+ return engineeringNotation(sanitized[sanitized.length - 1]);
124
+ },
125
+ seriesNameIsLong(seriesName) {
126
+ return seriesName.length > 120;
127
+ },
128
+ handleClick(_ref, key) {
129
+ let {
130
+ name,
131
+ disabled
132
+ } = _ref;
133
+ if (this.hasOneSeriesElement || this.isToggleDisabled(name, disabled)) return;
134
+ this.chart.dispatchAction({
135
+ type: 'legendToggleSelect',
136
+ name
137
+ });
138
+ this.disabledSeries = {
139
+ ...this.disabledSeries,
140
+ [key]: !this.disabledSeries[key]
141
+ };
142
+ },
143
+ handleMouseEnter(name) {
144
+ this.chart.dispatchAction({
145
+ type: 'highlight',
146
+ seriesName: name
147
+ });
148
+ },
149
+ handleMouseLeave(name) {
150
+ this.chart.dispatchAction({
151
+ type: 'downplay',
152
+ seriesName: name
153
+ });
154
+ },
155
+ getColor(color, key) {
156
+ return this.disabledSeries[key] ? 'var(--gl-chart-axis-line-color)' : color;
157
+ },
158
+ suppressLastActiveSeriesLabelToggle(_ref2) {
159
+ let {
160
+ selected
161
+ } = _ref2;
162
+ const selectedSeriesLabels = Object.entries(selected).filter(_ref3 => {
163
+ let [, isSelected] = _ref3;
164
+ return Boolean(isSelected);
165
+ });
166
+ this.lastActiveSeriesLabel = null;
167
+ if (selectedSeriesLabels.length === 1) {
168
+ const [lastActiveSeriesLabelName] = selectedSeriesLabels[0];
169
+ this.lastActiveSeriesLabel = lastActiveSeriesLabelName;
170
+ }
171
+ },
172
+ /**
173
+ * Disables toggling legend if it is the last active one or if its data series
174
+ * has a disabled property set to true
175
+ * @param {String} name Series name
176
+ * @param {Boolean} isDisabled Value of the series element's disabled property
177
+ * @returns {boolean}
178
+ */
179
+ isToggleDisabled(name, isDisabled) {
180
+ return name === this.lastActiveSeriesLabel || isDisabled;
181
+ },
182
+ applyFadeClass() {
183
+ if (this.$refs.inlineLegendEl) {
184
+ const {
185
+ scrollHeight,
186
+ clientHeight
187
+ } = this.$refs.inlineLegendEl;
188
+ this.shouldApplyFadeClass = scrollHeight > clientHeight;
189
+ }
190
+ }
191
+ },
192
+ legendLayoutTypes: {
193
+ LEGEND_LAYOUT_INLINE,
194
+ LEGEND_LAYOUT_TABLE
195
+ }
196
+ };
197
+
198
+ /* script */
199
+ const __vue_script__ = script;
200
+
201
+ /* template */
202
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"gl-legend",attrs:{"data-testid":"gl-chart-legend"}},[(_vm.layout === _vm.$options.legendLayoutTypes.LEGEND_LAYOUT_INLINE)?[_c('div',{ref:"inlineLegendEl",staticClass:"gl-legend-inline",class:{ 'gl-legend-b-fade': _vm.shouldApplyFadeClass }},_vm._l((_vm.seriesInfo),function(series,key){return _c('div',{key:key,staticClass:"gl-legend-inline-series",class:{
203
+ 'gl-text-subtle': _vm.disabledSeries[key],
204
+ 'gl-text-strong': !_vm.disabledSeries[key],
205
+ 'gl-w-full': _vm.seriesNameIsLong(series.name),
206
+ 'hover:!gl-cursor-not-allowed':
207
+ _vm.hasOneSeriesElement || _vm.isToggleDisabled(series.name, series.disabled),
208
+ },style:(_vm.fontStyle),attrs:{"aria-disabled":_vm.hasOneSeriesElement || _vm.isToggleDisabled(series.name, series.disabled),"role":"button"},on:{"click":function($event){return _vm.handleClick(series, key)},"mouseenter":function($event){return _vm.handleMouseEnter(series.name)},"mouseleave":function($event){return _vm.handleMouseLeave(series.name)}}},[_c('gl-chart-series-label',{staticClass:"gl-legend-inline-series-label",class:{ 'gl-w-3/4': _vm.seriesNameIsLong(series.name) },attrs:{"color":_vm.getColor(series.color, key),"type":series.type}},[_c('gl-truncate',{staticClass:"gl-font-bold",attrs:{"text":series.name}})],1),_vm._v(" "),(series.data && series.data.length)?_c('span',{class:{ 'gl-whitespace-nowrap': _vm.seriesNameIsLong(series.name) }},[_vm._v("\n "+_vm._s(_vm.averageText)+": "+_vm._s(_vm.seriesAverage(series.data))+" · "+_vm._s(_vm.maxText)+":\n "+_vm._s(_vm.seriesMax(series.data))+"\n ")]):_vm._e()],1)}),0)]:_vm._e(),_vm._v(" "),(_vm.layout === _vm.$options.legendLayoutTypes.LEGEND_LAYOUT_TABLE)?[_c('div',{staticClass:"gl-legend-tabular gl-legend-b-fade",style:(_vm.fontStyle)},[_c('header',{staticClass:"gl-legend-tabular-header"},[_c('div',{staticClass:"gl-legend-tabular-header-cell"},[_vm._v(_vm._s(_vm.minText))]),_vm._v(" "),_c('div',{staticClass:"gl-legend-tabular-header-cell"},[_vm._v(_vm._s(_vm.maxText))]),_vm._v(" "),_c('div',{staticClass:"gl-legend-tabular-header-cell"},[_vm._v(_vm._s(_vm.averageText))]),_vm._v(" "),_c('div',{staticClass:"gl-legend-tabular-header-cell"},[_vm._v(_vm._s(_vm.currentText))])]),_vm._v(" "),_c('section',{staticClass:"gl-legend-tabular-body"},_vm._l((_vm.seriesInfo),function(series,key){return _c('div',{key:key,staticClass:"gl-legend-tabular-row",class:{
209
+ 'gl-text-subtle': _vm.disabledSeries[key],
210
+ 'gl-text-strong': !_vm.disabledSeries[key],
211
+ 'hover:!gl-cursor-not-allowed':
212
+ _vm.hasOneSeriesElement || _vm.isToggleDisabled(series.name, series.disabled),
213
+ },style:(_vm.fontStyle),attrs:{"aria-disabled":_vm.isToggleDisabled(series.name, series.disabled),"role":"button"},on:{"click":function($event){return _vm.handleClick(series, key)},"mouseenter":function($event){return _vm.handleMouseEnter(series.name)},"mouseleave":function($event){return _vm.handleMouseLeave(series.name)}}},[_c('div',{staticClass:"gl-legend-tabular-title-cell"},[_c('gl-chart-series-label',{style:(_vm.fontStyle),attrs:{"color":_vm.getColor(series.color, key),"type":series.type}},[_c('gl-truncate',{staticClass:"gl-font-bold",attrs:{"text":series.name}})],1)],1),_vm._v(" "),(_vm.sanitizeSeriesData(series.data).length)?[_c('div',{staticClass:"gl-legend-tabular-details-cell"},[_vm._v(_vm._s(_vm.seriesMin(series.data)))]),_vm._v(" "),_c('div',{staticClass:"gl-legend-tabular-details-cell"},[_vm._v(_vm._s(_vm.seriesMax(series.data)))]),_vm._v(" "),_c('div',{staticClass:"gl-legend-tabular-details-cell"},[_vm._v(_vm._s(_vm.seriesAverage(series.data)))]),_vm._v(" "),_c('div',{staticClass:"gl-legend-tabular-details-cell"},[_vm._v(_vm._s(_vm.seriesLast(series.data)))])]:[_c('div',{staticClass:"gl-legend-tabular-details-cell"},[_vm._v("-")]),_vm._v(" "),_c('div',{staticClass:"gl-legend-tabular-details-cell"},[_vm._v("-")]),_vm._v(" "),_c('div',{staticClass:"gl-legend-tabular-details-cell"},[_vm._v("-")]),_vm._v(" "),_c('div',{staticClass:"gl-legend-tabular-details-cell"},[_vm._v("-")])]],2)}),0)])]:_vm._e()],2)};
214
+ var __vue_staticRenderFns__ = [];
215
+
216
+ /* style */
217
+ const __vue_inject_styles__ = undefined;
218
+ /* scoped */
219
+ const __vue_scope_id__ = undefined;
220
+ /* module identifier */
221
+ const __vue_module_identifier__ = undefined;
222
+ /* functional template */
223
+ const __vue_is_functional_template__ = false;
224
+ /* style inject */
225
+
226
+ /* style inject SSR */
227
+
228
+ /* style inject shadow dom */
229
+
230
+
231
+
232
+ const __vue_component__ = /*#__PURE__*/__vue_normalize__(
233
+ { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
234
+ __vue_inject_styles__,
235
+ __vue_script__,
236
+ __vue_scope_id__,
237
+ __vue_is_functional_template__,
238
+ __vue_module_identifier__,
239
+ false,
240
+ undefined,
241
+ undefined,
242
+ undefined
243
+ );
244
+
245
+ export { __vue_component__ as default };
@@ -0,0 +1,340 @@
1
+ import { merge } from 'lodash-es';
2
+ import { symbolSize, lineStyle, getThresholdConfig, generateAnnotationSeries, defaultChartOptions, dataZoomAdjustments, mergeSeriesToOptions, mergeAnnotationAxisToOptions, grid } from '../../../utils/charts/config';
3
+ import { LEGEND_AVERAGE_TEXT, LEGEND_MAX_TEXT, LEGEND_MIN_TEXT, LEGEND_CURRENT_TEXT, LEGEND_LAYOUT_INLINE, LEGEND_LAYOUT_TABLE, HEIGHT_AUTO_CLASSES } from '../../../utils/charts/constants';
4
+ import { colorFromDefaultPalette } from '../../../utils/charts/theme';
5
+ import { seriesHasAnnotations, isDataPointAnnotation } from '../../../utils/charts/utils';
6
+ import Chart from '../chart/chart';
7
+ import ChartLegend from '../legend/legend';
8
+ import ChartTooltip from '../shared/tooltip/tooltip';
9
+ import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
10
+
11
+ /**
12
+ * Line charts as of %12.10 support annotations.
13
+ * Annotations is composed of a dotted line and an arrow
14
+ * at the bottom. The dotted line is constructed
15
+ * with markLine and arrows with markPoint. Most of this
16
+ * logic is in GitLab and should be eventually moved to
17
+ * GitLab UI https://gitlab.com/gitlab-org/gitlab/-/issues/213390.
18
+ *
19
+ * Similar to how custom tooltips are displayed when line chart
20
+ * is hovered, a tooltip should be displayed when the annotation
21
+ * arrow is hovered. This component adds event listeners
22
+ * to figure out if mouse is hovered on charts to show tooltips.
23
+ * While that works for data points inside the grid, for arrows
24
+ * that live right under the chart, we use eCharts inbuilt
25
+ * event listeners to detect hover. Given this limitation,
26
+ * we use a separate tooltip for data point and arrow.
27
+ */
28
+
29
+ var script = {
30
+ name: 'GlLineChart',
31
+ components: {
32
+ Chart,
33
+ ChartLegend,
34
+ ChartTooltip
35
+ },
36
+ inheritAttrs: false,
37
+ props: {
38
+ data: {
39
+ type: Array,
40
+ required: true
41
+ },
42
+ option: {
43
+ type: Object,
44
+ required: false,
45
+ default: () => ({})
46
+ },
47
+ thresholds: {
48
+ type: Array,
49
+ required: false,
50
+ default: () => []
51
+ },
52
+ annotations: {
53
+ type: Array,
54
+ required: false,
55
+ default: () => []
56
+ },
57
+ includeLegendAvgMax: {
58
+ type: Boolean,
59
+ required: false,
60
+ default: true
61
+ },
62
+ /**
63
+ * Callback called when showing or refreshing a tooltip.
64
+ * **Deprecated:** Use slots `#tooltip-title`, `#tooltip-content` or `#tooltip-value`.
65
+ *
66
+ * @deprecated Use slots `#tooltip-title`, `#tooltip-content` or `#tooltip-value`.
67
+ */
68
+ formatTooltipText: {
69
+ type: Function,
70
+ required: false,
71
+ default: null
72
+ },
73
+ legendAverageText: {
74
+ type: String,
75
+ required: false,
76
+ default: LEGEND_AVERAGE_TEXT
77
+ },
78
+ legendMaxText: {
79
+ type: String,
80
+ required: false,
81
+ default: LEGEND_MAX_TEXT
82
+ },
83
+ legendMinText: {
84
+ type: String,
85
+ required: false,
86
+ default: LEGEND_MIN_TEXT
87
+ },
88
+ legendCurrentText: {
89
+ type: String,
90
+ required: false,
91
+ default: LEGEND_CURRENT_TEXT
92
+ },
93
+ legendLayout: {
94
+ type: String,
95
+ required: false,
96
+ default: LEGEND_LAYOUT_INLINE,
97
+ validator(layout) {
98
+ return [LEGEND_LAYOUT_INLINE, LEGEND_LAYOUT_TABLE].indexOf(layout) !== -1;
99
+ }
100
+ },
101
+ showLegend: {
102
+ type: Boolean,
103
+ required: false,
104
+ default: true
105
+ },
106
+ /**
107
+ * Sets the chart's height in pixels. Set to `"auto"` to use the height of the container.
108
+ */
109
+ height: {
110
+ type: [Number, String],
111
+ required: false,
112
+ default: null
113
+ },
114
+ /**
115
+ * Controls whether the tooltip should be pinned when clicked.
116
+ */
117
+ clickToPinTooltip: {
118
+ type: Boolean,
119
+ required: false,
120
+ default: false
121
+ }
122
+ },
123
+ data() {
124
+ // Part of the tooltip related data can be
125
+ // moved into the tooltip component.
126
+ // Tracking that progress in
127
+ // https://gitlab.com/gitlab-org/gitlab-ui/-/issues/618
128
+ return {
129
+ chart: null,
130
+ compiledOptions: null,
131
+ showAnnotationsTooltip: false,
132
+ annotationsTooltipTitle: '',
133
+ annotationsTooltipContent: '',
134
+ annotationsTooltipPosition: {
135
+ left: '0',
136
+ top: '0'
137
+ }
138
+ };
139
+ },
140
+ computed: {
141
+ series() {
142
+ const dataSeries = this.data.map((series, index) => {
143
+ const defaultColor = colorFromDefaultPalette(index);
144
+ const getColor = type => {
145
+ var _series$type$color, _series$type;
146
+ return (_series$type$color = (_series$type = series[type]) === null || _series$type === void 0 ? void 0 : _series$type.color) !== null && _series$type$color !== void 0 ? _series$type$color : defaultColor;
147
+ };
148
+ return merge({
149
+ showSymbol: true,
150
+ lineStyle: {
151
+ color: getColor('lineStyle')
152
+ },
153
+ itemStyle: {
154
+ color: getColor('itemStyle')
155
+ }
156
+ }, symbolSize, lineStyle, series, getThresholdConfig(this.thresholds));
157
+ });
158
+ // if annotation series exists, append it
159
+ // along with data series
160
+ if (this.annotationSeries) {
161
+ return [...dataSeries, this.annotationSeries];
162
+ }
163
+ return dataSeries;
164
+ },
165
+ annotationSeries() {
166
+ return generateAnnotationSeries(this.annotations);
167
+ },
168
+ options() {
169
+ const lineChartOptions = {
170
+ xAxis: {
171
+ axisTick: {
172
+ alignWithLabel: true,
173
+ show: true,
174
+ lineStyle: {
175
+ color: 'var(--gl-chart-axis-line-color)'
176
+ }
177
+ }
178
+ }
179
+ };
180
+
181
+ // `formatTooltipText` is deprecated, these added options should be
182
+ // removed when `formatTooltipText` is removed.
183
+ const deprecatedTooltipFormatterOptions = {
184
+ xAxis: {
185
+ axisPointer: {
186
+ show: true,
187
+ label: {
188
+ formatter: this.formatTooltipText
189
+ }
190
+ }
191
+ }
192
+ };
193
+ const mergedOptions = merge({}, defaultChartOptions, lineChartOptions, this.formatTooltipText ? deprecatedTooltipFormatterOptions : {}, this.option, dataZoomAdjustments(this.option.dataZoom));
194
+ // All chart options can be merged but series
195
+ // needs to be handled specially
196
+ return mergeSeriesToOptions(mergeAnnotationAxisToOptions(mergedOptions, this.hasAnnotations), this.series);
197
+ },
198
+ /**
199
+ * Annotations currently are passed as series options in monitoring dashboard.
200
+ * Once https://gitlab.com/gitlab-org/gitlab/-/issues/213390 is closed,
201
+ * annotations will be passed as props and not as series options.
202
+ *
203
+ * For backward compatibility, we're having to check for both.
204
+ */
205
+ hasAnnotations() {
206
+ return this.annotations.length !== 0 || seriesHasAnnotations(this.option.series);
207
+ },
208
+ shouldShowAnnotationsTooltip() {
209
+ return this.chart && this.hasAnnotations;
210
+ },
211
+ legendStyle() {
212
+ return {
213
+ paddingLeft: `${grid.left}px`
214
+ };
215
+ },
216
+ hasLegend() {
217
+ return this.showLegend && this.compiledOptions;
218
+ },
219
+ seriesInfo() {
220
+ var _this$compiledOptions;
221
+ const compiledSeries = ((_this$compiledOptions = this.compiledOptions) === null || _this$compiledOptions === void 0 ? void 0 : _this$compiledOptions.series) || [];
222
+ return compiledSeries.reduce((acc, series, index) => {
223
+ if (series.type === 'line') {
224
+ var _series$data;
225
+ acc.push({
226
+ name: series.name,
227
+ type: series.lineStyle.type,
228
+ color: series.lineStyle.color || colorFromDefaultPalette(index),
229
+ data: this.includeLegendAvgMax ? (_series$data = series.data) === null || _series$data === void 0 ? void 0 : _series$data.map(data => data[1]) : undefined
230
+ });
231
+ }
232
+ return acc;
233
+ }, []);
234
+ },
235
+ autoHeight() {
236
+ return this.height === 'auto';
237
+ }
238
+ },
239
+ beforeDestroy() {
240
+ this.chart.off('mouseout', this.onChartDataPointMouseOut);
241
+ this.chart.off('mouseover', this.onChartDataPointMouseOver);
242
+ },
243
+ methods: {
244
+ defaultAnnotationTooltipText(params) {
245
+ var _params$data$tooltipD;
246
+ return {
247
+ title: params.data.xAxis,
248
+ content: (_params$data$tooltipD = params.data.tooltipData) === null || _params$data$tooltipD === void 0 ? void 0 : _params$data$tooltipD.content
249
+ };
250
+ },
251
+ onCreated(chart) {
252
+ // eCharts inbuild mouse events
253
+ // https://echarts.apache.org/en/api.html#events.Mouse%20events
254
+ // is used to attach listeners to markPoints. These listeners
255
+ // are currently used for annotation arrows at the bottom of the chart.
256
+
257
+ // Because data points and annotations arrows are in different
258
+ // sections of the charts with their own mouseovers and mouseouts,
259
+ // there shouldn't be an overlapping situation where both tooltips
260
+ // are visible.
261
+
262
+ if (this.hasAnnotations) {
263
+ chart.on('mouseout', this.onChartDataPointMouseOut);
264
+ chart.on('mouseover', this.onChartDataPointMouseOver);
265
+ }
266
+ this.chart = chart;
267
+ this.$emit('created', chart);
268
+ },
269
+ onUpdated() {
270
+ this.compiledOptions = this.chart.getOption();
271
+ },
272
+ onChartDataPointMouseOut() {
273
+ this.showAnnotationsTooltip = false;
274
+ },
275
+ /**
276
+ * Check if the hovered data point is an annotation
277
+ * point to show the annotation tooltip.
278
+ */
279
+ onChartDataPointMouseOver(params) {
280
+ if (isDataPointAnnotation(params)) {
281
+ const {
282
+ event
283
+ } = params;
284
+ const toolTipFormatter = this.formatAnnotationsTooltipText || this.defaultAnnotationTooltipText;
285
+ const {
286
+ title = '',
287
+ content = ''
288
+ } = toolTipFormatter(params);
289
+ this.showAnnotationsTooltip = true;
290
+ this.annotationsTooltipTitle = title;
291
+ this.annotationsTooltipContent = content;
292
+ this.annotationsTooltipPosition = {
293
+ left: `${event.event.zrX}px`,
294
+ top: `${event.event.zrY}px`
295
+ };
296
+ }
297
+ }
298
+ },
299
+ HEIGHT_AUTO_CLASSES
300
+ };
301
+
302
+ /* script */
303
+ const __vue_script__ = script;
304
+
305
+ /* template */
306
+ var __vue_render__ = function () {
307
+ var _obj;
308
+ var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"gl-relative",class:( _obj = {}, _obj[_vm.$options.HEIGHT_AUTO_CLASSES] = _vm.autoHeight, _obj )},[_c('chart',_vm._g(_vm._b({class:{ 'gl-grow': _vm.autoHeight },attrs:{"height":_vm.height,"options":_vm.options},on:{"created":_vm.onCreated,"updated":_vm.onUpdated}},'chart',_vm.$attrs,false),_vm.$listeners)),_vm._v(" "),(_vm.shouldShowAnnotationsTooltip)?_c('chart-tooltip',{ref:"annotationsTooltip",attrs:{"id":"annotationsTooltip","show":_vm.showAnnotationsTooltip,"chart":_vm.chart,"top":_vm.annotationsTooltipPosition.top,"left":_vm.annotationsTooltipPosition.left,"placement":"bottom"},scopedSlots:_vm._u([{key:"title",fn:function(){return [_c('div',[_vm._v(_vm._s(_vm.annotationsTooltipTitle))])]},proxy:true}],null,false,1889294429)},[_vm._v(" "),_c('div',[_vm._v(_vm._s(_vm.annotationsTooltipContent))])]):_vm._e(),_vm._v(" "),(_vm.chart)?_c('chart-tooltip',{ref:"dataTooltip",attrs:{"chart":_vm.chart,"use-default-tooltip-formatter":!_vm.formatTooltipText,"click-to-pin":_vm.clickToPinTooltip},scopedSlots:_vm._u([(_vm.$scopedSlots['tooltip-title'])?{key:"title",fn:function(scope){return [_vm._t("tooltip-title",null,null,scope)]}}:null,(_vm.$scopedSlots['tooltip-content'])?{key:"default",fn:function(scope){return [_vm._t("tooltip-content",null,null,scope)]}}:null,(_vm.$scopedSlots['tooltip-value'])?{key:"tooltip-value",fn:function(scope){return [_vm._t("tooltip-value",null,null,scope)]}}:null],null,true)}):_vm._e(),_vm._v(" "),(_vm.hasLegend)?_c('chart-legend',{style:(_vm.legendStyle),attrs:{"chart":_vm.chart,"series-info":_vm.seriesInfo,"text-style":_vm.compiledOptions.textStyle,"min-text":_vm.legendMinText,"max-text":_vm.legendMaxText,"average-text":_vm.legendAverageText,"current-text":_vm.legendCurrentText,"layout":_vm.legendLayout}}):_vm._e()],1)};
309
+ var __vue_staticRenderFns__ = [];
310
+
311
+ /* style */
312
+ const __vue_inject_styles__ = undefined;
313
+ /* scoped */
314
+ const __vue_scope_id__ = undefined;
315
+ /* module identifier */
316
+ const __vue_module_identifier__ = undefined;
317
+ /* functional template */
318
+ const __vue_is_functional_template__ = false;
319
+ /* style inject */
320
+
321
+ /* style inject SSR */
322
+
323
+ /* style inject shadow dom */
324
+
325
+
326
+
327
+ const __vue_component__ = /*#__PURE__*/__vue_normalize__(
328
+ { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
329
+ __vue_inject_styles__,
330
+ __vue_script__,
331
+ __vue_scope_id__,
332
+ __vue_is_functional_template__,
333
+ __vue_module_identifier__,
334
+ false,
335
+ undefined,
336
+ undefined,
337
+ undefined
338
+ );
339
+
340
+ export { __vue_component__ as default };
@@ -0,0 +1,101 @@
1
+ import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
2
+
3
+ // eslint-disable-next-line max-params
4
+ const makePathRect = (startX, startY, width, height) => `M${startX},${startY}H${startX + width}V${startY + height}H${startX}Z`;
5
+ var script = {
6
+ name: 'GlChartSeriesLabel',
7
+ props: {
8
+ color: {
9
+ type: String,
10
+ required: true
11
+ },
12
+ type: {
13
+ type: String,
14
+ required: false,
15
+ default: 'solid'
16
+ }
17
+ },
18
+ data() {
19
+ return {
20
+ labelLineHeight: 0
21
+ };
22
+ },
23
+ computed: {
24
+ pathContent() {
25
+ const width = this.$options.svgWidth;
26
+ const height = this.$options.svgHeight;
27
+ if (this.type === 'dashed') {
28
+ const dashWidth = Math.ceil(width / 3);
29
+ const firstDash = makePathRect(0, 0, dashWidth, height);
30
+ const secondDash = makePathRect(width - dashWidth, 0, dashWidth, height);
31
+ return `${firstDash}${secondDash}`;
32
+ }
33
+ return makePathRect(0, 0, width, height);
34
+ },
35
+ svgStyles() {
36
+ return {
37
+ fill: this.color,
38
+ transform: `translateY(${this.formatPixelDimension(this.svgYTranslationValue)})`,
39
+ width: 'auto'
40
+ };
41
+ },
42
+ svgYTranslationValue() {
43
+ const value = this.labelLineHeight / 2 - this.$options.svgHeight / 2;
44
+ return Math.round(value) || 0;
45
+ }
46
+ },
47
+ mounted() {
48
+ if (getComputedStyle && this.$refs.label) {
49
+ const computedStyle = getComputedStyle(this.$refs.label);
50
+ const lineHeight = computedStyle['line-height'].match(/(\d+)px/);
51
+ if (lineHeight !== null) {
52
+ this.labelLineHeight = parseFloat(lineHeight[1]);
53
+ }
54
+ }
55
+ },
56
+ methods: {
57
+ formatPixelDimension(dimension) {
58
+ return `${dimension}px`;
59
+ }
60
+ },
61
+ svgWidth: 16,
62
+ svgHeight: 4
63
+ };
64
+
65
+ /* script */
66
+ const __vue_script__ = script;
67
+
68
+ /* template */
69
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"gl-series-label-container"},[(_vm.color.length)?_c('div',{staticClass:"gl-series-label-color"},[_c('svg',{style:(_vm.svgStyles),attrs:{"width":_vm.formatPixelDimension(_vm.$options.svgWidth),"height":_vm.formatPixelDimension(_vm.$options.svgHeight)}},[_c('path',{attrs:{"d":_vm.pathContent}})])]):_vm._e(),_vm._v(" "),_c('div',{ref:"label",staticClass:"gl-series-label-text"},[_vm._t("default")],2)])};
70
+ var __vue_staticRenderFns__ = [];
71
+
72
+ /* style */
73
+ const __vue_inject_styles__ = undefined;
74
+ /* scoped */
75
+ const __vue_scope_id__ = undefined;
76
+ /* module identifier */
77
+ const __vue_module_identifier__ = undefined;
78
+ /* functional template */
79
+ const __vue_is_functional_template__ = false;
80
+ /* style inject */
81
+
82
+ /* style inject SSR */
83
+
84
+ /* style inject shadow dom */
85
+
86
+
87
+
88
+ const __vue_component__ = /*#__PURE__*/__vue_normalize__(
89
+ { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
90
+ __vue_inject_styles__,
91
+ __vue_script__,
92
+ __vue_scope_id__,
93
+ __vue_is_functional_template__,
94
+ __vue_module_identifier__,
95
+ false,
96
+ undefined,
97
+ undefined,
98
+ undefined
99
+ );
100
+
101
+ export { __vue_component__ as default };