@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,80 @@
1
+ import { BTableLite } from '../../../vendor/bootstrap-vue/src/components/table/table-lite';
2
+ import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
3
+
4
+ const {
5
+ tableClass
6
+ } = BTableLite.options.props;
7
+ var script = {
8
+ name: 'GlTableLite',
9
+ components: {
10
+ BTableLite
11
+ },
12
+ inheritAttrs: false,
13
+ props: {
14
+ tableClass,
15
+ /**
16
+ * Array of items displayed in the table as rows.
17
+ */
18
+ items: {
19
+ type: Array,
20
+ required: false,
21
+ default: () => []
22
+ },
23
+ fields: {
24
+ type: Array,
25
+ required: false,
26
+ default: null
27
+ },
28
+ stickyHeader: {
29
+ type: Boolean,
30
+ default: false,
31
+ required: false
32
+ }
33
+ },
34
+ computed: {
35
+ stickyHeaderClass() {
36
+ return this.stickyHeader ? 'gl-table--sticky-header' : null;
37
+ },
38
+ localTableClass() {
39
+ return ['gl-table', this.tableClass, this.stickyHeaderClass];
40
+ }
41
+ }
42
+ };
43
+
44
+ /* script */
45
+ const __vue_script__ = script;
46
+
47
+ /* template */
48
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-table-lite',_vm._g(_vm._b({attrs:{"table-class":_vm.localTableClass,"fields":_vm.fields,"items":_vm.items},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$scopedSlots)),function(slot){return {key:slot,fn:function(scope){return [_vm._t(slot,null,null,scope)]}}})],null,true)},'b-table-lite',_vm.$attrs,false),_vm.$listeners))};
49
+ var __vue_staticRenderFns__ = [];
50
+
51
+ /* style */
52
+ const __vue_inject_styles__ = undefined;
53
+ /* scoped */
54
+ const __vue_scope_id__ = undefined;
55
+ /* module identifier */
56
+ const __vue_module_identifier__ = undefined;
57
+ /* functional template */
58
+ const __vue_is_functional_template__ = false;
59
+ /* style inject */
60
+
61
+ /* style inject SSR */
62
+
63
+ /* style inject shadow dom */
64
+
65
+
66
+
67
+ const __vue_component__ = /*#__PURE__*/__vue_normalize__(
68
+ { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
69
+ __vue_inject_styles__,
70
+ __vue_script__,
71
+ __vue_scope_id__,
72
+ __vue_is_functional_template__,
73
+ __vue_module_identifier__,
74
+ false,
75
+ undefined,
76
+ undefined,
77
+ undefined
78
+ );
79
+
80
+ export { __vue_component__ as default };
@@ -0,0 +1,3 @@
1
+ const DEFAULT_TAB_TITLE_LINK_CLASS = 'gl-tab-nav-item';
2
+
3
+ export { DEFAULT_TAB_TITLE_LINK_CLASS };
@@ -0,0 +1,113 @@
1
+ import { isPlainObject } from 'lodash-es';
2
+ import { BTab } from '../../../../vendor/bootstrap-vue/src/components/tabs/tab';
3
+ import GlBadge from '../../badge/badge';
4
+ import { logWarning } from '../../../../utils/utils';
5
+ import { DEFAULT_TAB_TITLE_LINK_CLASS } from '../constants';
6
+ import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
7
+
8
+ var script = {
9
+ name: 'GlTab',
10
+ components: {
11
+ BTab,
12
+ GlBadge
13
+ },
14
+ inheritAttrs: false,
15
+ props: {
16
+ titleLinkClass: {
17
+ type: [String, Array, Object],
18
+ required: false,
19
+ default: ''
20
+ },
21
+ /**
22
+ * Query string parameter value to use when `gl-tabs` `sync-active-tab-with-query-params` prop is set to `true`.
23
+ */
24
+ queryParamValue: {
25
+ type: String,
26
+ required: false,
27
+ default: null
28
+ },
29
+ /**
30
+ * Display a count badge next to the tab title.
31
+ */
32
+ tabCount: {
33
+ type: Number,
34
+ required: false,
35
+ default: null
36
+ },
37
+ /**
38
+ * Screen reader text to provide context for the tab count value.
39
+ * Should be the result of calling n__() with the count.
40
+ * Example: :tab-count-sr-text="n__('%d changed file', '%d changed files', count)"
41
+ */
42
+ tabCountSrText: {
43
+ type: String,
44
+ required: false,
45
+ default: null
46
+ }
47
+ },
48
+ computed: {
49
+ linkClass() {
50
+ const {
51
+ titleLinkClass
52
+ } = this;
53
+ if (Array.isArray(titleLinkClass)) {
54
+ return [...titleLinkClass, DEFAULT_TAB_TITLE_LINK_CLASS];
55
+ }
56
+ if (isPlainObject(titleLinkClass)) {
57
+ return {
58
+ ...titleLinkClass,
59
+ [DEFAULT_TAB_TITLE_LINK_CLASS]: true
60
+ };
61
+ }
62
+ return `${titleLinkClass} ${DEFAULT_TAB_TITLE_LINK_CLASS}`.trim();
63
+ },
64
+ hasTabCount() {
65
+ return this.tabCount != null && this.tabCount >= 0;
66
+ }
67
+ },
68
+ created() {
69
+ if (this.hasTabCount && !this.tabCountSrText) {
70
+ logWarning('When using "tab-count", you should also provide "tab-count-sr-text" for screen reader accessibility. Example: :tab-count-sr-text="n__(\'%d item\', \'%d items\', count)"', {
71
+ name: 'GlTab'
72
+ });
73
+ }
74
+ }
75
+ };
76
+
77
+ /* script */
78
+ const __vue_script__ = script;
79
+
80
+ /* template */
81
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-tab',_vm._g(_vm._b({attrs:{"title":_vm.hasTabCount ? null : _vm.$attrs.title,"title-link-class":_vm.linkClass,"query-param-value":_vm.queryParamValue},scopedSlots:_vm._u([(_vm.hasTabCount)?{key:"title",fn:function(){return [_vm._t("title",function(){return [_vm._v(_vm._s(_vm.$attrs.title))]}),_vm._v(" "),_c('gl-badge',{staticClass:"gl-ml-2",attrs:{"variant":"neutral","aria-hidden":"true","data-testid":"tab-counter-badge"}},[_vm._v("\n "+_vm._s(_vm.tabCount)+"\n ")]),_vm._v(" "),(_vm.tabCountSrText)?_c('span',{staticClass:"gl-sr-only"},[_vm._v(_vm._s(_vm.tabCountSrText))]):_vm._e()]},proxy:true}:null,_vm._l((Object.keys(_vm.$scopedSlots)),function(slot){return {key:slot,fn:function(){return [_vm._t(slot)]},proxy:true}})],null,true)},'b-tab',_vm.$attrs,false),_vm.$listeners))};
82
+ var __vue_staticRenderFns__ = [];
83
+
84
+ /* style */
85
+ const __vue_inject_styles__ = undefined;
86
+ /* scoped */
87
+ const __vue_scope_id__ = undefined;
88
+ /* module identifier */
89
+ const __vue_module_identifier__ = undefined;
90
+ /* functional template */
91
+ const __vue_is_functional_template__ = false;
92
+ /* style inject */
93
+
94
+ /* style inject SSR */
95
+
96
+ /* style inject shadow dom */
97
+
98
+
99
+
100
+ const __vue_component__ = /*#__PURE__*/__vue_normalize__(
101
+ { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
102
+ __vue_inject_styles__,
103
+ __vue_script__,
104
+ __vue_scope_id__,
105
+ __vue_is_functional_template__,
106
+ __vue_module_identifier__,
107
+ false,
108
+ undefined,
109
+ undefined,
110
+ undefined
111
+ );
112
+
113
+ export { __vue_component__ as default };
@@ -0,0 +1,162 @@
1
+ import { debounce } from 'lodash-es';
2
+ import { GlResizeObserverDirective } from '../../../../directives/resize_observer/resize_observer';
3
+ import GlIcon from '../../icon/icon';
4
+ import { translate } from '../../../../utils/i18n';
5
+ import GlTabs from './tabs';
6
+ import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
7
+
8
+ const NAV_CLASS = 'gl-scrollable-tabs-nav';
9
+ var script = {
10
+ name: 'GlScrollableTabs',
11
+ components: {
12
+ GlTabs,
13
+ GlIcon
14
+ },
15
+ directives: {
16
+ GlResizeObserverDirective
17
+ },
18
+ inheritAttrs: false,
19
+ props: {
20
+ /**
21
+ * The aria-label that will be rendered inside for the scroll to left button.
22
+ */
23
+ scrollLeftLabel: {
24
+ type: String,
25
+ required: false,
26
+ default: translate('GlTabs.GlScrollableTabs.scrollLeftLabel', 'Scroll left')
27
+ },
28
+ /**
29
+ * The aria-label that will be rendered inside for the scroll to right button.
30
+ */
31
+ scrollRightLabel: {
32
+ type: String,
33
+ required: false,
34
+ default: translate('GlTabs.GlScrollableTabs.scrollRightLabel', 'Scroll right')
35
+ }
36
+ },
37
+ data() {
38
+ return {
39
+ width: 0,
40
+ // This is a reactive value of a child element's scrollLeft. It is not two-way bound.
41
+ // Do not set manually outside of "scroll" callback.
42
+ scrollLeft: 0,
43
+ navScrollWidth: 0
44
+ };
45
+ },
46
+ computed: {
47
+ navClass() {
48
+ const attrsNavClass = this.$attrs.navClass;
49
+ if (!attrsNavClass) {
50
+ return [NAV_CLASS];
51
+ }
52
+ if (Array.isArray(attrsNavClass)) {
53
+ return [NAV_CLASS, ...attrsNavClass];
54
+ }
55
+ return [NAV_CLASS, attrsNavClass];
56
+ },
57
+ displayScrollLeft() {
58
+ // if we have scrolled && there's overflow
59
+ return this.scrollLeft && this.width < this.navScrollWidth;
60
+ },
61
+ displayScrollRight() {
62
+ // if there's more overflow to the right
63
+ return this.scrollLeft + this.width < this.navScrollWidth;
64
+ },
65
+ passthroughAttrs() {
66
+ return Object.keys(this.$attrs).filter(key => !key.startsWith('action')).reduce((acc, key) => Object.assign(acc, {
67
+ [key]: this.$attrs[key]
68
+ }), {});
69
+ }
70
+ },
71
+ mounted() {
72
+ this.$nextTick(() => {
73
+ this.navScrollWidth = this.getScrollWidth();
74
+ });
75
+ this.handleNavScroll = debounce(e => {
76
+ this.scrollLeft = e.target.scrollLeft;
77
+ }, 100);
78
+ this.getNavContainer().addEventListener('scroll', this.handleNavScroll);
79
+ },
80
+ beforeDestroy() {
81
+ this.getNavContainer().removeEventListener('scroll', this.handleNavScroll);
82
+ },
83
+ updated() {
84
+ // Whenever tabs are added or removed we need to recalculate the reactive scrollWidth
85
+ this.$nextTick(() => {
86
+ this.navScrollWidth = this.getScrollWidth();
87
+ });
88
+ },
89
+ methods: {
90
+ handleResize(_ref) {
91
+ let {
92
+ contentRect: {
93
+ width
94
+ }
95
+ } = _ref;
96
+ this.width = width;
97
+ this.navScrollWidth = this.getScrollWidth();
98
+ },
99
+ scrollTabsLeft() {
100
+ const scrollTo = this.scrollLeft - this.width;
101
+ this.scrollTabs(Math.max(scrollTo, 0));
102
+ },
103
+ scrollTabsRight() {
104
+ const scrollTo = this.scrollLeft + this.width;
105
+ this.scrollTabs(Math.min(scrollTo, this.getScrollWidth() - this.width));
106
+ },
107
+ scrollTabs(scrollTo) {
108
+ this.getNavContainer().scrollTo({
109
+ left: scrollTo,
110
+ behavior: 'smooth'
111
+ });
112
+ this.scrollLeft = scrollTo;
113
+ },
114
+ getScrollWidth() {
115
+ var _this$getNavContainer;
116
+ return ((_this$getNavContainer = this.getNavContainer()) === null || _this$getNavContainer === void 0 ? void 0 : _this$getNavContainer.scrollWidth) || 0;
117
+ },
118
+ getNavContainer() {
119
+ var _this$$el;
120
+ return (_this$$el = this.$el) === null || _this$$el === void 0 ? void 0 : _this$$el.querySelector(`.${NAV_CLASS}`);
121
+ }
122
+ },
123
+ NAV_CLASS
124
+ };
125
+
126
+ /* script */
127
+ const __vue_script__ = script;
128
+
129
+ /* template */
130
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-tabs',_vm._g(_vm._b({directives:[{name:"gl-resize-observer-directive",rawName:"v-gl-resize-observer-directive",value:(_vm.handleResize),expression:"handleResize"}],attrs:{"nav-class":_vm.navClass},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$slots)),function(slot){return {key:slot,fn:function(){return [_vm._t(slot)]},proxy:true}}),{key:"toolbar-start",fn:function(){return [_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.displayScrollLeft),expression:"displayScrollLeft"}],staticClass:"gl-tabs-fade gl-tabs-fade-left"},[_c('button',{staticClass:"gl-tabs-fade-icon-button",attrs:{"aria-label":_vm.scrollLeftLabel},on:{"click":_vm.scrollTabsLeft}},[_c('gl-icon',{attrs:{"size":16,"name":"chevron-lg-left"}})],1)])]},proxy:true},{key:"toolbar-end",fn:function(){return [_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.displayScrollRight),expression:"displayScrollRight"}],staticClass:"gl-tabs-fade gl-tabs-fade-right"},[_c('button',{staticClass:"gl-tabs-fade-icon-button",attrs:{"aria-label":_vm.scrollRightLabel},on:{"click":_vm.scrollTabsRight}},[_c('gl-icon',{attrs:{"size":16,"name":"chevron-lg-right"}})],1)])]},proxy:true}],null,true)},'gl-tabs',_vm.passthroughAttrs,false),_vm.$listeners))};
131
+ var __vue_staticRenderFns__ = [];
132
+
133
+ /* style */
134
+ const __vue_inject_styles__ = undefined;
135
+ /* scoped */
136
+ const __vue_scope_id__ = undefined;
137
+ /* module identifier */
138
+ const __vue_module_identifier__ = undefined;
139
+ /* functional template */
140
+ const __vue_is_functional_template__ = false;
141
+ /* style inject */
142
+
143
+ /* style inject SSR */
144
+
145
+ /* style inject shadow dom */
146
+
147
+
148
+
149
+ const __vue_component__ = /*#__PURE__*/__vue_normalize__(
150
+ { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
151
+ __vue_inject_styles__,
152
+ __vue_script__,
153
+ __vue_scope_id__,
154
+ __vue_is_functional_template__,
155
+ __vue_module_identifier__,
156
+ false,
157
+ undefined,
158
+ undefined,
159
+ undefined
160
+ );
161
+
162
+ export { __vue_component__ as default };
@@ -0,0 +1,223 @@
1
+ import { BTabs } from '../../../../vendor/bootstrap-vue/src/components/tabs/tabs';
2
+ import { tabsButtonDefaults } from '../../../../utils/constants';
3
+ import GlButton from '../../button/button';
4
+ import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
5
+
6
+ const validatorHelper = obj => Object.keys(obj).every(val => val === 'text' || val === 'attributes');
7
+ var script = {
8
+ name: 'GlTabs',
9
+ components: {
10
+ BTabs,
11
+ GlButton
12
+ },
13
+ inheritAttrs: false,
14
+ props: {
15
+ actionPrimary: {
16
+ type: Object,
17
+ required: false,
18
+ default: null,
19
+ validator: obj => validatorHelper(obj)
20
+ },
21
+ actionSecondary: {
22
+ type: Object,
23
+ required: false,
24
+ default: null,
25
+ validator: obj => validatorHelper(obj)
26
+ },
27
+ actionTertiary: {
28
+ type: Object,
29
+ required: false,
30
+ default: null,
31
+ validator: obj => validatorHelper(obj)
32
+ },
33
+ contentClass: {
34
+ type: [String, Array, Object],
35
+ required: false,
36
+ default: null
37
+ },
38
+ navClass: {
39
+ type: [String, Array, Object],
40
+ required: false,
41
+ default: null
42
+ },
43
+ justified: {
44
+ type: Boolean,
45
+ required: false,
46
+ default: false
47
+ },
48
+ /**
49
+ * Sync active tab with query string parameters. Allows for deep linking into specific tabs.
50
+ */
51
+ syncActiveTabWithQueryParams: {
52
+ type: Boolean,
53
+ required: false,
54
+ default: false
55
+ },
56
+ /**
57
+ * Name to use for query string parameter.
58
+ */
59
+ queryParamName: {
60
+ type: String,
61
+ required: false,
62
+ default: 'tab'
63
+ },
64
+ value: {
65
+ type: Number,
66
+ required: false,
67
+ default: 0
68
+ }
69
+ },
70
+ data() {
71
+ return {
72
+ activeTabIndex: 0
73
+ };
74
+ },
75
+ computed: {
76
+ hasActions() {
77
+ return [this.actionPrimary, this.actionSecondary, this.actionTertiary].some(Boolean);
78
+ },
79
+ listeners() {
80
+ return {
81
+ ...this.$listeners,
82
+ input: this.handleInput
83
+ };
84
+ }
85
+ },
86
+ watch: {
87
+ value: {
88
+ handler(newValue) {
89
+ if (this.activeTabIndex !== newValue) {
90
+ this.activeTabIndex = newValue;
91
+ }
92
+ },
93
+ immediate: true
94
+ }
95
+ },
96
+ mounted() {
97
+ if (this.syncActiveTabWithQueryParams) {
98
+ this.syncActiveTabFromQueryParams();
99
+ window.addEventListener('popstate', this.syncActiveTabFromQueryParams);
100
+ }
101
+
102
+ // Because we are manually binding `value` attribute to `b-tabs` the `input`
103
+ // event is no longer automatically fired when the component is mounted.
104
+ // To maintain parity with original `b-tabs` functionality
105
+ // we manually fire the `input` event when the component is mounted.
106
+ this.$emit('input', this.activeTabIndex);
107
+ },
108
+ destroyed() {
109
+ window.removeEventListener('popstate', this.syncActiveTabFromQueryParams);
110
+ },
111
+ methods: {
112
+ buttonBinding(prop, name) {
113
+ if (!prop.attributes) {
114
+ return tabsButtonDefaults[name];
115
+ }
116
+ return prop.attributes;
117
+ },
118
+ primary() {
119
+ this.$emit('primary');
120
+ },
121
+ secondary() {
122
+ this.$emit('secondary');
123
+ },
124
+ tertiary() {
125
+ this.$emit('tertiary');
126
+ },
127
+ /**
128
+ * When the query parameter is updated, update the active tab to match.
129
+ */
130
+ async syncActiveTabFromQueryParams() {
131
+ await this.$nextTick();
132
+ const queryParamValue = this.getQueryParamValue();
133
+ const tabIndexToActivate = this.getTabs().findIndex((tab, tabIndex) => this.getTabQueryParamValue(tabIndex) === queryParamValue);
134
+ this.activeTabIndex = tabIndexToActivate !== -1 ? tabIndexToActivate : 0;
135
+ },
136
+ /**
137
+ * Returns a list of all <b-tab> instances associated with this tab control.
138
+ */
139
+ getTabs() {
140
+ return this.$refs.bTabs.getTabs();
141
+ },
142
+ /**
143
+ * Get the value of the query param as defined by the `queryParamName` prop.
144
+ */
145
+ getQueryParamValue() {
146
+ const searchParams = new URLSearchParams(window.location.search);
147
+ return searchParams.get(this.queryParamName);
148
+ },
149
+ /**
150
+ * Set the value of the query param as defined by the `queryParamName` prop.
151
+ * This method does nothing if the query param is already up to date.
152
+ */
153
+ setQueryParamValueIfNecessary(tabIndex) {
154
+ const currentQueryParamValue = this.getQueryParamValue();
155
+ const newQueryParamValue = this.getTabQueryParamValue(tabIndex);
156
+
157
+ // If the current query parameter is already up-to-date,
158
+ // avoid creating a duplicate history entry.
159
+ if (tabIndex === 0 && !currentQueryParamValue || tabIndex !== 0 && currentQueryParamValue === newQueryParamValue) {
160
+ return;
161
+ }
162
+ const searchParams = new URLSearchParams(window.location.search);
163
+ searchParams.set(this.queryParamName, newQueryParamValue);
164
+ window.history.pushState({}, '', `${window.location.pathname}?${searchParams.toString()}`);
165
+ },
166
+ /**
167
+ * Returns the query param value for a tab.
168
+ * Defaults to the tab index unless the `query-param-value` attribute is set.
169
+ */
170
+ getTabQueryParamValue(tabIndex) {
171
+ const tab = this.getTabs()[tabIndex];
172
+ return (tab === null || tab === void 0 ? void 0 : tab.$attrs['query-param-value']) || tabIndex.toString();
173
+ },
174
+ /**
175
+ * Event handler for `input` event.
176
+ */
177
+ handleInput(tabIndex) {
178
+ this.$emit('input', tabIndex);
179
+ this.activeTabIndex = tabIndex;
180
+ if (this.syncActiveTabWithQueryParams) {
181
+ this.setQueryParamValueIfNecessary(tabIndex);
182
+ }
183
+ }
184
+ }
185
+ };
186
+
187
+ /* script */
188
+ const __vue_script__ = script;
189
+
190
+ /* template */
191
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-tabs',_vm._g(_vm._b({ref:"bTabs",staticClass:"gl-tabs",attrs:{"no-nav-style":true,"no-fade":true,"active-nav-item-class":"gl-tab-nav-item-active","content-class":[_vm.contentClass, 'gl-tab-content'],"nav-wrapper-class":"gl-tabs-wrapper","nav-class":[_vm.navClass, 'gl-tabs-nav'],"justified":_vm.justified,"value":_vm.activeTabIndex},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$slots)),function(slot){return {key:slot,fn:function(){return [_vm._t(slot)]},proxy:true}}),(_vm.hasActions)?{key:"toolbar-start",fn:function(){return [_c('div',{staticClass:"gl-actions-tabs-start",attrs:{"role":"toolbar","data-testid":"actions-tabs-start"}},[(_vm.actionPrimary)?_c('gl-button',_vm._b({attrs:{"data-testid":"action-primary"},on:{"click":_vm.primary}},'gl-button',_vm.buttonBinding(_vm.actionPrimary, 'actionPrimary'),false),[_vm._v("\n "+_vm._s(_vm.actionPrimary.text)+"\n ")]):_vm._e(),_vm._v(" "),(_vm.actionSecondary)?_c('gl-button',_vm._b({attrs:{"data-testid":"action-secondary"},on:{"click":_vm.secondary}},'gl-button',_vm.buttonBinding(_vm.actionSecondary, 'actionSecondary'),false),[_vm._v("\n "+_vm._s(_vm.actionSecondary.text)+"\n ")]):_vm._e(),_vm._v(" "),(_vm.actionTertiary)?_c('gl-button',_vm._b({attrs:{"data-testid":"action-tertiary"},on:{"click":_vm.tertiary}},'gl-button',_vm.buttonBinding(_vm.actionTertiary, 'actionTertiary'),false),[_vm._v("\n "+_vm._s(_vm.actionTertiary.text)+"\n ")]):_vm._e()],1)]},proxy:true}:null,(_vm.hasActions)?{key:"toolbar-end",fn:function(){return [_c('div',{staticClass:"gl-actions-tabs-end",attrs:{"role":"toolbar","data-testid":"actions-tabs-end"}},[(_vm.actionPrimary)?_c('gl-button',_vm._b({attrs:{"data-testid":"action-primary"},on:{"click":_vm.primary}},'gl-button',_vm.buttonBinding(_vm.actionPrimary, 'actionPrimary'),false),[_vm._v("\n "+_vm._s(_vm.actionPrimary.text)+"\n ")]):_vm._e(),_vm._v(" "),(_vm.actionSecondary)?_c('gl-button',_vm._b({attrs:{"data-testid":"action-secondary"},on:{"click":_vm.secondary}},'gl-button',_vm.buttonBinding(_vm.actionSecondary, 'actionSecondary'),false),[_vm._v("\n "+_vm._s(_vm.actionSecondary.text)+"\n ")]):_vm._e(),_vm._v(" "),(_vm.actionTertiary)?_c('gl-button',_vm._b({attrs:{"data-testid":"action-tertiary"},on:{"click":_vm.tertiary}},'gl-button',_vm.buttonBinding(_vm.actionTertiary, 'actionTertiary'),false),[_vm._v("\n "+_vm._s(_vm.actionTertiary.text)+"\n ")]):_vm._e()],1)]},proxy:true}:null],null,true)},'b-tabs',_vm.$attrs,false),_vm.listeners))};
192
+ var __vue_staticRenderFns__ = [];
193
+
194
+ /* style */
195
+ const __vue_inject_styles__ = undefined;
196
+ /* scoped */
197
+ const __vue_scope_id__ = undefined;
198
+ /* module identifier */
199
+ const __vue_module_identifier__ = undefined;
200
+ /* functional template */
201
+ const __vue_is_functional_template__ = false;
202
+ /* style inject */
203
+
204
+ /* style inject SSR */
205
+
206
+ /* style inject shadow dom */
207
+
208
+
209
+
210
+ const __vue_component__ = /*#__PURE__*/__vue_normalize__(
211
+ { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
212
+ __vue_inject_styles__,
213
+ __vue_script__,
214
+ __vue_scope_id__,
215
+ __vue_is_functional_template__,
216
+ __vue_module_identifier__,
217
+ false,
218
+ undefined,
219
+ undefined,
220
+ undefined
221
+ );
222
+
223
+ export { __vue_component__ as default };
@@ -0,0 +1,66 @@
1
+ import Vue from 'vue';
2
+ import { createNewChildComponent } from '../../../vendor/bootstrap-vue/src/utils/create-new-child-component';
3
+ import GlToaster from './toaster';
4
+
5
+ /* eslint-disable import/no-default-export */
6
+ let toastsCount = 0;
7
+ let toasterInstance = null;
8
+ function ensureToaster(vm) {
9
+ if (toasterInstance) {
10
+ const portalTarget = document.getElementById('gl-toaster');
11
+ if (portalTarget && document.body.contains(portalTarget)) {
12
+ return toasterInstance;
13
+ }
14
+ toasterInstance.$destroy();
15
+ toasterInstance = null;
16
+ }
17
+ const ToasterComponent = Vue.extend(GlToaster);
18
+ toasterInstance = createNewChildComponent(vm, ToasterComponent);
19
+ toasterInstance.$mount(document.createElement('div'));
20
+ return toasterInstance;
21
+ }
22
+ function showToast(message) {
23
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
24
+ const toaster = ensureToaster(this);
25
+
26
+ // eslint-disable-next-line @gitlab/tailwind-no-interpolation -- Not a CSS utility
27
+ const id = `gl-toast-${toastsCount}`;
28
+ toastsCount += 1;
29
+ const hide = () => toaster.hideToast(id);
30
+ const toast = {
31
+ id,
32
+ hide
33
+ };
34
+ const autoHideDelay = !Number.isNaN(options === null || options === void 0 ? void 0 : options.autoHideDelay) ? options.autoHideDelay : undefined;
35
+ toaster.addToast({
36
+ id,
37
+ message,
38
+ action: options.action || null,
39
+ autoHideDelay,
40
+ onComplete: options.onComplete || null
41
+ });
42
+ return toast;
43
+ }
44
+
45
+ /**
46
+ * Note: This is not a typical Vue component and needs to be registered before instantiating a Vue app.
47
+ * Once registered, the toast will be globally available throughout your app.
48
+ *
49
+ * See https://design.gitlab.com/storybook for detailed documentation.
50
+ */
51
+ var index = {
52
+ install(V) {
53
+ V.mixin({
54
+ beforeCreate() {
55
+ if (this.$toast) {
56
+ return;
57
+ }
58
+ this.$toast = {
59
+ show: showToast.bind(this)
60
+ };
61
+ }
62
+ });
63
+ }
64
+ };
65
+
66
+ export { index as default };