@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,67 @@
1
+ import { PROP_TYPE_ANY } from '../constants/props';
2
+ import { identity } from './identity';
3
+ import { isUndefined, isObject, isArray } from './inspect';
4
+ import { hasOwnProperty, clone, keys } from './object';
5
+ import { upperFirst } from './string';
6
+
7
+ // Suffix can be a falsey value so nothing is appended to string
8
+ // (helps when looping over props & some shouldn't change)
9
+ // Use data last parameters to allow for currying
10
+ const suffixPropName = (suffix, value) => value + (suffix ? upperFirst(suffix) : '');
11
+
12
+ // Generates a prop object
13
+ const makeProp = function () {
14
+ let type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : PROP_TYPE_ANY;
15
+ let value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
16
+ let requiredOrValidator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
17
+ let validator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : undefined;
18
+ const required = requiredOrValidator === true;
19
+ validator = required ? validator : requiredOrValidator;
20
+ return {
21
+ ...(type ? {
22
+ type
23
+ } : {}),
24
+ ...(required ? {
25
+ required
26
+ } : isUndefined(value) ? {} : {
27
+ default: isObject(value) ? () => value : value
28
+ }),
29
+ ...(isUndefined(validator) ? {} : {
30
+ validator
31
+ })
32
+ };
33
+ };
34
+
35
+ // Copies props from one array/object to a new array/object
36
+ // Prop values are also cloned as new references to prevent possible
37
+ // mutation of original prop object values
38
+ // Optionally accepts a function to transform the prop name
39
+ const copyProps = function (props) {
40
+ let transformFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : identity;
41
+ if (isArray(props)) {
42
+ return props.map(transformFn);
43
+ }
44
+ const copied = {};
45
+ for (const prop in props) {
46
+ /* istanbul ignore else */
47
+ if (hasOwnProperty(props, prop)) {
48
+ // If the prop value is an object, do a shallow clone
49
+ // to prevent potential mutations to the original object
50
+ copied[transformFn(prop)] = isObject(props[prop]) ? clone(props[prop]) : props[prop];
51
+ }
52
+ }
53
+ return copied;
54
+ };
55
+
56
+ // Given an array of properties or an object of property keys,
57
+ // plucks all the values off the target object, returning a new object
58
+ // that has props that reference the original prop values
59
+ const pluckProps = function (keysToPluck, objToPluck) {
60
+ let transformFn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : identity;
61
+ return (isArray(keysToPluck) ? keysToPluck.slice() : keys(keysToPluck)).reduce((memo, prop) => {
62
+ memo[transformFn(prop)] = objToPluck[prop];
63
+ return memo;
64
+ }, {});
65
+ };
66
+
67
+ export { copyProps, makeProp, pluckProps, suffixPropName };
@@ -0,0 +1,150 @@
1
+ import { RX_QUERY_START, RX_PLUS, RX_ENCODE_REVERSE, RX_ENCODED_COMMA } from '../constants/regex';
2
+ import { isVue3 } from '../vue';
3
+ import { isTag } from './dom';
4
+ import { isPlainObject, isUndefined, isNull, isArray, isString } from './inspect';
5
+ import { keys } from './object';
6
+ import { safeVueInstance } from './safe-vue-instance';
7
+ import { toString } from './string';
8
+
9
+ const ANCHOR_TAG = 'a';
10
+
11
+ // Method to replace reserved chars
12
+ const encodeReserveReplacer = c => '%' + c.charCodeAt(0).toString(16);
13
+
14
+ // Fixed encodeURIComponent which is more conformant to RFC3986:
15
+ // - escapes [!'()*]
16
+ // - preserve commas
17
+ const encode = str => encodeURIComponent(toString(str)).replace(RX_ENCODE_REVERSE, encodeReserveReplacer).replace(RX_ENCODED_COMMA, ',');
18
+ const decode = decodeURIComponent;
19
+
20
+ // Stringifies an object of query parameters
21
+ // See: https://github.com/vuejs/vue-router/blob/dev/src/util/query.js
22
+ const stringifyQueryObj = obj => {
23
+ if (!isPlainObject(obj)) {
24
+ return '';
25
+ }
26
+ const query = keys(obj).map(key => {
27
+ const value = obj[key];
28
+ if (isUndefined(value)) {
29
+ return '';
30
+ } else if (isNull(value)) {
31
+ return encode(key);
32
+ } else if (isArray(value)) {
33
+ return value.reduce((results, value2) => {
34
+ if (isNull(value2)) {
35
+ results.push(encode(key));
36
+ } else if (!isUndefined(value2)) {
37
+ // Faster than string interpolation
38
+ results.push(encode(key) + '=' + encode(value2));
39
+ }
40
+ return results;
41
+ }, []).join('&');
42
+ }
43
+ // Faster than string interpolation
44
+ return encode(key) + '=' + encode(value);
45
+ })
46
+ /* must check for length, as we only want to filter empty strings, not things that look falsey! */.filter(x => x.length > 0).join('&');
47
+ return query ? `?${query}` : '';
48
+ };
49
+ const parseQuery = query => {
50
+ const parsed = {};
51
+ query = toString(query).trim().replace(RX_QUERY_START, '');
52
+ if (!query) {
53
+ return parsed;
54
+ }
55
+ query.split('&').forEach(param => {
56
+ const parts = param.replace(RX_PLUS, ' ').split('=');
57
+ const key = decode(parts.shift());
58
+ const value = parts.length > 0 ? decode(parts.join('=')) : null;
59
+ if (isUndefined(parsed[key])) {
60
+ parsed[key] = value;
61
+ } else if (isArray(parsed[key])) {
62
+ parsed[key].push(value);
63
+ } else {
64
+ parsed[key] = [parsed[key], value];
65
+ }
66
+ });
67
+ return parsed;
68
+ };
69
+ const isLink = props => !!(props.href || props.to);
70
+ const routerLink = {
71
+ functional: true,
72
+ _name: 'router-link',
73
+ render(h, ctx) {
74
+ // $hasNormal is Vue.js 2 legacy way to check if default slot is scoped or not
75
+ // in bootstrap-vue codebase we never use scoped slots router-link rendering
76
+ return h('router-link', ctx.data, {
77
+ ...ctx.children,
78
+ $hasNormal: true
79
+ });
80
+ }
81
+ };
82
+ const isRouterLink = tag => !!(tag && !isTag(tag, 'a'));
83
+ const computeTag = (_ref, thisOrParent) => {
84
+ let {
85
+ to,
86
+ disabled,
87
+ routerComponentName
88
+ } = _ref;
89
+ const hasRouter = !!safeVueInstance(thisOrParent).$router;
90
+ const hasNuxt = !!safeVueInstance(thisOrParent).$nuxt;
91
+ if (!hasRouter || hasRouter && (disabled || !to)) {
92
+ return ANCHOR_TAG;
93
+ }
94
+
95
+ // TODO:
96
+ // Check registered components for existence of user supplied router link component name
97
+ // We would need to check PascalCase, kebab-case, and camelCase versions of name:
98
+ // const name = routerComponentName
99
+ // const names = [name, PascalCase(name), KebabCase(name), CamelCase(name)]
100
+ // exists = names.some(name => !!thisOrParent.$options.components[name])
101
+ // And may want to cache the result for performance or we just let the render fail
102
+ // if the component is not registered
103
+ const actualRouterLink = isVue3(thisOrParent) ? routerLink : 'router-link';
104
+ return routerComponentName || (hasNuxt ? 'nuxt-link' : actualRouterLink);
105
+ };
106
+ const computeRel = function () {
107
+ let {
108
+ target,
109
+ rel
110
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
111
+ return target === '_blank' && isNull(rel) ? 'noopener' : rel || null;
112
+ };
113
+ const computeHref = function () {
114
+ let {
115
+ href,
116
+ to
117
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
118
+ let tag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ANCHOR_TAG;
119
+ let fallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '#';
120
+ let toFallback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '/';
121
+ // Return `href` when explicitly provided
122
+ if (href) {
123
+ return href;
124
+ }
125
+
126
+ // We've checked for `$router` in `computeTag()`, so `isRouterLink()` indicates a live router
127
+ // When deferring to Vue Router's `<router-link>`, don't use the `href` attribute at all
128
+ // We return `null`, and then remove `href` from the attributes passed to `<router-link>`
129
+ if (isRouterLink(tag)) {
130
+ return null;
131
+ }
132
+
133
+ // Fallback to `to` prop (if `to` is a string)
134
+ if (isString(to)) {
135
+ return to || toFallback;
136
+ }
137
+ // Fallback to `to.path' + `to.query` + `to.hash` prop (if `to` is an object)
138
+ if (isPlainObject(to) && (to.path || to.query || to.hash)) {
139
+ const path = toString(to.path);
140
+ const query = stringifyQueryObj(to.query);
141
+ let hash = toString(to.hash);
142
+ hash = !hash || hash.charAt(0) === '#' ? hash : `#${hash}`;
143
+ return `${path}${query}${hash}` || toFallback;
144
+ }
145
+
146
+ // If nothing is provided return the fallback
147
+ return fallback;
148
+ };
149
+
150
+ export { computeHref, computeRel, computeTag, isLink, isRouterLink, parseQuery, stringifyQueryObj };
@@ -0,0 +1,14 @@
1
+ import { isVue3 } from '../vue';
2
+
3
+ function safeVueInstance(target) {
4
+ if (!isVue3(target)) {
5
+ return target;
6
+ }
7
+ return new Proxy(target, {
8
+ get(target, prop) {
9
+ return prop in target ? target[prop] : undefined;
10
+ }
11
+ });
12
+ }
13
+
14
+ export { safeVueInstance };
@@ -0,0 +1,28 @@
1
+ /*
2
+ * Consistent and stable sort function across JavaScript platforms
3
+ *
4
+ * Inconsistent sorts can cause SSR problems between client and server
5
+ * such as in <b-table> if sortBy is applied to the data on server side render.
6
+ * Chrome and V8 native sorts are inconsistent/unstable
7
+ *
8
+ * This function uses native sort with fallback to index compare when the a and b
9
+ * compare returns 0
10
+ *
11
+ * Algorithm based on:
12
+ * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645
13
+ *
14
+ * @param {array} array to sort
15
+ * @param {function} sort compare function
16
+ * @return {array}
17
+ */
18
+ const stableSort = (array, compareFn) => {
19
+ // Using `.bind(compareFn)` on the wrapped anonymous function improves
20
+ // performance by avoiding the function call setup. We don't use an arrow
21
+ // function here as it binds `this` to the `stableSort` context rather than
22
+ // the `compareFn` context, which wouldn't give us the performance increase.
23
+ return array.map((a, index) => [index, a]).sort(function (a, b) {
24
+ return this(a[1], b[1]) || a[0] - b[0];
25
+ }.bind(compareFn)).map(e => e[1]);
26
+ };
27
+
28
+ export { stableSort };
@@ -0,0 +1,47 @@
1
+ import { RX_HYPHENATE, RX_UNDERSCORE, RX_LOWER_UPPER, RX_START_SPACE_WORD, RX_REGEXP_REPLACE, RX_TRIM_LEFT, RX_TRIM_RIGHT } from '../constants/regex';
2
+ import { isString, isUndefinedOrNull, isArray, isPlainObject } from './inspect';
3
+
4
+ // String utilities
5
+
6
+ // --- Utilities ---
7
+
8
+ // Converts PascalCase or camelCase to kebab-case
9
+ const kebabCase = str => {
10
+ return str.replace(RX_HYPHENATE, '-$1').toLowerCase();
11
+ };
12
+
13
+ // Converts a string, including strings in camelCase or snake_case, into Start Case
14
+ // It keeps original single quote and hyphen in the word
15
+ // https://github.com/UrbanCompass/to-start-case
16
+ const startCase = str => str.replace(RX_UNDERSCORE, ' ').replace(RX_LOWER_UPPER, (str, $1, $2) => $1 + ' ' + $2).replace(RX_START_SPACE_WORD, (str, $1, $2) => $1 + $2.toUpperCase());
17
+
18
+ // Uppercases the first letter of a string and returns a new string
19
+ const upperFirst = str => {
20
+ str = isString(str) ? str.trim() : String(str);
21
+ return str.charAt(0).toUpperCase() + str.slice(1);
22
+ };
23
+
24
+ // Escape characters to be used in building a regular expression
25
+ const escapeRegExp = str => str.replace(RX_REGEXP_REPLACE, '\\$&');
26
+
27
+ // Convert a value to a string that can be rendered
28
+ // `undefined`/`null` will be converted to `''`
29
+ // Plain objects and arrays will be JSON stringified
30
+ const toString = function (val) {
31
+ let spaces = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
32
+ return isUndefinedOrNull(val) ? '' : isArray(val) || isPlainObject(val) && val.toString === Object.prototype.toString ? JSON.stringify(val, null, spaces) : String(val);
33
+ };
34
+
35
+ // Remove leading white space from a string
36
+ const trimLeft = str => toString(str).replace(RX_TRIM_LEFT, '');
37
+
38
+ // Remove Trailing white space from a string
39
+ const trimRight = str => toString(str).replace(RX_TRIM_RIGHT, '');
40
+
41
+ // Remove leading and trailing white space from a string
42
+ const trim = str => toString(str).trim();
43
+
44
+ // Lower case a string
45
+ const lowerCase = str => toString(str).toLowerCase();
46
+
47
+ export { escapeRegExp, kebabCase, lowerCase, startCase, toString, trim, trimLeft, trimRight, upperFirst };
@@ -0,0 +1,31 @@
1
+ import { isUndefinedOrNull, isObject, isDate } from './inspect';
2
+ import { keys } from './object';
3
+ import { toString } from './string';
4
+
5
+ // Recursively stringifies the values of an object, space separated, in an
6
+ // SSR safe deterministic way (keys are sorted before stringification)
7
+ //
8
+ // ex:
9
+ // { b: 3, c: { z: 'zzz', d: null, e: 2 }, d: [10, 12, 11], a: 'one' }
10
+ // becomes
11
+ // 'one 3 2 zzz 10 12 11'
12
+ //
13
+ // Strings are returned as-is
14
+ // Numbers get converted to string
15
+ // `null` and `undefined` values are filtered out
16
+ // Dates are converted to their native string format
17
+ const stringifyObjectValues = value => {
18
+ if (isUndefinedOrNull(value)) {
19
+ return '';
20
+ }
21
+ // Arrays are also object, and keys just returns the array indexes
22
+ // Date objects we convert to strings
23
+ if (isObject(value) && !isDate(value)) {
24
+ return keys(value).sort() // Sort to prevent SSR issues on pre-rendered sorted tables
25
+ .map(k => stringifyObjectValues(value[k])).filter(v => !!v) // Ignore empty strings
26
+ .join(' ');
27
+ }
28
+ return toString(value);
29
+ };
30
+
31
+ export { stringifyObjectValues };
@@ -0,0 +1,45 @@
1
+ import { IS_BROWSER, HAS_MUTATION_OBSERVER_SUPPORT } from '../constants/env';
2
+ import { getNoWarn } from './env';
3
+
4
+ /**
5
+ * Log a warning message to the console with BootstrapVue formatting
6
+ * @param {string} message
7
+ */
8
+ const warn = function (message) /* istanbul ignore next */{
9
+ let source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
10
+ if (!getNoWarn()) {
11
+ console.warn(`[BootstrapVue warn]: ${source ? `${source} - ` : ''}${message}`);
12
+ }
13
+ };
14
+
15
+ /**
16
+ * Warn when no Promise support is given
17
+ * @param {string} source
18
+ * @returns {boolean} warned
19
+ */
20
+ const warnNotClient = source => {
21
+ /* istanbul ignore else */
22
+ if (IS_BROWSER) {
23
+ return false;
24
+ } else {
25
+ warn(`${source}: Can not be called during SSR.`);
26
+ return true;
27
+ }
28
+ };
29
+
30
+ /**
31
+ * Warn when no MutationObserver support is given
32
+ * @param {string} source
33
+ * @returns {boolean} warned
34
+ */
35
+ const warnNoMutationObserverSupport = source => {
36
+ /* istanbul ignore else */
37
+ if (HAS_MUTATION_OBSERVER_SUPPORT) {
38
+ return false;
39
+ } else {
40
+ warn(`${source}: Requires MutationObserver support.`);
41
+ return true;
42
+ }
43
+ };
44
+
45
+ export { warn, warnNoMutationObserverSupport, warnNotClient };
@@ -0,0 +1,55 @@
1
+ import Vue from 'vue';
2
+ import { mergeData as mergeData$1 } from 'vue-functional-data-merge';
3
+
4
+ // --- Constants ---
5
+ const COMPONENT_UID_KEY = '_uid';
6
+ const isGlobalVue3 = Vue.version.startsWith('3');
7
+ const REF_FOR_KEY = isGlobalVue3 ? 'ref_for' : 'refInFor';
8
+ if (isGlobalVue3) {
9
+ const originalVModelDynamicCreated = Vue.vModelDynamic.created;
10
+ const originalVModelDynamicBeforeUpdate = Vue.vModelDynamic.beforeUpdate;
11
+ let assignSymbol;
12
+
13
+ // See https://github.com/vuejs/vue-next/pull/4121 for details
14
+ Vue.vModelDynamic.created = function (el, binding, vnode) {
15
+ originalVModelDynamicCreated.call(this, el, binding, vnode);
16
+ if (!el._assign) {
17
+ el._assign = () => {};
18
+ }
19
+
20
+ // Added check for Symbol('_assign') to fix in compat 3.3.5+ based on https://github.com/bootstrap-vue/bootstrap-vue/issues/7181
21
+ if (!assignSymbol) {
22
+ assignSymbol = Object.getOwnPropertySymbols(el).find(s => s.description === '_assign');
23
+ }
24
+ if (!el[assignSymbol]) {
25
+ el[assignSymbol] = function () {};
26
+ }
27
+ };
28
+ Vue.vModelDynamic.beforeUpdate = function (el, binding, vnode) {
29
+ originalVModelDynamicBeforeUpdate.call(this, el, binding, vnode);
30
+ if (!el._assign) {
31
+ el._assign = () => {};
32
+ }
33
+
34
+ // Added check for Symbol('_assign') to fix in 3.3.5+ based on https://github.com/bootstrap-vue/bootstrap-vue/issues/7181
35
+ if (!assignSymbol) {
36
+ assignSymbol = Object.getOwnPropertySymbols(el).find(s => s.description === '_assign');
37
+ }
38
+ if (!el[assignSymbol]) {
39
+ el[assignSymbol] = function () {};
40
+ }
41
+ };
42
+ }
43
+ const isVue3 = instance => Boolean(instance.$);
44
+ const extend = Vue.extend.bind(Vue);
45
+ function mergeData() {
46
+ var _result$attrs, _result$props;
47
+ const result = mergeData$1(...arguments);
48
+ return {
49
+ ...result,
50
+ ...((_result$attrs = result.attrs) !== null && _result$attrs !== void 0 ? _result$attrs : {}),
51
+ ...((_result$props = result.props) !== null && _result$props !== void 0 ? _result$props : {})
52
+ };
53
+ }
54
+
55
+ export { COMPONENT_UID_KEY, REF_FOR_KEY, extend, isGlobalVue3, isVue3, mergeData };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gitlab/ui",
3
- "version": "132.0.1",
3
+ "version": "132.0.3",
4
4
  "description": "GitLab UI Components",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -36,6 +36,7 @@
36
36
  "scripts": {
37
37
  "build": "NODE_ENV=production rollup -c",
38
38
  "prebuild": "yarn build-tokens",
39
+ "prepack": "yarn build",
39
40
  "copy-fonts": "make copy-fonts",
40
41
  "build-tokens": "make tokens",
41
42
  "sync-tokens": "node --env-file=.figma.env bin/figma_sync_tokens.mjs",
@@ -90,7 +91,7 @@
90
91
  "chokidar": "^4.0.3",
91
92
  "sane": "^5.0.1",
92
93
  "jackspeak": "2.1.1",
93
- "postcss": "8.5.9",
94
+ "postcss": "8.5.10",
94
95
  "json5": "2.2.3",
95
96
  "rollup-plugin-vue/@vue/component-compiler/postcss-modules-sync/generic-names/loader-utils": "3.3.1"
96
97
  },
@@ -153,7 +154,7 @@
153
154
  "pikaday": "^1.8.0",
154
155
  "playwright": "^1.59.1",
155
156
  "playwright-core": "^1.59.1",
156
- "postcss": "8.5.9",
157
+ "postcss": "8.5.10",
157
158
  "postcss-loader": "8.2.1",
158
159
  "postcss-scss": "4.0.9",
159
160
  "react": "18.3.1",
@@ -2,8 +2,8 @@
2
2
  import { isFunction, isString, isObject, toString, isBoolean, concat } from 'lodash-es';
3
3
  import { SafeLinkDirective, isExternalURL } from '../../../directives/safe_link/safe_link';
4
4
  import { stopEvent } from '../../../utils/utils';
5
+ import { buildQueryString } from '../../../utils/url_utils';
5
6
  import { isVue3, safeVueInstance } from '../../../utils/vue_utils';
6
- import { stringifyQueryObj } from '../../../vendor/bootstrap-vue/src/utils/router';
7
7
  import {
8
8
  linkVariantOptions,
9
9
  linkVariantInline,
@@ -187,7 +187,7 @@ export default {
187
187
  // Fallback to `to.path' + `to.query` + `to.hash` prop (if `to` is an object)
188
188
  if (isObject(to) && (to.path || to.query || to.hash)) {
189
189
  const path = toString(to.path);
190
- const query = stringifyQueryObj(to.query);
190
+ const query = buildQueryString(to.query);
191
191
  let hash = toString(to.hash);
192
192
  hash = !hash || hash.charAt(0) === '#' ? hash : `#${hash}`;
193
193
  return `${path}${query}${hash}` || fallback;
@@ -0,0 +1,66 @@
1
+ const RX_ENCODE_REVERSE = /[!'()*]/g;
2
+ const RX_ENCODED_COMMA = /%2C/g;
3
+
4
+ const encodeReserveReplacer = (c) => `%${c.charCodeAt(0).toString(16)}`;
5
+
6
+ const encode = (str) =>
7
+ encodeURIComponent(String(str))
8
+ .replace(RX_ENCODE_REVERSE, encodeReserveReplacer)
9
+ .replace(RX_ENCODED_COMMA, ',');
10
+
11
+ /**
12
+ * Converts a query parameter object into a URL query string prefixed with `?`.
13
+ *
14
+ * Uses RFC 3986-compliant encoding which additionally escapes `[!'()*]` and preserves commas,
15
+ * unlike `URLSearchParams` which cannot represent key-only params (`?foo`) or skip `undefined` values.
16
+ *
17
+ * - `undefined` values are omitted entirely.
18
+ * - `null` values produce key-only entries (e.g., `?foo`).
19
+ * - Array values repeat the key for each element (e.g., `?bar=a&bar=b`).
20
+ *
21
+ * @param {Object<string, string | number | null | undefined | Array<string | number | null | undefined>>} obj
22
+ * An object whose keys are query parameter names and values are parameter values.
23
+ * @returns {string} A query string prefixed with `?`, or an empty string if the input
24
+ * is not a plain object or produces no parameters.
25
+ *
26
+ * @example
27
+ * buildQueryString({ page: 1, search: 'hello world' })
28
+ * // => '?page=1&search=hello%20world'
29
+ *
30
+ * @example
31
+ * buildQueryString({ foo: null, bar: undefined })
32
+ * // => '?foo'
33
+ */
34
+ export const buildQueryString = (obj) => {
35
+ if (obj === null || typeof obj !== 'object' || Array.isArray(obj)) {
36
+ return '';
37
+ }
38
+
39
+ const query = Object.keys(obj)
40
+ .map((key) => {
41
+ const value = obj[key];
42
+ if (value === undefined) {
43
+ return '';
44
+ }
45
+ if (value === null) {
46
+ return encode(key);
47
+ }
48
+ if (Array.isArray(value)) {
49
+ return value
50
+ .reduce((results, item) => {
51
+ if (item === null) {
52
+ results.push(encode(key));
53
+ } else if (item !== undefined) {
54
+ results.push(`${encode(key)}=${encode(item)}`);
55
+ }
56
+ return results;
57
+ }, [])
58
+ .join('&');
59
+ }
60
+ return `${encode(key)}=${encode(value)}`;
61
+ })
62
+ .filter((x) => x.length > 0)
63
+ .join('&');
64
+
65
+ return query ? `?${query}` : '';
66
+ };
@@ -1,13 +1,16 @@
1
1
  import { extend, mergeData } from '../../vue'
2
2
  import { NAME_DROPDOWN_DIVIDER } from '../../constants/components'
3
3
  import { PROP_TYPE_STRING } from '../../constants/props'
4
- import { makeProp } from '../../utils/props'
5
4
  import { omit } from '../../utils/object'
6
5
 
7
6
  // --- Props ---
8
7
 
9
8
  export const props = {
10
- tag: makeProp(PROP_TYPE_STRING, 'hr')
9
+ tag: {
10
+ type: PROP_TYPE_STRING,
11
+ required: false,
12
+ default: 'hr'
13
+ }
11
14
  }
12
15
 
13
16
  // --- Main component ---
@@ -1,16 +1,28 @@
1
1
  import { extend, mergeData } from '../../vue'
2
2
  import { NAME_DROPDOWN_FORM } from '../../constants/components'
3
- import { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props'
3
+ import {
4
+ PROP_TYPE_ARRAY,
5
+ PROP_TYPE_BOOLEAN,
6
+ PROP_TYPE_OBJECT,
7
+ PROP_TYPE_STRING
8
+ } from '../../constants/props'
4
9
  import { omit, sortKeys } from '../../utils/object'
5
- import { makeProp } from '../../utils/props'
6
10
  import { BForm, props as formControlProps } from '../form/form'
7
11
 
8
12
  // --- Props ---
9
13
 
10
14
  export const props = sortKeys({
11
15
  ...formControlProps,
12
- disabled: makeProp(PROP_TYPE_BOOLEAN, false),
13
- formClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)
16
+ disabled: {
17
+ type: PROP_TYPE_BOOLEAN,
18
+ required: false,
19
+ default: false
20
+ },
21
+ formClass: {
22
+ type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
23
+ required: false,
24
+ default: undefined
25
+ }
14
26
  })
15
27
 
16
28
  // --- Main component ---
@@ -1,22 +1,45 @@
1
1
  import { extend, mergeData } from '../../vue'
2
2
  import { NAME_DROPDOWN_GROUP } from '../../constants/components'
3
- import { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props'
3
+ import { PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../constants/props'
4
4
  import { SLOT_NAME_DEFAULT, SLOT_NAME_HEADER } from '../../constants/slots'
5
5
  import { isTag } from '../../utils/dom'
6
6
  import { identity } from '../../utils/identity'
7
7
  import { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot'
8
8
  import { omit } from '../../utils/object'
9
- import { makeProp } from '../../utils/props'
10
9
 
11
10
  // --- Props ---
12
11
 
13
12
  export const props = {
14
- ariaDescribedby: makeProp(PROP_TYPE_STRING),
15
- header: makeProp(PROP_TYPE_STRING),
16
- headerClasses: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),
17
- headerTag: makeProp(PROP_TYPE_STRING, 'header'),
18
- headerVariant: makeProp(PROP_TYPE_STRING),
19
- id: makeProp(PROP_TYPE_STRING)
13
+ ariaDescribedby: {
14
+ type: PROP_TYPE_STRING,
15
+ required: false,
16
+ default: undefined
17
+ },
18
+ header: {
19
+ type: PROP_TYPE_STRING,
20
+ required: false,
21
+ default: undefined
22
+ },
23
+ headerClasses: {
24
+ type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
25
+ required: false,
26
+ default: undefined
27
+ },
28
+ headerTag: {
29
+ type: PROP_TYPE_STRING,
30
+ required: false,
31
+ default: 'header'
32
+ },
33
+ headerVariant: {
34
+ type: PROP_TYPE_STRING,
35
+ required: false,
36
+ default: undefined
37
+ },
38
+ id: {
39
+ type: PROP_TYPE_STRING,
40
+ required: false,
41
+ default: undefined
42
+ }
20
43
  }
21
44
 
22
45
  // --- Main component ---