@gitlab/ui 132.0.1 → 132.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) 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/url_utils.js +56 -0
  215. package/dist/utils/use_fake_date.js +29 -0
  216. package/dist/utils/use_mock_intersection_observer.js +105 -0
  217. package/dist/utils/utils.js +205 -0
  218. package/dist/utils/vue_utils.js +57 -0
  219. package/dist/utils.js +5 -0
  220. package/dist/vendor/bootstrap-vue/src/bv-config.js +8 -0
  221. package/dist/vendor/bootstrap-vue/src/components/button/button-close.js +81 -0
  222. package/dist/vendor/bootstrap-vue/src/components/button/button.js +204 -0
  223. package/dist/vendor/bootstrap-vue/src/components/button/index.js +2 -0
  224. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.js +44 -0
  225. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.js +59 -0
  226. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.js +98 -0
  227. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.js +63 -0
  228. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.js +108 -0
  229. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-item.js +97 -0
  230. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.js +60 -0
  231. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown.js +270 -0
  232. package/dist/vendor/bootstrap-vue/src/components/dropdown/index.js +8 -0
  233. package/dist/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.js +80 -0
  234. package/dist/vendor/bootstrap-vue/src/components/form/form-text.js +55 -0
  235. package/dist/vendor/bootstrap-vue/src/components/form/form-valid-feedback.js +80 -0
  236. package/dist/vendor/bootstrap-vue/src/components/form/form.js +56 -0
  237. package/dist/vendor/bootstrap-vue/src/components/form/index.js +4 -0
  238. package/dist/vendor/bootstrap-vue/src/components/form-group/form-group.js +347 -0
  239. package/dist/vendor/bootstrap-vue/src/components/form-group/index.js +1 -0
  240. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.js +56 -0
  241. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option.js +47 -0
  242. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select.js +154 -0
  243. package/dist/vendor/bootstrap-vue/src/components/form-select/helpers/mixin-options.js +63 -0
  244. package/dist/vendor/bootstrap-vue/src/components/form-select/index.js +3 -0
  245. package/dist/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.js +236 -0
  246. package/dist/vendor/bootstrap-vue/src/components/form-textarea/index.js +1 -0
  247. package/dist/vendor/bootstrap-vue/src/components/layout/col.js +155 -0
  248. package/dist/vendor/bootstrap-vue/src/components/layout/form-row.js +34 -0
  249. package/dist/vendor/bootstrap-vue/src/components/layout/index.js +2 -0
  250. package/dist/vendor/bootstrap-vue/src/components/link/index.js +1 -0
  251. package/dist/vendor/bootstrap-vue/src/components/link/link.js +283 -0
  252. package/dist/vendor/bootstrap-vue/src/components/modal/helpers/bv-modal-event.class.js +21 -0
  253. package/dist/vendor/bootstrap-vue/src/components/modal/helpers/modal-manager.js +212 -0
  254. package/dist/vendor/bootstrap-vue/src/components/modal/index.js +1 -0
  255. package/dist/vendor/bootstrap-vue/src/components/modal/modal.js +1059 -0
  256. package/dist/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover-template.js +55 -0
  257. package/dist/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover.js +31 -0
  258. package/dist/vendor/bootstrap-vue/src/components/popover/index.js +1 -0
  259. package/dist/vendor/bootstrap-vue/src/components/popover/popover.js +64 -0
  260. package/dist/vendor/bootstrap-vue/src/components/table/helpers/constants.js +22 -0
  261. package/dist/vendor/bootstrap-vue/src/components/table/helpers/default-sort-compare.js +64 -0
  262. package/dist/vendor/bootstrap-vue/src/components/table/helpers/filter-event.js +40 -0
  263. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-bottom-row.js +43 -0
  264. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-busy.js +86 -0
  265. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js +57 -0
  266. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-colgroup.js +32 -0
  267. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-empty.js +101 -0
  268. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-filtering.js +292 -0
  269. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js +169 -0
  270. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-pagination.js +51 -0
  271. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-provider.js +210 -0
  272. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +227 -0
  273. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +328 -0
  274. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js +42 -0
  275. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js +241 -0
  276. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js +349 -0
  277. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +247 -0
  278. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js +69 -0
  279. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js +233 -0
  280. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-top-row.js +42 -0
  281. package/dist/vendor/bootstrap-vue/src/components/table/helpers/normalize-fields.js +86 -0
  282. package/dist/vendor/bootstrap-vue/src/components/table/helpers/sanitize-row.js +31 -0
  283. package/dist/vendor/bootstrap-vue/src/components/table/helpers/stringify-record-values.js +11 -0
  284. package/dist/vendor/bootstrap-vue/src/components/table/helpers/text-selection-active.js +14 -0
  285. package/dist/vendor/bootstrap-vue/src/components/table/index.js +9 -0
  286. package/dist/vendor/bootstrap-vue/src/components/table/table-lite.js +51 -0
  287. package/dist/vendor/bootstrap-vue/src/components/table/table-simple.js +44 -0
  288. package/dist/vendor/bootstrap-vue/src/components/table/table.js +67 -0
  289. package/dist/vendor/bootstrap-vue/src/components/table/tbody.js +116 -0
  290. package/dist/vendor/bootstrap-vue/src/components/table/td.js +204 -0
  291. package/dist/vendor/bootstrap-vue/src/components/table/tfoot.js +96 -0
  292. package/dist/vendor/bootstrap-vue/src/components/table/th.js +26 -0
  293. package/dist/vendor/bootstrap-vue/src/components/table/thead.js +99 -0
  294. package/dist/vendor/bootstrap-vue/src/components/table/tr.js +121 -0
  295. package/dist/vendor/bootstrap-vue/src/components/tabs/index.js +2 -0
  296. package/dist/vendor/bootstrap-vue/src/components/tabs/tab.js +238 -0
  297. package/dist/vendor/bootstrap-vue/src/components/tabs/tabs.js +690 -0
  298. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-popper.js +278 -0
  299. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip-template.js +125 -0
  300. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +932 -0
  301. package/dist/vendor/bootstrap-vue/src/components/tooltip/index.js +1 -0
  302. package/dist/vendor/bootstrap-vue/src/components/tooltip/tooltip.js +337 -0
  303. package/dist/vendor/bootstrap-vue/src/components/transition/bv-transition.js +118 -0
  304. package/dist/vendor/bootstrap-vue/src/components/transporter/transporter.js +220 -0
  305. package/dist/vendor/bootstrap-vue/src/constants/components.js +55 -0
  306. package/dist/vendor/bootstrap-vue/src/constants/config.js +11 -0
  307. package/dist/vendor/bootstrap-vue/src/constants/env.js +36 -0
  308. package/dist/vendor/bootstrap-vue/src/constants/events.js +56 -0
  309. package/dist/vendor/bootstrap-vue/src/constants/key-codes.js +11 -0
  310. package/dist/vendor/bootstrap-vue/src/constants/popper.js +10 -0
  311. package/dist/vendor/bootstrap-vue/src/constants/props.js +24 -0
  312. package/dist/vendor/bootstrap-vue/src/constants/regex.js +35 -0
  313. package/dist/vendor/bootstrap-vue/src/constants/safe-types.js +15 -0
  314. package/dist/vendor/bootstrap-vue/src/constants/slots.js +36 -0
  315. package/dist/vendor/bootstrap-vue/src/directives/modal/index.js +1 -0
  316. package/dist/vendor/bootstrap-vue/src/directives/modal/modal.js +112 -0
  317. package/dist/vendor/bootstrap-vue/src/directives/tooltip/index.js +1 -0
  318. package/dist/vendor/bootstrap-vue/src/directives/tooltip/tooltip.js +267 -0
  319. package/dist/vendor/bootstrap-vue/src/directives/visible/index.js +1 -0
  320. package/dist/vendor/bootstrap-vue/src/directives/visible/visible.js +187 -0
  321. package/dist/vendor/bootstrap-vue/src/mixins/attrs.js +5 -0
  322. package/dist/vendor/bootstrap-vue/src/mixins/click-out.js +54 -0
  323. package/dist/vendor/bootstrap-vue/src/mixins/dropdown.js +470 -0
  324. package/dist/vendor/bootstrap-vue/src/mixins/focus-in.js +46 -0
  325. package/dist/vendor/bootstrap-vue/src/mixins/form-control.js +73 -0
  326. package/dist/vendor/bootstrap-vue/src/mixins/form-custom.js +26 -0
  327. package/dist/vendor/bootstrap-vue/src/mixins/form-options.js +91 -0
  328. package/dist/vendor/bootstrap-vue/src/mixins/form-selection.js +62 -0
  329. package/dist/vendor/bootstrap-vue/src/mixins/form-size.js +26 -0
  330. package/dist/vendor/bootstrap-vue/src/mixins/form-state.js +50 -0
  331. package/dist/vendor/bootstrap-vue/src/mixins/form-text.js +293 -0
  332. package/dist/vendor/bootstrap-vue/src/mixins/form-validity.js +50 -0
  333. package/dist/vendor/bootstrap-vue/src/mixins/has-listener.js +29 -0
  334. package/dist/vendor/bootstrap-vue/src/mixins/id.js +57 -0
  335. package/dist/vendor/bootstrap-vue/src/mixins/listen-on-document.js +62 -0
  336. package/dist/vendor/bootstrap-vue/src/mixins/listen-on-root.js +120 -0
  337. package/dist/vendor/bootstrap-vue/src/mixins/listen-on-window.js +62 -0
  338. package/dist/vendor/bootstrap-vue/src/mixins/listeners.js +25 -0
  339. package/dist/vendor/bootstrap-vue/src/mixins/model.js +10 -0
  340. package/dist/vendor/bootstrap-vue/src/mixins/normalize-slot.js +30 -0
  341. package/dist/vendor/bootstrap-vue/src/mixins/scoped-style.js +18 -0
  342. package/dist/vendor/bootstrap-vue/src/mixins/use-parent.js +14 -0
  343. package/dist/vendor/bootstrap-vue/src/utils/array.js +27 -0
  344. package/dist/vendor/bootstrap-vue/src/utils/bv-event.class.js +60 -0
  345. package/dist/vendor/bootstrap-vue/src/utils/cache.js +60 -0
  346. package/dist/vendor/bootstrap-vue/src/utils/clone-deep.js +18 -0
  347. package/dist/vendor/bootstrap-vue/src/utils/config-set.js +86 -0
  348. package/dist/vendor/bootstrap-vue/src/utils/config.js +71 -0
  349. package/dist/vendor/bootstrap-vue/src/utils/create-new-child-component.js +133 -0
  350. package/dist/vendor/bootstrap-vue/src/utils/css-escape.js +70 -0
  351. package/dist/vendor/bootstrap-vue/src/utils/dom.js +298 -0
  352. package/dist/vendor/bootstrap-vue/src/utils/element-to-vue-instance-registry.js +28 -0
  353. package/dist/vendor/bootstrap-vue/src/utils/env.js +16 -0
  354. package/dist/vendor/bootstrap-vue/src/utils/events.js +78 -0
  355. package/dist/vendor/bootstrap-vue/src/utils/get-event-root.js +5 -0
  356. package/dist/vendor/bootstrap-vue/src/utils/get-instance-from-directive.js +3 -0
  357. package/dist/vendor/bootstrap-vue/src/utils/get-scope-id.js +9 -0
  358. package/dist/vendor/bootstrap-vue/src/utils/get.js +63 -0
  359. package/dist/vendor/bootstrap-vue/src/utils/html.js +16 -0
  360. package/dist/vendor/bootstrap-vue/src/utils/identity.js +3 -0
  361. package/dist/vendor/bootstrap-vue/src/utils/inspect.js +35 -0
  362. package/dist/vendor/bootstrap-vue/src/utils/locale.js +18 -0
  363. package/dist/vendor/bootstrap-vue/src/utils/loose-equal.js +59 -0
  364. package/dist/vendor/bootstrap-vue/src/utils/loose-index-of.js +13 -0
  365. package/dist/vendor/bootstrap-vue/src/utils/math.js +9 -0
  366. package/dist/vendor/bootstrap-vue/src/utils/memoize.js +14 -0
  367. package/dist/vendor/bootstrap-vue/src/utils/model.js +33 -0
  368. package/dist/vendor/bootstrap-vue/src/utils/noop.js +3 -0
  369. package/dist/vendor/bootstrap-vue/src/utils/normalize-slot.js +51 -0
  370. package/dist/vendor/bootstrap-vue/src/utils/number.js +23 -0
  371. package/dist/vendor/bootstrap-vue/src/utils/object.js +72 -0
  372. package/dist/vendor/bootstrap-vue/src/utils/observe-dom.js +76 -0
  373. package/dist/vendor/bootstrap-vue/src/utils/on-instance-destroy.js +22 -0
  374. package/dist/vendor/bootstrap-vue/src/utils/plugins.js +124 -0
  375. package/dist/vendor/bootstrap-vue/src/utils/props.js +67 -0
  376. package/dist/vendor/bootstrap-vue/src/utils/router.js +150 -0
  377. package/dist/vendor/bootstrap-vue/src/utils/safe-vue-instance.js +14 -0
  378. package/dist/vendor/bootstrap-vue/src/utils/stable-sort.js +28 -0
  379. package/dist/vendor/bootstrap-vue/src/utils/string.js +47 -0
  380. package/dist/vendor/bootstrap-vue/src/utils/stringify-object-values.js +31 -0
  381. package/dist/vendor/bootstrap-vue/src/utils/warn.js +45 -0
  382. package/dist/vendor/bootstrap-vue/src/vue.js +55 -0
  383. package/package.json +4 -3
  384. package/src/components/base/link/link.vue +2 -2
  385. package/src/utils/url_utils.js +66 -0
  386. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.js +5 -2
  387. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.js +16 -4
  388. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.js +31 -8
  389. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.js +15 -4
  390. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.js +32 -8
  391. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown.js +2 -2
  392. package/src/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.js +35 -8
  393. package/src/vendor/bootstrap-vue/src/components/form/form-valid-feedback.js +35 -8
  394. package/src/vendor/bootstrap-vue/src/components/form-group/form-group.js +2 -2
  395. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.js +4 -2
  396. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option.js +9 -3
  397. package/src/vendor/bootstrap-vue/src/components/form-select/form-select.js +16 -9
  398. package/src/vendor/bootstrap-vue/src/components/form-select/helpers/mixin-options.js +10 -3
  399. package/src/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.js +26 -7
  400. package/src/vendor/bootstrap-vue/src/components/layout/col.js +2 -2
  401. package/src/vendor/bootstrap-vue/src/components/modal/modal.js +2 -2
  402. package/src/vendor/bootstrap-vue/src/components/popover/popover.js +23 -7
  403. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-busy.js +5 -2
  404. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js +10 -3
  405. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-empty.js +25 -6
  406. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js +20 -5
  407. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-pagination.js +11 -4
  408. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-provider.js +27 -7
  409. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +21 -7
  410. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +72 -18
  411. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js +6 -3
  412. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js +72 -17
  413. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js +18 -6
  414. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +7 -3
  415. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js +27 -7
  416. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js +21 -6
  417. package/src/vendor/bootstrap-vue/src/components/tabs/tabs.js +2 -2
  418. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-popper.js +36 -13
  419. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip-template.js +10 -3
  420. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +8 -9
  421. package/src/vendor/bootstrap-vue/src/components/transition/bv-transition.js +20 -5
  422. package/src/vendor/bootstrap-vue/src/components/transporter/transporter.js +22 -6
  423. package/src/vendor/bootstrap-vue/src/mixins/listen-on-document.js +1 -2
  424. package/src/vendor/bootstrap-vue/src/mixins/listen-on-root.js +1 -2
  425. package/src/vendor/bootstrap-vue/src/mixins/listen-on-window.js +1 -2
  426. package/src/vendor/bootstrap-vue/src/utils/array.js +0 -1
  427. package/src/vendor/bootstrap-vue/src/utils/locale.js +1 -2
@@ -0,0 +1,73 @@
1
+ import GlButtonGroup from '../button_group/button_group';
2
+ import GlButton from '../button/button';
3
+ import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
4
+
5
+ const validateOptionsProp = options => {
6
+ const requiredOptionPropType = {
7
+ value: ['string', 'number', 'boolean'],
8
+ disabled: ['boolean', 'undefined']
9
+ };
10
+ const optionProps = Object.keys(requiredOptionPropType);
11
+ return options.every(option => {
12
+ if (!option) {
13
+ return false;
14
+ }
15
+ return optionProps.every(name => requiredOptionPropType[name].includes(typeof option[name]));
16
+ });
17
+ };
18
+ var script = {
19
+ name: 'GlSegmentedControl',
20
+ components: {
21
+ GlButtonGroup,
22
+ GlButton
23
+ },
24
+ props: {
25
+ options: {
26
+ type: Array,
27
+ required: true,
28
+ validator: validateOptionsProp
29
+ },
30
+ value: {
31
+ type: [String, Number, Boolean],
32
+ required: true
33
+ }
34
+ }
35
+ };
36
+
37
+ /* script */
38
+ const __vue_script__ = script;
39
+
40
+ /* template */
41
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-button-group',_vm._l((_vm.options),function(option){return _c('gl-button',_vm._b({key:option.value,attrs:{"disabled":!!option.disabled,"selected":_vm.value === option.value},on:{"click":function($event){return _vm.$emit('input', option.value)}}},'gl-button',option.props,false),[_vm._t("button-content",function(){return [_vm._v("\n "+_vm._s(option.text)+"\n ")]},null,option)],2)}),1)};
42
+ var __vue_staticRenderFns__ = [];
43
+
44
+ /* style */
45
+ const __vue_inject_styles__ = undefined;
46
+ /* scoped */
47
+ const __vue_scope_id__ = undefined;
48
+ /* module identifier */
49
+ const __vue_module_identifier__ = undefined;
50
+ /* functional template */
51
+ const __vue_is_functional_template__ = false;
52
+ /* style inject */
53
+
54
+ /* style inject SSR */
55
+
56
+ /* style inject shadow dom */
57
+
58
+
59
+
60
+ const __vue_component__ = /*#__PURE__*/__vue_normalize__(
61
+ { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
62
+ __vue_inject_styles__,
63
+ __vue_script__,
64
+ __vue_scope_id__,
65
+ __vue_is_functional_template__,
66
+ __vue_module_identifier__,
67
+ false,
68
+ undefined,
69
+ undefined,
70
+ undefined
71
+ );
72
+
73
+ export { __vue_component__ as default };
@@ -0,0 +1,232 @@
1
+ import { range } from 'lodash-es';
2
+ import { uid } from '../../../utils/utils';
3
+ import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
4
+
5
+ const DEFAULT_LINE_MAX_WIDTH = 235;
6
+ const DEFAULT_LINE_WIDTH_PERCENTAGES = [65, 100, 85];
7
+ const DEFAULT_LINE_HEIGHT = 10;
8
+ const DEFAULT_LINE_SPACING = 4;
9
+ const DEFAULT_SVG_WIDTH = 400;
10
+ const DEFAULT_SVG_HEIGHT = 130;
11
+ var script = {
12
+ name: 'GlSkeletonLoader',
13
+ functional: true,
14
+ props: {
15
+ /**
16
+ * It will be set in the viewbox attr in the <svg />.
17
+ * Defaults to 400 when skeleton is passed via the slot. Defaults to 235 when default skeleton is used
18
+ */
19
+ width: {
20
+ type: Number,
21
+ default: null,
22
+ required: false
23
+ },
24
+ /**
25
+ * It will be set in the viewbox attr in the <svg />. Defaults to 130 when skeleton is passed via the slot.
26
+ * Defaults to the combined height of the lines when default skeleton is used
27
+ */
28
+ height: {
29
+ type: Number,
30
+ default: null,
31
+ required: false
32
+ },
33
+ /**
34
+ * Aspect ratio option of <svg/>
35
+ */
36
+ preserveAspectRatio: {
37
+ type: String,
38
+ default: 'xMidYMid meet',
39
+ required: false
40
+ },
41
+ /**
42
+ * Required if you're using <base url="/" /> in your <head />. Defaults to an empty string.
43
+ * This prop is common used as: <gl-skeleton-loader :base-url="$route.fullPath" /> which will fill the SVG attribute with the relative path.
44
+ */
45
+ baseUrl: {
46
+ type: String,
47
+ default: '',
48
+ required: false
49
+ },
50
+ /**
51
+ * Defaults to unique id
52
+ */
53
+ uniqueKey: {
54
+ type: String,
55
+ default: () => uid(),
56
+ required: false
57
+ },
58
+ /**
59
+ * Number of lines to show when using the default skeleton
60
+ */
61
+ lines: {
62
+ type: Number,
63
+ default: 3,
64
+ required: false
65
+ },
66
+ /**
67
+ * If the default skeleton lines should all be the same width
68
+ */
69
+ equalWidthLines: {
70
+ type: Boolean,
71
+ default: false,
72
+ required: false
73
+ }
74
+ },
75
+ render(createElement, _ref) {
76
+ var _data$attrs;
77
+ let {
78
+ props,
79
+ slots,
80
+ data
81
+ } = _ref;
82
+ const slotIsSet = () => slots().default;
83
+ const propValueOrDefault = (name, defaultValue) => props[name] !== null ? props[name] : defaultValue;
84
+ const inheritedClasses = data.class || (// Vue 3
85
+ (_data$attrs = data.attrs) === null || _data$attrs === void 0 ? void 0 : _data$attrs.class) ||
86
+ // Vue 2
87
+ '';
88
+ const width = () => {
89
+ if (slotIsSet()) {
90
+ return propValueOrDefault('width', DEFAULT_SVG_WIDTH);
91
+ }
92
+ return propValueOrDefault('width', DEFAULT_LINE_MAX_WIDTH);
93
+ };
94
+ const height = () => {
95
+ if (slotIsSet()) {
96
+ return propValueOrDefault('height', DEFAULT_SVG_HEIGHT);
97
+ }
98
+ return propValueOrDefault('height', props.lines * DEFAULT_LINE_HEIGHT + (props.lines - 1) * DEFAULT_LINE_SPACING);
99
+ };
100
+ const lineWidth = index => {
101
+ if (props.equalWidthLines) {
102
+ return '100%';
103
+ }
104
+ return `${DEFAULT_LINE_WIDTH_PERCENTAGES[index % DEFAULT_LINE_WIDTH_PERCENTAGES.length]}%`;
105
+ };
106
+ const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
107
+ const svg = createElement('svg', {
108
+ class: {
109
+ 'gl-skeleton-loader': true,
110
+ 'gl-w-full gl-h-full': !slotIsSet()
111
+ },
112
+ attrs: {
113
+ viewBox: `0 0 ${width()} ${height()}`,
114
+ version: '1.1',
115
+ preserveAspectRatio: props.preserveAspectRatio
116
+ }
117
+ }, [createElement('title', {}, ['Loading']), createElement('rect', {
118
+ attrs: {
119
+ 'clip-path': `url(${props.baseUrl}#${props.uniqueKey}-idClip)`,
120
+ x: 0,
121
+ y: 0,
122
+ width: width(),
123
+ height: height(),
124
+ ...(reducedMotion ? {
125
+ class: 'gl-skeleton-loader-fill-background-color'
126
+ } : {
127
+ fill: `url(${props.baseUrl}#${props.uniqueKey}-idGradient)`
128
+ })
129
+ }
130
+ }), createElement('defs', {}, [createElement('clipPath', {
131
+ attrs: {
132
+ id: `${props.uniqueKey}-idClip`
133
+ }
134
+ }, slotIsSet() ? slots().default : range(props.lines).map(index => createElement('rect', {
135
+ key: index,
136
+ attrs: {
137
+ y: index * DEFAULT_LINE_HEIGHT + index * DEFAULT_LINE_SPACING,
138
+ width: lineWidth(index),
139
+ height: DEFAULT_LINE_HEIGHT,
140
+ rx: 4
141
+ }
142
+ }))), !reducedMotion && createElement('linearGradient', {
143
+ attrs: {
144
+ id: `${props.uniqueKey}-idGradient`
145
+ }
146
+ }, [createElement('stop', {
147
+ class: 'background-stop',
148
+ attrs: {
149
+ offset: '0%'
150
+ }
151
+ }, [createElement('animate', {
152
+ attrs: {
153
+ attributeName: 'offset',
154
+ values: '-2; 1',
155
+ dur: '1s',
156
+ repeatCount: 'indefinite'
157
+ }
158
+ })]), createElement('stop', {
159
+ class: 'shimmer-stop',
160
+ attrs: {
161
+ offset: '50%'
162
+ }
163
+ }, [createElement('animate', {
164
+ attrs: {
165
+ attributeName: 'offset',
166
+ values: '-1.5; 1.5',
167
+ dur: '1s',
168
+ repeatCount: 'indefinite'
169
+ }
170
+ })]), createElement('stop', {
171
+ class: 'background-stop',
172
+ attrs: {
173
+ offset: '100%'
174
+ }
175
+ }, [createElement('animate', {
176
+ attrs: {
177
+ attributeName: 'offset',
178
+ values: '-1; 2',
179
+ dur: '1s',
180
+ repeatCount: 'indefinite'
181
+ }
182
+ })])])])]);
183
+ if (slotIsSet()) {
184
+ return svg;
185
+ }
186
+ return createElement('div', {
187
+ staticClass: data.staticClass,
188
+ // Vue 2
189
+ class: ['gl-skeleton-loader-default-container gl-max-w-full', inheritedClasses],
190
+ style: {
191
+ width: props.width !== null ? `${props.width}px` : null,
192
+ height: props.height !== null ? `${props.height}px` : null
193
+ }
194
+ }, [svg]);
195
+ }
196
+ };
197
+
198
+ /* script */
199
+ const __vue_script__ = script;
200
+
201
+ /* template */
202
+
203
+ /* style */
204
+ const __vue_inject_styles__ = undefined;
205
+ /* scoped */
206
+ const __vue_scope_id__ = undefined;
207
+ /* module identifier */
208
+ const __vue_module_identifier__ = undefined;
209
+ /* functional template */
210
+ const __vue_is_functional_template__ = undefined;
211
+ /* style inject */
212
+
213
+ /* style inject SSR */
214
+
215
+ /* style inject shadow dom */
216
+
217
+
218
+
219
+ const __vue_component__ = /*#__PURE__*/__vue_normalize__(
220
+ {},
221
+ __vue_inject_styles__,
222
+ __vue_script__,
223
+ __vue_scope_id__,
224
+ __vue_is_functional_template__,
225
+ __vue_module_identifier__,
226
+ false,
227
+ undefined,
228
+ undefined,
229
+ undefined
230
+ );
231
+
232
+ export { __vue_component__ as default };
@@ -0,0 +1,180 @@
1
+ import { uniqueId } from 'lodash-es';
2
+ import { GlTooltipDirective } from '../../../directives/tooltip/tooltip';
3
+ import GlButton from '../button/button';
4
+ import GlButtonGroup from '../button_group/button_group';
5
+ import GlCollapsibleListbox from '../new_dropdowns/listbox/listbox';
6
+ import { isOption } from '../new_dropdowns/listbox/utils';
7
+ import { translate } from '../../../utils/i18n';
8
+ import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
9
+
10
+ var script = {
11
+ name: 'GlSorting',
12
+ components: {
13
+ GlButton,
14
+ GlButtonGroup,
15
+ GlCollapsibleListbox
16
+ },
17
+ directives: {
18
+ GlTooltip: GlTooltipDirective
19
+ },
20
+ props: {
21
+ /**
22
+ * Text to place in the toggle button.
23
+ */
24
+ text: {
25
+ type: String,
26
+ required: false,
27
+ default: ''
28
+ },
29
+ /**
30
+ * Sort options to display in the dropdown
31
+ */
32
+ sortOptions: {
33
+ type: Array,
34
+ required: false,
35
+ default: () => [],
36
+ // eslint-disable-next-line unicorn/no-array-callback-reference
37
+ validator: sortOptions => sortOptions.every(isOption)
38
+ },
39
+ /**
40
+ * The value of the item currently selected in the dropdown.
41
+ * Only to be used with the `sortOptions` prop.
42
+ */
43
+ sortBy: {
44
+ type: [String, Number],
45
+ required: false,
46
+ default: null
47
+ },
48
+ /**
49
+ * Determines the current sort order icon displayed.
50
+ */
51
+ isAscending: {
52
+ type: Boolean,
53
+ required: false,
54
+ default: false
55
+ },
56
+ /**
57
+ * The text for the tooltip and aria-label of the sort direction toggle
58
+ * button instead of the defaults for ascending/descending.
59
+ */
60
+ sortDirectionToolTip: {
61
+ type: String,
62
+ required: false,
63
+ default: null
64
+ },
65
+ /**
66
+ * Additional class(es) to apply to the root element of the GlCollapsibleListbox.
67
+ */
68
+ dropdownClass: {
69
+ type: String,
70
+ required: false,
71
+ default: ''
72
+ },
73
+ /**
74
+ * Additional class(es) to apply to the dropdown toggle.
75
+ */
76
+ dropdownToggleClass: {
77
+ type: String,
78
+ required: false,
79
+ default: ''
80
+ },
81
+ /**
82
+ * Additional class(es) to apply to the sort direction toggle button.
83
+ */
84
+ sortDirectionToggleClass: {
85
+ type: String,
86
+ required: false,
87
+ default: ''
88
+ },
89
+ /**
90
+ * Render the dropdown toggle button as a block element
91
+ */
92
+ block: {
93
+ type: Boolean,
94
+ required: false,
95
+ default: false
96
+ }
97
+ },
98
+ data() {
99
+ return {
100
+ sortingListboxId: uniqueId('sorting-listbox-')
101
+ };
102
+ },
103
+ computed: {
104
+ sortingListboxLabel() {
105
+ return translate('GlSorting.sortByLabel', 'Sort by:');
106
+ },
107
+ localSortDirection() {
108
+ return this.isAscending ? 'sort-lowest' : 'sort-highest';
109
+ },
110
+ sortDirectionText() {
111
+ if (this.sortDirectionToolTip) return this.sortDirectionToolTip;
112
+ return this.isAscending ? translate('GlSorting.sortAscending', 'Sort direction: ascending') : translate('GlSorting.sortDescending', 'Sort direction: descending');
113
+ }
114
+ },
115
+ methods: {
116
+ toggleSortDirection() {
117
+ const newDirection = !this.isAscending;
118
+
119
+ /**
120
+ * Emitted when the sort direction button is clicked.
121
+ *
122
+ * The event's payload will be true if the direction has been changed to
123
+ * ascending, or false if descending.
124
+ *
125
+ * @property {boolean} isAscending
126
+ */
127
+ this.$emit('sortDirectionChange', newDirection);
128
+ },
129
+ onSortByChanged(event) {
130
+ /**
131
+ * Emitted when the sort field is changed.
132
+ *
133
+ * The event's payload is the value of the selected sort field.
134
+ *
135
+ * Only emitted when using the `sortOptions` prop.
136
+ *
137
+ * @property {string|number} value
138
+ */
139
+ this.$emit('sortByChange', event);
140
+ }
141
+ }
142
+ };
143
+
144
+ /* script */
145
+ const __vue_script__ = script;
146
+
147
+ /* template */
148
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-button-group',{staticClass:"gl-sorting"},[_c('gl-collapsible-listbox',{class:_vm.dropdownClass,attrs:{"toggle-text":_vm.text,"items":_vm.sortOptions,"selected":_vm.sortBy,"toggle-class":_vm.dropdownToggleClass,"placement":"bottom-end","block":_vm.block,"toggle-aria-labelled-by":_vm.sortingListboxId},on:{"select":_vm.onSortByChanged}}),_vm._v(" "),_c('span',{staticClass:"gl-sr-only",attrs:{"id":_vm.sortingListboxId}},[_vm._v(_vm._s(_vm.sortingListboxLabel))]),_vm._v(" "),_c('gl-button',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip"}],class:['sorting-direction-button', _vm.sortDirectionToggleClass],attrs:{"title":_vm.sortDirectionText,"icon":_vm.localSortDirection,"aria-label":_vm.sortDirectionText},on:{"click":_vm.toggleSortDirection}})],1)};
149
+ var __vue_staticRenderFns__ = [];
150
+
151
+ /* style */
152
+ const __vue_inject_styles__ = undefined;
153
+ /* scoped */
154
+ const __vue_scope_id__ = undefined;
155
+ /* module identifier */
156
+ const __vue_module_identifier__ = undefined;
157
+ /* functional template */
158
+ const __vue_is_functional_template__ = false;
159
+ /* style inject */
160
+
161
+ /* style inject SSR */
162
+
163
+ /* style inject shadow dom */
164
+
165
+
166
+
167
+ const __vue_component__ = /*#__PURE__*/__vue_normalize__(
168
+ { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
169
+ __vue_inject_styles__,
170
+ __vue_script__,
171
+ __vue_scope_id__,
172
+ __vue_is_functional_template__,
173
+ __vue_module_identifier__,
174
+ false,
175
+ undefined,
176
+ undefined,
177
+ undefined
178
+ );
179
+
180
+ export { __vue_component__ as default };
@@ -0,0 +1,5 @@
1
+ const tableFullSlots = ['bottom-row', 'empty', 'emptyfiltered', 'table-busy', 'thead-top', 'top-row'];
2
+ const tableFullProps = ['api-url', 'busy', 'current-page', 'empty-filtered-html', 'empty-filtered-text', 'empty-html', 'empty-text', 'filter', 'filter-debounce', 'filter-function', 'filter-ignored-fields', 'filter-included-fields', 'label-sort-asc', 'label-sort-clear', 'label-sort-desc', 'no-footer-sorting', 'no-local-sorting', 'no-provider-filtering', 'no-provider-paging', 'no-provider-sorting', 'no-select-on-click', 'per-page', 'select-mode', 'selectable', 'selected-variant', 'show-empty', 'sort-by', 'sort-compare', 'sort-compare-locale', 'sort-compare-options', 'sort-desc', 'sort-direction', 'sort-icon-left', 'sort-null-last'];
3
+ const glTableLiteWarning = 'This GlTable could be a GlTableLite component, please consider using GlTableLite instead of GlTable to reduce the page bundlesize more about this here: https://design.gitlab.com/storybook?path=/docs/base-table-table-lite--default';
4
+
5
+ export { glTableLiteWarning, tableFullProps, tableFullSlots };
@@ -0,0 +1,187 @@
1
+ import { BTable } from '../../../vendor/bootstrap-vue/src/components/table/table';
2
+ import { isDev, logWarning } from '../../../utils/utils';
3
+ import GlLoadingIcon from '../loading_icon/loading_icon';
4
+ import { glTableLiteWarning, tableFullProps, tableFullSlots } from './constants';
5
+ import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
6
+
7
+ const shouldUseFullTable = _ref => {
8
+ let {
9
+ $attrs,
10
+ $scopedSlots
11
+ } = _ref;
12
+ return tableFullProps.some(prop => $attrs[prop] !== undefined) || tableFullSlots.some(slot => $scopedSlots[slot] !== undefined);
13
+ };
14
+ const {
15
+ tableClass
16
+ } = BTable.options.props;
17
+ var script = {
18
+ name: 'GlTable',
19
+ components: {
20
+ BTable,
21
+ GlLoadingIcon
22
+ },
23
+ inheritAttrs: false,
24
+ props: {
25
+ /**
26
+ * Additional CSS class(es) to apply to the table element.
27
+ */
28
+ tableClass,
29
+ /**
30
+ * Array of items displayed in the table as rows.
31
+ */
32
+ items: {
33
+ type: Array,
34
+ required: false,
35
+ default: () => []
36
+ },
37
+ /**
38
+ * Array of field definitions for table columns. Each field can be a string (column key) or an object with properties like 'key', 'label', 'sortable', 'thClass', etc.
39
+ */
40
+ fields: {
41
+ type: Array,
42
+ required: false,
43
+ default: null
44
+ },
45
+ /**
46
+ * When true, makes the table header sticky so it remains visible when scrolling.
47
+ */
48
+ stickyHeader: {
49
+ type: Boolean,
50
+ default: false,
51
+ required: false
52
+ },
53
+ /**
54
+ * The field key to sort by.
55
+ */
56
+ sortBy: {
57
+ type: String,
58
+ required: false,
59
+ default: undefined
60
+ },
61
+ /**
62
+ * When true, sorts in descending order. When false, sorts in ascending order.
63
+ */
64
+ sortDesc: {
65
+ type: Boolean,
66
+ required: false,
67
+ default: false
68
+ }
69
+ },
70
+ data() {
71
+ return {
72
+ localSortBy: this.sortBy,
73
+ localSortDesc: this.sortDesc
74
+ };
75
+ },
76
+ computed: {
77
+ stickyHeaderClass() {
78
+ return this.stickyHeader ? 'gl-table--sticky-header' : null;
79
+ },
80
+ localTableClass() {
81
+ return ['gl-table', this.tableClass, this.stickyHeaderClass];
82
+ },
83
+ headSlots() {
84
+ return ['head()', ...Object.keys(this.$scopedSlots).filter(slotName => slotName.startsWith('head('))];
85
+ },
86
+ computedFields() {
87
+ var _this$fields;
88
+ return (_this$fields = this.fields) === null || _this$fields === void 0 ? void 0 : _this$fields.map(field => {
89
+ if (typeof field === 'string') {
90
+ return field;
91
+ }
92
+ const {
93
+ thAlignRight,
94
+ thClass = '',
95
+ ...rest
96
+ } = field;
97
+ const computedThClass = Array.isArray(thClass) ? thClass : thClass.split(' ');
98
+ if (thAlignRight) {
99
+ computedThClass.push('gl-table-th-align-right');
100
+ }
101
+ return {
102
+ ...rest,
103
+ thClass: computedThClass
104
+ };
105
+ });
106
+ }
107
+ },
108
+ mounted() {
109
+ // logWarning will call isDev before logging any message
110
+ // this additional call to isDev is being made to exit the condition early when run in production
111
+ if (isDev() && !shouldUseFullTable(this)) {
112
+ logWarning(glTableLiteWarning, {
113
+ name: 'GlTable',
114
+ element: this.$el
115
+ });
116
+ }
117
+ },
118
+ methods: {
119
+ isSortable(_ref2) {
120
+ let {
121
+ field
122
+ } = _ref2;
123
+ return field === null || field === void 0 ? void 0 : field.sortable;
124
+ },
125
+ activeSortingColumn(_ref3) {
126
+ let {
127
+ field
128
+ } = _ref3;
129
+ return this.localSortBy === (field === null || field === void 0 ? void 0 : field.key);
130
+ },
131
+ getSortingIcon(_ref4) {
132
+ let {
133
+ field
134
+ } = _ref4;
135
+ if (this.activeSortingColumn({
136
+ field
137
+ })) {
138
+ if (this.localSortDesc) {
139
+ return '↓';
140
+ }
141
+ return '↑';
142
+ }
143
+ if (this.$attrs['sort-direction'] === 'desc') {
144
+ return '↓';
145
+ }
146
+ return '↑';
147
+ }
148
+ }
149
+ };
150
+
151
+ /* script */
152
+ const __vue_script__ = script;
153
+
154
+ /* template */
155
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-table',_vm._g(_vm._b({attrs:{"table-class":_vm.localTableClass,"fields":_vm.computedFields,"items":_vm.items,"sort-by":_vm.localSortBy,"sort-desc":_vm.localSortDesc,"no-sort-reset":""},on:{"update:sortBy":function($event){_vm.localSortBy=$event;},"update:sort-by":function($event){_vm.localSortBy=$event;},"update:sortDesc":function($event){_vm.localSortDesc=$event;},"update:sort-desc":function($event){_vm.localSortDesc=$event;}},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$scopedSlots)),function(slotName){return {key:slotName,fn:function(scope){return [_vm._t(slotName,null,null,scope)]}}}),_vm._l((_vm.headSlots),function(headSlotName){return {key:headSlotName,fn:function(scope){return [_c('div',{key:headSlotName,staticClass:"gl-flex"},[_vm._t(headSlotName,function(){return [_c('span',[_vm._v(_vm._s(scope.label))])]},null,scope),(_vm.isSortable(scope))?[_c('div',{staticClass:"gl-table-th-sort-icon-wrapper gl-flex gl-w-5 gl-justify-center"},[_c('span',{class:{ 'gl-hidden': !_vm.activeSortingColumn(scope) },attrs:{"name":"sort-icon","data-testid":"sort-icon"}},[_vm._v("\n "+_vm._s(_vm.getSortingIcon(scope))+"\n ")])])]:_vm._e()],2)]}}}),{key:"table-busy",fn:function(){return [_vm._t("table-busy",function(){return [_c('gl-loading-icon',{attrs:{"size":"lg"}})]})]},proxy:true},{key:"empty",fn:function(scope){return [_vm._t("empty",function(){return [_c('p',{staticClass:"gl-mb-0 gl-py-2 gl-text-subtle"},[_vm._v(_vm._s(scope.emptyText))])]},null,scope)]}}],null,true)},'b-table',_vm.$attrs,false),_vm.$listeners))};
156
+ var __vue_staticRenderFns__ = [];
157
+
158
+ /* style */
159
+ const __vue_inject_styles__ = undefined;
160
+ /* scoped */
161
+ const __vue_scope_id__ = undefined;
162
+ /* module identifier */
163
+ const __vue_module_identifier__ = undefined;
164
+ /* functional template */
165
+ const __vue_is_functional_template__ = false;
166
+ /* style inject */
167
+
168
+ /* style inject SSR */
169
+
170
+ /* style inject shadow dom */
171
+
172
+
173
+
174
+ const __vue_component__ = /*#__PURE__*/__vue_normalize__(
175
+ { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
176
+ __vue_inject_styles__,
177
+ __vue_script__,
178
+ __vue_scope_id__,
179
+ __vue_is_functional_template__,
180
+ __vue_module_identifier__,
181
+ false,
182
+ undefined,
183
+ undefined,
184
+ undefined
185
+ );
186
+
187
+ export { __vue_component__ as default };