@gitlab/ui 132.0.1 → 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 (393) 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 +4 -3
  383. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown.js +2 -2
  384. package/src/vendor/bootstrap-vue/src/components/form-group/form-group.js +2 -2
  385. package/src/vendor/bootstrap-vue/src/components/layout/col.js +2 -2
  386. package/src/vendor/bootstrap-vue/src/components/modal/modal.js +2 -2
  387. package/src/vendor/bootstrap-vue/src/components/tabs/tabs.js +2 -2
  388. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +8 -9
  389. package/src/vendor/bootstrap-vue/src/mixins/listen-on-document.js +1 -2
  390. package/src/vendor/bootstrap-vue/src/mixins/listen-on-root.js +1 -2
  391. package/src/vendor/bootstrap-vue/src/mixins/listen-on-window.js +1 -2
  392. package/src/vendor/bootstrap-vue/src/utils/array.js +0 -1
  393. package/src/vendor/bootstrap-vue/src/utils/locale.js +1 -2
@@ -0,0 +1 @@
1
+ export { BTooltip } from './tooltip';
@@ -0,0 +1,337 @@
1
+ import { extend } from '../../vue';
2
+ import { NAME_TOOLTIP } from '../../constants/components';
3
+ import { EVENT_NAME_DISABLE, EVENT_NAME_ENABLE, EVENT_NAME_SHOW, EVENT_NAME_SHOWN, EVENT_NAME_HIDE, EVENT_NAME_HIDDEN, EVENT_NAME_DISABLED, EVENT_NAME_ENABLED, EVENT_NAME_OPEN, EVENT_NAME_CLOSE, MODEL_EVENT_NAME_PREFIX } from '../../constants/events';
4
+ import { PROP_TYPE_OBJECT, PROP_TYPE_STRING, PROP_TYPE_NUMBER, PROP_TYPE_BOOLEAN, PROP_TYPE_ARRAY, PROP_TYPE_FUNCTION } from '../../constants/props';
5
+ import { HTMLElement, SVGElement } from '../../constants/safe-types';
6
+ import { useParentMixin } from '../../mixins/use-parent';
7
+ import { getScopeId } from '../../utils/get-scope-id';
8
+ import { isUndefinedOrNull } from '../../utils/inspect';
9
+ import { pick } from '../../utils/object';
10
+ import { TOOLTIP_DELAY } from '../../constants/config';
11
+ import { createNewChildComponent, eventProp } from '../../utils/create-new-child-component';
12
+ import { normalizeSlotMixin } from '../../mixins/normalize-slot';
13
+ import { BVTooltip } from './helpers/bv-tooltip';
14
+
15
+ // --- Constants ---
16
+
17
+ const MODEL_PROP_NAME_ENABLED = 'disabled';
18
+ const MODEL_EVENT_NAME_ENABLED = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_ENABLED;
19
+ const MODEL_PROP_NAME_SHOW = 'show';
20
+ const MODEL_EVENT_NAME_SHOW = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SHOW;
21
+
22
+ // --- Props ---
23
+
24
+ const props = {
25
+ // String: scrollParent, window, or viewport
26
+ // Element: element reference
27
+ // Object: Vue component
28
+ boundary: {
29
+ type: [HTMLElement, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
30
+ required: false,
31
+ default: 'scrollParent'
32
+ },
33
+ boundaryPadding: {
34
+ type: [PROP_TYPE_NUMBER, PROP_TYPE_STRING],
35
+ required: false,
36
+ default: 5
37
+ },
38
+ // String: HTML ID of container, if null body is used (default)
39
+ // HTMLElement: element reference reference
40
+ // Object: Vue Component
41
+ container: {
42
+ type: [HTMLElement, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
43
+ required: false,
44
+ default: undefined
45
+ },
46
+ customClass: {
47
+ type: PROP_TYPE_STRING,
48
+ required: false,
49
+ default: 'gl-tooltip'
50
+ },
51
+ delay: {
52
+ type: [PROP_TYPE_NUMBER, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
53
+ required: false,
54
+ default: () => ({
55
+ ...TOOLTIP_DELAY
56
+ })
57
+ },
58
+ [MODEL_PROP_NAME_ENABLED]: {
59
+ type: PROP_TYPE_BOOLEAN,
60
+ required: false,
61
+ default: false
62
+ },
63
+ fallbackPlacement: {
64
+ type: [PROP_TYPE_ARRAY, PROP_TYPE_STRING],
65
+ required: false,
66
+ default: 'flip'
67
+ },
68
+ // ID to use for tooltip element
69
+ // If not provided on will automatically be generated
70
+ id: {
71
+ type: PROP_TYPE_STRING,
72
+ required: false,
73
+ default: undefined
74
+ },
75
+ noFade: {
76
+ type: PROP_TYPE_BOOLEAN,
77
+ required: false,
78
+ default: false
79
+ },
80
+ noninteractive: {
81
+ type: PROP_TYPE_BOOLEAN,
82
+ required: false,
83
+ default: false
84
+ },
85
+ offset: {
86
+ type: [PROP_TYPE_NUMBER, PROP_TYPE_STRING],
87
+ required: false,
88
+ default: 0
89
+ },
90
+ placement: {
91
+ type: PROP_TYPE_STRING,
92
+ required: false,
93
+ default: 'top'
94
+ },
95
+ [MODEL_PROP_NAME_SHOW]: {
96
+ type: PROP_TYPE_BOOLEAN,
97
+ required: false,
98
+ default: false
99
+ },
100
+ // String ID of element, or element/component reference
101
+ // Or function that returns one of the above
102
+ // Required
103
+ target: {
104
+ type: [HTMLElement, SVGElement, PROP_TYPE_FUNCTION, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
105
+ required: true
106
+ },
107
+ title: {
108
+ type: PROP_TYPE_STRING,
109
+ required: false,
110
+ default: undefined
111
+ },
112
+ triggers: {
113
+ type: [PROP_TYPE_ARRAY, PROP_TYPE_STRING],
114
+ required: false,
115
+ default: 'hover focus'
116
+ },
117
+ variant: {
118
+ type: PROP_TYPE_STRING,
119
+ required: false,
120
+ default: undefined
121
+ }
122
+ };
123
+
124
+ // --- Main component ---
125
+
126
+ // @vue/component
127
+ const BTooltip = /*#__PURE__*/extend({
128
+ name: NAME_TOOLTIP,
129
+ mixins: [normalizeSlotMixin, useParentMixin],
130
+ inheritAttrs: false,
131
+ props,
132
+ data() {
133
+ return {
134
+ localShow: this[MODEL_PROP_NAME_SHOW],
135
+ localTitle: '',
136
+ localContent: ''
137
+ };
138
+ },
139
+ computed: {
140
+ // Data that will be passed to the template and popper
141
+ templateData() {
142
+ return {
143
+ title: this.localTitle,
144
+ content: this.localContent,
145
+ interactive: !this.noninteractive,
146
+ // Pass these props as is
147
+ ...pick(this.$props, ['boundary', 'boundaryPadding', 'container', 'customClass', 'delay', 'fallbackPlacement', 'id', 'noFade', 'offset', 'placement', 'target', 'target', 'triggers', 'variant', MODEL_PROP_NAME_ENABLED])
148
+ };
149
+ },
150
+ // Used to watch for changes to the title and content props
151
+ templateTitleContent() {
152
+ const {
153
+ title,
154
+ content
155
+ } = this;
156
+ return {
157
+ title,
158
+ content
159
+ };
160
+ }
161
+ },
162
+ watch: {
163
+ [MODEL_PROP_NAME_SHOW](newValue, oldValue) {
164
+ if (newValue !== oldValue && newValue !== this.localShow && this.$_toolpop) {
165
+ if (newValue) {
166
+ this.$_toolpop.show();
167
+ } else {
168
+ // We use `forceHide()` to override any active triggers
169
+ this.$_toolpop.forceHide();
170
+ }
171
+ }
172
+ },
173
+ [MODEL_PROP_NAME_ENABLED](newValue) {
174
+ if (newValue) {
175
+ this[EVENT_NAME_DISABLE]();
176
+ } else {
177
+ this[EVENT_NAME_ENABLE]();
178
+ }
179
+ },
180
+ localShow(newValue) {
181
+ // TODO: May need to be done in a `$nextTick()`
182
+ this.$emit(MODEL_EVENT_NAME_SHOW, newValue);
183
+ },
184
+ templateData() {
185
+ this.$nextTick(() => {
186
+ if (this.$_toolpop) {
187
+ this.$_toolpop.updateData(this.templateData);
188
+ }
189
+ });
190
+ },
191
+ // Watchers for title/content props (prop changes do not trigger the `updated()` hook)
192
+ templateTitleContent() {
193
+ this.$nextTick(this.updateContent);
194
+ }
195
+ },
196
+ created() {
197
+ // Create private non-reactive props
198
+ this.$_toolpop = null;
199
+ },
200
+ updated() {
201
+ // Update the `propData` object
202
+ // Done in a `$nextTick()` to ensure slot(s) have updated
203
+ this.$nextTick(this.updateContent);
204
+ },
205
+ beforeDestroy() {
206
+ // Destroy the tip instance
207
+ if (this.$_toolpop) {
208
+ this.$_toolpop.$destroy();
209
+ this.$_toolpop = null;
210
+ }
211
+ },
212
+ mounted() {
213
+ // Instantiate a new BVTooltip instance
214
+ // Done in a `$nextTick()` to ensure DOM has completed rendering
215
+ // so that target can be found
216
+ this.$nextTick(() => {
217
+ // Load the on demand child instance
218
+ const Component = this.getComponent();
219
+ // Ensure we have initial content
220
+ this.updateContent();
221
+ // Pass down the scoped style attribute if available
222
+ const scopeId = getScopeId(this) || getScopeId(this.bvParent);
223
+ // Create the instance
224
+ const $toolpop = this.$_toolpop = createNewChildComponent(this, Component, {
225
+ // Pass down the scoped style ID
226
+ _scopeId: scopeId || undefined,
227
+ propsData: {
228
+ [eventProp(EVENT_NAME_SHOW)]: this.onShow,
229
+ [eventProp(EVENT_NAME_SHOWN)]: this.onShown,
230
+ [eventProp(EVENT_NAME_HIDE)]: this.onHide,
231
+ [eventProp(EVENT_NAME_HIDDEN)]: this.onHidden,
232
+ [eventProp(EVENT_NAME_DISABLED)]: this.onDisabled,
233
+ [eventProp(EVENT_NAME_ENABLED)]: this.onEnabled
234
+ }
235
+ });
236
+ // Set the initial data
237
+ $toolpop.updateData(this.templateData);
238
+ // Initially disabled?
239
+ if (this[MODEL_PROP_NAME_ENABLED]) {
240
+ // Initially disabled
241
+ this[EVENT_NAME_DISABLE]();
242
+ }
243
+ // Initially show tooltip?
244
+ if (this.localShow) {
245
+ $toolpop.show();
246
+ }
247
+ });
248
+ },
249
+ methods: {
250
+ getComponent() {
251
+ // Overridden by BPopover
252
+ return BVTooltip;
253
+ },
254
+ updateContent() {
255
+ // Overridden by BPopover
256
+ // Tooltip: Default slot is `title`
257
+ // Popover: Default slot is `content`, `title` slot is title
258
+ // We pass a scoped slot function reference by default (Vue v2.6x)
259
+ // And pass the title prop as a fallback
260
+ this.setTitle(this.normalizeSlot() || this.title);
261
+ },
262
+ // Helper methods for `updateContent()`
263
+ setTitle(value) {
264
+ value = isUndefinedOrNull(value) ? '' : value;
265
+ // We only update the value if it has changed
266
+ if (this.localTitle !== value) {
267
+ this.localTitle = value;
268
+ }
269
+ },
270
+ setContent(value) {
271
+ value = isUndefinedOrNull(value) ? '' : value;
272
+ // We only update the value if it has changed
273
+ if (this.localContent !== value) {
274
+ this.localContent = value;
275
+ }
276
+ },
277
+ // --- Template event handlers ---
278
+ onShow(bvEvent) {
279
+ // Placeholder
280
+ this.$emit(EVENT_NAME_SHOW, bvEvent);
281
+ if (bvEvent) {
282
+ this.localShow = !bvEvent.defaultPrevented;
283
+ }
284
+ },
285
+ onShown(bvEvent) {
286
+ // Tip is now showing
287
+ this.localShow = true;
288
+ this.$emit(EVENT_NAME_SHOWN, bvEvent);
289
+ },
290
+ onHide(bvEvent) {
291
+ this.$emit(EVENT_NAME_HIDE, bvEvent);
292
+ },
293
+ onHidden(bvEvent) {
294
+ // Tip is no longer showing
295
+ this.$emit(EVENT_NAME_HIDDEN, bvEvent);
296
+ this.localShow = false;
297
+ },
298
+ onDisabled(bvEvent) {
299
+ // Prevent possible endless loop if user mistakenly
300
+ // fires `disabled` instead of `disable`
301
+ if (bvEvent && bvEvent.type === EVENT_NAME_DISABLED) {
302
+ this.$emit(MODEL_EVENT_NAME_ENABLED, true);
303
+ this.$emit(EVENT_NAME_DISABLED, bvEvent);
304
+ }
305
+ },
306
+ onEnabled(bvEvent) {
307
+ // Prevent possible endless loop if user mistakenly
308
+ // fires `enabled` instead of `enable`
309
+ if (bvEvent && bvEvent.type === EVENT_NAME_ENABLED) {
310
+ this.$emit(MODEL_EVENT_NAME_ENABLED, false);
311
+ this.$emit(EVENT_NAME_ENABLED, bvEvent);
312
+ }
313
+ },
314
+ // --- Public methods for programmatic control ---
315
+ [EVENT_NAME_OPEN]() {
316
+ !this.localShow && this.$_toolpop && this.$_toolpop.show();
317
+ },
318
+ [EVENT_NAME_CLOSE]() {
319
+ this.localShow && this.$_toolpop && this.$_toolpop.hide();
320
+ },
321
+ [EVENT_NAME_DISABLE]() {
322
+ this.$_toolpop && this.$_toolpop.disable();
323
+ },
324
+ [EVENT_NAME_ENABLE]() {
325
+ this.$_toolpop && this.$_toolpop.enable();
326
+ }
327
+ },
328
+ render(h) {
329
+ // Always renders a comment node
330
+ // TODO:
331
+ // Future: Possibly render a target slot (single root element)
332
+ // which we can apply the listeners to (pass `this.$el` to BVTooltip)
333
+ return h();
334
+ }
335
+ });
336
+
337
+ export { BTooltip, props };
@@ -0,0 +1,103 @@
1
+ import { extend, mergeData } from '../../vue';
2
+ import { NAME_TRANSITION } from '../../constants/components';
3
+ import { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING, PROP_TYPE_OBJECT } from '../../constants/props';
4
+ import { isPlainObject } from '../../utils/inspect';
5
+ import { makeProp } from '../../utils/props';
6
+
7
+ // Generic Bootstrap v4 fade (no-fade) transition component
8
+ //
9
+ // Assumes that `show` class is not required when
10
+ // the transition has finished the enter transition
11
+ // (show and fade classes are only applied during transition)
12
+
13
+
14
+ // --- Constants ---
15
+
16
+ const NO_FADE_PROPS = {
17
+ name: '',
18
+ enterClass: '',
19
+ enterActiveClass: '',
20
+ enterToClass: 'show',
21
+ leaveClass: 'show',
22
+ leaveActiveClass: '',
23
+ leaveToClass: ''
24
+ };
25
+ const FADE_PROPS = {
26
+ ...NO_FADE_PROPS,
27
+ enterActiveClass: 'fade',
28
+ leaveActiveClass: 'fade'
29
+ };
30
+
31
+ // --- Props ---
32
+
33
+ const props = {
34
+ // Has no effect if `trans-props` provided
35
+ appear: makeProp(PROP_TYPE_BOOLEAN, false),
36
+ // Can be overridden by user supplied `trans-props`
37
+ mode: makeProp(PROP_TYPE_STRING),
38
+ // Only applicable to the built in transition
39
+ // Has no effect if `trans-props` provided
40
+ noFade: makeProp(PROP_TYPE_BOOLEAN, false),
41
+ // For user supplied transitions (if needed)
42
+ transProps: makeProp(PROP_TYPE_OBJECT)
43
+ };
44
+ const hasAnimateSupport = typeof Element !== 'undefined' && Boolean(Element.prototype.animate);
45
+
46
+ // --- Main component ---
47
+
48
+ // @vue/component
49
+ const BVTransition = /*#__PURE__*/extend({
50
+ name: NAME_TRANSITION,
51
+ functional: true,
52
+ props,
53
+ render(h, _ref) {
54
+ let {
55
+ children,
56
+ data,
57
+ props
58
+ } = _ref;
59
+ let transProps = props.transProps;
60
+ if (!isPlainObject(transProps)) {
61
+ transProps = props.noFade ? NO_FADE_PROPS : FADE_PROPS;
62
+ if (props.appear) {
63
+ // Default the appear classes to equal the enter classes
64
+ transProps = {
65
+ ...transProps,
66
+ appear: true,
67
+ appearClass: transProps.enterClass,
68
+ appearActiveClass: transProps.enterActiveClass,
69
+ appearToClass: transProps.enterToClass
70
+ };
71
+ }
72
+ }
73
+ transProps = {
74
+ mode: props.mode,
75
+ ...transProps,
76
+ /*
77
+ bootstrap-vue says: We always need `css` true
78
+ @gitlab/ui says: OMG. THE FREAKING TRANSITIONS.
79
+ So apparently jsdom doesn't implement animations (who can blame them)
80
+ but a Vue Transition relies on the native animationend/transitionend
81
+ events in order to fire onAfterLeave. jsdom will never fire the `onAfterLeave`
82
+ which is relied on by e.g. the tooltip component to do it's `hidden` logic.
83
+ So if in specs, we set `css: false`, everything will work as expected.
84
+ The best way we have found is to do a feature detection on `Element.prototype.animate`
85
+ */
86
+ css: hasAnimateSupport
87
+ };
88
+ const dataCopy = {
89
+ ...data
90
+ };
91
+ delete dataCopy.props;
92
+ Object.keys(props).forEach(key => {
93
+ delete dataCopy[key];
94
+ });
95
+ return h('transition',
96
+ // Any transition event listeners will get merged here
97
+ mergeData(dataCopy, {
98
+ props: transProps
99
+ }), children);
100
+ }
101
+ });
102
+
103
+ export { BVTransition, props };
@@ -0,0 +1,205 @@
1
+ import { extend, isVue3 } from '../../vue';
2
+ import { NAME_TRANSPORTER_TARGET, NAME_TRANSPORTER } from '../../constants/components';
3
+ import { IS_BROWSER } from '../../constants/env';
4
+ import { PROP_TYPE_ARRAY_FUNCTION, PROP_TYPE_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';
5
+ import { HTMLElement } from '../../constants/safe-types';
6
+ import { concat } from '../../utils/array';
7
+ import { removeNode, select } from '../../utils/dom';
8
+ import { identity } from '../../utils/identity';
9
+ import { isFunction, isString } from '../../utils/inspect';
10
+ import { normalizeSlotMixin } from '../../mixins/normalize-slot';
11
+ import { makeProp } from '../../utils/props';
12
+ import { createNewChildComponent } from '../../utils/create-new-child-component';
13
+
14
+ // --- Helper components ---
15
+
16
+ // BVTransporter/BVTransporterTarget:
17
+ //
18
+ // Single root node portaling of content, which retains parent/child hierarchy
19
+ // Unlike Portal-Vue where portaled content is no longer a descendent of its
20
+ // intended parent components
21
+ //
22
+ // Private components for use by Tooltips, Popovers and Modals
23
+ //
24
+ // Based on vue-simple-portal
25
+ // https://github.com/LinusBorg/vue-simple-portal
26
+
27
+ // Transporter target used by BVTransporter
28
+ // Supports only a single root element
29
+ // @vue/component
30
+ const BVTransporterTarget = /*#__PURE__*/extend({
31
+ // As an abstract component, it doesn't appear in the $parent chain of
32
+ // components, which means the next parent of any component rendered inside
33
+ // of this one will be the parent from which is was portal'd
34
+ abstract: true,
35
+ name: NAME_TRANSPORTER_TARGET,
36
+ props: {
37
+ // Even though we only support a single root element,
38
+ // VNodes are always passed as an array
39
+ nodes: makeProp(PROP_TYPE_ARRAY_FUNCTION)
40
+ },
41
+ data: vm => {
42
+ return {
43
+ updatedNodes: vm.nodes
44
+ };
45
+ },
46
+ destroyed() {
47
+ removeNode(this.$el);
48
+ },
49
+ render(h) {
50
+ const {
51
+ updatedNodes
52
+ } = this;
53
+ let $nodes = isFunction(updatedNodes) ? updatedNodes({}) : updatedNodes;
54
+ $nodes = concat($nodes).filter(identity);
55
+ if ($nodes && $nodes.length > 0 && !$nodes[0].text) {
56
+ return $nodes[0];
57
+ }
58
+
59
+ /* istanbul ignore next */
60
+ return h();
61
+ }
62
+ });
63
+
64
+ // --- Props ---
65
+
66
+ const props = {
67
+ // String: CSS selector,
68
+ // HTMLElement: Element reference
69
+ // Mainly needed for tooltips/popovers inside modals
70
+ container: makeProp([HTMLElement, PROP_TYPE_STRING], 'body'),
71
+ disabled: makeProp(PROP_TYPE_BOOLEAN, false),
72
+ // This should be set to match the root element type
73
+ tag: makeProp(PROP_TYPE_STRING, 'div')
74
+ };
75
+
76
+ // --- Main component ---
77
+
78
+ // @vue/component
79
+ const BVTransporter = /*#__PURE__*/extend({
80
+ name: NAME_TRANSPORTER,
81
+ mixins: [normalizeSlotMixin],
82
+ props,
83
+ watch: {
84
+ disabled: {
85
+ immediate: true,
86
+ handler(disabled) {
87
+ // Vue 2 only: manage manual portaling
88
+ if (isVue3(this)) return;
89
+ disabled ? this.unmountTarget() : this.$nextTick(this.mountTarget);
90
+ }
91
+ }
92
+ },
93
+ created() {
94
+ // Vue 2 only: create private non-reactive props
95
+ if (isVue3(this)) return;
96
+ this.$_defaultFn = null;
97
+ this.$_target = null;
98
+ },
99
+ beforeMount() {
100
+ // Vue 2 only
101
+ if (isVue3(this)) return;
102
+ this.mountTarget();
103
+ },
104
+ updated() {
105
+ // Vue 2 only
106
+ // We need to make sure that all children have completed updating
107
+ // before rendering in the target
108
+ // `vue-simple-portal` has the this in a `$nextTick()`,
109
+ // while `portal-vue` doesn't
110
+ // Just trying to see if the `$nextTick()` delay is required or not
111
+ // Since all slots in Vue 2.6.x are always functions
112
+ if (isVue3(this)) return;
113
+ this.updateTarget();
114
+ },
115
+ beforeDestroy() {
116
+ // Vue 2 only
117
+ if (isVue3(this)) return;
118
+ this.unmountTarget();
119
+ this.$_defaultFn = null;
120
+ },
121
+ methods: {
122
+ // Get the element which the target should be appended to
123
+ getContainer() {
124
+ /* istanbul ignore else */
125
+ if (IS_BROWSER) {
126
+ const {
127
+ container
128
+ } = this;
129
+ return isString(container) ? select(container) : container;
130
+ } else {
131
+ return null;
132
+ }
133
+ },
134
+ // Mount the target
135
+ mountTarget() {
136
+ if (!this.$_target) {
137
+ const $container = this.getContainer();
138
+ if ($container) {
139
+ const $el = document.createElement('div');
140
+ $container.appendChild($el);
141
+ this.$_target = createNewChildComponent(this, BVTransporterTarget, {
142
+ el: $el,
143
+ propsData: {
144
+ // Initial nodes to be rendered
145
+ nodes: concat(this.normalizeSlot())
146
+ }
147
+ });
148
+ }
149
+ }
150
+ },
151
+ // Update the content of the target
152
+ updateTarget() {
153
+ if (IS_BROWSER && this.$_target) {
154
+ const defaultFn = this.$scopedSlots.default;
155
+ if (!this.disabled) {
156
+ /* istanbul ignore else: only applicable in Vue 2.5.x */
157
+ if (defaultFn && this.$_defaultFn !== defaultFn) {
158
+ // We only update the target component if the scoped slot
159
+ // function is a fresh one. The new slot syntax (since Vue 2.6)
160
+ // can cache unchanged slot functions and we want to respect that here
161
+ this.$_target.updatedNodes = defaultFn;
162
+ } else if (!defaultFn) {
163
+ // We also need to be back compatible with non-scoped default slot (i.e. 2.5.x)
164
+ this.$_target.updatedNodes = this.$slots.default;
165
+ }
166
+ }
167
+ // Update the scoped slot function cache
168
+ this.$_defaultFn = defaultFn;
169
+ }
170
+ },
171
+ // Unmount the target
172
+ unmountTarget() {
173
+ this.$_target && this.$_target.$destroy();
174
+ this.$_target = null;
175
+ }
176
+ },
177
+ render(h) {
178
+ if (isVue3(this)) {
179
+ // Vue 3: use native Teleport
180
+ if (this.disabled) {
181
+ const $nodes = concat(this.normalizeSlot()).filter(identity);
182
+ if ($nodes.length > 0) {
183
+ return $nodes[0];
184
+ }
185
+ }
186
+ const {
187
+ Teleport
188
+ } = this.$.appContext.config.globalProperties.constructor;
189
+ return h(Teleport, {
190
+ to: this.container
191
+ }, this.normalizeSlot());
192
+ }
193
+
194
+ // Vue 2: this component has no root element, so only a single VNode is allowed
195
+ if (this.disabled) {
196
+ const $nodes = concat(this.normalizeSlot()).filter(identity);
197
+ if ($nodes.length > 0 && !$nodes[0].text) {
198
+ return $nodes[0];
199
+ }
200
+ }
201
+ return h();
202
+ }
203
+ });
204
+
205
+ export { BVTransporter, props };
@@ -0,0 +1,55 @@
1
+ // Component names
2
+ const NAME_BUTTON = 'BButton';
3
+ const NAME_BUTTON_CLOSE = 'BButtonClose';
4
+ const NAME_COL = 'BCol';
5
+ const NAME_DROPDOWN = 'BDropdown';
6
+ const NAME_DROPDOWN_DIVIDER = 'BDropdownDivider';
7
+ const NAME_DROPDOWN_FORM = 'BDropdownForm';
8
+ const NAME_DROPDOWN_GROUP = 'BDropdownGroup';
9
+ const NAME_DROPDOWN_HEADER = 'BDropdownHeader';
10
+ const NAME_DROPDOWN_ITEM = 'BDropdownItem';
11
+ const NAME_DROPDOWN_ITEM_BUTTON = 'BDropdownItemButton';
12
+ const NAME_DROPDOWN_TEXT = 'BDropdownText';
13
+ const NAME_FORM = 'BForm';
14
+ const NAME_FORM_GROUP = 'BFormGroup';
15
+ const NAME_FORM_INVALID_FEEDBACK = 'BFormInvalidFeedback';
16
+ const NAME_FORM_ROW = 'BFormRow';
17
+ const NAME_FORM_SELECT = 'BFormSelect';
18
+ const NAME_FORM_SELECT_OPTION = 'BFormSelectOption';
19
+ const NAME_FORM_SELECT_OPTION_GROUP = 'BFormSelectOptionGroup';
20
+ const NAME_FORM_TEXT = 'BFormText';
21
+ const NAME_FORM_TEXTAREA = 'BFormTextarea';
22
+ const NAME_FORM_VALID_FEEDBACK = 'BFormValidFeedback';
23
+ const NAME_LINK = 'BLink';
24
+ const NAME_MODAL = 'BModal';
25
+ const NAME_POPOVER = 'BPopover';
26
+ const NAME_TAB = 'BTab';
27
+ const NAME_TABLE = 'BTable';
28
+ const NAME_TABLE_CELL = 'BTableCell';
29
+ const NAME_TABLE_LITE = 'BTableLite';
30
+ const NAME_TABLE_SIMPLE = 'BTableSimple';
31
+ const NAME_TABS = 'BTabs';
32
+ const NAME_TBODY = 'BTbody';
33
+ const NAME_TFOOT = 'BTfoot';
34
+ const NAME_TH = 'BTh';
35
+ const NAME_THEAD = 'BThead';
36
+ const NAME_TOAST = 'BToast';
37
+ const NAME_TOASTER = 'BToaster';
38
+ const NAME_TOOLTIP = 'BTooltip';
39
+ const NAME_TR = 'BTr';
40
+
41
+ // Helper component names
42
+ const NAME_FORM_BUTTON_LABEL_CONTROL = 'BVFormBtnLabelControl';
43
+ const NAME_FORM_RATING_STAR = 'BVFormRatingStar';
44
+ const NAME_POPOVER_HELPER = 'BVPopover';
45
+ const NAME_POPOVER_TEMPLATE = 'BVPopoverTemplate';
46
+ const NAME_POPPER = 'BVPopper';
47
+ const NAME_TAB_BUTTON_HELPER = 'BVTabButton';
48
+ const NAME_TOAST_POP = 'BVToastPop';
49
+ const NAME_TOOLTIP_HELPER = 'BVTooltip';
50
+ const NAME_TOOLTIP_TEMPLATE = 'BVTooltipTemplate';
51
+ const NAME_TRANSITION = 'BVTransition';
52
+ const NAME_TRANSPORTER = 'BVTransporter';
53
+ const NAME_TRANSPORTER_TARGET = 'BVTransporterTarget';
54
+
55
+ export { NAME_BUTTON, NAME_BUTTON_CLOSE, NAME_COL, NAME_DROPDOWN, NAME_DROPDOWN_DIVIDER, NAME_DROPDOWN_FORM, NAME_DROPDOWN_GROUP, NAME_DROPDOWN_HEADER, NAME_DROPDOWN_ITEM, NAME_DROPDOWN_ITEM_BUTTON, NAME_DROPDOWN_TEXT, NAME_FORM, NAME_FORM_BUTTON_LABEL_CONTROL, NAME_FORM_GROUP, NAME_FORM_INVALID_FEEDBACK, NAME_FORM_RATING_STAR, NAME_FORM_ROW, NAME_FORM_SELECT, NAME_FORM_SELECT_OPTION, NAME_FORM_SELECT_OPTION_GROUP, NAME_FORM_TEXT, NAME_FORM_TEXTAREA, NAME_FORM_VALID_FEEDBACK, NAME_LINK, NAME_MODAL, NAME_POPOVER, NAME_POPOVER_HELPER, NAME_POPOVER_TEMPLATE, NAME_POPPER, NAME_TAB, NAME_TABLE, NAME_TABLE_CELL, NAME_TABLE_LITE, NAME_TABLE_SIMPLE, NAME_TABS, NAME_TAB_BUTTON_HELPER, NAME_TBODY, NAME_TFOOT, NAME_TH, NAME_THEAD, NAME_TOAST, NAME_TOASTER, NAME_TOAST_POP, NAME_TOOLTIP, NAME_TOOLTIP_HELPER, NAME_TOOLTIP_TEMPLATE, NAME_TR, NAME_TRANSITION, NAME_TRANSPORTER, NAME_TRANSPORTER_TARGET };