@gitlab/ui 132.0.0 → 132.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/dist/charts.js +13 -0
  2. package/dist/components/base/accordion/accordion.js +69 -0
  3. package/dist/components/base/accordion/accordion_item.js +160 -0
  4. package/dist/components/base/accordion/constants.js +3 -0
  5. package/dist/components/base/alert/alert.js +263 -0
  6. package/dist/components/base/animated_icon/animated_chevron_down_up_icon.js +45 -0
  7. package/dist/components/base/animated_icon/animated_chevron_lg_down_up_icon.js +45 -0
  8. package/dist/components/base/animated_icon/animated_chevron_lg_right_down_icon.js +45 -0
  9. package/dist/components/base/animated_icon/animated_chevron_right_down_icon.js +45 -0
  10. package/dist/components/base/animated_icon/animated_duo_chat_icon.js +45 -0
  11. package/dist/components/base/animated_icon/animated_loader_icon.js +45 -0
  12. package/dist/components/base/animated_icon/animated_notifications_icon.js +45 -0
  13. package/dist/components/base/animated_icon/animated_sidebar_icon.js +45 -0
  14. package/dist/components/base/animated_icon/animated_smile_icon.js +45 -0
  15. package/dist/components/base/animated_icon/animated_sort_icon.js +45 -0
  16. package/dist/components/base/animated_icon/animated_star_icon.js +45 -0
  17. package/dist/components/base/animated_icon/animated_todo_icon.js +45 -0
  18. package/dist/components/base/animated_icon/animated_upload_icon.js +45 -0
  19. package/dist/components/base/animated_icon/base_animated_icon.js +77 -0
  20. package/dist/components/base/attribute_list/attribute_list.js +100 -0
  21. package/dist/components/base/avatar/avatar.js +175 -0
  22. package/dist/components/base/avatar/utils.js +17 -0
  23. package/dist/components/base/avatar_labeled/avatar_labeled.js +198 -0
  24. package/dist/components/base/avatar_link/avatar_link.js +47 -0
  25. package/dist/components/base/avatars_inline/avatars_inline.js +139 -0
  26. package/dist/components/base/badge/badge.js +197 -0
  27. package/dist/components/base/banner/banner.js +149 -0
  28. package/dist/components/base/breadcrumb/breadcrumb.js +282 -0
  29. package/dist/components/base/breadcrumb/breadcrumb_item.js +96 -0
  30. package/dist/components/base/broadcast_message/broadcast_message.js +113 -0
  31. package/dist/components/base/broadcast_message/constants.js +5 -0
  32. package/dist/components/base/button/button.js +419 -0
  33. package/dist/components/base/button_group/button_group.js +53 -0
  34. package/dist/components/base/card/card.js +69 -0
  35. package/dist/components/base/collapse/collapse.js +163 -0
  36. package/dist/components/base/color_mode_toggle/color_mode_toggle.js +92 -0
  37. package/dist/components/base/datepicker/datepicker.js +475 -0
  38. package/dist/components/base/daterange_picker/daterange_picker.js +394 -0
  39. package/dist/components/base/drawer/drawer.js +156 -0
  40. package/dist/components/base/dropdown/dropdown.js +330 -0
  41. package/dist/components/base/dropdown/dropdown_divider.js +48 -0
  42. package/dist/components/base/dropdown/dropdown_form.js +48 -0
  43. package/dist/components/base/dropdown/dropdown_item.js +175 -0
  44. package/dist/components/base/dropdown/dropdown_section_header.js +48 -0
  45. package/dist/components/base/dropdown/dropdown_text.js +48 -0
  46. package/dist/components/base/filtered_search/common_story_options.js +14 -0
  47. package/dist/components/base/filtered_search/filtered_search.js +428 -0
  48. package/dist/components/base/filtered_search/filtered_search_suggestion.js +95 -0
  49. package/dist/components/base/filtered_search/filtered_search_suggestion_list.js +139 -0
  50. package/dist/components/base/filtered_search/filtered_search_term.js +217 -0
  51. package/dist/components/base/filtered_search/filtered_search_token.js +383 -0
  52. package/dist/components/base/filtered_search/filtered_search_token_segment.js +444 -0
  53. package/dist/components/base/filtered_search/filtered_search_utils.js +241 -0
  54. package/dist/components/base/form/form.js +43 -0
  55. package/dist/components/base/form/form_character_count/form_character_count.js +107 -0
  56. package/dist/components/base/form/form_checkbox/form_checkbox.js +342 -0
  57. package/dist/components/base/form/form_checkbox/form_checkbox_group.js +188 -0
  58. package/dist/components/base/form/form_combobox/constants.js +55 -0
  59. package/dist/components/base/form/form_combobox/form_combobox.js +239 -0
  60. package/dist/components/base/form/form_date/form_date.js +143 -0
  61. package/dist/components/base/form/form_fields/form_field_validator.js +93 -0
  62. package/dist/components/base/form/form_fields/form_fields.js +289 -0
  63. package/dist/components/base/form/form_fields/form_fields_loop.js +75 -0
  64. package/dist/components/base/form/form_fields/mappers.js +13 -0
  65. package/dist/components/base/form/form_fields/validators.js +48 -0
  66. package/dist/components/base/form/form_group/form_group.js +119 -0
  67. package/dist/components/base/form/form_input/form_input.js +695 -0
  68. package/dist/components/base/form/form_input_group/form_input_group.js +120 -0
  69. package/dist/components/base/form/form_input_group/form_input_group_mixin.js +41 -0
  70. package/dist/components/base/form/form_radio/form_radio.js +259 -0
  71. package/dist/components/base/form/form_radio_group/form_radio_group.js +189 -0
  72. package/dist/components/base/form/form_select/constants.js +12 -0
  73. package/dist/components/base/form/form_select/form_select.js +96 -0
  74. package/dist/components/base/form/form_textarea/form_textarea.js +166 -0
  75. package/dist/components/base/form/input_group_text/input_group_text.js +43 -0
  76. package/dist/components/base/icon/icon.js +113 -0
  77. package/dist/components/base/illustration/illustration.js +80 -0
  78. package/dist/components/base/infinite_scroll/infinite_scroll.js +196 -0
  79. package/dist/components/base/keyset_pagination/keyset_pagination.js +152 -0
  80. package/dist/components/base/label/label.js +174 -0
  81. package/dist/components/base/link/link.js +330 -0
  82. package/dist/components/base/loading_icon/loading_icon.js +120 -0
  83. package/dist/components/base/markdown/markdown.js +50 -0
  84. package/dist/components/base/modal/modal.js +259 -0
  85. package/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js +716 -0
  86. package/dist/components/base/new_dropdowns/base_dropdown/constants.js +5 -0
  87. package/dist/components/base/new_dropdowns/base_dropdown/dropdown_container.js +32 -0
  88. package/dist/components/base/new_dropdowns/constants.js +24 -0
  89. package/dist/components/base/new_dropdowns/disclosure/constants.js +8 -0
  90. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown.js +400 -0
  91. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.js +112 -0
  92. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_item.js +196 -0
  93. package/dist/components/base/new_dropdowns/disclosure/mock_data.js +168 -0
  94. package/dist/components/base/new_dropdowns/disclosure/utils.js +84 -0
  95. package/dist/components/base/new_dropdowns/listbox/listbox.js +997 -0
  96. package/dist/components/base/new_dropdowns/listbox/listbox_group.js +58 -0
  97. package/dist/components/base/new_dropdowns/listbox/listbox_item.js +112 -0
  98. package/dist/components/base/new_dropdowns/listbox/listbox_search_input.js +94 -0
  99. package/dist/components/base/new_dropdowns/listbox/mock_data.js +131 -0
  100. package/dist/components/base/new_dropdowns/listbox/utils.js +33 -0
  101. package/dist/components/base/pagination/pagination.js +397 -0
  102. package/dist/components/base/path/data.js +34 -0
  103. package/dist/components/base/path/path.js +177 -0
  104. package/dist/components/base/popover/popover.js +142 -0
  105. package/dist/components/base/progress_bar/progress_bar.js +117 -0
  106. package/dist/components/base/search_box_by_click/search_box_by_click.js +245 -0
  107. package/dist/components/base/search_box_by_type/search_box_by_type.js +187 -0
  108. package/dist/components/base/segmented_control/segmented_control.js +73 -0
  109. package/dist/components/base/skeleton_loader/skeleton_loader.js +232 -0
  110. package/dist/components/base/sorting/sorting.js +180 -0
  111. package/dist/components/base/table/constants.js +5 -0
  112. package/dist/components/base/table/table.js +187 -0
  113. package/dist/components/base/table_lite/table_lite.js +80 -0
  114. package/dist/components/base/tabs/constants.js +3 -0
  115. package/dist/components/base/tabs/tab/tab.js +113 -0
  116. package/dist/components/base/tabs/tabs/scrollable_tabs.js +162 -0
  117. package/dist/components/base/tabs/tabs/tabs.js +223 -0
  118. package/dist/components/base/toast/index.js +66 -0
  119. package/dist/components/base/toast/toast.js +125 -0
  120. package/dist/components/base/toast/toaster.js +87 -0
  121. package/dist/components/base/toggle/toggle.js +178 -0
  122. package/dist/components/base/token/token.js +97 -0
  123. package/dist/components/base/token_selector/helpers.js +5 -0
  124. package/dist/components/base/token_selector/token_container.js +160 -0
  125. package/dist/components/base/token_selector/token_selector.js +454 -0
  126. package/dist/components/base/token_selector/token_selector_dropdown.js +223 -0
  127. package/dist/components/base/tooltip/tooltip.js +54 -0
  128. package/dist/components/charts/area/area.js +329 -0
  129. package/dist/components/charts/bar/bar.js +207 -0
  130. package/dist/components/charts/chart/chart.js +215 -0
  131. package/dist/components/charts/column/column.js +221 -0
  132. package/dist/components/charts/discrete_scatter/discrete_scatter.js +199 -0
  133. package/dist/components/charts/gauge/gauge.js +205 -0
  134. package/dist/components/charts/heatmap/heatmap.js +299 -0
  135. package/dist/components/charts/heatmap/index.js +2 -0
  136. package/dist/components/charts/legend/legend.js +245 -0
  137. package/dist/components/charts/line/line.js +340 -0
  138. package/dist/components/charts/series_label/series_label.js +101 -0
  139. package/dist/components/charts/shared/tooltip/tooltip.js +369 -0
  140. package/dist/components/charts/shared/tooltip/tooltip_default_format/tooltip_default_format.js +53 -0
  141. package/dist/components/charts/single_stat/single_stat.js +164 -0
  142. package/dist/components/charts/sparkline/sparkline.js +299 -0
  143. package/dist/components/charts/stacked_column/stacked_column.js +380 -0
  144. package/dist/components/dashboards/dashboard_layout/dashboard_layout.js +125 -0
  145. package/dist/components/dashboards/dashboard_layout/grid_layout/grid_layout.js +326 -0
  146. package/dist/components/dashboards/dashboard_layout/validators.js +14 -0
  147. package/dist/components/dashboards/dashboard_panel/dashboard_panel.js +236 -0
  148. package/dist/components/dashboards/mock_data.js +49 -0
  149. package/dist/components/experimental/experiment_badge/constants.js +4 -0
  150. package/dist/components/experimental/experiment_badge/experiment_badge.js +102 -0
  151. package/dist/components/extended/multi_step_form_template/multi_step_form_template.js +87 -0
  152. package/dist/components/index.js +107 -0
  153. package/dist/components/mixins/button_mixin.js +11 -0
  154. package/dist/components/mixins/safe_link_mixin.js +30 -0
  155. package/dist/components/mixins/tooltip_mixin.js +21 -0
  156. package/dist/components/regions/dashboard_skeleton/dashboard_skeleton.js +53 -0
  157. package/dist/components/regions/empty_state/empty_state.js +181 -0
  158. package/dist/components/shared_components/clear_icon_button/clear_icon_button.js +64 -0
  159. package/dist/components/shared_components/clipboard_button/clipboard_button.js +100 -0
  160. package/dist/components/shared_components/close_button/close_button.js +55 -0
  161. package/dist/components/utilities/animated_number/animated_number.js +131 -0
  162. package/dist/components/utilities/friendly_wrap/friendly_wrap.js +75 -0
  163. package/dist/components/utilities/intersection_observer/intersection_observer.js +88 -0
  164. package/dist/components/utilities/intersperse/intersperse.js +104 -0
  165. package/dist/components/utilities/sprintf/sprintf.js +171 -0
  166. package/dist/components/utilities/truncate/constants.js +8 -0
  167. package/dist/components/utilities/truncate/truncate.js +154 -0
  168. package/dist/components/utilities/truncate_text/constants.js +7 -0
  169. package/dist/components/utilities/truncate_text/truncate_text.js +146 -0
  170. package/dist/config.js +53 -0
  171. package/dist/directives/hover_load/hover_load.js +45 -0
  172. package/dist/directives/index.js +8 -0
  173. package/dist/directives/modal.js +1 -0
  174. package/dist/directives/outside/outside.js +149 -0
  175. package/dist/directives/resize_observer/resize_observer.js +58 -0
  176. package/dist/directives/safe_html/constants.js +6 -0
  177. package/dist/directives/safe_html/safe_html.js +39 -0
  178. package/dist/directives/safe_link/mock_data.js +10 -0
  179. package/dist/directives/safe_link/safe_link.js +67 -0
  180. package/dist/directives/tooltip/container.js +7 -0
  181. package/dist/directives/tooltip/tooltip.js +18 -0
  182. package/dist/index.css +7 -0
  183. package/dist/index.css.map +1 -0
  184. package/dist/index.js +2 -0
  185. package/dist/tailwind.css +2 -0
  186. package/dist/tailwind.css.map +1 -0
  187. package/dist/tokens/build/js/tokens.dark.js +1410 -0
  188. package/dist/tokens/build/js/tokens.js +1410 -0
  189. package/dist/tokens/common_story_options.js +29 -0
  190. package/dist/tokens/tokens_story.js +76 -0
  191. package/dist/utils/breakpoints.js +20 -0
  192. package/dist/utils/charts/config.js +616 -0
  193. package/dist/utils/charts/constants.js +69 -0
  194. package/dist/utils/charts/mock_data.js +191 -0
  195. package/dist/utils/charts/story_config.js +24 -0
  196. package/dist/utils/charts/theme.js +200 -0
  197. package/dist/utils/charts/utils.js +54 -0
  198. package/dist/utils/constants.js +331 -0
  199. package/dist/utils/data_utils.js +19 -0
  200. package/dist/utils/datetime_utility.js +61 -0
  201. package/dist/utils/equality_utils.js +84 -0
  202. package/dist/utils/form_options_utils.js +46 -0
  203. package/dist/utils/i18n.js +65 -0
  204. package/dist/utils/is_slot_empty.js +34 -0
  205. package/dist/utils/number_utils.js +132 -0
  206. package/dist/utils/play_utils.js +11 -0
  207. package/dist/utils/set_utils.js +25 -0
  208. package/dist/utils/stories_constants.js +29 -0
  209. package/dist/utils/stories_utils.js +62 -0
  210. package/dist/utils/story_decorators/container.js +19 -0
  211. package/dist/utils/string_utils.js +69 -0
  212. package/dist/utils/svgs/svg_paths.js +7 -0
  213. package/dist/utils/test_utils.js +33 -0
  214. package/dist/utils/use_fake_date.js +29 -0
  215. package/dist/utils/use_mock_intersection_observer.js +105 -0
  216. package/dist/utils/utils.js +205 -0
  217. package/dist/utils/vue_utils.js +57 -0
  218. package/dist/utils.js +5 -0
  219. package/dist/vendor/bootstrap-vue/src/bv-config.js +8 -0
  220. package/dist/vendor/bootstrap-vue/src/components/button/button-close.js +81 -0
  221. package/dist/vendor/bootstrap-vue/src/components/button/button.js +204 -0
  222. package/dist/vendor/bootstrap-vue/src/components/button/index.js +2 -0
  223. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.js +41 -0
  224. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.js +52 -0
  225. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.js +75 -0
  226. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.js +52 -0
  227. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.js +85 -0
  228. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-item.js +97 -0
  229. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.js +60 -0
  230. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown.js +270 -0
  231. package/dist/vendor/bootstrap-vue/src/components/dropdown/index.js +8 -0
  232. package/dist/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.js +53 -0
  233. package/dist/vendor/bootstrap-vue/src/components/form/form-text.js +55 -0
  234. package/dist/vendor/bootstrap-vue/src/components/form/form-valid-feedback.js +53 -0
  235. package/dist/vendor/bootstrap-vue/src/components/form/form.js +56 -0
  236. package/dist/vendor/bootstrap-vue/src/components/form/index.js +4 -0
  237. package/dist/vendor/bootstrap-vue/src/components/form-group/form-group.js +347 -0
  238. package/dist/vendor/bootstrap-vue/src/components/form-group/index.js +1 -0
  239. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.js +54 -0
  240. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option.js +41 -0
  241. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select.js +143 -0
  242. package/dist/vendor/bootstrap-vue/src/components/form-select/helpers/mixin-options.js +56 -0
  243. package/dist/vendor/bootstrap-vue/src/components/form-select/index.js +3 -0
  244. package/dist/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.js +217 -0
  245. package/dist/vendor/bootstrap-vue/src/components/form-textarea/index.js +1 -0
  246. package/dist/vendor/bootstrap-vue/src/components/layout/col.js +155 -0
  247. package/dist/vendor/bootstrap-vue/src/components/layout/form-row.js +34 -0
  248. package/dist/vendor/bootstrap-vue/src/components/layout/index.js +2 -0
  249. package/dist/vendor/bootstrap-vue/src/components/link/index.js +1 -0
  250. package/dist/vendor/bootstrap-vue/src/components/link/link.js +283 -0
  251. package/dist/vendor/bootstrap-vue/src/components/modal/helpers/bv-modal-event.class.js +21 -0
  252. package/dist/vendor/bootstrap-vue/src/components/modal/helpers/modal-manager.js +212 -0
  253. package/dist/vendor/bootstrap-vue/src/components/modal/index.js +1 -0
  254. package/dist/vendor/bootstrap-vue/src/components/modal/modal.js +1059 -0
  255. package/dist/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover-template.js +55 -0
  256. package/dist/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover.js +31 -0
  257. package/dist/vendor/bootstrap-vue/src/components/popover/index.js +1 -0
  258. package/dist/vendor/bootstrap-vue/src/components/popover/popover.js +49 -0
  259. package/dist/vendor/bootstrap-vue/src/components/table/helpers/constants.js +22 -0
  260. package/dist/vendor/bootstrap-vue/src/components/table/helpers/default-sort-compare.js +64 -0
  261. package/dist/vendor/bootstrap-vue/src/components/table/helpers/filter-event.js +40 -0
  262. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-bottom-row.js +43 -0
  263. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-busy.js +83 -0
  264. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js +50 -0
  265. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-colgroup.js +32 -0
  266. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-empty.js +82 -0
  267. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-filtering.js +292 -0
  268. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js +154 -0
  269. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-pagination.js +44 -0
  270. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-provider.js +191 -0
  271. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +213 -0
  272. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +274 -0
  273. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js +39 -0
  274. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js +186 -0
  275. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js +338 -0
  276. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +243 -0
  277. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js +50 -0
  278. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js +218 -0
  279. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-top-row.js +42 -0
  280. package/dist/vendor/bootstrap-vue/src/components/table/helpers/normalize-fields.js +86 -0
  281. package/dist/vendor/bootstrap-vue/src/components/table/helpers/sanitize-row.js +31 -0
  282. package/dist/vendor/bootstrap-vue/src/components/table/helpers/stringify-record-values.js +11 -0
  283. package/dist/vendor/bootstrap-vue/src/components/table/helpers/text-selection-active.js +14 -0
  284. package/dist/vendor/bootstrap-vue/src/components/table/index.js +9 -0
  285. package/dist/vendor/bootstrap-vue/src/components/table/table-lite.js +51 -0
  286. package/dist/vendor/bootstrap-vue/src/components/table/table-simple.js +44 -0
  287. package/dist/vendor/bootstrap-vue/src/components/table/table.js +67 -0
  288. package/dist/vendor/bootstrap-vue/src/components/table/tbody.js +116 -0
  289. package/dist/vendor/bootstrap-vue/src/components/table/td.js +204 -0
  290. package/dist/vendor/bootstrap-vue/src/components/table/tfoot.js +96 -0
  291. package/dist/vendor/bootstrap-vue/src/components/table/th.js +26 -0
  292. package/dist/vendor/bootstrap-vue/src/components/table/thead.js +99 -0
  293. package/dist/vendor/bootstrap-vue/src/components/table/tr.js +121 -0
  294. package/dist/vendor/bootstrap-vue/src/components/tabs/index.js +2 -0
  295. package/dist/vendor/bootstrap-vue/src/components/tabs/tab.js +238 -0
  296. package/dist/vendor/bootstrap-vue/src/components/tabs/tabs.js +690 -0
  297. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-popper.js +251 -0
  298. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip-template.js +118 -0
  299. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +932 -0
  300. package/dist/vendor/bootstrap-vue/src/components/tooltip/index.js +1 -0
  301. package/dist/vendor/bootstrap-vue/src/components/tooltip/tooltip.js +337 -0
  302. package/dist/vendor/bootstrap-vue/src/components/transition/bv-transition.js +103 -0
  303. package/dist/vendor/bootstrap-vue/src/components/transporter/transporter.js +205 -0
  304. package/dist/vendor/bootstrap-vue/src/constants/components.js +55 -0
  305. package/dist/vendor/bootstrap-vue/src/constants/config.js +11 -0
  306. package/dist/vendor/bootstrap-vue/src/constants/env.js +36 -0
  307. package/dist/vendor/bootstrap-vue/src/constants/events.js +56 -0
  308. package/dist/vendor/bootstrap-vue/src/constants/key-codes.js +11 -0
  309. package/dist/vendor/bootstrap-vue/src/constants/popper.js +10 -0
  310. package/dist/vendor/bootstrap-vue/src/constants/props.js +24 -0
  311. package/dist/vendor/bootstrap-vue/src/constants/regex.js +35 -0
  312. package/dist/vendor/bootstrap-vue/src/constants/safe-types.js +15 -0
  313. package/dist/vendor/bootstrap-vue/src/constants/slots.js +36 -0
  314. package/dist/vendor/bootstrap-vue/src/directives/modal/index.js +1 -0
  315. package/dist/vendor/bootstrap-vue/src/directives/modal/modal.js +112 -0
  316. package/dist/vendor/bootstrap-vue/src/directives/tooltip/index.js +1 -0
  317. package/dist/vendor/bootstrap-vue/src/directives/tooltip/tooltip.js +267 -0
  318. package/dist/vendor/bootstrap-vue/src/directives/visible/index.js +1 -0
  319. package/dist/vendor/bootstrap-vue/src/directives/visible/visible.js +187 -0
  320. package/dist/vendor/bootstrap-vue/src/mixins/attrs.js +5 -0
  321. package/dist/vendor/bootstrap-vue/src/mixins/click-out.js +54 -0
  322. package/dist/vendor/bootstrap-vue/src/mixins/dropdown.js +470 -0
  323. package/dist/vendor/bootstrap-vue/src/mixins/focus-in.js +46 -0
  324. package/dist/vendor/bootstrap-vue/src/mixins/form-control.js +73 -0
  325. package/dist/vendor/bootstrap-vue/src/mixins/form-custom.js +26 -0
  326. package/dist/vendor/bootstrap-vue/src/mixins/form-options.js +91 -0
  327. package/dist/vendor/bootstrap-vue/src/mixins/form-selection.js +62 -0
  328. package/dist/vendor/bootstrap-vue/src/mixins/form-size.js +26 -0
  329. package/dist/vendor/bootstrap-vue/src/mixins/form-state.js +50 -0
  330. package/dist/vendor/bootstrap-vue/src/mixins/form-text.js +293 -0
  331. package/dist/vendor/bootstrap-vue/src/mixins/form-validity.js +50 -0
  332. package/dist/vendor/bootstrap-vue/src/mixins/has-listener.js +29 -0
  333. package/dist/vendor/bootstrap-vue/src/mixins/id.js +57 -0
  334. package/dist/vendor/bootstrap-vue/src/mixins/listen-on-document.js +62 -0
  335. package/dist/vendor/bootstrap-vue/src/mixins/listen-on-root.js +120 -0
  336. package/dist/vendor/bootstrap-vue/src/mixins/listen-on-window.js +62 -0
  337. package/dist/vendor/bootstrap-vue/src/mixins/listeners.js +25 -0
  338. package/dist/vendor/bootstrap-vue/src/mixins/model.js +10 -0
  339. package/dist/vendor/bootstrap-vue/src/mixins/normalize-slot.js +30 -0
  340. package/dist/vendor/bootstrap-vue/src/mixins/scoped-style.js +18 -0
  341. package/dist/vendor/bootstrap-vue/src/mixins/use-parent.js +14 -0
  342. package/dist/vendor/bootstrap-vue/src/utils/array.js +27 -0
  343. package/dist/vendor/bootstrap-vue/src/utils/bv-event.class.js +60 -0
  344. package/dist/vendor/bootstrap-vue/src/utils/cache.js +60 -0
  345. package/dist/vendor/bootstrap-vue/src/utils/clone-deep.js +18 -0
  346. package/dist/vendor/bootstrap-vue/src/utils/config-set.js +86 -0
  347. package/dist/vendor/bootstrap-vue/src/utils/config.js +71 -0
  348. package/dist/vendor/bootstrap-vue/src/utils/create-new-child-component.js +133 -0
  349. package/dist/vendor/bootstrap-vue/src/utils/css-escape.js +70 -0
  350. package/dist/vendor/bootstrap-vue/src/utils/dom.js +298 -0
  351. package/dist/vendor/bootstrap-vue/src/utils/element-to-vue-instance-registry.js +28 -0
  352. package/dist/vendor/bootstrap-vue/src/utils/env.js +16 -0
  353. package/dist/vendor/bootstrap-vue/src/utils/events.js +78 -0
  354. package/dist/vendor/bootstrap-vue/src/utils/get-event-root.js +5 -0
  355. package/dist/vendor/bootstrap-vue/src/utils/get-instance-from-directive.js +3 -0
  356. package/dist/vendor/bootstrap-vue/src/utils/get-scope-id.js +9 -0
  357. package/dist/vendor/bootstrap-vue/src/utils/get.js +63 -0
  358. package/dist/vendor/bootstrap-vue/src/utils/html.js +16 -0
  359. package/dist/vendor/bootstrap-vue/src/utils/identity.js +3 -0
  360. package/dist/vendor/bootstrap-vue/src/utils/inspect.js +35 -0
  361. package/dist/vendor/bootstrap-vue/src/utils/locale.js +18 -0
  362. package/dist/vendor/bootstrap-vue/src/utils/loose-equal.js +59 -0
  363. package/dist/vendor/bootstrap-vue/src/utils/loose-index-of.js +13 -0
  364. package/dist/vendor/bootstrap-vue/src/utils/math.js +9 -0
  365. package/dist/vendor/bootstrap-vue/src/utils/memoize.js +14 -0
  366. package/dist/vendor/bootstrap-vue/src/utils/model.js +33 -0
  367. package/dist/vendor/bootstrap-vue/src/utils/noop.js +3 -0
  368. package/dist/vendor/bootstrap-vue/src/utils/normalize-slot.js +51 -0
  369. package/dist/vendor/bootstrap-vue/src/utils/number.js +23 -0
  370. package/dist/vendor/bootstrap-vue/src/utils/object.js +72 -0
  371. package/dist/vendor/bootstrap-vue/src/utils/observe-dom.js +76 -0
  372. package/dist/vendor/bootstrap-vue/src/utils/on-instance-destroy.js +22 -0
  373. package/dist/vendor/bootstrap-vue/src/utils/plugins.js +124 -0
  374. package/dist/vendor/bootstrap-vue/src/utils/props.js +67 -0
  375. package/dist/vendor/bootstrap-vue/src/utils/router.js +150 -0
  376. package/dist/vendor/bootstrap-vue/src/utils/safe-vue-instance.js +14 -0
  377. package/dist/vendor/bootstrap-vue/src/utils/stable-sort.js +28 -0
  378. package/dist/vendor/bootstrap-vue/src/utils/string.js +47 -0
  379. package/dist/vendor/bootstrap-vue/src/utils/stringify-object-values.js +31 -0
  380. package/dist/vendor/bootstrap-vue/src/utils/warn.js +45 -0
  381. package/dist/vendor/bootstrap-vue/src/vue.js +55 -0
  382. package/package.json +6 -5
  383. package/src/components/base/link/link.vue +5 -8
  384. package/src/utils/constants.js +0 -3
  385. package/src/utils/vue_utils.js +56 -0
  386. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown.js +2 -2
  387. package/src/vendor/bootstrap-vue/src/components/form-group/form-group.js +2 -2
  388. package/src/vendor/bootstrap-vue/src/components/layout/col.js +2 -2
  389. package/src/vendor/bootstrap-vue/src/components/modal/modal.js +219 -52
  390. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-filtering.js +30 -11
  391. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +3 -3
  392. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +1 -2
  393. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +4 -4
  394. package/src/vendor/bootstrap-vue/src/components/table/helpers/sanitize-row.js +2 -3
  395. package/src/vendor/bootstrap-vue/src/components/tabs/tabs.js +2 -2
  396. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +8 -9
  397. package/src/vendor/bootstrap-vue/src/constants/config.js +2 -2
  398. package/src/vendor/bootstrap-vue/src/directives/tooltip/tooltip.js +1 -1
  399. package/src/vendor/bootstrap-vue/src/mixins/listen-on-document.js +1 -2
  400. package/src/vendor/bootstrap-vue/src/mixins/listen-on-root.js +1 -2
  401. package/src/vendor/bootstrap-vue/src/mixins/listen-on-window.js +1 -2
  402. package/src/vendor/bootstrap-vue/src/utils/array.js +0 -1
  403. package/src/vendor/bootstrap-vue/src/utils/locale.js +1 -2
@@ -0,0 +1,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.0",
3
+ "version": "132.0.2",
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
  },
@@ -133,10 +134,10 @@
133
134
  "@yarnpkg/lockfile": "^1.1.0",
134
135
  "acorn": "^8.16.0",
135
136
  "acorn-walk": "^8.3.5",
136
- "autoprefixer": "10.4.27",
137
+ "autoprefixer": "10.5.0",
137
138
  "axe-playwright": "^2.2.2",
138
139
  "babel-loader": "^9.2.1",
139
- "cypress": "15.13.1",
140
+ "cypress": "15.14.0",
140
141
  "cypress-real-events": "^1.15.0",
141
142
  "dompurify": "^3.1.2",
142
143
  "emoji-regex": "^10.6.0",
@@ -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,16 +2,13 @@
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 { isEvent } from '../../../vendor/bootstrap-vue/src/utils/inspect';
5
+ import { isVue3, safeVueInstance } from '../../../utils/vue_utils';
6
6
  import { stringifyQueryObj } from '../../../vendor/bootstrap-vue/src/utils/router';
7
- import { safeVueInstance } from '../../../vendor/bootstrap-vue/src/utils/safe-vue-instance';
8
- import { attemptFocus, attemptBlur } from '../../../vendor/bootstrap-vue/src/utils/dom';
9
7
  import {
10
8
  linkVariantOptions,
11
9
  linkVariantInline,
12
10
  linkVariantMeta,
13
11
  linkVariantUnstyled,
14
- isVue3,
15
12
  } from '../../../utils/constants';
16
13
 
17
14
  const ANCHOR_TAG = 'a';
@@ -162,7 +159,7 @@ export default {
162
159
  return this.tag !== ANCHOR_TAG;
163
160
  },
164
161
  isVue3RouterLink() {
165
- return this.tag === VUE_ROUTER_LINK_TAG && isVue3;
162
+ return this.tag === VUE_ROUTER_LINK_TAG && isVue3(this);
166
163
  },
167
164
  shouldShowExternalIcon() {
168
165
  const allowedVariants = [linkVariantInline, linkVariantMeta, null]; // null represents default/UI variant
@@ -250,7 +247,7 @@ export default {
250
247
  },
251
248
  methods: {
252
249
  onClick(event, navigate) {
253
- const eventIsEvent = isEvent(event);
250
+ const eventIsEvent = event instanceof Event;
254
251
  const suppliedHandler = this.$listeners.click;
255
252
 
256
253
  if (eventIsEvent && this.disabled) {
@@ -292,10 +289,10 @@ export default {
292
289
  }
293
290
  },
294
291
  focus() {
295
- attemptFocus(this.$el);
292
+ this.$el.focus();
296
293
  },
297
294
  blur() {
298
- attemptBlur(this.$el);
295
+ this.$el.blur();
299
296
  },
300
297
  },
301
298
  };
@@ -1,4 +1,3 @@
1
- import Vue from 'vue';
2
1
  import { POSITION } from '../components/utilities/truncate/constants';
3
2
 
4
3
  export const COMMA = ',';
@@ -385,5 +384,3 @@ export const loadingIconVariants = {
385
384
  spinner: 'spinner',
386
385
  dots: 'dots',
387
386
  };
388
-
389
- export const isVue3 = Boolean(Vue.Fragment);
@@ -0,0 +1,56 @@
1
+ import Vue from 'vue';
2
+
3
+ /**
4
+ * Checks whether the global Vue version is Vue 3 (or the Vue 3 compat build).
5
+ *
6
+ * Use this for module-level checks where no component instance is available,
7
+ * such as conditional test logic or static configuration.
8
+ *
9
+ * @type {boolean}
10
+ */
11
+ export const isGlobalVue3 = Boolean(Vue.Fragment);
12
+
13
+ /**
14
+ * Checks whether a component instance is running under Vue 3 (or compat mode).
15
+ *
16
+ * In Vue 3, component instances expose an internal `$` property that holds
17
+ * the component's internal instance. This property does not exist in Vue 2.
18
+ *
19
+ * Prefer this over {@link isGlobalVue3} when you have access to a component
20
+ * instance, as it checks at the instance level rather than the global level.
21
+ *
22
+ * @param {object} instance - The Vue component instance (`this`).
23
+ * @returns {boolean} `true` if the instance is a Vue 3 component.
24
+ */
25
+ export const isVue3 = (instance) => Boolean(instance.$);
26
+
27
+ /**
28
+ * Wraps a Vue component instance to safely access properties without
29
+ * triggering Vue 3 development warnings.
30
+ *
31
+ * In Vue 3 (and compat mode), component instances are Proxies. Accessing a
32
+ * property that doesn't exist on the instance (e.g. `this.$router` when no
33
+ * router is installed) triggers a development warning from Vue's `get` trap:
34
+ * "Property X was accessed during render but is not defined on instance."
35
+ *
36
+ * This utility returns a Proxy that uses the `in` operator (which hits Vue's
37
+ * `has` trap, which is silent) to check for property existence before accessing
38
+ * it. If the property doesn't exist, `undefined` is returned without ever
39
+ * hitting Vue's `get` trap.
40
+ *
41
+ * In Vue 2, the instance is returned as-is since there are no Proxy warnings.
42
+ *
43
+ * @param {object} target - The Vue component instance (`this`).
44
+ * @returns {object} The original instance (Vue 2) or a safe Proxy wrapper (Vue 3).
45
+ */
46
+ export function safeVueInstance(target) {
47
+ if (!isVue3(target)) {
48
+ return target;
49
+ }
50
+
51
+ return new Proxy(target, {
52
+ get(obj, prop) {
53
+ return prop in obj ? obj[prop] : undefined;
54
+ },
55
+ });
56
+ }
@@ -7,7 +7,7 @@ import {
7
7
  PROP_TYPE_STRING
8
8
  } from '../../constants/props'
9
9
  import { SLOT_NAME_BUTTON_CONTENT, SLOT_NAME_DEFAULT } from '../../constants/slots'
10
- import { arrayIncludes } from '../../utils/array'
10
+
11
11
  import { htmlOrText } from '../../utils/html'
12
12
  import { toString } from '../../utils/string'
13
13
  import { dropdownMixin, props as dropdownProps } from '../../mixins/dropdown'
@@ -67,7 +67,7 @@ export const props = sortKeys({
67
67
  required: false,
68
68
  default: 'button',
69
69
  validator: value => {
70
- return arrayIncludes(['button', 'submit', 'reset'], value)
70
+ return ['button', 'submit', 'reset'].includes(value)
71
71
  }
72
72
  },
73
73
  splitClass: {
@@ -14,7 +14,7 @@ import {
14
14
  SLOT_NAME_LABEL,
15
15
  SLOT_NAME_VALID_FEEDBACK
16
16
  } from '../../constants/slots'
17
- import { arrayIncludes } from '../../utils/array'
17
+
18
18
  import { getBreakpointsUpCached } from '../../utils/config'
19
19
  import { cssEscape } from '../../utils/css-escape'
20
20
  import {
@@ -185,7 +185,7 @@ export const BFormGroup = {
185
185
  // and ensuring the ID's are unique
186
186
  const ids = (getAttr($input, attr) || '')
187
187
  .split(RX_SPACE_SPLIT)
188
- .filter(id => !arrayIncludes(oldIds, id))
188
+ .filter(id => !oldIds.includes(id))
189
189
  .concat(newIds)
190
190
  .filter((id, index, ids) => ids.indexOf(id) === index)
191
191
  .filter(identity)
@@ -7,7 +7,7 @@ import {
7
7
  PROP_TYPE_STRING
8
8
  } from '../../constants/props'
9
9
  import { RX_COL_CLASS } from '../../constants/regex'
10
- import { arrayIncludes } from '../../utils/array'
10
+
11
11
  import { getBreakpointsUpCached } from '../../utils/config'
12
12
  import { identity } from '../../utils/identity'
13
13
  import { isUndefinedOrNull } from '../../utils/inspect'
@@ -89,7 +89,7 @@ export const generateProps = () => {
89
89
  ...breakpointOrder,
90
90
  // Flex alignment
91
91
  alignSelf: makeProp(PROP_TYPE_STRING, null, value => {
92
- return arrayIncludes(ALIGN_SELF_VALUES, value)
92
+ return ALIGN_SELF_VALUES.includes(value)
93
93
  }),
94
94
  // Generic flexbox 'col' (xs)
95
95
  col: makeProp(PROP_TYPE_BOOLEAN, false),