@gitlab/ui 132.0.1 → 132.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. package/dist/charts.js +13 -0
  2. package/dist/components/base/accordion/accordion.js +69 -0
  3. package/dist/components/base/accordion/accordion_item.js +160 -0
  4. package/dist/components/base/accordion/constants.js +3 -0
  5. package/dist/components/base/alert/alert.js +263 -0
  6. package/dist/components/base/animated_icon/animated_chevron_down_up_icon.js +45 -0
  7. package/dist/components/base/animated_icon/animated_chevron_lg_down_up_icon.js +45 -0
  8. package/dist/components/base/animated_icon/animated_chevron_lg_right_down_icon.js +45 -0
  9. package/dist/components/base/animated_icon/animated_chevron_right_down_icon.js +45 -0
  10. package/dist/components/base/animated_icon/animated_duo_chat_icon.js +45 -0
  11. package/dist/components/base/animated_icon/animated_loader_icon.js +45 -0
  12. package/dist/components/base/animated_icon/animated_notifications_icon.js +45 -0
  13. package/dist/components/base/animated_icon/animated_sidebar_icon.js +45 -0
  14. package/dist/components/base/animated_icon/animated_smile_icon.js +45 -0
  15. package/dist/components/base/animated_icon/animated_sort_icon.js +45 -0
  16. package/dist/components/base/animated_icon/animated_star_icon.js +45 -0
  17. package/dist/components/base/animated_icon/animated_todo_icon.js +45 -0
  18. package/dist/components/base/animated_icon/animated_upload_icon.js +45 -0
  19. package/dist/components/base/animated_icon/base_animated_icon.js +77 -0
  20. package/dist/components/base/attribute_list/attribute_list.js +100 -0
  21. package/dist/components/base/avatar/avatar.js +175 -0
  22. package/dist/components/base/avatar/utils.js +17 -0
  23. package/dist/components/base/avatar_labeled/avatar_labeled.js +198 -0
  24. package/dist/components/base/avatar_link/avatar_link.js +47 -0
  25. package/dist/components/base/avatars_inline/avatars_inline.js +139 -0
  26. package/dist/components/base/badge/badge.js +197 -0
  27. package/dist/components/base/banner/banner.js +149 -0
  28. package/dist/components/base/breadcrumb/breadcrumb.js +282 -0
  29. package/dist/components/base/breadcrumb/breadcrumb_item.js +96 -0
  30. package/dist/components/base/broadcast_message/broadcast_message.js +113 -0
  31. package/dist/components/base/broadcast_message/constants.js +5 -0
  32. package/dist/components/base/button/button.js +419 -0
  33. package/dist/components/base/button_group/button_group.js +53 -0
  34. package/dist/components/base/card/card.js +69 -0
  35. package/dist/components/base/collapse/collapse.js +163 -0
  36. package/dist/components/base/color_mode_toggle/color_mode_toggle.js +92 -0
  37. package/dist/components/base/datepicker/datepicker.js +475 -0
  38. package/dist/components/base/daterange_picker/daterange_picker.js +394 -0
  39. package/dist/components/base/drawer/drawer.js +156 -0
  40. package/dist/components/base/dropdown/dropdown.js +330 -0
  41. package/dist/components/base/dropdown/dropdown_divider.js +48 -0
  42. package/dist/components/base/dropdown/dropdown_form.js +48 -0
  43. package/dist/components/base/dropdown/dropdown_item.js +175 -0
  44. package/dist/components/base/dropdown/dropdown_section_header.js +48 -0
  45. package/dist/components/base/dropdown/dropdown_text.js +48 -0
  46. package/dist/components/base/filtered_search/common_story_options.js +14 -0
  47. package/dist/components/base/filtered_search/filtered_search.js +428 -0
  48. package/dist/components/base/filtered_search/filtered_search_suggestion.js +95 -0
  49. package/dist/components/base/filtered_search/filtered_search_suggestion_list.js +139 -0
  50. package/dist/components/base/filtered_search/filtered_search_term.js +217 -0
  51. package/dist/components/base/filtered_search/filtered_search_token.js +383 -0
  52. package/dist/components/base/filtered_search/filtered_search_token_segment.js +444 -0
  53. package/dist/components/base/filtered_search/filtered_search_utils.js +241 -0
  54. package/dist/components/base/form/form.js +43 -0
  55. package/dist/components/base/form/form_character_count/form_character_count.js +107 -0
  56. package/dist/components/base/form/form_checkbox/form_checkbox.js +342 -0
  57. package/dist/components/base/form/form_checkbox/form_checkbox_group.js +188 -0
  58. package/dist/components/base/form/form_combobox/constants.js +55 -0
  59. package/dist/components/base/form/form_combobox/form_combobox.js +239 -0
  60. package/dist/components/base/form/form_date/form_date.js +143 -0
  61. package/dist/components/base/form/form_fields/form_field_validator.js +93 -0
  62. package/dist/components/base/form/form_fields/form_fields.js +289 -0
  63. package/dist/components/base/form/form_fields/form_fields_loop.js +75 -0
  64. package/dist/components/base/form/form_fields/mappers.js +13 -0
  65. package/dist/components/base/form/form_fields/validators.js +48 -0
  66. package/dist/components/base/form/form_group/form_group.js +119 -0
  67. package/dist/components/base/form/form_input/form_input.js +695 -0
  68. package/dist/components/base/form/form_input_group/form_input_group.js +120 -0
  69. package/dist/components/base/form/form_input_group/form_input_group_mixin.js +41 -0
  70. package/dist/components/base/form/form_radio/form_radio.js +259 -0
  71. package/dist/components/base/form/form_radio_group/form_radio_group.js +189 -0
  72. package/dist/components/base/form/form_select/constants.js +12 -0
  73. package/dist/components/base/form/form_select/form_select.js +96 -0
  74. package/dist/components/base/form/form_textarea/form_textarea.js +166 -0
  75. package/dist/components/base/form/input_group_text/input_group_text.js +43 -0
  76. package/dist/components/base/icon/icon.js +113 -0
  77. package/dist/components/base/illustration/illustration.js +80 -0
  78. package/dist/components/base/infinite_scroll/infinite_scroll.js +196 -0
  79. package/dist/components/base/keyset_pagination/keyset_pagination.js +152 -0
  80. package/dist/components/base/label/label.js +174 -0
  81. package/dist/components/base/link/link.js +330 -0
  82. package/dist/components/base/loading_icon/loading_icon.js +120 -0
  83. package/dist/components/base/markdown/markdown.js +50 -0
  84. package/dist/components/base/modal/modal.js +259 -0
  85. package/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js +716 -0
  86. package/dist/components/base/new_dropdowns/base_dropdown/constants.js +5 -0
  87. package/dist/components/base/new_dropdowns/base_dropdown/dropdown_container.js +32 -0
  88. package/dist/components/base/new_dropdowns/constants.js +24 -0
  89. package/dist/components/base/new_dropdowns/disclosure/constants.js +8 -0
  90. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown.js +400 -0
  91. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.js +112 -0
  92. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_item.js +196 -0
  93. package/dist/components/base/new_dropdowns/disclosure/mock_data.js +168 -0
  94. package/dist/components/base/new_dropdowns/disclosure/utils.js +84 -0
  95. package/dist/components/base/new_dropdowns/listbox/listbox.js +997 -0
  96. package/dist/components/base/new_dropdowns/listbox/listbox_group.js +58 -0
  97. package/dist/components/base/new_dropdowns/listbox/listbox_item.js +112 -0
  98. package/dist/components/base/new_dropdowns/listbox/listbox_search_input.js +94 -0
  99. package/dist/components/base/new_dropdowns/listbox/mock_data.js +131 -0
  100. package/dist/components/base/new_dropdowns/listbox/utils.js +33 -0
  101. package/dist/components/base/pagination/pagination.js +397 -0
  102. package/dist/components/base/path/data.js +34 -0
  103. package/dist/components/base/path/path.js +177 -0
  104. package/dist/components/base/popover/popover.js +142 -0
  105. package/dist/components/base/progress_bar/progress_bar.js +117 -0
  106. package/dist/components/base/search_box_by_click/search_box_by_click.js +245 -0
  107. package/dist/components/base/search_box_by_type/search_box_by_type.js +187 -0
  108. package/dist/components/base/segmented_control/segmented_control.js +73 -0
  109. package/dist/components/base/skeleton_loader/skeleton_loader.js +232 -0
  110. package/dist/components/base/sorting/sorting.js +180 -0
  111. package/dist/components/base/table/constants.js +5 -0
  112. package/dist/components/base/table/table.js +187 -0
  113. package/dist/components/base/table_lite/table_lite.js +80 -0
  114. package/dist/components/base/tabs/constants.js +3 -0
  115. package/dist/components/base/tabs/tab/tab.js +113 -0
  116. package/dist/components/base/tabs/tabs/scrollable_tabs.js +162 -0
  117. package/dist/components/base/tabs/tabs/tabs.js +223 -0
  118. package/dist/components/base/toast/index.js +66 -0
  119. package/dist/components/base/toast/toast.js +125 -0
  120. package/dist/components/base/toast/toaster.js +87 -0
  121. package/dist/components/base/toggle/toggle.js +178 -0
  122. package/dist/components/base/token/token.js +97 -0
  123. package/dist/components/base/token_selector/helpers.js +5 -0
  124. package/dist/components/base/token_selector/token_container.js +160 -0
  125. package/dist/components/base/token_selector/token_selector.js +454 -0
  126. package/dist/components/base/token_selector/token_selector_dropdown.js +223 -0
  127. package/dist/components/base/tooltip/tooltip.js +54 -0
  128. package/dist/components/charts/area/area.js +329 -0
  129. package/dist/components/charts/bar/bar.js +207 -0
  130. package/dist/components/charts/chart/chart.js +215 -0
  131. package/dist/components/charts/column/column.js +221 -0
  132. package/dist/components/charts/discrete_scatter/discrete_scatter.js +199 -0
  133. package/dist/components/charts/gauge/gauge.js +205 -0
  134. package/dist/components/charts/heatmap/heatmap.js +299 -0
  135. package/dist/components/charts/heatmap/index.js +2 -0
  136. package/dist/components/charts/legend/legend.js +245 -0
  137. package/dist/components/charts/line/line.js +340 -0
  138. package/dist/components/charts/series_label/series_label.js +101 -0
  139. package/dist/components/charts/shared/tooltip/tooltip.js +369 -0
  140. package/dist/components/charts/shared/tooltip/tooltip_default_format/tooltip_default_format.js +53 -0
  141. package/dist/components/charts/single_stat/single_stat.js +164 -0
  142. package/dist/components/charts/sparkline/sparkline.js +299 -0
  143. package/dist/components/charts/stacked_column/stacked_column.js +380 -0
  144. package/dist/components/dashboards/dashboard_layout/dashboard_layout.js +125 -0
  145. package/dist/components/dashboards/dashboard_layout/grid_layout/grid_layout.js +326 -0
  146. package/dist/components/dashboards/dashboard_layout/validators.js +14 -0
  147. package/dist/components/dashboards/dashboard_panel/dashboard_panel.js +236 -0
  148. package/dist/components/dashboards/mock_data.js +49 -0
  149. package/dist/components/experimental/experiment_badge/constants.js +4 -0
  150. package/dist/components/experimental/experiment_badge/experiment_badge.js +102 -0
  151. package/dist/components/extended/multi_step_form_template/multi_step_form_template.js +87 -0
  152. package/dist/components/index.js +107 -0
  153. package/dist/components/mixins/button_mixin.js +11 -0
  154. package/dist/components/mixins/safe_link_mixin.js +30 -0
  155. package/dist/components/mixins/tooltip_mixin.js +21 -0
  156. package/dist/components/regions/dashboard_skeleton/dashboard_skeleton.js +53 -0
  157. package/dist/components/regions/empty_state/empty_state.js +181 -0
  158. package/dist/components/shared_components/clear_icon_button/clear_icon_button.js +64 -0
  159. package/dist/components/shared_components/clipboard_button/clipboard_button.js +100 -0
  160. package/dist/components/shared_components/close_button/close_button.js +55 -0
  161. package/dist/components/utilities/animated_number/animated_number.js +131 -0
  162. package/dist/components/utilities/friendly_wrap/friendly_wrap.js +75 -0
  163. package/dist/components/utilities/intersection_observer/intersection_observer.js +88 -0
  164. package/dist/components/utilities/intersperse/intersperse.js +104 -0
  165. package/dist/components/utilities/sprintf/sprintf.js +171 -0
  166. package/dist/components/utilities/truncate/constants.js +8 -0
  167. package/dist/components/utilities/truncate/truncate.js +154 -0
  168. package/dist/components/utilities/truncate_text/constants.js +7 -0
  169. package/dist/components/utilities/truncate_text/truncate_text.js +146 -0
  170. package/dist/config.js +53 -0
  171. package/dist/directives/hover_load/hover_load.js +45 -0
  172. package/dist/directives/index.js +8 -0
  173. package/dist/directives/modal.js +1 -0
  174. package/dist/directives/outside/outside.js +149 -0
  175. package/dist/directives/resize_observer/resize_observer.js +58 -0
  176. package/dist/directives/safe_html/constants.js +6 -0
  177. package/dist/directives/safe_html/safe_html.js +39 -0
  178. package/dist/directives/safe_link/mock_data.js +10 -0
  179. package/dist/directives/safe_link/safe_link.js +67 -0
  180. package/dist/directives/tooltip/container.js +7 -0
  181. package/dist/directives/tooltip/tooltip.js +18 -0
  182. package/dist/index.css +7 -0
  183. package/dist/index.css.map +1 -0
  184. package/dist/index.js +2 -0
  185. package/dist/tailwind.css +2 -0
  186. package/dist/tailwind.css.map +1 -0
  187. package/dist/tokens/build/js/tokens.dark.js +1410 -0
  188. package/dist/tokens/build/js/tokens.js +1410 -0
  189. package/dist/tokens/common_story_options.js +29 -0
  190. package/dist/tokens/tokens_story.js +76 -0
  191. package/dist/utils/breakpoints.js +20 -0
  192. package/dist/utils/charts/config.js +616 -0
  193. package/dist/utils/charts/constants.js +69 -0
  194. package/dist/utils/charts/mock_data.js +191 -0
  195. package/dist/utils/charts/story_config.js +24 -0
  196. package/dist/utils/charts/theme.js +200 -0
  197. package/dist/utils/charts/utils.js +54 -0
  198. package/dist/utils/constants.js +331 -0
  199. package/dist/utils/data_utils.js +19 -0
  200. package/dist/utils/datetime_utility.js +61 -0
  201. package/dist/utils/equality_utils.js +84 -0
  202. package/dist/utils/form_options_utils.js +46 -0
  203. package/dist/utils/i18n.js +65 -0
  204. package/dist/utils/is_slot_empty.js +34 -0
  205. package/dist/utils/number_utils.js +132 -0
  206. package/dist/utils/play_utils.js +11 -0
  207. package/dist/utils/set_utils.js +25 -0
  208. package/dist/utils/stories_constants.js +29 -0
  209. package/dist/utils/stories_utils.js +62 -0
  210. package/dist/utils/story_decorators/container.js +19 -0
  211. package/dist/utils/string_utils.js +69 -0
  212. package/dist/utils/svgs/svg_paths.js +7 -0
  213. package/dist/utils/test_utils.js +33 -0
  214. package/dist/utils/url_utils.js +56 -0
  215. package/dist/utils/use_fake_date.js +29 -0
  216. package/dist/utils/use_mock_intersection_observer.js +105 -0
  217. package/dist/utils/utils.js +205 -0
  218. package/dist/utils/vue_utils.js +57 -0
  219. package/dist/utils.js +5 -0
  220. package/dist/vendor/bootstrap-vue/src/bv-config.js +8 -0
  221. package/dist/vendor/bootstrap-vue/src/components/button/button-close.js +81 -0
  222. package/dist/vendor/bootstrap-vue/src/components/button/button.js +204 -0
  223. package/dist/vendor/bootstrap-vue/src/components/button/index.js +2 -0
  224. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.js +44 -0
  225. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.js +59 -0
  226. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.js +98 -0
  227. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.js +63 -0
  228. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.js +108 -0
  229. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-item.js +97 -0
  230. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.js +60 -0
  231. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown.js +270 -0
  232. package/dist/vendor/bootstrap-vue/src/components/dropdown/index.js +8 -0
  233. package/dist/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.js +80 -0
  234. package/dist/vendor/bootstrap-vue/src/components/form/form-text.js +55 -0
  235. package/dist/vendor/bootstrap-vue/src/components/form/form-valid-feedback.js +80 -0
  236. package/dist/vendor/bootstrap-vue/src/components/form/form.js +56 -0
  237. package/dist/vendor/bootstrap-vue/src/components/form/index.js +4 -0
  238. package/dist/vendor/bootstrap-vue/src/components/form-group/form-group.js +347 -0
  239. package/dist/vendor/bootstrap-vue/src/components/form-group/index.js +1 -0
  240. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.js +56 -0
  241. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option.js +47 -0
  242. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select.js +154 -0
  243. package/dist/vendor/bootstrap-vue/src/components/form-select/helpers/mixin-options.js +63 -0
  244. package/dist/vendor/bootstrap-vue/src/components/form-select/index.js +3 -0
  245. package/dist/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.js +236 -0
  246. package/dist/vendor/bootstrap-vue/src/components/form-textarea/index.js +1 -0
  247. package/dist/vendor/bootstrap-vue/src/components/layout/col.js +155 -0
  248. package/dist/vendor/bootstrap-vue/src/components/layout/form-row.js +34 -0
  249. package/dist/vendor/bootstrap-vue/src/components/layout/index.js +2 -0
  250. package/dist/vendor/bootstrap-vue/src/components/link/index.js +1 -0
  251. package/dist/vendor/bootstrap-vue/src/components/link/link.js +283 -0
  252. package/dist/vendor/bootstrap-vue/src/components/modal/helpers/bv-modal-event.class.js +21 -0
  253. package/dist/vendor/bootstrap-vue/src/components/modal/helpers/modal-manager.js +212 -0
  254. package/dist/vendor/bootstrap-vue/src/components/modal/index.js +1 -0
  255. package/dist/vendor/bootstrap-vue/src/components/modal/modal.js +1059 -0
  256. package/dist/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover-template.js +55 -0
  257. package/dist/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover.js +31 -0
  258. package/dist/vendor/bootstrap-vue/src/components/popover/index.js +1 -0
  259. package/dist/vendor/bootstrap-vue/src/components/popover/popover.js +64 -0
  260. package/dist/vendor/bootstrap-vue/src/components/table/helpers/constants.js +22 -0
  261. package/dist/vendor/bootstrap-vue/src/components/table/helpers/default-sort-compare.js +64 -0
  262. package/dist/vendor/bootstrap-vue/src/components/table/helpers/filter-event.js +40 -0
  263. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-bottom-row.js +43 -0
  264. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-busy.js +86 -0
  265. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js +57 -0
  266. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-colgroup.js +32 -0
  267. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-empty.js +101 -0
  268. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-filtering.js +292 -0
  269. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js +169 -0
  270. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-pagination.js +51 -0
  271. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-provider.js +210 -0
  272. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +227 -0
  273. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +328 -0
  274. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js +42 -0
  275. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js +241 -0
  276. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js +349 -0
  277. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +247 -0
  278. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js +69 -0
  279. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js +233 -0
  280. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-top-row.js +42 -0
  281. package/dist/vendor/bootstrap-vue/src/components/table/helpers/normalize-fields.js +86 -0
  282. package/dist/vendor/bootstrap-vue/src/components/table/helpers/sanitize-row.js +31 -0
  283. package/dist/vendor/bootstrap-vue/src/components/table/helpers/stringify-record-values.js +11 -0
  284. package/dist/vendor/bootstrap-vue/src/components/table/helpers/text-selection-active.js +14 -0
  285. package/dist/vendor/bootstrap-vue/src/components/table/index.js +9 -0
  286. package/dist/vendor/bootstrap-vue/src/components/table/table-lite.js +51 -0
  287. package/dist/vendor/bootstrap-vue/src/components/table/table-simple.js +44 -0
  288. package/dist/vendor/bootstrap-vue/src/components/table/table.js +67 -0
  289. package/dist/vendor/bootstrap-vue/src/components/table/tbody.js +116 -0
  290. package/dist/vendor/bootstrap-vue/src/components/table/td.js +204 -0
  291. package/dist/vendor/bootstrap-vue/src/components/table/tfoot.js +96 -0
  292. package/dist/vendor/bootstrap-vue/src/components/table/th.js +26 -0
  293. package/dist/vendor/bootstrap-vue/src/components/table/thead.js +99 -0
  294. package/dist/vendor/bootstrap-vue/src/components/table/tr.js +121 -0
  295. package/dist/vendor/bootstrap-vue/src/components/tabs/index.js +2 -0
  296. package/dist/vendor/bootstrap-vue/src/components/tabs/tab.js +238 -0
  297. package/dist/vendor/bootstrap-vue/src/components/tabs/tabs.js +690 -0
  298. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-popper.js +278 -0
  299. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip-template.js +125 -0
  300. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +932 -0
  301. package/dist/vendor/bootstrap-vue/src/components/tooltip/index.js +1 -0
  302. package/dist/vendor/bootstrap-vue/src/components/tooltip/tooltip.js +337 -0
  303. package/dist/vendor/bootstrap-vue/src/components/transition/bv-transition.js +118 -0
  304. package/dist/vendor/bootstrap-vue/src/components/transporter/transporter.js +220 -0
  305. package/dist/vendor/bootstrap-vue/src/constants/components.js +55 -0
  306. package/dist/vendor/bootstrap-vue/src/constants/config.js +11 -0
  307. package/dist/vendor/bootstrap-vue/src/constants/env.js +36 -0
  308. package/dist/vendor/bootstrap-vue/src/constants/events.js +56 -0
  309. package/dist/vendor/bootstrap-vue/src/constants/key-codes.js +11 -0
  310. package/dist/vendor/bootstrap-vue/src/constants/popper.js +10 -0
  311. package/dist/vendor/bootstrap-vue/src/constants/props.js +24 -0
  312. package/dist/vendor/bootstrap-vue/src/constants/regex.js +35 -0
  313. package/dist/vendor/bootstrap-vue/src/constants/safe-types.js +15 -0
  314. package/dist/vendor/bootstrap-vue/src/constants/slots.js +36 -0
  315. package/dist/vendor/bootstrap-vue/src/directives/modal/index.js +1 -0
  316. package/dist/vendor/bootstrap-vue/src/directives/modal/modal.js +112 -0
  317. package/dist/vendor/bootstrap-vue/src/directives/tooltip/index.js +1 -0
  318. package/dist/vendor/bootstrap-vue/src/directives/tooltip/tooltip.js +267 -0
  319. package/dist/vendor/bootstrap-vue/src/directives/visible/index.js +1 -0
  320. package/dist/vendor/bootstrap-vue/src/directives/visible/visible.js +187 -0
  321. package/dist/vendor/bootstrap-vue/src/mixins/attrs.js +5 -0
  322. package/dist/vendor/bootstrap-vue/src/mixins/click-out.js +54 -0
  323. package/dist/vendor/bootstrap-vue/src/mixins/dropdown.js +470 -0
  324. package/dist/vendor/bootstrap-vue/src/mixins/focus-in.js +46 -0
  325. package/dist/vendor/bootstrap-vue/src/mixins/form-control.js +73 -0
  326. package/dist/vendor/bootstrap-vue/src/mixins/form-custom.js +26 -0
  327. package/dist/vendor/bootstrap-vue/src/mixins/form-options.js +91 -0
  328. package/dist/vendor/bootstrap-vue/src/mixins/form-selection.js +62 -0
  329. package/dist/vendor/bootstrap-vue/src/mixins/form-size.js +26 -0
  330. package/dist/vendor/bootstrap-vue/src/mixins/form-state.js +50 -0
  331. package/dist/vendor/bootstrap-vue/src/mixins/form-text.js +293 -0
  332. package/dist/vendor/bootstrap-vue/src/mixins/form-validity.js +50 -0
  333. package/dist/vendor/bootstrap-vue/src/mixins/has-listener.js +29 -0
  334. package/dist/vendor/bootstrap-vue/src/mixins/id.js +57 -0
  335. package/dist/vendor/bootstrap-vue/src/mixins/listen-on-document.js +62 -0
  336. package/dist/vendor/bootstrap-vue/src/mixins/listen-on-root.js +120 -0
  337. package/dist/vendor/bootstrap-vue/src/mixins/listen-on-window.js +62 -0
  338. package/dist/vendor/bootstrap-vue/src/mixins/listeners.js +25 -0
  339. package/dist/vendor/bootstrap-vue/src/mixins/model.js +10 -0
  340. package/dist/vendor/bootstrap-vue/src/mixins/normalize-slot.js +30 -0
  341. package/dist/vendor/bootstrap-vue/src/mixins/scoped-style.js +18 -0
  342. package/dist/vendor/bootstrap-vue/src/mixins/use-parent.js +14 -0
  343. package/dist/vendor/bootstrap-vue/src/utils/array.js +27 -0
  344. package/dist/vendor/bootstrap-vue/src/utils/bv-event.class.js +60 -0
  345. package/dist/vendor/bootstrap-vue/src/utils/cache.js +60 -0
  346. package/dist/vendor/bootstrap-vue/src/utils/clone-deep.js +18 -0
  347. package/dist/vendor/bootstrap-vue/src/utils/config-set.js +86 -0
  348. package/dist/vendor/bootstrap-vue/src/utils/config.js +71 -0
  349. package/dist/vendor/bootstrap-vue/src/utils/create-new-child-component.js +133 -0
  350. package/dist/vendor/bootstrap-vue/src/utils/css-escape.js +70 -0
  351. package/dist/vendor/bootstrap-vue/src/utils/dom.js +298 -0
  352. package/dist/vendor/bootstrap-vue/src/utils/element-to-vue-instance-registry.js +28 -0
  353. package/dist/vendor/bootstrap-vue/src/utils/env.js +16 -0
  354. package/dist/vendor/bootstrap-vue/src/utils/events.js +78 -0
  355. package/dist/vendor/bootstrap-vue/src/utils/get-event-root.js +5 -0
  356. package/dist/vendor/bootstrap-vue/src/utils/get-instance-from-directive.js +3 -0
  357. package/dist/vendor/bootstrap-vue/src/utils/get-scope-id.js +9 -0
  358. package/dist/vendor/bootstrap-vue/src/utils/get.js +63 -0
  359. package/dist/vendor/bootstrap-vue/src/utils/html.js +16 -0
  360. package/dist/vendor/bootstrap-vue/src/utils/identity.js +3 -0
  361. package/dist/vendor/bootstrap-vue/src/utils/inspect.js +35 -0
  362. package/dist/vendor/bootstrap-vue/src/utils/locale.js +18 -0
  363. package/dist/vendor/bootstrap-vue/src/utils/loose-equal.js +59 -0
  364. package/dist/vendor/bootstrap-vue/src/utils/loose-index-of.js +13 -0
  365. package/dist/vendor/bootstrap-vue/src/utils/math.js +9 -0
  366. package/dist/vendor/bootstrap-vue/src/utils/memoize.js +14 -0
  367. package/dist/vendor/bootstrap-vue/src/utils/model.js +33 -0
  368. package/dist/vendor/bootstrap-vue/src/utils/noop.js +3 -0
  369. package/dist/vendor/bootstrap-vue/src/utils/normalize-slot.js +51 -0
  370. package/dist/vendor/bootstrap-vue/src/utils/number.js +23 -0
  371. package/dist/vendor/bootstrap-vue/src/utils/object.js +72 -0
  372. package/dist/vendor/bootstrap-vue/src/utils/observe-dom.js +76 -0
  373. package/dist/vendor/bootstrap-vue/src/utils/on-instance-destroy.js +22 -0
  374. package/dist/vendor/bootstrap-vue/src/utils/plugins.js +124 -0
  375. package/dist/vendor/bootstrap-vue/src/utils/props.js +67 -0
  376. package/dist/vendor/bootstrap-vue/src/utils/router.js +150 -0
  377. package/dist/vendor/bootstrap-vue/src/utils/safe-vue-instance.js +14 -0
  378. package/dist/vendor/bootstrap-vue/src/utils/stable-sort.js +28 -0
  379. package/dist/vendor/bootstrap-vue/src/utils/string.js +47 -0
  380. package/dist/vendor/bootstrap-vue/src/utils/stringify-object-values.js +31 -0
  381. package/dist/vendor/bootstrap-vue/src/utils/warn.js +45 -0
  382. package/dist/vendor/bootstrap-vue/src/vue.js +55 -0
  383. package/package.json +4 -3
  384. package/src/components/base/link/link.vue +2 -2
  385. package/src/utils/url_utils.js +66 -0
  386. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.js +5 -2
  387. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.js +16 -4
  388. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.js +31 -8
  389. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.js +15 -4
  390. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.js +32 -8
  391. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown.js +2 -2
  392. package/src/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.js +35 -8
  393. package/src/vendor/bootstrap-vue/src/components/form/form-valid-feedback.js +35 -8
  394. package/src/vendor/bootstrap-vue/src/components/form-group/form-group.js +2 -2
  395. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.js +4 -2
  396. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option.js +9 -3
  397. package/src/vendor/bootstrap-vue/src/components/form-select/form-select.js +16 -9
  398. package/src/vendor/bootstrap-vue/src/components/form-select/helpers/mixin-options.js +10 -3
  399. package/src/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.js +26 -7
  400. package/src/vendor/bootstrap-vue/src/components/layout/col.js +2 -2
  401. package/src/vendor/bootstrap-vue/src/components/modal/modal.js +2 -2
  402. package/src/vendor/bootstrap-vue/src/components/popover/popover.js +23 -7
  403. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-busy.js +5 -2
  404. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js +10 -3
  405. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-empty.js +25 -6
  406. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js +20 -5
  407. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-pagination.js +11 -4
  408. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-provider.js +27 -7
  409. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +21 -7
  410. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +72 -18
  411. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js +6 -3
  412. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js +72 -17
  413. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js +18 -6
  414. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +7 -3
  415. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js +27 -7
  416. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js +21 -6
  417. package/src/vendor/bootstrap-vue/src/components/tabs/tabs.js +2 -2
  418. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-popper.js +36 -13
  419. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip-template.js +10 -3
  420. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +8 -9
  421. package/src/vendor/bootstrap-vue/src/components/transition/bv-transition.js +20 -5
  422. package/src/vendor/bootstrap-vue/src/components/transporter/transporter.js +22 -6
  423. package/src/vendor/bootstrap-vue/src/mixins/listen-on-document.js +1 -2
  424. package/src/vendor/bootstrap-vue/src/mixins/listen-on-root.js +1 -2
  425. package/src/vendor/bootstrap-vue/src/mixins/listen-on-window.js +1 -2
  426. package/src/vendor/bootstrap-vue/src/utils/array.js +0 -1
  427. package/src/vendor/bootstrap-vue/src/utils/locale.js +1 -2
@@ -0,0 +1,695 @@
1
+ import { isObject, toString, isBoolean, toInteger, uniqueId } from 'lodash-es';
2
+ import { toFloat } from '../../../../utils/number_utils';
3
+ import { stopEvent, isVisible } from '../../../../utils/utils';
4
+ import { formInputWidths } from '../../../../utils/constants';
5
+ import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
6
+
7
+ // Valid supported input types
8
+ const TYPES = ['text', 'password', 'email', 'number', 'url', 'tel', 'search', 'range', 'color', 'date', 'time', 'datetime', 'datetime-local', 'month', 'week'];
9
+ const MODEL_PROP = 'value';
10
+ const MODEL_EVENT = 'input';
11
+ var script = {
12
+ name: 'GlFormInput',
13
+ model: {
14
+ prop: MODEL_PROP,
15
+ event: MODEL_EVENT
16
+ },
17
+ props: {
18
+ /**
19
+ * The current value of the input. Result will always be a string, except when the `number` prop is used
20
+ */
21
+ value: {
22
+ type: [Number, String],
23
+ required: false,
24
+ default: ''
25
+ },
26
+ /**
27
+ * The type of input to render.
28
+ */
29
+ type: {
30
+ type: String,
31
+ required: false,
32
+ default: 'text',
33
+ validator: value => TYPES.includes(value)
34
+ },
35
+ /**
36
+ * Maximum width of the input
37
+ */
38
+ width: {
39
+ type: [String, Object],
40
+ required: false,
41
+ default: null,
42
+ validator: value => {
43
+ const widths = isObject(value) ? Object.values(value) : [value];
44
+ return widths.every(width => Object.values(formInputWidths).includes(width));
45
+ }
46
+ },
47
+ /**
48
+ * Used to set the `id` attribute on the rendered content, and used as the base to generate any additional element IDs as needed
49
+ */
50
+ id: {
51
+ type: String,
52
+ required: false,
53
+ default: undefined
54
+ },
55
+ /**
56
+ * When set to `true`, attempts to auto-focus the control when it is mounted, or re-activated when in a keep-alive. Does not set the `autofocus` attribute on the control
57
+ */
58
+ autofocus: {
59
+ type: Boolean,
60
+ required: false,
61
+ default: false
62
+ },
63
+ /**
64
+ * When set to `true`, disables the component's functionality and places it in a disabled state
65
+ */
66
+ disabled: {
67
+ type: Boolean,
68
+ required: false,
69
+ default: false
70
+ },
71
+ /**
72
+ * ID of the form that the form control belongs to. Sets the `form` attribute on the control
73
+ */
74
+ form: {
75
+ type: String,
76
+ required: false,
77
+ default: undefined
78
+ },
79
+ /**
80
+ * Sets the value of the `name` attribute on the form control
81
+ */
82
+ name: {
83
+ type: String,
84
+ required: false,
85
+ default: undefined
86
+ },
87
+ /**
88
+ * Adds the `required` attribute to the form control
89
+ */
90
+ required: {
91
+ type: Boolean,
92
+ required: false,
93
+ default: false
94
+ },
95
+ /**
96
+ * Controls the validation state appearance of the component. `true` for valid, `false` for invalid, or `null` for no validation state
97
+ */
98
+ state: {
99
+ type: Boolean,
100
+ required: false,
101
+ default: null
102
+ },
103
+ /**
104
+ * Sets the `placeholder` attribute value on the form control
105
+ */
106
+ placeholder: {
107
+ type: String,
108
+ required: false,
109
+ default: undefined
110
+ },
111
+ /**
112
+ * Optional value to set for the 'aria-invalid' attribute. Supported values are 'true' and 'false'. If not set, the 'state' prop will dictate the value
113
+ */
114
+ ariaInvalid: {
115
+ type: [Boolean, String],
116
+ required: false,
117
+ default: false
118
+ },
119
+ /**
120
+ * Sets the 'autocomplete' attribute value on the form control
121
+ */
122
+ autocomplete: {
123
+ type: String,
124
+ required: false,
125
+ default: undefined
126
+ },
127
+ /**
128
+ * When set to a number of milliseconds greater than zero, will debounce the user input. Has no effect if prop 'lazy' is set
129
+ */
130
+ debounce: {
131
+ type: [Number, String],
132
+ required: false,
133
+ default: undefined
134
+ },
135
+ /**
136
+ * Reference to a function for formatting the input
137
+ */
138
+ formatter: {
139
+ type: Function,
140
+ required: false,
141
+ default: undefined
142
+ },
143
+ /**
144
+ * When set, updates the v-model on 'change'/'blur' events instead of 'input'. Emulates the Vue '.lazy' v-model modifier
145
+ */
146
+ lazy: {
147
+ type: Boolean,
148
+ required: false,
149
+ default: false
150
+ },
151
+ /**
152
+ * When set, the input is formatted on blur instead of each keystroke (if there is a formatter specified)
153
+ */
154
+ lazyFormatter: {
155
+ type: Boolean,
156
+ required: false,
157
+ default: false
158
+ },
159
+ /**
160
+ * When set attempts to convert the input value to a native number. Emulates the Vue '.number' v-model modifier
161
+ */
162
+ number: {
163
+ type: Boolean,
164
+ required: false,
165
+ default: false
166
+ },
167
+ /**
168
+ * Set the form control as readonly and renders the control to look like plain text (no borders)
169
+ */
170
+ plaintext: {
171
+ type: Boolean,
172
+ required: false,
173
+ default: false
174
+ },
175
+ /**
176
+ * Sets the `readonly` attribute on the form control
177
+ */
178
+ readonly: {
179
+ type: Boolean,
180
+ required: false,
181
+ default: false
182
+ },
183
+ /**
184
+ * When set, trims any leading and trailing white space from the input value. Emulates the Vue '.trim' v-model modifier
185
+ */
186
+ trim: {
187
+ type: Boolean,
188
+ required: false,
189
+ default: false
190
+ },
191
+ /**
192
+ * The ID of the associated datalist element or component
193
+ */
194
+ list: {
195
+ type: String,
196
+ required: false,
197
+ default: undefined
198
+ },
199
+ /**
200
+ * Value to set in the 'max' attribute on the input. Used by number-like inputs
201
+ */
202
+ max: {
203
+ type: [Number, String],
204
+ required: false,
205
+ default: undefined
206
+ },
207
+ /**
208
+ * Value to set in the 'min' attribute on the input. Used by number-like inputs
209
+ */
210
+ min: {
211
+ type: [Number, String],
212
+ required: false,
213
+ default: undefined
214
+ },
215
+ /**
216
+ * Value to set in the 'step' attribute on the input. Used by number-like inputs
217
+ */
218
+ step: {
219
+ type: [Number, String],
220
+ required: false,
221
+ default: undefined
222
+ }
223
+ },
224
+ data() {
225
+ return {
226
+ localValue: toString(this.value),
227
+ vModelValue: this.modifyValue(this.value),
228
+ localId: null
229
+ };
230
+ },
231
+ computed: {
232
+ computedId() {
233
+ return this.id || this.localId;
234
+ },
235
+ localType() {
236
+ // We only allow certain types
237
+ const {
238
+ type
239
+ } = this;
240
+ return TYPES.includes(type) ? type : 'text';
241
+ },
242
+ computedAriaInvalid() {
243
+ const {
244
+ ariaInvalid
245
+ } = this;
246
+ if (ariaInvalid === true || ariaInvalid === 'true' || ariaInvalid === '') {
247
+ return 'true';
248
+ }
249
+ return this.computedState === false ? 'true' : ariaInvalid;
250
+ },
251
+ computedAttrs() {
252
+ const {
253
+ localType: type,
254
+ name,
255
+ form,
256
+ disabled,
257
+ placeholder,
258
+ required,
259
+ min,
260
+ max,
261
+ step
262
+ } = this;
263
+ return {
264
+ id: this.computedId,
265
+ name,
266
+ form,
267
+ type,
268
+ disabled,
269
+ placeholder,
270
+ required,
271
+ autocomplete: this.autocomplete || null,
272
+ readonly: this.readonly || this.plaintext,
273
+ min,
274
+ max,
275
+ step,
276
+ list: type !== 'password' ? this.list : null,
277
+ 'aria-required': required ? 'true' : null,
278
+ 'aria-invalid': this.computedAriaInvalid
279
+ };
280
+ },
281
+ computedState() {
282
+ // If not a boolean, ensure that value is null
283
+ return isBoolean(this.state) ? this.state : null;
284
+ },
285
+ stateClass() {
286
+ if (this.computedState === true) return 'is-valid';
287
+ if (this.computedState === false) return 'is-invalid';
288
+ return null;
289
+ },
290
+ widthClasses() {
291
+ if (this.width === null) {
292
+ return [];
293
+ }
294
+ if (isObject(this.width)) {
295
+ const {
296
+ default: defaultWidth,
297
+ ...nonDefaultWidths
298
+ } = this.width;
299
+ return [
300
+ // eslint-disable-next-line @gitlab/tailwind-no-interpolation -- Not a CSS utility
301
+ ...(defaultWidth ? [`gl-form-input-${defaultWidth}`] : []), ...Object.entries(nonDefaultWidths).map(
302
+ // eslint-disable-next-line @gitlab/tailwind-no-interpolation -- Not a CSS utility
303
+ _ref => {
304
+ let [breakpoint, width] = _ref;
305
+ return `gl-${breakpoint}-form-input-${width}`;
306
+ })];
307
+ }
308
+
309
+ // eslint-disable-next-line @gitlab/tailwind-no-interpolation -- Not a CSS utility
310
+ return [`gl-form-input-${this.width}`];
311
+ },
312
+ computedClass() {
313
+ const {
314
+ plaintext,
315
+ type
316
+ } = this;
317
+ const isRange = type === 'range';
318
+ const isColor = type === 'color';
319
+ return [...this.widthClasses, {
320
+ // Range input needs class `custom-range`
321
+ 'custom-range': isRange,
322
+ // `plaintext` not supported by `type="range"` or `type="color"`
323
+ 'form-control-plaintext': plaintext && !isRange && !isColor,
324
+ // `form-control` not used by `type="range"` or `plaintext`
325
+ // Always used by `type="color"`
326
+ 'form-control': isColor || !plaintext && !isRange
327
+ }, this.stateClass];
328
+ },
329
+ computedListeners() {
330
+ return {
331
+ ...this.$listeners,
332
+ input: this.onInput,
333
+ change: this.onChange,
334
+ blur: this.onBlur
335
+ };
336
+ },
337
+ computedDebounce() {
338
+ // Ensure we have a positive number equal to or greater than 0
339
+ return Math.max(toInteger(this.debounce), 0);
340
+ },
341
+ hasFormatter() {
342
+ return typeof this.formatter === 'function';
343
+ },
344
+ noWheel() {
345
+ return this.type === 'number';
346
+ },
347
+ selectionStart: {
348
+ // Expose selectionStart for formatters, etc
349
+ cache: false,
350
+ get() {
351
+ return this.$refs.input.selectionStart;
352
+ },
353
+ set(val) {
354
+ this.$refs.input.selectionStart = val;
355
+ }
356
+ },
357
+ selectionEnd: {
358
+ // Expose selectionEnd for formatters, etc
359
+ cache: false,
360
+ get() {
361
+ return this.$refs.input.selectionEnd;
362
+ },
363
+ set(val) {
364
+ this.$refs.input.selectionEnd = val;
365
+ }
366
+ },
367
+ selectionDirection: {
368
+ // Expose selectionDirection for formatters, etc
369
+ cache: false,
370
+ get() {
371
+ return this.$refs.input.selectionDirection;
372
+ },
373
+ set(val) {
374
+ this.$refs.input.selectionDirection = val;
375
+ }
376
+ },
377
+ validity: {
378
+ // Expose validity property
379
+ cache: false,
380
+ get() {
381
+ return this.$refs.input.validity;
382
+ }
383
+ },
384
+ validationMessage: {
385
+ // Expose validationMessage property
386
+ cache: false,
387
+ get() {
388
+ return this.$refs.input.validationMessage;
389
+ }
390
+ },
391
+ willValidate: {
392
+ // Expose willValidate property
393
+ cache: false,
394
+ get() {
395
+ return this.$refs.input.willValidate;
396
+ }
397
+ }
398
+ },
399
+ watch: {
400
+ value(newValue) {
401
+ const stringifyValue = toString(newValue);
402
+ const modifiedValue = this.modifyValue(newValue);
403
+ if (stringifyValue !== this.localValue || modifiedValue !== this.vModelValue) {
404
+ // Clear any pending debounce timeout, as we are overwriting the user input
405
+ this.clearDebounce();
406
+ // Update the local values
407
+ this.localValue = stringifyValue;
408
+ this.vModelValue = modifiedValue;
409
+ }
410
+ },
411
+ noWheel(newValue) {
412
+ this.setWheelStopper(newValue);
413
+ }
414
+ },
415
+ created() {
416
+ // Create private non-reactive props
417
+ this.$_inputDebounceTimer = null;
418
+ },
419
+ mounted() {
420
+ this.setWheelStopper(this.noWheel);
421
+ this.handleAutofocus();
422
+ this.$nextTick(() => {
423
+ // Update DOM with auto-generated ID after mount
424
+ // to prevent SSR hydration errors
425
+ this.localId = uniqueId('gl-form-input-');
426
+ });
427
+ },
428
+ deactivated() {
429
+ // Turn off listeners when keep-alive component deactivated
430
+ this.setWheelStopper(false);
431
+ },
432
+ activated() {
433
+ // Turn on listeners (if no-wheel) when keep-alive component activated
434
+ this.setWheelStopper(this.noWheel);
435
+ this.handleAutofocus();
436
+ },
437
+ beforeDestroy() {
438
+ this.setWheelStopper(false);
439
+ this.clearDebounce();
440
+ },
441
+ methods: {
442
+ focus() {
443
+ if (!this.disabled) {
444
+ var _this$$refs$input;
445
+ (_this$$refs$input = this.$refs.input) === null || _this$$refs$input === void 0 ? void 0 : _this$$refs$input.focus();
446
+ }
447
+ },
448
+ blur() {
449
+ if (!this.disabled) {
450
+ var _this$$refs$input2;
451
+ (_this$$refs$input2 = this.$refs.input) === null || _this$$refs$input2 === void 0 ? void 0 : _this$$refs$input2.blur();
452
+ }
453
+ },
454
+ clearDebounce() {
455
+ clearTimeout(this.$_inputDebounceTimer);
456
+ this.$_inputDebounceTimer = null;
457
+ },
458
+ formatValue(value, event) {
459
+ let force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
460
+ let newValue = toString(value);
461
+ if (this.hasFormatter && (!this.lazyFormatter || force)) {
462
+ newValue = this.formatter(value, event);
463
+ }
464
+ return newValue;
465
+ },
466
+ modifyValue(value) {
467
+ let newValue = toString(value);
468
+ // Emulate `.trim` modifier behaviour
469
+ if (this.trim) {
470
+ newValue = newValue.trim();
471
+ }
472
+ // Emulate `.number` modifier behaviour
473
+ if (this.number) {
474
+ newValue = toFloat(newValue, newValue);
475
+ }
476
+ return newValue;
477
+ },
478
+ updateValue(value) {
479
+ let force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
480
+ const {
481
+ lazy
482
+ } = this;
483
+ if (lazy && !force) {
484
+ return;
485
+ }
486
+ // Make sure to always clear the debounce when `updateValue()`
487
+ // is called, even when the v-model hasn't changed
488
+ this.clearDebounce();
489
+ // Define the shared update logic in a method to be able to use
490
+ // it for immediate and debounced value changes
491
+ const doUpdate = () => {
492
+ const newValue = this.modifyValue(value);
493
+ if (newValue !== this.vModelValue) {
494
+ this.vModelValue = newValue;
495
+ this.$emit(MODEL_EVENT, newValue);
496
+ } else if (this.hasFormatter) {
497
+ // When the `vModelValue` hasn't changed but the actual input value
498
+ // is out of sync, make sure to change it to the given one
499
+ // Usually caused by browser autocomplete and how it triggers the
500
+ // change or input event, or depending on the formatter function
501
+ // https://github.com/bootstrap-vue/bootstrap-vue/issues/2657
502
+ // https://github.com/bootstrap-vue/bootstrap-vue/issues/3498
503
+ const $input = this.$refs.input;
504
+ if ($input && newValue !== $input.value) {
505
+ $input.value = newValue;
506
+ }
507
+ }
508
+ };
509
+ // Only debounce the value update when a value greater than `0`
510
+ // is set and we are not in lazy mode or this is a forced update
511
+ const debounce = this.computedDebounce;
512
+ if (debounce > 0 && !lazy && !force) {
513
+ this.$_inputDebounceTimer = setTimeout(doUpdate, debounce);
514
+ } else {
515
+ // Immediately update the v-model
516
+ doUpdate();
517
+ }
518
+ },
519
+ onInput(event) {
520
+ // `event.target.composing` is set by Vue
521
+ // https://github.com/vuejs/vue/blob/dev/src/platforms/web/runtime/directives/model.js
522
+ // TODO: Is this needed now with the latest Vue?
523
+ if (event.target.composing) {
524
+ return;
525
+ }
526
+ const {
527
+ value
528
+ } = event.target;
529
+ const formattedValue = this.formatValue(value, event);
530
+ // Exit when the `formatter` function strictly returned `false`
531
+ // or prevented the input event
532
+ if (formattedValue === false || event.defaultPrevented) {
533
+ stopEvent(event, {
534
+ propagation: false
535
+ });
536
+ return;
537
+ }
538
+ this.localValue = formattedValue;
539
+ this.updateValue(formattedValue);
540
+ /**
541
+ * The `input` and `update` events are swapped
542
+ * see https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/1628
543
+ */
544
+ this.$emit('update', formattedValue);
545
+ },
546
+ onChange(event) {
547
+ const {
548
+ value
549
+ } = event.target;
550
+ const formattedValue = this.formatValue(value, event);
551
+ // Exit when the `formatter` function strictly returned `false`
552
+ // or prevented the input event
553
+ if (formattedValue === false || event.defaultPrevented) {
554
+ stopEvent(event, {
555
+ propagation: false
556
+ });
557
+ return;
558
+ }
559
+ this.localValue = formattedValue;
560
+ this.updateValue(formattedValue, true);
561
+ this.$emit('change', formattedValue);
562
+ },
563
+ onBlur(event) {
564
+ // Apply the `localValue` on blur to prevent cursor jumps
565
+ // on mobile browsers (e.g. caused by autocomplete)
566
+ const {
567
+ value
568
+ } = event.target;
569
+ const formattedValue = this.formatValue(value, event, true);
570
+ if (formattedValue !== false) {
571
+ // We need to use the modified value here to apply the
572
+ // `.trim` and `.number` modifiers properly
573
+ this.localValue = toString(this.modifyValue(formattedValue));
574
+ // We pass the formatted value here since the `updateValue` method
575
+ // handles the modifiers itself
576
+ this.updateValue(formattedValue, true);
577
+ }
578
+ // Emit native blur event
579
+ this.$emit('blur', event);
580
+ },
581
+ setWheelStopper(on) {
582
+ const {
583
+ input
584
+ } = this.$refs;
585
+ // We use native events, so that we don't interfere with propagation
586
+ if (on) {
587
+ input.addEventListener('focus', this.onWheelFocus);
588
+ input.addEventListener('blur', this.onWheelBlur);
589
+ } else {
590
+ input.removeEventListener('focus', this.onWheelFocus);
591
+ input.removeEventListener('blur', this.onWheelBlur);
592
+ document.removeEventListener('wheel', this.stopWheel);
593
+ }
594
+ },
595
+ onWheelFocus() {
596
+ document.addEventListener('wheel', this.stopWheel);
597
+ },
598
+ onWheelBlur() {
599
+ document.removeEventListener('wheel', this.stopWheel);
600
+ },
601
+ stopWheel(event) {
602
+ stopEvent(event, {
603
+ propagation: false
604
+ });
605
+ this.blur();
606
+ },
607
+ handleAutofocus() {
608
+ this.$nextTick(() => {
609
+ window.requestAnimationFrame(() => {
610
+ if (this.autofocus && isVisible(this.$refs.input)) this.focus();
611
+ });
612
+ });
613
+ },
614
+ select() {
615
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
616
+ args[_key] = arguments[_key];
617
+ }
618
+ // For external handler that may want a select() method
619
+ this.$refs.input.select(args);
620
+ },
621
+ setSelectionRange() {
622
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
623
+ args[_key2] = arguments[_key2];
624
+ }
625
+ // For external handler that may want a setSelectionRange(a,b,c) method
626
+ this.$refs.input.setSelectionRange(args);
627
+ },
628
+ setRangeText() {
629
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
630
+ args[_key3] = arguments[_key3];
631
+ }
632
+ // For external handler that may want a setRangeText(a,b,c) method
633
+ this.$refs.input.setRangeText(args);
634
+ },
635
+ setCustomValidity() {
636
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
637
+ args[_key4] = arguments[_key4];
638
+ }
639
+ // For external handler that may want a setCustomValidity(...) method
640
+ return this.$refs.input.setCustomValidity(args);
641
+ },
642
+ checkValidity() {
643
+ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
644
+ args[_key5] = arguments[_key5];
645
+ }
646
+ // For external handler that may want a checkValidity(...) method
647
+ return this.$refs.input.checkValidity(args);
648
+ },
649
+ reportValidity() {
650
+ for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
651
+ args[_key6] = arguments[_key6];
652
+ }
653
+ // For external handler that may want a reportValidity(...) method
654
+ return this.$refs.input.reportValidity(args);
655
+ }
656
+ }
657
+ };
658
+
659
+ /* script */
660
+ const __vue_script__ = script;
661
+
662
+ /* template */
663
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('input',_vm._g(_vm._b({ref:"input",staticClass:"gl-form-input",class:_vm.computedClass,domProps:{"value":_vm.localValue}},'input',_vm.computedAttrs,false),_vm.computedListeners))};
664
+ var __vue_staticRenderFns__ = [];
665
+
666
+ /* style */
667
+ const __vue_inject_styles__ = undefined;
668
+ /* scoped */
669
+ const __vue_scope_id__ = undefined;
670
+ /* module identifier */
671
+ const __vue_module_identifier__ = undefined;
672
+ /* functional template */
673
+ const __vue_is_functional_template__ = false;
674
+ /* style inject */
675
+
676
+ /* style inject SSR */
677
+
678
+ /* style inject shadow dom */
679
+
680
+
681
+
682
+ const __vue_component__ = /*#__PURE__*/__vue_normalize__(
683
+ { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
684
+ __vue_inject_styles__,
685
+ __vue_script__,
686
+ __vue_scope_id__,
687
+ __vue_is_functional_template__,
688
+ __vue_module_identifier__,
689
+ false,
690
+ undefined,
691
+ undefined,
692
+ undefined
693
+ );
694
+
695
+ export { __vue_component__ as default };